4 gStyle->SetHistMinimumZero();
6 TFile *file_in = TFile::Open(
"psi2s_jpsi2pi_jpsi_mumu_pid.root",
"READ");
7 TFile *file_out = TFile::Open(
"pid_plot.root",
"RECREATE");
8 TTree *
simtree = (TTree*)file_in->Get(
"pndsim");
11 TH1F *hMomentum =
new TH1F(
"hMomentum",
"Momentum",100,0,10);
12 simtree->Draw(
"PidChargedCand.GetMomentum().Mag()>>hMomentum",
"",
"goff");
14 TH1F *hTheta =
new TH1F(
"hTheta",
"Theta",100,0,180);
15 simtree->Draw(
"PidChargedCand.GetMomentum().Theta()*TMath::RadToDeg()>>hTheta",
"",
"goff");
17 TH1F *hPhi =
new TH1F(
"hPhi",
"Phi",100,-180,180);
18 simtree->Draw(
"PidChargedCand.GetMomentum().Phi()*TMath::RadToDeg()>>hPhi",
"",
"goff");
20 TH1F *hMvdHits =
new TH1F(
"hMvdHits",
"Number of MVD hits",15,-0.5,14.5);
21 simtree->Draw(
"PidChargedCand.GetMvdHits()>>hMvdHits",
"",
"goff");
23 TH1F *hMvdDEDX =
new TH1F(
"hMvdDEDX",
"MVD DEDX [MeV/cm]",200,0.,40.);
24 simtree->Draw(
"PidChargedCand.GetMvdDEDX()*1000>>hMvdDEDX",
"",
"goff");
26 TH1F *hSttHits =
new TH1F(
"hSttHits",
"Number of STT hits",45,-0.5,44.5);
27 simtree->Draw(
"PidChargedCand.GetSttHits()>>hSttHits",
"PidChargedCand.GetTrackBranch()==50",
"goff");
29 TH1F *hSttDEDX =
new TH1F(
"hSttDEDX",
"STT DEDX [u.a.]",200,0.,50.);
30 simtree->Draw(
"PidChargedCand.GetSttMeanDEDX()>>hSttDEDX",
"PidChargedCand.GetTrackBranch()==50",
"goff");
32 TH1F *hFtsHits =
new TH1F(
"hFtsHits",
"Number of FTS hits",80,-0.5,79.5);
33 simtree->Draw(
"PidChargedCand.GetSttHits()>>hFtsHits",
"PidChargedCand.GetTrackBranch()==53",
"goff");
35 TH1F *hFtsDEDX =
new TH1F(
"hFtsDEDX",
"FTS DEDX [u.a.]",200,0.,50.);
36 simtree->Draw(
"PidChargedCand.GetSttMeanDEDX()>>hFtsDEDX",
"PidChargedCand.GetTrackBranch()==53",
"goff");
38 TH1F *hGemHits =
new TH1F(
"hGemHits",
"Number of GEM hits",10,-0.5,9.5);
39 simtree->Draw(
"PidChargedCand.GetGemHits()>>hGemHits",
"",
"goff");
41 TH1F *hTofTof =
new TH1F(
"hTofTof",
"SciTil time-of-flight [ns]",100,0.,10.);
42 simtree->Draw(
"PidChargedCand.GetTofStopTime()>>hTofTof",
"PidChargedCand.GetTrackBranch()==50&&PidChargedCand.GetTofIndex()>-1",
"goff");
44 TH1F *hTofLength =
new TH1F(
"hTofLength",
"SciTil track length [m]",100,0.,150.);
45 simtree->Draw(
"PidChargedCand.GetTofTrackLength()>>hTofLength",
"PidChargedCand.GetTrackBranch()==50&&PidChargedCand.GetTofIndex()>-1",
"goff");
47 TH1F *hTofM2 =
new TH1F(
"hTofM2",
"SciTil mass^{2} [GeV^{2}/c^{4}]",200,-2.,2.);
48 simtree->Draw(
"PidChargedCand.GetTofM2()>>hTofM2",
"PidChargedCand.GetTrackBranch()==50&&PidChargedCand.GetTofIndex()>-1",
"goff");
50 TH1F *hTofQ =
new TH1F(
"hTofQ",
"SciTil Quality",200,0.,20.);
51 simtree->Draw(
"PidChargedCand.GetTofQuality()>>hTofQ",
"PidChargedCand.GetTrackBranch()==50&&PidChargedCand.GetTofIndex()>-1",
"goff");
53 TH1F *hFTofTof =
new TH1F(
"hFTofTof",
"FTOF time-of-flight [ns]",200,0.,50.);
54 simtree->Draw(
"PidChargedCand.GetTofStopTime()>>hFTofTof",
"PidChargedCand.GetTrackBranch()==53&&PidChargedCand.GetTofIndex()>-1",
"goff");
56 TH1F *hFTofLength =
new TH1F(
"hFTofLength",
"FTOF track length [m]",100,600.,900.);
57 simtree->Draw(
"PidChargedCand.GetTofTrackLength()>>hFTofLength",
"PidChargedCand.GetTrackBranch()==53&&PidChargedCand.GetTofIndex()>-1",
"goff");
59 TH1F *hFTofM2 =
new TH1F(
"hFTofM2",
"FTOF mass^{2} [GeV^{2}/c^{4}]",200,-2.,2.);
60 simtree->Draw(
"PidChargedCand.GetTofM2()>>hFTofM2",
"PidChargedCand.GetTrackBranch()==53&&PidChargedCand.GetTofIndex()>-1",
"goff");
62 TH1F *hFTofQ =
new TH1F(
"hFTofQ",
"FTOF Quality",200,0.,2000.);
63 simtree->Draw(
"PidChargedCand.GetTofQuality()>>hFTofQ",
"PidChargedCand.GetTrackBranch()==53&&PidChargedCand.GetTofIndex()>-1",
"goff");
65 TH1F *hDrcThetaC =
new TH1F(
"hDrcThetaC",
"DIRC Cherenkov angle",100,0.,1.);
66 simtree->Draw(
"PidChargedCand.GetDrcThetaC()>>hDrcThetaC",
"PidChargedCand.GetDrcIndex()>-1",
"goff");
68 TH1F *hDrcThetaCErr =
new TH1F(
"hDrcThetaCErr",
"DIRC Cherenkov angle error",100,0.,1.);
69 simtree->Draw(
"PidChargedCand.GetDrcThetaCErr()>>hDrcThetaCErr",
"PidChargedCand.GetDrcIndex()>-1",
"goff");
71 TH1F *hDrcQ =
new TH1F(
"hDrcQ",
"DIRC Quality",100,0,.00001);
72 simtree->Draw(
"PidChargedCand.GetDrcQuality()>>hDrcQ",
"PidChargedCand.GetDrcIndex()>-1",
"goff");
74 TH1F *hDrcNPhotons =
new TH1F(
"hDrcNPhotons",
"DIRC Number of Photons",20,-0.5,19.5);
75 simtree->Draw(
"PidChargedCand.GetDrcNumberOfPhotons()>>hDrcNPhotons",
"PidChargedCand.GetDrcIndex()>-1",
"goff");
77 TH1F *hDiscThetaC =
new TH1F(
"hDiscThetaC",
"DISC Cherenkov angle",100,0.,1.);
78 simtree->Draw(
"PidChargedCand.GetDiscThetaC()>>hDiscThetaC",
"PidChargedCand.GetDiscIndex()>-1",
"goff");
80 TH1F *hDiscThetaCErr =
new TH1F(
"hDiscThetaCErr",
"DISC Cherenkov angle error",100,0.,1.);
81 simtree->Draw(
"PidChargedCand.GetDiscThetaCErr()>>hDiscThetaCErr",
"PidChargedCand.GetDiscIndex()>-1",
"goff");
83 TH1F *hDiscQ =
new TH1F(
"hDiscQ",
"DISC Quality",100,0,.01);
84 simtree->Draw(
"PidChargedCand.GetDiscQuality()>>hDiscQ",
"PidChargedCand.GetDiscIndex()>-1",
"goff");
86 TH1F *hDiscNPhotons =
new TH1F(
"hDiscNPhotons",
"DISC Number of Photons",20,-0.5,19.5);
87 simtree->Draw(
"PidChargedCand.GetDiscNumberOfPhotons()>>hDiscNPhotons",
"PidChargedCand.GetDiscIndex()>-1",
"goff");
89 TH1F *hEmcRawEnergy =
new TH1F(
"hEmcRawEnergy",
"EMC Raw Energy",100,0,1.);
90 simtree->Draw(
"PidChargedCand.GetEmcRawEnergy()>>hEmcRawEnergy",
"PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==50",
"goff");
92 TH1F *hEmcCalEnergy =
new TH1F(
"hEmcCalEnergy",
"EMC Cal Energy",100,0,1.);
93 simtree->Draw(
"PidChargedCand.GetEmcCalEnergy()>>hEmcCalEnergy",
"PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==50",
"goff");
95 TH1F *hEmcQ =
new TH1F(
"hEmcQ",
"EMC Quality",100,0,20.);
96 simtree->Draw(
"PidChargedCand.GetEmcQuality()>>hEmcQ",
"PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==50",
"goff");
98 TH1F *hEmcNCrystals =
new TH1F(
"hEmcNCrystals",
"EMC Number Of Crystals",50,-0.5,49.5);
99 simtree->Draw(
"PidChargedCand.GetEmcNumberOfCrystals()>>hEmcNCrystals",
"PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==50",
"goff");
101 TH1F *hEmcNBumps =
new TH1F(
"hEmcNBumps",
"EMC Number Of Bumps",5,-0.5,4.5);
102 simtree->Draw(
"PidChargedCand.GetEmcNumberOfBumps()>>hEmcNBumps",
"PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==50",
"goff");
104 TH1F *hEmcModule =
new TH1F(
"hEmcModule",
"EMC Module",10,-0.5,9.5);
105 simtree->Draw(
"PidChargedCand.GetEmcModule()>>hEmcModule",
"PidChargedCand.GetEmcIndex()>-1",
"goff");
107 TH1F *hEmcZ20 =
new TH1F(
"hEmcZ20",
"EMC Z20",100,0.,1.1);
108 simtree->Draw(
"PidChargedCand.GetEmcClusterZ20()>>hEmcZ20",
"PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==50",
"goff");
110 TH1F *hEmcZ53 =
new TH1F(
"hEmcZ53",
"EMC Z53",100,0.,0.02);
111 simtree->Draw(
"PidChargedCand.GetEmcClusterZ53()>>hEmcZ53",
"PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==50",
"goff");
113 TH1F *hEmcLat =
new TH1F(
"hEmcLat",
"EMC Lat",100,0.,1);
114 simtree->Draw(
"PidChargedCand.GetEmcClusterLat()>>hEmcLat",
"PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==50",
"goff");
116 TH1F *hEmcE1 =
new TH1F(
"hEmcE1",
"EMC E1",100,0.,1);
117 simtree->Draw(
"PidChargedCand.GetEmcClusterE1()>>hEmcE1",
"PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==50",
"goff");
119 TH1F *hEmcE9 =
new TH1F(
"hEmcE9",
"EMC E9",100,0.,1);
120 simtree->Draw(
"PidChargedCand.GetEmcClusterE9()>>hEmcE9",
"PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==50",
"goff");
122 TH1F *hEmcE25 =
new TH1F(
"hEmcE25",
"EMC E25",100,0.,1);
123 simtree->Draw(
"PidChargedCand.GetEmcClusterE25()>>hEmcE25",
"PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==50",
"goff");
125 TH1F *hFscRawEnergy =
new TH1F(
"hFscRawEnergy",
"FSC Raw Energy",100,0,1.);
126 simtree->Draw(
"PidChargedCand.GetEmcRawEnergy()>>hFscRawEnergy",
"PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==53",
"goff");
128 TH1F *hFscCalEnergy =
new TH1F(
"hFscCalEnergy",
"FSC Cal Energy",100,0,1.);
129 simtree->Draw(
"PidChargedCand.GetEmcCalEnergy()>>hFscCalEnergy",
"PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==53",
"goff");
131 TH1F *hFscQ =
new TH1F(
"hFscQ",
"FSC Quality",100,0,20.);
132 simtree->Draw(
"PidChargedCand.GetEmcQuality()>>hFscQ",
"PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==53",
"goff");
134 TH1F *hFscNCrystals =
new TH1F(
"hFscNCrystals",
"FSC Number Of Crystals",55,-0.5,49.5);
135 simtree->Draw(
"PidChargedCand.GetEmcNumberOfCrystals()>>hFscNCrystals",
"PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==53",
"goff");
137 TH1F *hFscNBumps =
new TH1F(
"hFscNBumps",
"FSC Number Of Bumps",5,-0.5,4.5);
138 simtree->Draw(
"PidChargedCand.GetEmcNumberOfBumps()>>hFscNBumps",
"PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==53",
"goff");
140 TH1F *hFscZ20 =
new TH1F(
"hFscZ20",
"FSC Z20",100,0.,1.1);
141 simtree->Draw(
"PidChargedCand.GetEmcClusterZ20()>>hFscZ20",
"PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==53",
"goff");
143 TH1F *hFscZ53 =
new TH1F(
"hFscZ53",
"FSC Z53",100,0.,0.02);
144 simtree->Draw(
"PidChargedCand.GetEmcClusterZ53()>>hFscZ53",
"PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==53",
"goff");
146 TH1F *hFscLat =
new TH1F(
"hFscLat",
"FSC Lat",100,0.,1);
147 simtree->Draw(
"PidChargedCand.GetEmcClusterLat()>>hFscLat",
"PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==53",
"goff");
149 TH1F *hFscE1 =
new TH1F(
"hFscE1",
"FSC E1",100,0.,1);
150 simtree->Draw(
"PidChargedCand.GetEmcClusterE1()>>hFscE1",
"PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==53",
"goff");
152 TH1F *hFscE9 =
new TH1F(
"hFscE9",
"FSC E9",100,0.,1);
153 simtree->Draw(
"PidChargedCand.GetEmcClusterE9()>>hFscE9",
"PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==53",
"goff");
155 TH1F *hFscE25 =
new TH1F(
"hFscE25",
"FSC E25",100,0.,1);
156 simtree->Draw(
"PidChargedCand.GetEmcClusterE25()>>hFscE25",
"PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==53",
"goff");
158 TH1F *hMuoNLayers =
new TH1F(
"hMuoNLayers",
"MUO Number Of Layers",20,-0.5,19.5);
159 simtree->Draw(
"PidChargedCand.GetMuoNumberOfLayers()>>hMuoNLayers",
"PidChargedCand.GetMuoIndex()>-1&&PidChargedCand.GetTrackBranch()==50",
"goff");
161 TH1F *hMuoQ =
new TH1F(
"hMuoQ",
"MUO Quality [cm]",100,0.,50);
162 simtree->Draw(
"sqrt(PidChargedCand.GetMuoQuality())>>hMuoQ",
"PidChargedCand.GetMuoIndex()>-1&&PidChargedCand.GetTrackBranch()==50",
"goff");
164 TH1F *hMuoIron =
new TH1F(
"hMuoIron",
"MUO Crossed Iron Thickness [cm]",100,0.,100);
165 simtree->Draw(
"PidChargedCand.GetMuoIron()>>hMuoIron",
"PidChargedCand.GetMuoIndex()>-1&&PidChargedCand.GetTrackBranch()==50",
"goff");
167 TH1F *hMuoMomentumIn =
new TH1F(
"hMuoMomentumIn",
"MUO Momentum at ingress point [GeV/c]",100,0.,10);
168 simtree->Draw(
"PidChargedCand.GetMuoIron()>>hMuoMomentumIn",
"PidChargedCand.GetMuoIndex()>-1&&PidChargedCand.GetTrackBranch()==50",
"goff");
170 TH1F *hMuoModule =
new TH1F(
"hMuoModule",
"MUO Module",6,-1.5,4.5);
171 simtree->Draw(
"PidChargedCand.GetMuoModule()>>hMuoModule",
"PidChargedCand.GetMuoIndex()>-1",
"goff");
173 TH1F *hMuoHits =
new TH1F(
"hMuoHits",
"MUO Number Of Hits",25,-0.5,24.5);
174 simtree->Draw(
"PidChargedCand.GetMuoHits()>>hMuoHits",
"PidChargedCand.GetMuoIndex()>-1&&PidChargedCand.GetTrackBranch()==50",
"goff");
176 TH1F *hFMuoNLayers =
new TH1F(
"hFMuoNLayers",
"MUO Number Of FWD Layers",20,-0.5,19.5);
177 simtree->Draw(
"PidChargedCand.GetMuoNumberOfLayers()>>hFMuoNLayers",
"PidChargedCand.GetMuoIndex()>-1&&PidChargedCand.GetTrackBranch()==53",
"goff");
179 TH1F *hFMuoQ =
new TH1F(
"hFMuoQ",
"MUO Quality [cm]",100,0.,10);
180 simtree->Draw(
"sqrt(PidChargedCand.GetMuoQuality())>>hFMuoQ",
"PidChargedCand.GetMuoIndex()>-1&&PidChargedCand.GetTrackBranch()==53",
"goff");
182 TH1F *hFMuoIron =
new TH1F(
"hFMuoIron",
"MUO Crossed Iron Thickness [cm]",100,0.,110);
183 simtree->Draw(
"PidChargedCand.GetMuoIron()>>hFMuoIron",
"PidChargedCand.GetMuoIndex()>-1&&PidChargedCand.GetTrackBranch()==53",
"goff");
185 TH1F *hFMuoMomentumIn =
new TH1F(
"hFMuoMomentumIn",
"MUO Momentum at ingress point [GeV/c]",100,0.,15);
186 simtree->Draw(
"PidChargedCand.GetMuoMomentumIn()>>hFMuoMomentumIn",
"PidChargedCand.GetMuoIndex()>-1&&PidChargedCand.GetTrackBranch()==53",
"goff");
188 TH1F *hFMuoHits =
new TH1F(
"hFMuoHits",
"MUO Number Of Hits",35,-0.5,34.5);
189 simtree->Draw(
"PidChargedCand.GetMuoHits()>>hFMuoHits",
"PidChargedCand.GetMuoIndex()>-1&&PidChargedCand.GetTrackBranch()==53",
"goff");
207 hFTofLength->Write();
213 hDrcThetaCErr->Write();
215 hDrcNPhotons->Write();
216 hDiscThetaC->Write();
217 hDiscThetaCErr->Write();
219 hDiscNPhotons->Write();
220 hEmcRawEnergy->Write();
221 hEmcCalEnergy->Write();
223 hEmcNCrystals->Write();
232 hFscRawEnergy->Write();
233 hFscCalEnergy->Write();
235 hFscNCrystals->Write();
243 hMuoNLayers->Write();
246 hMuoMomentumIn->Write();
249 hFMuoNLayers->Write();
252 hFMuoMomentumIn->Write();
257 FairSystemInfo sysInfo;
258 Float_t maxMemory=sysInfo.GetMaxMemory();
259 cout <<
"<DartMeasurement name=\"MaxMemory\" type=\"numeric/double\">";
261 cout <<
"</DartMeasurement>" << endl;
267 Float_t cpuUsage=ctime/
rtime;
268 cout <<
"<DartMeasurement name=\"CpuLoad\" type=\"numeric/double\">";
270 cout <<
"</DartMeasurement>" << endl;
273 cout <<
"Real time " << rtime <<
" s, CPU time " << ctime
275 cout <<
"CPU usage " << cpuUsage*100. <<
"%" << endl;
276 cout <<
"Max Memory " << maxMemory <<
" MB" << endl;
278 cout <<
"Macro finished successfully." << endl;