Geant4 Cross Reference |
1 // ********************************************************************* 2 // To execute this macro under ROOT, 3 // 1 - launch ROOT (usually type 'root' at your machine's prompt) 4 // 2 - type '.X plot.C' at the ROOT session prompt 5 // This macro needs the output ROOT file 6 // ********************************************************************* 7 8 void SetLeafAddress(TNtuple* ntuple, const char* name, void* address); 9 10 void plot() 11 { 12 gROOT->Reset(); 13 gStyle->SetPalette(1); 14 gROOT->SetStyle("Plain"); 15 16 TCanvas* c1 = new TCanvas ("c1","",20,20,1000,500); 17 18 TFile* f = new TFile("ICSD.root"); 19 f->ls(); 20 21 TH1D* hist1 = new TH1D("histo","ICSD", 30, 0.0, 30); 22 23 Double_t ion = 0.0; 24 25 TNtuple* ntuple1 = (TNtuple*)f->Get("ntuple_1"); 26 bool rowWise = true; 27 TBranch* eventBranch = ntuple1->FindBranch("row_wise_branch"); 28 if ( ! eventBranch ) rowWise = false; 29 std::cout << "rowWise: " << rowWise << std::endl; 30 31 if ( ! rowWise ) { 32 ntuple1->SetBranchAddress("ionisations", &ion); 33 } else { 34 SetLeafAddress(ntuple1, "ionisations",&ion); 35 } 36 37 Int_t nentries = ntuple1->GetEntries(); 38 39 for (Int_t i=0; i<nentries; i++) 40 { 41 ntuple1->GetEntry(i); 42 hist1->Fill(ion); 43 } 44 45 hist1->Draw(); 46 hist1->GetXaxis()->SetLabelSize(0.025); 47 hist1->GetYaxis()->SetLabelSize(0.025); 48 49 hist1->GetXaxis()->SetTitleSize(0.035); 50 hist1->GetYaxis()->SetTitleSize(0.035); 51 52 // hist1->GetXaxis()->SetTittleOffset(1.4); 53 // hist1->GetYaxis()->SetTittleOffset(1.4); 54 55 hist1->GetXaxis()->SetTitle("ionisation number"); 56 hist1->GetYaxis()->SetTitle("frequency"); 57 58 c1->SaveAs("ICSD.tiff"); 59 } 60 61 void SetLeafAddress(TNtuple* ntuple, const char* name, void* address) { 62 TLeaf* leaf = ntuple->FindLeaf(name); 63 if ( ! leaf ) { 64 std::cerr << "Error in <SetLeafAddress>: unknown leaf --> " << name << std::endl; 65 return; 66 } 67 leaf->SetAddress(address); 68 } 69