ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
plot.C
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file plot.C
1 // *********************************************************************
2 // To execute this macro under ROOT after your simulation ended,
3 // 1 - launch ROOT (usually type 'root' at your machine's prompt)
4 // 2 - type '.X plot.C' at the ROOT session prompt
5 //
6 // Author: Sebastien Incerti
7 // Date: March 2nd, 2019
8 // The Geant4-DNA collaboration
9 // *********************************************************************
10 
11 void SetLeafAddress(TNtuple* ntuple, const char* name, void* address);
12 
13 void plot()
14 {
15 gROOT->Reset();
16 gStyle->SetPalette(1);
17 gROOT->SetStyle("Plain");
18 gStyle->SetOptStat(00000);
19 
20 //********************
21 Int_t nbRadius = 101;
22 //********************
23 
24 TCanvas *c1 = new TCanvas ("c1","",60,60,800,800);
25 Int_t mycolor;
26 
27 TFile f("t.root");
28 mycolor=4;
29 
30 TNtuple* ntuple;
31 ntuple = (TNtuple*)f.Get("t");
32 
33 bool rowWise = true;
34 TBranch* eventBranch = ntuple->FindBranch("row_wise_branch");
35 if ( ! eventBranch ) rowWise = false;
36 // std::cout << "rowWise: " << rowWise << std::endl
37 
38 Double_t radius1,nofHits,nbEdep,edep,radius2,Einc;
39 Int_t noRadius;
40 
41 if ( ! rowWise ) {
42  ntuple->SetBranchAddress("radius1",&radius1);
43  ntuple->SetBranchAddress("noRadius",&noRadius);
44  ntuple->SetBranchAddress("nbHits",&nofHits);
45  ntuple->SetBranchAddress("nbScoredHits",&nbEdep);
46  ntuple->SetBranchAddress("edep",&edep);
47  ntuple->SetBranchAddress("radius2",&radius2);
48  ntuple->SetBranchAddress("Einc",&Einc);
49  }
50 else {
51  SetLeafAddress(ntuple, "radius1",&radius1);
52  SetLeafAddress(ntuple, "noRadius",&noRadius);
53  SetLeafAddress(ntuple, "nbHits",&nofHits);
54  SetLeafAddress(ntuple, "nbScoredHits",&nbEdep);
55  SetLeafAddress(ntuple, "edep",&edep);
56  SetLeafAddress(ntuple, "radius2",&radius2);
57  SetLeafAddress(ntuple, "Einc",&Einc);
58 }
59 
60 Int_t nentries = (Int_t)ntuple->GetEntries();
61 
62 //
63 
64 Double_t t[1000]; // 1000 is the max number of radius values
65 Double_t population[1000];
66 Double_t myRad[1000];
67 
68 for (Int_t i=0; i<1000; i++)
69 {
70  t[i]=0;
71  population[i]=0;
72  myRad[i]=0;
73 }
74 
75 Int_t event = 0;
76 
77 for (Int_t i=0; i<nentries; i++)
78 {
79  ntuple->GetEntry(i);
80  t[noRadius] = t[noRadius] + edep;
81  population[noRadius]=population[noRadius]+1;
82  myRad[noRadius] = radius1;
83 }
84 
85 // Mean
86 
87 for (Int_t j=1; j<nbRadius; j++)
88 {
89  t[j] = t[j]/population[j];
90  t[j] = t[j]/(myRad[j+1]-myRad[j]);
91  //cout << j << " " << myRad[j] << " " << myRad[j+1]
92  // << " " << t[j] << " " << population[j] << endl;
93 }
94 
95 //
96 
97  c1->cd(1);
98 
99  TGraph* gr1 =new TGraph(nbRadius,myRad,t);
100  gr1->SetMarkerColor(2);
101  gr1->SetMarkerStyle(20);
102  gr1->SetMarkerSize(1);
103  gr1->SetLineColor(2);
104  gr1->SetTitle("");
105  gr1->GetXaxis()->SetLimits(0.1,100);
106  gr1->GetYaxis()->SetLimits(0.,22);
107  gr1->GetXaxis()->SetLabelSize(0.025);
108  gr1->GetYaxis()->SetLabelSize(0.025);
109  gr1->GetXaxis()->SetTitleSize(0.035);
110  gr1->GetYaxis()->SetTitleSize(0.035);
111  gr1->GetXaxis()->SetTitleOffset(1.4);
112  gr1->GetYaxis()->SetTitleOffset(1.4);
113  gr1->GetXaxis()->SetTitle("r (nm)");
114  gr1->GetYaxis()->SetTitle("t (eV/nm)");
115  gr1->Draw("");
116  gPad->SetLogx();
117 
118 }
119 
120 void SetLeafAddress(TNtuple* ntuple, const char* name, void* address) {
121  TLeaf* leaf = ntuple->FindLeaf(name);
122  if ( ! leaf ) {
123  std::cerr << "Error in <SetLeafAddress>: unknown leaf --> " << name << std::endl;
124  return;
125  }
126  leaf->SetAddress(address);
127 }
128