]>
Commit | Line | Data |
---|---|---|
fc0eba5b | 1 | // $Id: AliAnalysisTaskHLTCalo.cxx 40285 2010-04-09 14:04:51Z kkanaki $\r |
2 | \r | |
3 | //**************************************************************************\r | |
4 | //* This file is property of and copyright by the ALICE HLT Project *\r | |
5 | //* ALICE Experiment at CERN, All rights reserved. *\r | |
6 | //* *\r | |
7 | //* Primary Authors: Zhongbao Yin <zbyin@mail.ccnu.edu.cn>, *\r | |
8 | //* Kalliopi Kanaki <Kalliopi.Kanaki@ift.uib.no> *\r | |
9 | //* for The ALICE HLT Project. *\r | |
10 | //* *\r | |
11 | //* Permission to use, copy, modify and distribute this software and its *\r | |
12 | //* documentation strictly for non-commercial purposes is hereby granted *\r | |
13 | //* without fee, provided that the above copyright notice appears in all *\r | |
14 | //* copies and that both the copyright notice and this permission notice *\r | |
15 | //* appear in the supporting documentation. The authors make no claims *\r | |
16 | //* about the suitability of this software for any purpose. It is *\r | |
17 | //* provided "as is" without express or implied warranty. *\r | |
18 | //**************************************************************************\r | |
19 | \r | |
20 | /** @file AliAnalysisTaskHLTCalo.cxx\r | |
21 | @author Zhongbao Yin, Kalliopi Kanaki, Svein Lindal\r | |
22 | @date\r | |
23 | @brief\r | |
24 | */\r | |
25 | \r | |
26 | #include <iostream>\r | |
27 | \r | |
28 | #include "TChain.h"\r | |
29 | #include "TTree.h"\r | |
30 | #include "TH1F.h"\r | |
31 | #include "TH2F.h"\r | |
32 | #include "TCanvas.h"\r | |
33 | #include "TVector3.h"\r | |
34 | #include "TString.h"\r | |
35 | #include "TObjArray.h"\r | |
36 | #include "TFile.h"\r | |
37 | #include "TList.h"\r | |
38 | #include "TRefArray.h"\r | |
39 | \r | |
40 | #include "AliESDEvent.h"\r | |
41 | #include "AliESDRun.h"\r | |
42 | #include "AliESDInputHandler.h"\r | |
43 | #include "AliESDCaloCluster.h"\r | |
c32fb395 | 44 | #include "AliESDtrack.h"\r |
fc0eba5b | 45 | #include "AliAnalysisTask.h"\r |
46 | #include "AliAnalysisManager.h"\r | |
47 | #include "AliAnalysisTaskHLTCalo.h"\r | |
48 | \r | |
49 | #include "AliHLTCaloHistoInvMass.h"\r | |
50 | #include "AliHLTCaloHistoClusterEnergy.h"\r | |
51 | #include "AliHLTCaloHistoMatchedTracks.h"\r | |
52 | #include "AliHLTCaloHistoProducer.h"\r | |
53 | \r | |
7e9b72dc | 54 | #include "AliHLTGlobalTriggerDecision.h"\r |
55 | \r | |
fc0eba5b | 56 | ClassImp(AliAnalysisTaskHLTCalo)\r |
57 | \r | |
58 | //===========================================================================================\r | |
59 | \r | |
c32fb395 | 60 | AliAnalysisTaskHLTCalo::AliAnalysisTaskHLTCalo() : AliAnalysisTaskSE()\r |
7e9b72dc | 61 | ,fUseHLTTrigger(kFALSE)\r |
c32fb395 | 62 | ,fESDRun(0)\r |
63 | ,fOutputList(0)\r | |
64 | ,fHistOfflResiduals(NULL)\r | |
65 | ,fHistOnlResiduals(NULL)\r | |
66 | ,fHistOfflDz(NULL)\r | |
67 | ,fHistOnlDz(NULL)\r | |
68 | ,fHistOfflDxy(NULL)\r | |
69 | ,fHistOnlDxy(NULL)\r | |
70 | ,fNevt(0)\r | |
71 | ,fTrgClsArray(0)\r | |
72 | ,fGlobalHistoProdArrOff(NULL)\r | |
73 | ,fGlobalHistoProdArrOn(NULL)\r | |
74 | ,fClustersArray(NULL)\r | |
97c5203c | 75 | ,fCaloName("")\r |
c32fb395 | 76 | {\r |
77 | // Constructor\r | |
78 | \r | |
79 | // Define input and output slots here\r | |
80 | // Input slot #0 works with a TChain\r | |
81 | // DefineInput(0, TChain::Class());\r | |
82 | // Output slot #0 writes into a TH1 container\r | |
83 | \r | |
84 | //DefineOutput(1, TList::Class());\r | |
85 | }\r | |
86 | \r | |
fc0eba5b | 87 | AliAnalysisTaskHLTCalo::AliAnalysisTaskHLTCalo(const char *name)\r |
88 | : \r | |
89 | AliAnalysisTaskSE(name)\r | |
7e9b72dc | 90 | ,fUseHLTTrigger(kFALSE)\r |
fc0eba5b | 91 | ,fESDRun(0)\r |
92 | ,fOutputList(0)\r | |
93 | ,fHistOfflResiduals(NULL)\r | |
94 | ,fHistOnlResiduals(NULL)\r | |
95 | ,fHistOfflDz(NULL)\r | |
96 | ,fHistOnlDz(NULL)\r | |
97 | ,fHistOfflDxy(NULL)\r | |
98 | ,fHistOnlDxy(NULL)\r | |
c32fb395 | 99 | ,fHistOfflResidualsPos(NULL)\r |
100 | ,fHistOnlResidualsPos(NULL)\r | |
101 | ,fHistOfflDzPos(NULL)\r | |
102 | ,fHistOnlDzPos(NULL)\r | |
103 | ,fHistOfflDxyPos(NULL)\r | |
104 | ,fHistOnlDxyPos(NULL)\r | |
105 | ,fHistOfflResidualsNeg(NULL)\r | |
106 | ,fHistOnlResidualsNeg(NULL)\r | |
107 | ,fHistOfflDzNeg(NULL)\r | |
108 | ,fHistOnlDzNeg(NULL)\r | |
109 | ,fHistOfflDxyNeg(NULL)\r | |
110 | ,fHistOnlDxyNeg(NULL)\r | |
111 | ,fHistNclvsNcl(NULL)\r | |
112 | ,fHistTotEVsTotE(NULL)\r | |
fc0eba5b | 113 | ,fNevt(0)\r |
114 | ,fTrgClsArray(0)\r | |
115 | ,fGlobalHistoProdArrOff(NULL)\r | |
116 | ,fGlobalHistoProdArrOn(NULL)\r | |
117 | ,fClustersArray(NULL)\r | |
97c5203c | 118 | ,fCaloName(name)\r |
fc0eba5b | 119 | {\r |
120 | // Constructor\r | |
121 | \r | |
122 | // Define input and output slots here\r | |
123 | // Input slot #0 works with a TChain\r | |
124 | // DefineInput(0, TChain::Class());\r | |
125 | // Output slot #0 writes into a TH1 container\r | |
126 | \r | |
127 | DefineOutput(1, TList::Class());\r | |
128 | }\r | |
129 | \r | |
130 | \r | |
131 | //----------------------------------------------------------------------------------------------------\r | |
132 | \r | |
133 | void AliAnalysisTaskHLTCalo::UserCreateOutputObjects(){\r | |
134 | // Create histograms\r | |
135 | \r | |
136 | OpenFile(1);\r | |
137 | \r | |
138 | fOutputList = new TList();\r | |
cecabf41 | 139 | fOutputList->SetOwner();\r |
fc0eba5b | 140 | fOutputList->SetName(GetName());\r |
141 | \r | |
142 | CreateSpecificStuff(fOutputList);\r | |
143 | \r | |
144 | // --------------- define histograms ---------------------//\r | |
145 | \r | |
146 | fHistOfflResiduals = new TH1F("fHistOfflResiduals", "Residuals between cluster and nearest track in cm (offline)", 50, 0, 50);\r | |
147 | fHistOnlResiduals = new TH1F("fHistOnlResiduals", "Residuals between cluster and nearest track in cm (online)", 50, 0, 50);\r | |
c32fb395 | 148 | fHistOfflDxy = new TH1F("fHistOfflDxy", "Dxy between cluster and nearest track in cm (offline)", 80, -40, 40);\r |
149 | fHistOnlDxy = new TH1F("fHistOnlDxy", "Dxy between cluster and nearest track in cm (online)", 80, -40, 40);\r | |
150 | fHistOfflDz = new TH1F("fHistOfflDz", "Dz between cluster and nearest track in cm (offline)", 80, -40, 40);\r | |
151 | fHistOnlDz = new TH1F("fHistOnlDz", "Dz between cluster and nearest track in cm (online)", 80, -40, 40);\r | |
152 | \r | |
153 | fHistOfflResidualsPos = new TH1F("fHistOfflResidualsPos", "Residuals between cluster and nearest track in cm (offline)Pos", 50, 0, 50);\r | |
154 | fHistOnlResidualsPos = new TH1F("fHistOnlResidualsPos", "Residuals between cluster and nearest track in cm (online)Pos", 50, 0, 50);\r | |
155 | fHistOfflDxyPos = new TH1F("fHistOfflDxyPos", "Dxy between cluster and nearest track in cm (offline)Pos", 80, -40, 40);\r | |
156 | fHistOnlDxyPos = new TH1F("fHistOnlDxyPos", "Dxy between cluster and nearest track in cm (online)Pos", 80, -40, 40);\r | |
157 | fHistOfflDzPos = new TH1F("fHistOfflDzPos", "Dz between cluster and nearest track in cm (offline)Pos", 80, -40, 40);\r | |
158 | fHistOnlDzPos = new TH1F("fHistOnlDzPos", "Dz between cluster and nearest track in cm (online)Pos", 80, -40, 40);\r | |
159 | \r | |
160 | fHistOfflResidualsNeg = new TH1F("fHistOfflResidualsNeg", "Residuals between cluster and nearest track in cm (offline)Neg", 50, 0, 50);\r | |
161 | fHistOnlResidualsNeg = new TH1F("fHistOnlResidualsNeg", "Residuals between cluster and nearest track in cm (online)Neg", 50, 0, 50);\r | |
162 | fHistOfflDxyNeg = new TH1F("fHistOfflDxyNeg", "Dxy between cluster and nearest track in cm (offline)Neg", 80, -40, 40);\r | |
163 | fHistOnlDxyNeg = new TH1F("fHistOnlDxyNeg", "Dxy between cluster and nearest track in cm (online)Neg", 80, -40, 40);\r | |
164 | fHistOfflDzNeg = new TH1F("fHistOfflDzNeg", "Dz between cluster and nearest track in cm (offline)Neg", 80, -40, 40);\r | |
165 | fHistOnlDzNeg = new TH1F("fHistOnlDzNeg", "Dz between cluster and nearest track in cm (online)Neg", 80, -40, 40);\r | |
166 | \r | |
167 | fHistNclvsNcl = new TH2F("fHistNclvsNcl", "Number of offline cl vs online cl", 100, 0, 10, 100, 0, 10);\r | |
168 | fHistTotEVsTotE = new TH2F("fHistTotEVsTotE", "Total energy in online cl vs total energy in offline cl", 300, 0, 150, 300, 0, 150);\r | |
169 | fHistTotEVsTotE->SetXTitle("Offline energy sum");\r | |
170 | fHistTotEVsTotE->SetYTitle("Online energy sum");\r | |
fc0eba5b | 171 | // HLT histogram producers\r |
172 | fGlobalHistoProdArrOff = new TObjArray();\r | |
173 | fGlobalHistoProdArrOn = new TObjArray();\r | |
174 | \r | |
fc0eba5b | 175 | \r |
97c5203c | 176 | fGlobalHistoProdArrOff->AddLast(dynamic_cast<TObject*>(new AliHLTCaloHistoClusterEnergy(Form("%s_OFF", fCaloName.Data()))));\r |
177 | fGlobalHistoProdArrOff->AddLast(dynamic_cast<TObject*>(new AliHLTCaloHistoInvMass(Form("%s_OFF", fCaloName.Data() ))));\r | |
178 | fGlobalHistoProdArrOff->AddLast(dynamic_cast<TObject*>(new AliHLTCaloHistoMatchedTracks(Form("%s_OFF", fCaloName.Data() ))));\r | |
fc0eba5b | 179 | \r |
97c5203c | 180 | fGlobalHistoProdArrOn->AddLast(dynamic_cast<TObject*>(new AliHLTCaloHistoClusterEnergy(Form("%s_ON", fCaloName.Data() ))));\r |
181 | fGlobalHistoProdArrOn->AddLast(dynamic_cast<TObject*>(new AliHLTCaloHistoInvMass(Form("%s_ON", fCaloName.Data() ))));\r | |
182 | fGlobalHistoProdArrOn->AddLast(dynamic_cast<TObject*>(new AliHLTCaloHistoMatchedTracks(Form("%s_ON", fCaloName.Data() ))));\r | |
fc0eba5b | 183 | \r |
184 | fClustersArray = new TRefArray();\r | |
185 | \r | |
186 | // -------------- add histograms to the output TList -----------------//\r | |
187 | \r | |
188 | fOutputList->Add(fHistOfflResiduals);\r | |
189 | fOutputList->Add(fHistOnlResiduals);\r | |
fc0eba5b | 190 | fOutputList->Add(fHistOfflDz);\r |
191 | fOutputList->Add(fHistOnlDz);\r | |
fc0eba5b | 192 | fOutputList->Add(fHistOfflDxy);\r |
193 | fOutputList->Add(fHistOnlDxy);\r | |
194 | \r | |
c32fb395 | 195 | \r |
196 | fOutputList->Add(fHistOfflResidualsPos);\r | |
197 | fOutputList->Add(fHistOnlResidualsPos);\r | |
198 | fOutputList->Add(fHistOfflDzPos);\r | |
199 | fOutputList->Add(fHistOnlDzPos);\r | |
200 | fOutputList->Add(fHistOfflDxyPos);\r | |
201 | fOutputList->Add(fHistOnlDxyPos);\r | |
202 | \r | |
203 | \r | |
204 | fOutputList->Add(fHistOfflResidualsNeg);\r | |
205 | fOutputList->Add(fHistOnlResidualsNeg);\r | |
206 | fOutputList->Add(fHistOfflDzNeg);\r | |
207 | fOutputList->Add(fHistOnlDzNeg);\r | |
208 | fOutputList->Add(fHistOfflDxyNeg);\r | |
209 | fOutputList->Add(fHistOnlDxyNeg);\r | |
210 | \r | |
211 | \r | |
212 | fOutputList->Add(fHistTotEVsTotE);\r | |
213 | fOutputList->Add(fHistNclvsNcl);\r | |
214 | \r | |
fc0eba5b | 215 | for(int ip = 0; ip < fGlobalHistoProdArrOff->GetEntriesFast(); ip++) {\r |
216 | AliHLTCaloHistoProducer *prod = dynamic_cast<AliHLTCaloHistoProducer*>(fGlobalHistoProdArrOff->At(ip));\r | |
217 | fOutputList->AddAll(prod->GetHistograms());\r | |
218 | }\r | |
219 | \r | |
220 | for(int ip = 0; ip < fGlobalHistoProdArrOn->GetEntriesFast(); ip++) {\r | |
221 | AliHLTCaloHistoProducer *prod = dynamic_cast<AliHLTCaloHistoProducer*>(fGlobalHistoProdArrOn->At(ip));\r | |
222 | fOutputList->AddAll(prod->GetHistograms());\r | |
223 | }\r | |
224 | \r | |
cecabf41 | 225 | PostData(1, fOutputList);\r |
fc0eba5b | 226 | }\r |
227 | \r | |
228 | void AliAnalysisTaskHLTCalo::NotifyRun(){\r | |
229 | // This will not work if the active trigger classes change from run to run.\r | |
230 | // Then one has to know all trigger classes before processing the data.\r | |
231 | \r | |
232 | AliESDEvent* evESD = dynamic_cast<AliESDEvent*>(InputEvent());\r | |
233 | TString trgClasses = evESD->GetESDRun()->GetActiveTriggerClasses(); \r | |
234 | \r | |
235 | fTrgClsArray = trgClasses.Tokenize(" ");\r | |
236 | //cout<<fTrgClsArray->GetEntries()<<endl; \r | |
237 | \r | |
238 | // for(Int_t i = 0; i < fTrgClsArray->GetEntries(); i++){ \r | |
239 | // TString str = ((TObjString *)fTrgClsArray->At(i))->GetString(); \r | |
240 | // (fHistTrigger->GetXaxis())->SetBinLabel(i+1, str.Data()); \r | |
241 | // (fHistHLTTrigger->GetXaxis())->SetBinLabel(i+1, str.Data()); \r | |
242 | // } \r | |
243 | \r | |
244 | evESD = NULL;\r | |
245 | }\r | |
246 | \r | |
247 | void AliAnalysisTaskHLTCalo::UserExec(Option_t *){\r | |
248 | \r | |
c32fb395 | 249 | \r |
fc0eba5b | 250 | AliESDEvent* evESD = dynamic_cast<AliESDEvent*>(InputEvent());\r |
251 | \r | |
252 | if (!evESD) {\r | |
253 | Printf("ERROR: fESD not available");\r | |
254 | return;\r | |
255 | }\r | |
256 | \r | |
257 | AliESDEvent* evHLTESD = 0;\r | |
258 | AliESDInputHandler* esdH = dynamic_cast<AliESDInputHandler*>(fInputHandler);\r | |
259 | \r | |
260 | if(esdH) evHLTESD = esdH->GetHLTEvent();\r | |
261 | \r | |
262 | if(!evHLTESD){\r | |
263 | Printf("ERROR: HLTesd not available");\r | |
264 | return;\r | |
265 | }\r | |
266 | \r | |
7e9b72dc | 267 | // To check if anything was triggered in HLT.\r |
268 | if(fUseHLTTrigger){ \r | |
269 | if (!((AliHLTGlobalTriggerDecision*)evHLTESD->GetHLTTriggerDecision())->Result()){\r | |
270 | return;\r | |
271 | // Process all and any events that were triggered by HLT.\r | |
272 | } \r | |
273 | }\r | |
c32fb395 | 274 | \r |
fc0eba5b | 275 | DoSpecificStuff(evESD, evHLTESD);\r |
c32fb395 | 276 | \r |
277 | Double_t offE = 0.0;\r | |
278 | Double_t onE = 0.0;\r | |
279 | \r | |
280 | \r | |
fc0eba5b | 281 | for(int icl = 0; icl < evESD->GetNumberOfCaloClusters(); icl++) {\r |
282 | AliESDCaloCluster * cluster = evESD->GetCaloCluster(icl);\r | |
c32fb395 | 283 | if(IsThisDetector(cluster)) {\r |
284 | \r | |
285 | offE += cluster->E();\r | |
286 | fHistOfflResiduals->Fill(cluster->GetEmcCpvDistance());\r | |
287 | fHistOfflDz->Fill(cluster->GetTrackDz());\r | |
288 | fHistOfflDxy->Fill(cluster->GetTrackDx());\r | |
289 | \r | |
290 | \r | |
291 | TArrayI* matchedTracks = cluster->GetTracksMatched();\r | |
292 | \r | |
293 | if (matchedTracks) {\r | |
294 | if (matchedTracks->At(0) > -1) {\r | |
295 | \r | |
296 | Int_t trackID = matchedTracks->At(0);\r | |
297 | \r | |
298 | AliESDtrack * track = evESD->GetTrack(trackID);\r | |
299 | \r | |
300 | if(track) {\r | |
301 | if (track->Charge() > 0) {\r | |
302 | \r | |
303 | fHistOfflResidualsPos->Fill(cluster->GetEmcCpvDistance());;\r | |
304 | fHistOfflDzPos->Fill(cluster->GetTrackDz());\r | |
305 | fHistOfflDxyPos->Fill(cluster->GetTrackDx());\r | |
306 | \r | |
307 | } else if (track->Charge() < 0) {\r | |
308 | \r | |
309 | fHistOfflResidualsNeg->Fill(cluster->GetEmcCpvDistance());;\r | |
310 | fHistOfflDzNeg->Fill(cluster->GetTrackDz());\r | |
311 | fHistOfflDxyNeg->Fill(cluster->GetTrackDx());\r | |
312 | \r | |
313 | } else {\r | |
314 | cout <<"BALLE wtf!!"<<endl;\r | |
315 | }\r | |
316 | \r | |
317 | } else {\r | |
318 | cout << "BALLE no track!"<<endl;\r | |
319 | }\r | |
320 | }\r | |
321 | } else {\r | |
322 | cout << "BALLE no array"<<endl;\r | |
323 | }\r | |
fc0eba5b | 324 | }\r |
325 | }\r | |
326 | \r | |
c32fb395 | 327 | \r |
328 | \r | |
fc0eba5b | 329 | for(int icl = 0; icl < evHLTESD->GetNumberOfCaloClusters(); icl++) {\r |
330 | AliESDCaloCluster * cluster = evHLTESD->GetCaloCluster(icl);\r | |
c32fb395 | 331 | if(IsThisDetector(cluster)) {\r |
332 | onE += cluster->E();\r | |
fc0eba5b | 333 | fHistOnlResiduals->Fill(evHLTESD->GetCaloCluster(icl)->GetEmcCpvDistance());\r |
334 | fHistOnlDxy->Fill(evHLTESD->GetCaloCluster(icl)->GetTrackDx());\r | |
335 | fHistOnlDz->Fill(evHLTESD->GetCaloCluster(icl)->GetTrackDz());\r | |
c32fb395 | 336 | \r |
337 | TArrayI* matchedTracks = cluster->GetTracksMatched();\r | |
338 | \r | |
339 | if (matchedTracks) {\r | |
340 | if (matchedTracks->At(0) > -1) {\r | |
341 | \r | |
342 | Int_t trackID = matchedTracks->At(0);\r | |
343 | \r | |
344 | AliESDtrack * track = evHLTESD->GetTrack(trackID);\r | |
345 | \r | |
346 | if(track) {\r | |
347 | if (track->Charge() > 0) {\r | |
348 | \r | |
349 | fHistOnlResidualsPos->Fill(cluster->GetEmcCpvDistance());;\r | |
350 | fHistOnlDzPos->Fill(cluster->GetTrackDz());\r | |
351 | fHistOnlDxyPos->Fill(cluster->GetTrackDx());\r | |
352 | \r | |
353 | } else if (track->Charge() < 0) {\r | |
354 | \r | |
355 | fHistOnlResidualsNeg->Fill(cluster->GetEmcCpvDistance());;\r | |
356 | fHistOnlDzNeg->Fill(cluster->GetTrackDz());\r | |
357 | fHistOnlDxyNeg->Fill(cluster->GetTrackDx());\r | |
358 | \r | |
359 | } else {\r | |
360 | cout <<"BALLE wtf!!"<<endl;\r | |
361 | }\r | |
362 | \r | |
363 | } else {\r | |
364 | cout << "BALLE no track!"<<endl;\r | |
365 | }\r | |
366 | }\r | |
367 | } else {\r | |
368 | //cout << "BALLE no array"<<endl;\r | |
369 | }\r | |
370 | \r | |
371 | \r | |
372 | \r | |
373 | \r | |
374 | \r | |
fc0eba5b | 375 | }\r |
376 | }\r | |
377 | \r | |
378 | Int_t nc = GetClusters(evESD, fClustersArray);\r | |
379 | for(int ip = 0; ip < fGlobalHistoProdArrOff->GetEntriesFast(); ip++) {\r | |
380 | AliHLTCaloHistoProducer *prod = dynamic_cast<AliHLTCaloHistoProducer*>(fGlobalHistoProdArrOff->At(ip));\r | |
381 | prod->FillHistograms(nc, fClustersArray);\r | |
382 | }\r | |
383 | \r | |
c32fb395 | 384 | Int_t nOnc = GetClusters(evHLTESD, fClustersArray);\r |
fc0eba5b | 385 | for(int ip = 0; ip < fGlobalHistoProdArrOn->GetEntriesFast(); ip++) {\r |
386 | AliHLTCaloHistoProducer *prod = dynamic_cast<AliHLTCaloHistoProducer*>(fGlobalHistoProdArrOn->At(ip));\r | |
c32fb395 | 387 | prod->FillHistograms(nOnc, fClustersArray);\r |
fc0eba5b | 388 | }\r |
389 | \r | |
c32fb395 | 390 | fHistNclvsNcl->Fill(nc, nOnc);\r |
391 | fHistTotEVsTotE->Fill(offE, onE);\r | |
392 | \r | |
fc0eba5b | 393 | \r |
394 | fNevt++;\r | |
395 | \r | |
396 | // Post output data.\r | |
397 | PostData(1, fOutputList);\r | |
398 | \r | |
399 | }\r | |
400 | \r | |
401 | void AliAnalysisTaskHLTCalo::Terminate(Option_t *){\r | |
402 | \r | |
403 | \r | |
c32fb395 | 404 | \r |
fc0eba5b | 405 | // Printf("Number of tracks thru CE: %d", fNtracksThruZ0);\r |
406 | // Printf("Number of tracks thru CE from triggered events: %d", \r | |
407 | // fNtracksThruZ0Trig);\r | |
408 | \r | |
409 | \r | |
410 | // Draw result to the screen\r | |
411 | // Called once at the end of the query\r | |
412 | \r | |
413 | // TCanvas *c1 = new TCanvas("AliAnalysisTaskHLTCalo","Trigger",10,10,510,510);\r | |
414 | //fHistTrigger->DrawCopy("E");\r | |
415 | \r | |
416 | }\r |