FairRoot/PandaRoot
QA/run3/plot_pid.C
Go to the documentation of this file.
1 int plot_pid()
2 {
3 
4  gStyle->SetHistMinimumZero();
5  TStopwatch fTimer;
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");
9 
10 
11  TH1F *hMomentum = new TH1F("hMomentum","Momentum",100,0,10);
12  simtree->Draw("PidChargedCand.GetMomentum().Mag()>>hMomentum","","goff");
13 
14  TH1F *hTheta = new TH1F("hTheta","Theta",100,0,180);
15  simtree->Draw("PidChargedCand.GetMomentum().Theta()*TMath::RadToDeg()>>hTheta","","goff");
16 
17  TH1F *hPhi = new TH1F("hPhi","Phi",100,-180,180);
18  simtree->Draw("PidChargedCand.GetMomentum().Phi()*TMath::RadToDeg()>>hPhi","","goff");
19 
20  TH1F *hMvdHits = new TH1F("hMvdHits","Number of MVD hits",15,-0.5,14.5);
21  simtree->Draw("PidChargedCand.GetMvdHits()>>hMvdHits","","goff");
22 
23  TH1F *hMvdDEDX = new TH1F("hMvdDEDX","MVD DEDX [MeV/cm]",200,0.,40.);
24  simtree->Draw("PidChargedCand.GetMvdDEDX()*1000>>hMvdDEDX","","goff");
25 
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");
28 
29  TH1F *hSttDEDX = new TH1F("hSttDEDX","STT DEDX [u.a.]",200,0.,50.);
30  simtree->Draw("PidChargedCand.GetSttMeanDEDX()>>hSttDEDX","PidChargedCand.GetTrackBranch()==50","goff");
31 
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");
34 
35  TH1F *hFtsDEDX = new TH1F("hFtsDEDX","FTS DEDX [u.a.]",200,0.,50.);
36  simtree->Draw("PidChargedCand.GetSttMeanDEDX()>>hFtsDEDX","PidChargedCand.GetTrackBranch()==53","goff");
37 
38  TH1F *hGemHits = new TH1F("hGemHits","Number of GEM hits",10,-0.5,9.5);
39  simtree->Draw("PidChargedCand.GetGemHits()>>hGemHits","","goff");
40 
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");
43 
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");
46 
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");
49 
50  TH1F *hTofQ = new TH1F("hTofQ","SciTil Quality",200,0.,20.);
51  simtree->Draw("PidChargedCand.GetTofQuality()>>hTofQ","PidChargedCand.GetTrackBranch()==50&&PidChargedCand.GetTofIndex()>-1","goff");
52 
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");
55 
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");
58 
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");
61 
62  TH1F *hFTofQ = new TH1F("hFTofQ","FTOF Quality",200,0.,2000.);
63  simtree->Draw("PidChargedCand.GetTofQuality()>>hFTofQ","PidChargedCand.GetTrackBranch()==53&&PidChargedCand.GetTofIndex()>-1","goff");
64 
65  TH1F *hDrcThetaC = new TH1F("hDrcThetaC","DIRC Cherenkov angle",100,0.,1.);
66  simtree->Draw("PidChargedCand.GetDrcThetaC()>>hDrcThetaC","PidChargedCand.GetDrcIndex()>-1","goff");
67 
68  TH1F *hDrcThetaCErr = new TH1F("hDrcThetaCErr","DIRC Cherenkov angle error",100,0.,1.);
69  simtree->Draw("PidChargedCand.GetDrcThetaCErr()>>hDrcThetaCErr","PidChargedCand.GetDrcIndex()>-1","goff");
70 
71  TH1F *hDrcQ = new TH1F("hDrcQ","DIRC Quality",100,0,.00001);
72  simtree->Draw("PidChargedCand.GetDrcQuality()>>hDrcQ","PidChargedCand.GetDrcIndex()>-1","goff");
73 
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");
76 
77  TH1F *hDiscThetaC = new TH1F("hDiscThetaC","DISC Cherenkov angle",100,0.,1.);
78  simtree->Draw("PidChargedCand.GetDiscThetaC()>>hDiscThetaC","PidChargedCand.GetDiscIndex()>-1","goff");
79 
80  TH1F *hDiscThetaCErr = new TH1F("hDiscThetaCErr","DISC Cherenkov angle error",100,0.,1.);
81  simtree->Draw("PidChargedCand.GetDiscThetaCErr()>>hDiscThetaCErr","PidChargedCand.GetDiscIndex()>-1","goff");
82 
83  TH1F *hDiscQ = new TH1F("hDiscQ","DISC Quality",100,0,.01);
84  simtree->Draw("PidChargedCand.GetDiscQuality()>>hDiscQ","PidChargedCand.GetDiscIndex()>-1","goff");
85 
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");
88 
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");
91 
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");
94 
95  TH1F *hEmcQ = new TH1F("hEmcQ","EMC Quality",100,0,20.);
96  simtree->Draw("PidChargedCand.GetEmcQuality()>>hEmcQ","PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==50","goff");
97 
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");
100 
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");
103 
104  TH1F *hEmcModule = new TH1F("hEmcModule","EMC Module",10,-0.5,9.5);
105  simtree->Draw("PidChargedCand.GetEmcModule()>>hEmcModule","PidChargedCand.GetEmcIndex()>-1","goff");
106 
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");
109 
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");
112 
113  TH1F *hEmcLat = new TH1F("hEmcLat","EMC Lat",100,0.,1);
114  simtree->Draw("PidChargedCand.GetEmcClusterLat()>>hEmcLat","PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==50","goff");
115 
116  TH1F *hEmcE1 = new TH1F("hEmcE1","EMC E1",100,0.,1);
117  simtree->Draw("PidChargedCand.GetEmcClusterE1()>>hEmcE1","PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==50","goff");
118 
119  TH1F *hEmcE9 = new TH1F("hEmcE9","EMC E9",100,0.,1);
120  simtree->Draw("PidChargedCand.GetEmcClusterE9()>>hEmcE9","PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==50","goff");
121 
122  TH1F *hEmcE25 = new TH1F("hEmcE25","EMC E25",100,0.,1);
123  simtree->Draw("PidChargedCand.GetEmcClusterE25()>>hEmcE25","PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==50","goff");
124 
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");
127 
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");
130 
131  TH1F *hFscQ = new TH1F("hFscQ","FSC Quality",100,0,20.);
132  simtree->Draw("PidChargedCand.GetEmcQuality()>>hFscQ","PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==53","goff");
133 
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");
136 
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");
139 
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");
142 
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");
145 
146  TH1F *hFscLat = new TH1F("hFscLat","FSC Lat",100,0.,1);
147  simtree->Draw("PidChargedCand.GetEmcClusterLat()>>hFscLat","PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==53","goff");
148 
149  TH1F *hFscE1 = new TH1F("hFscE1","FSC E1",100,0.,1);
150  simtree->Draw("PidChargedCand.GetEmcClusterE1()>>hFscE1","PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==53","goff");
151 
152  TH1F *hFscE9 = new TH1F("hFscE9","FSC E9",100,0.,1);
153  simtree->Draw("PidChargedCand.GetEmcClusterE9()>>hFscE9","PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==53","goff");
154 
155  TH1F *hFscE25 = new TH1F("hFscE25","FSC E25",100,0.,1);
156  simtree->Draw("PidChargedCand.GetEmcClusterE25()>>hFscE25","PidChargedCand.GetEmcIndex()>-1&&PidChargedCand.GetTrackBranch()==53","goff");
157 
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");
160 
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");
163 
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");
166 
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");
169 
170  TH1F *hMuoModule = new TH1F("hMuoModule","MUO Module",6,-1.5,4.5);
171  simtree->Draw("PidChargedCand.GetMuoModule()>>hMuoModule","PidChargedCand.GetMuoIndex()>-1","goff");
172 
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");
175 
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");
178 
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");
181 
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");
184 
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");
187 
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");
190 
191 
192  file_out->cd();
193 
194  hMomentum->Write();
195  hTheta->Write();
196  hPhi->Write();
197  hMvdHits->Write();
198  hMvdDEDX->Write();
199  hSttHits->Write();
200  hSttDEDX->Write();
201  hFtsHits->Write();
202  hFtsDEDX->Write();
203  hGemHits->Write();
204  hTofTof->Write();
205  hFTofTof->Write();
206  hTofLength->Write();
207  hFTofLength->Write();
208  hTofM2->Write();
209  hFTofM2->Write();
210  hTofQ->Write();
211  hFTofQ->Write();
212  hDrcThetaC->Write();
213  hDrcThetaCErr->Write();
214  hDrcQ->Write();
215  hDrcNPhotons->Write();
216  hDiscThetaC->Write();
217  hDiscThetaCErr->Write();
218  hDiscQ->Write();
219  hDiscNPhotons->Write();
220  hEmcRawEnergy->Write();
221  hEmcCalEnergy->Write();
222  hEmcQ->Write();
223  hEmcNCrystals->Write();
224  hEmcNBumps->Write();
225  hEmcModule->Write();
226  hEmcZ20->Write();
227  hEmcZ53->Write();
228  hEmcLat->Write();
229  hEmcE1->Write();
230  hEmcE9->Write();
231  hEmcE25->Write();
232  hFscRawEnergy->Write();
233  hFscCalEnergy->Write();
234  hFscQ->Write();
235  hFscNCrystals->Write();
236  hFscNBumps->Write();
237  hFscZ20->Write();
238  hFscZ53->Write();
239  hFscLat->Write();
240  hFscE1->Write();
241  hFscE9->Write();
242  hFscE25->Write();
243  hMuoNLayers->Write();
244  hMuoQ->Write();
245  hMuoIron->Write();
246  hMuoMomentumIn->Write();
247  hMuoModule->Write();
248  hMuoHits->Write();
249  hFMuoNLayers->Write();
250  hFMuoQ->Write();
251  hFMuoIron->Write();
252  hFMuoMomentumIn->Write();
253  hFMuoHits->Write();
254 
255  // Extract the maximal used memory an add is as Dart measurement
256  // This line is filtered by CTest and the value send to CDash
257  FairSystemInfo sysInfo;
258  Float_t maxMemory=sysInfo.GetMaxMemory();
259  cout << "<DartMeasurement name=\"MaxMemory\" type=\"numeric/double\">";
260  cout << maxMemory;
261  cout << "</DartMeasurement>" << endl;
262 
263  fTimer.Stop();
264  Double_t rtime = fTimer.RealTime();
265  Double_t ctime = fTimer.CpuTime();
266 
267  Float_t cpuUsage=ctime/rtime;
268  cout << "<DartMeasurement name=\"CpuLoad\" type=\"numeric/double\">";
269  cout << cpuUsage;
270  cout << "</DartMeasurement>" << endl;
271 
272  cout << endl;
273  cout << "Real time " << rtime << " s, CPU time " << ctime
274  << "s" << endl;
275  cout << "CPU usage " << cpuUsage*100. << "%" << endl;
276  cout << "Max Memory " << maxMemory << " MB" << endl;
277 
278  cout << "Macro finished successfully." << endl;
279 
280  return 0;
281 }
TTree * simtree
Definition: runPULL1.C:21
int plot_pid()
Double_t
Double_t ctime
Definition: hit_dirc.C:114
Double_t rtime
Definition: hit_dirc.C:113