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