]>
Commit | Line | Data |
---|---|---|
bc41680b | 1 | /************************************************************************** |
2 | * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
3 | * * | |
4 | * Author: The ALICE Off-line Project. * | |
5 | * Contributors are mentioned in the code where appropriate. * | |
6 | * * | |
7 | * Permission to use, copy, modify and distribute this software and its * | |
8 | * documentation strictly for non-commercial purposes hereby granted * | |
9 | * without fee, provided that the above copyright notice appears in all * | |
10 | * copies and that both the copyright notice and this permission notice * | |
11 | * appear in the supporting documentation. The authors make no claims * | |
12 | * about the suitability of this software for any purpose. It is * | |
13 | * provided "as is" without express or implied warranty. * | |
14 | **************************************************************************/ | |
15 | ||
16 | //_________________________________________________________________________ | |
17 | // | |
2db10729 | 18 | // Class for study of EMCAL trigger behavior |
bc41680b | 19 | // |
20 | // -- Author: Gustavo Conesa (CNRS-LPSC-Grenoble) | |
21 | ////////////////////////////////////////////////////////////////////////////// | |
22 | ||
23 | ||
24 | // --- ROOT system --- | |
25 | #include <TH2F.h> | |
26 | #include <TClonesArray.h> | |
27 | #include <TObjString.h> | |
28 | ||
29 | // --- Analysis system --- | |
30 | #include "AliAnaEMCALTriggerClusters.h" | |
31 | #include "AliCaloTrackReader.h" | |
32 | #include "AliCaloPID.h" | |
33 | #include "AliFiducialCut.h" | |
34 | #include "AliVCluster.h" | |
35 | #include "AliAODEvent.h" | |
36 | #include "AliESDEvent.h" | |
37 | ||
38 | // --- Detectors --- | |
39 | #include "AliEMCALGeometry.h" | |
40 | ||
41 | ClassImp(AliAnaEMCALTriggerClusters) | |
42 | ||
f59c9dd3 | 43 | //______________________________________________________ |
bc41680b | 44 | AliAnaEMCALTriggerClusters::AliAnaEMCALTriggerClusters() : |
45 | AliAnaCaloTrackCorrBaseClass(), | |
46 | fRejectTrackMatch(0), fNCellsCut(0), | |
47 | fMinM02(0), fMaxM02(0), | |
f59c9dd3 | 48 | fMomentum(), |
bc41680b | 49 | // Histograms |
50 | fhE(0), fhESelected(0), | |
51 | fhEtaPhi(0), fhEtaPhiSelected(0), | |
52 | fhEtaPhiEMCALBC0(0), fhEtaPhiEMCALBC1(0), fhEtaPhiEMCALBCN(0), | |
53 | fhTimeTriggerEMCALBCCluster(0), | |
54 | fhTimeTriggerEMCALBCUMCluster(0), | |
55 | fhEtaPhiTriggerEMCALBCClusterOverTh(0), | |
56 | fhEtaPhiTriggerEMCALBCUMClusterOverTh(0), | |
57 | fhEtaPhiTriggerEMCALBCClusterBelowTh1(0), | |
58 | fhEtaPhiTriggerEMCALBCUMClusterBelowTh1(0), | |
59 | fhEtaPhiTriggerEMCALBCClusterBelowTh2(0), | |
60 | fhEtaPhiTriggerEMCALBCUMClusterBelowTh2(0), | |
61 | fhEtaPhiTriggerEMCALBCExotic(0), fhTimeTriggerEMCALBCExotic(0), | |
62 | fhEtaPhiTriggerEMCALBCUMExotic(0), fhTimeTriggerEMCALBCUMExotic(0), | |
63 | fhEtaPhiTriggerEMCALBCBad(0), fhTimeTriggerEMCALBCBad(0), | |
64 | fhEtaPhiTriggerEMCALBCUMBad(0), fhTimeTriggerEMCALBCUMBad(0), | |
65 | fhEtaPhiTriggerEMCALBCBadExotic(0), fhTimeTriggerEMCALBCBadExotic(0), | |
66 | fhEtaPhiTriggerEMCALBCUMBadExotic(0), fhTimeTriggerEMCALBCUMBadExotic(0), | |
67 | fhEtaPhiTriggerEMCALBCExoticCluster(0), fhTimeTriggerEMCALBCExoticCluster(0), | |
68 | fhEtaPhiTriggerEMCALBCUMExoticCluster(0), fhTimeTriggerEMCALBCUMExoticCluster(0), | |
69 | fhEtaPhiTriggerEMCALBCBadCluster(0), fhTimeTriggerEMCALBCBadCluster(0), | |
70 | fhEtaPhiTriggerEMCALBCUMBadCluster(0), fhTimeTriggerEMCALBCUMBadCluster(0), | |
71 | fhEtaPhiTriggerEMCALBCBadExoticCluster(0), fhTimeTriggerEMCALBCBadExoticCluster(0), | |
72 | fhEtaPhiTriggerEMCALBCUMBadExoticCluster(0), fhTimeTriggerEMCALBCUMBadExoticCluster(0), | |
73 | fhTimeTriggerEMCALBCBadMaxCell(0), fhTimeTriggerEMCALBCUMBadMaxCell(0), | |
74 | fhTimeTriggerEMCALBCBadMaxCellExotic(0), fhTimeTriggerEMCALBCUMBadMaxCellExotic(0), | |
75 | fhEtaPhiTriggerEMCALBCUMReMatchOpenTimeCluster (0), fhTimeTriggerEMCALBCUMReMatchOpenTimeCluster(0), | |
76 | fhEtaPhiTriggerEMCALBCUMReMatchCheckNeighCluster(0),fhTimeTriggerEMCALBCUMReMatchCheckNeighCluster(0), | |
77 | fhEtaPhiTriggerEMCALBCUMReMatchBothCluster(0), fhTimeTriggerEMCALBCUMReMatchBothCluster(0), | |
78 | fhTimeTriggerEMCALBC0UMReMatchOpenTime(0), | |
79 | fhTimeTriggerEMCALBC0UMReMatchCheckNeigh(0), | |
80 | fhTimeTriggerEMCALBC0UMReMatchBoth(0), | |
81 | fhEtaPhiNoTrigger(0), fhTimeNoTrigger(0), | |
82 | fhEtaPhiSelectedEMCALBC0(0), fhEtaPhiSelectedEMCALBC1(0), fhEtaPhiSelectedEMCALBCN(0), | |
83 | fhTimeSelectedTriggerEMCALBC0UMReMatchOpenTime(0), | |
84 | fhTimeSelectedTriggerEMCALBC0UMReMatchCheckNeigh(0), | |
85 | fhTimeSelectedTriggerEMCALBC0UMReMatchBoth(0) | |
86 | { | |
87 | //default ctor | |
88 | ||
89 | for(Int_t i = 0; i < 11; i++) | |
90 | { | |
91 | fhEtaPhiTriggerEMCALBC [i] = 0 ; | |
92 | fhTimeTriggerEMCALBC [i] = 0 ; | |
93 | fhEtaPhiTriggerEMCALBCUM [i] = 0 ; | |
94 | fhTimeTriggerEMCALBCUM [i] = 0 ; | |
95 | ||
96 | fhEtaPhiSelectedTriggerEMCALBC [i] = 0 ; | |
97 | fhTimeSelectedTriggerEMCALBC [i] = 0 ; | |
98 | fhEtaPhiSelectedTriggerEMCALBCUM [i] = 0 ; | |
99 | fhTimeSelectedTriggerEMCALBCUM [i] = 0 ; | |
100 | ||
101 | fhTimeSelectedTriggerEMCALBCPileUpSPD[i] = 0 ; | |
102 | fhTimeTriggerEMCALBCPileUpSPD [i] = 0 ; | |
103 | ||
104 | fhEtaPhiTriggerEMCALBCCluster [i] = 0 ; | |
105 | fhEtaPhiTriggerEMCALBCUMCluster [i] = 0 ; | |
106 | } | |
107 | ||
108 | //Initialize parameters | |
109 | InitParameters(); | |
110 | ||
111 | } | |
112 | ||
113 | //_____________________________________________________________ | |
114 | void AliAnaEMCALTriggerClusters::FillBadTriggerEventHistogram() | |
115 | { | |
116 | // Fill Bad events histo, study bad/exotic trigger BC | |
117 | ||
118 | Int_t idTrig = GetReader()->GetTriggerClusterIndex(); | |
119 | Bool_t exotic = GetReader()->IsExoticEvent(); | |
120 | Bool_t bad = GetReader()->IsBadCellTriggerEvent(); | |
121 | ||
122 | Bool_t ok = kFALSE; | |
123 | if(( bad || exotic ) && idTrig >= 0 && !GetReader()->AreBadTriggerEventsRemoved()) ok = kTRUE; | |
124 | ||
125 | if(!ok) return; | |
126 | ||
127 | // printf("Index %d, Id %d, bad %d, exo %d\n", | |
128 | // GetReader()->GetTriggerClusterIndex(), | |
129 | // GetReader()->GetTriggerClusterId(), | |
130 | // GetReader()->IsBadCellTriggerEvent(), | |
131 | // GetReader()->IsExoticEvent() ); | |
132 | ||
133 | TClonesArray * clusterList = 0; | |
134 | TString clusterListName = GetReader()->GetEMCALClusterListName(); | |
135 | if (GetReader()->GetInputEvent()->FindListObject(clusterListName)) | |
136 | clusterList = dynamic_cast<TClonesArray*> (GetReader()->GetInputEvent() ->FindListObject(clusterListName)); | |
137 | else if(GetReader()->GetOutputEvent()) | |
138 | clusterList = dynamic_cast<TClonesArray*> (GetReader()->GetOutputEvent()->FindListObject(clusterListName)); | |
139 | ||
140 | AliVCluster * badClusTrig = 0; | |
141 | if(clusterList) badClusTrig = (AliVCluster*) clusterList->At(idTrig); | |
142 | else badClusTrig = GetReader()->GetInputEvent()->GetCaloCluster(idTrig); | |
143 | ||
144 | if(!badClusTrig) | |
145 | { | |
2db10729 | 146 | AliWarning(Form("No cluster (bad-exotic trigger) found with requested index %d \n",idTrig)); |
bc41680b | 147 | return; |
148 | } | |
149 | ||
f59c9dd3 | 150 | badClusTrig->GetMomentum(fMomentum,GetVertex(0)); |
bc41680b | 151 | |
f59c9dd3 | 152 | Float_t etaclusterBad = fMomentum.Eta(); |
153 | Float_t phiclusterBad = fMomentum.Phi(); | |
bc41680b | 154 | if( phiclusterBad < 0 ) phiclusterBad+=TMath::TwoPi(); |
155 | Float_t tofclusterBad = badClusTrig->GetTOF()*1.e9; | |
156 | Float_t eclusterBad = badClusTrig->E(); | |
157 | ||
158 | if( bad && exotic ) | |
159 | { | |
160 | if(GetReader()->IsTriggerMatched()) | |
161 | { | |
162 | fhEtaPhiTriggerEMCALBCBadExoticCluster->Fill(etaclusterBad, phiclusterBad); | |
163 | fhTimeTriggerEMCALBCBadExoticCluster ->Fill(eclusterBad, tofclusterBad); | |
164 | } | |
165 | else | |
166 | { | |
167 | fhEtaPhiTriggerEMCALBCUMBadExoticCluster->Fill(etaclusterBad, phiclusterBad); | |
168 | fhTimeTriggerEMCALBCUMBadExoticCluster ->Fill(eclusterBad, tofclusterBad); | |
169 | } | |
170 | } | |
171 | else if( bad && !exotic ) | |
172 | { | |
173 | if(GetReader()->IsTriggerMatched()) | |
174 | { | |
175 | fhEtaPhiTriggerEMCALBCBadCluster->Fill(etaclusterBad, phiclusterBad); | |
176 | fhTimeTriggerEMCALBCBadCluster ->Fill(eclusterBad, tofclusterBad); | |
177 | } | |
178 | else | |
179 | { | |
180 | fhEtaPhiTriggerEMCALBCUMBadCluster->Fill(etaclusterBad, phiclusterBad); | |
181 | fhTimeTriggerEMCALBCUMBadCluster ->Fill(eclusterBad, tofclusterBad); | |
182 | } | |
183 | }// Bad cluster trigger | |
184 | else if( !bad && exotic ) | |
185 | { | |
186 | if(GetReader()->IsTriggerMatched()) | |
187 | { | |
188 | fhEtaPhiTriggerEMCALBCExoticCluster->Fill(etaclusterBad, phiclusterBad); | |
189 | fhTimeTriggerEMCALBCExoticCluster ->Fill(eclusterBad, tofclusterBad); | |
190 | } | |
191 | else | |
192 | { | |
193 | fhEtaPhiTriggerEMCALBCUMExoticCluster->Fill(etaclusterBad, phiclusterBad); | |
194 | fhTimeTriggerEMCALBCUMExoticCluster ->Fill(eclusterBad, tofclusterBad); | |
195 | } | |
196 | } | |
197 | ||
198 | } | |
199 | ||
200 | //____________________________________________________________________________________________________________________________ | |
201 | void AliAnaEMCALTriggerClusters::FillRawClusterTriggerBCHistograms(Int_t idcalo, Float_t ecluster, Float_t tofcluster, | |
202 | Float_t etacluster, Float_t phicluster) | |
203 | ||
204 | { | |
205 | // Fill trigger related histograms | |
206 | ||
207 | Float_t tofclusterUS = TMath::Abs(tofcluster); | |
208 | ||
209 | if(ecluster > 2) | |
210 | { | |
211 | if (tofclusterUS < 25) fhEtaPhiEMCALBC0->Fill(etacluster, phicluster); | |
212 | else if (tofclusterUS < 75) fhEtaPhiEMCALBC1->Fill(etacluster, phicluster); | |
213 | else fhEtaPhiEMCALBCN->Fill(etacluster, phicluster); | |
214 | } | |
215 | ||
216 | Int_t bc = GetReader()->GetTriggerClusterBC(); | |
217 | Int_t id = GetReader()->GetTriggerClusterId(); | |
218 | Bool_t badMax = GetReader()->IsBadMaxCellTriggerEvent(); | |
219 | ||
220 | Int_t histoBC = bc+5; | |
221 | if(GetReader()->AreBadTriggerEventsRemoved()) histoBC=0; // histograms created only for one BC since the others where rejected | |
222 | ||
223 | if(id==-2) | |
224 | { | |
225 | //printf("AliAnaEMCALTriggerClusters::ClusterSelected() - No trigger found bc=%d\n",bc); | |
226 | fhEtaPhiNoTrigger->Fill(etacluster, phicluster); | |
227 | fhTimeNoTrigger ->Fill(ecluster, tofcluster); | |
228 | } | |
229 | else if(TMath::Abs(bc) < 6) | |
230 | { | |
231 | if(!GetReader()->IsBadCellTriggerEvent() && !GetReader()->IsExoticEvent() ) | |
232 | { | |
233 | if(GetReader()->IsTriggerMatched()) | |
234 | { | |
235 | if(ecluster > 2) fhEtaPhiTriggerEMCALBC[histoBC]->Fill(etacluster, phicluster); | |
236 | fhTimeTriggerEMCALBC[histoBC]->Fill(ecluster, tofcluster); | |
237 | if(GetReader()->IsPileUpFromSPD()) fhTimeTriggerEMCALBCPileUpSPD[histoBC]->Fill(ecluster, tofcluster); | |
238 | ||
239 | if(idcalo == GetReader()->GetTriggerClusterId()) | |
240 | { | |
241 | fhEtaPhiTriggerEMCALBCCluster[histoBC]->Fill(etacluster, phicluster); | |
242 | fhTimeTriggerEMCALBCCluster ->Fill(ecluster, tofcluster); | |
243 | ||
244 | if(bc==0) | |
245 | { | |
246 | Float_t threshold = GetReader()->GetEventTriggerL1Threshold() ; | |
247 | if(GetReader()->IsEventEMCALL0()) threshold = GetReader()->GetEventTriggerL0Threshold() ; | |
248 | ||
249 | if(ecluster > threshold) | |
250 | fhEtaPhiTriggerEMCALBCClusterOverTh->Fill(etacluster, phicluster); | |
251 | else if(ecluster > threshold-1) | |
252 | fhEtaPhiTriggerEMCALBCClusterBelowTh1->Fill(etacluster, phicluster); | |
253 | else | |
254 | fhEtaPhiTriggerEMCALBCClusterBelowTh2->Fill(etacluster, phicluster); | |
255 | } | |
256 | } | |
257 | } | |
258 | else | |
259 | { | |
260 | if(ecluster > 2) fhEtaPhiTriggerEMCALBCUM[histoBC]->Fill(etacluster, phicluster); | |
261 | fhTimeTriggerEMCALBCUM[histoBC]->Fill(ecluster, tofcluster); | |
262 | ||
263 | if(bc==0) | |
264 | { | |
265 | if(GetReader()->IsTriggerMatchedOpenCuts(0)) fhTimeTriggerEMCALBC0UMReMatchOpenTime ->Fill(ecluster, tofcluster); | |
266 | if(GetReader()->IsTriggerMatchedOpenCuts(1)) fhTimeTriggerEMCALBC0UMReMatchCheckNeigh ->Fill(ecluster, tofcluster); | |
267 | if(GetReader()->IsTriggerMatchedOpenCuts(2)) fhTimeTriggerEMCALBC0UMReMatchBoth ->Fill(ecluster, tofcluster); | |
268 | } | |
269 | ||
270 | if(idcalo == GetReader()->GetTriggerClusterId()) | |
271 | { | |
272 | fhEtaPhiTriggerEMCALBCUMCluster[histoBC]->Fill(etacluster, phicluster); | |
273 | fhTimeTriggerEMCALBCUMCluster->Fill(ecluster, tofcluster); | |
274 | if(bc==0) | |
275 | { | |
276 | Float_t threshold = GetReader()->GetEventTriggerL1Threshold() ; | |
277 | if(GetReader()->IsEventEMCALL0()) threshold = GetReader()->GetEventTriggerL0Threshold() ; | |
278 | ||
279 | if(ecluster > threshold) | |
280 | fhEtaPhiTriggerEMCALBCUMClusterOverTh->Fill(etacluster, phicluster); | |
281 | else if(ecluster > threshold-1) | |
282 | fhEtaPhiTriggerEMCALBCUMClusterBelowTh1->Fill(etacluster, phicluster); | |
283 | else | |
284 | fhEtaPhiTriggerEMCALBCUMClusterBelowTh2->Fill(etacluster, phicluster); | |
285 | ||
286 | if(GetReader()->IsTriggerMatchedOpenCuts(0)) | |
287 | { | |
288 | fhEtaPhiTriggerEMCALBCUMReMatchOpenTimeCluster->Fill(etacluster, phicluster); | |
289 | fhTimeTriggerEMCALBCUMReMatchOpenTimeCluster ->Fill(ecluster, tofcluster); | |
290 | } | |
291 | if(GetReader()->IsTriggerMatchedOpenCuts(1)) | |
292 | { | |
293 | fhEtaPhiTriggerEMCALBCUMReMatchCheckNeighCluster->Fill(etacluster, phicluster); | |
294 | fhTimeTriggerEMCALBCUMReMatchCheckNeighCluster ->Fill(ecluster, tofcluster); | |
295 | } | |
296 | if(GetReader()->IsTriggerMatchedOpenCuts(2)) | |
297 | { | |
298 | fhEtaPhiTriggerEMCALBCUMReMatchBothCluster->Fill(etacluster, phicluster); | |
299 | fhTimeTriggerEMCALBCUMReMatchBothCluster ->Fill(ecluster, tofcluster); | |
300 | } | |
301 | ||
302 | } | |
303 | } | |
304 | } | |
305 | }// neither bad nor exotic | |
306 | else if(GetReader()->IsBadCellTriggerEvent() && GetReader()->IsExoticEvent()) | |
307 | { | |
308 | if(GetReader()->IsTriggerMatched()) | |
309 | { | |
310 | if(ecluster > 2) fhEtaPhiTriggerEMCALBCBadExotic->Fill(etacluster, phicluster); | |
311 | fhTimeTriggerEMCALBCBadExotic->Fill(ecluster, tofcluster); | |
312 | if(badMax) fhTimeTriggerEMCALBCBadMaxCellExotic->Fill(ecluster, tofcluster); | |
313 | } | |
314 | else | |
315 | { | |
316 | if(ecluster > 2) fhEtaPhiTriggerEMCALBCUMBadExotic->Fill(etacluster, phicluster); | |
317 | fhTimeTriggerEMCALBCUMBadExotic->Fill(ecluster, tofcluster); | |
318 | if(badMax) fhTimeTriggerEMCALBCUMBadMaxCellExotic->Fill(ecluster, tofcluster); | |
319 | ||
320 | } | |
321 | }// Bad and exotic cluster trigger | |
322 | else if(GetReader()->IsBadCellTriggerEvent() ) | |
323 | { | |
324 | if(GetReader()->IsTriggerMatched()) | |
325 | { | |
326 | if(ecluster > 2) fhEtaPhiTriggerEMCALBCBad->Fill(etacluster, phicluster); | |
327 | fhTimeTriggerEMCALBCBad->Fill(ecluster, tofcluster); | |
328 | if(badMax) fhTimeTriggerEMCALBCBadMaxCell->Fill(ecluster, tofcluster); | |
329 | } | |
330 | else | |
331 | { | |
332 | if(ecluster > 2) fhEtaPhiTriggerEMCALBCUMBad->Fill(etacluster, phicluster); | |
333 | fhTimeTriggerEMCALBCUMBad->Fill(ecluster, tofcluster); | |
334 | if(badMax) fhTimeTriggerEMCALBCUMBadMaxCell->Fill(ecluster, tofcluster); | |
335 | } | |
336 | }// Bad cluster trigger | |
337 | else if(GetReader()->IsExoticEvent() ) | |
338 | { | |
339 | if(GetReader()->IsTriggerMatched()) | |
340 | { | |
341 | if(ecluster > 2) fhEtaPhiTriggerEMCALBCExotic->Fill(etacluster, phicluster); | |
342 | fhTimeTriggerEMCALBCExotic->Fill(ecluster, tofcluster); | |
343 | } | |
344 | else | |
345 | { | |
346 | if(ecluster > 2) fhEtaPhiTriggerEMCALBCUMExotic->Fill(etacluster, phicluster); | |
347 | fhTimeTriggerEMCALBCUMExotic->Fill(ecluster, tofcluster); | |
348 | } | |
349 | } | |
350 | } | |
2db10729 | 351 | else if(TMath::Abs(bc) >= 6) AliWarning(Form("Trigger BC not expected = %d\n",bc)); |
bc41680b | 352 | |
353 | } | |
354 | ||
355 | ||
356 | //_________________________________________________________ | |
357 | TObjString * AliAnaEMCALTriggerClusters::GetAnalysisCuts() | |
358 | { | |
359 | //Save parameters used for analysis | |
360 | TString parList ; //this will be list of parameters used for this analysis. | |
361 | const Int_t buffersize = 255; | |
362 | char onePar[buffersize] ; | |
363 | ||
2db10729 | 364 | snprintf(onePar,buffersize,"--- AliAnaEMCALTriggerClusters ---:") ; |
bc41680b | 365 | parList+=onePar ; |
2db10729 | 366 | snprintf(onePar,buffersize,"fRejectTrackMatch: %d;",fRejectTrackMatch) ; |
bc41680b | 367 | parList+=onePar ; |
2db10729 | 368 | snprintf(onePar,buffersize,"fMinM02: %2.2f, fMaxM02: %2.2f;",fMinM02,fMaxM02) ; |
bc41680b | 369 | parList+=onePar ; |
2db10729 | 370 | snprintf(onePar,buffersize,"fNCellsCut: %d;",fNCellsCut) ; |
bc41680b | 371 | parList+=onePar ; |
372 | ||
373 | //Get parameters set in base class. | |
374 | //parList += GetBaseParametersList() ; | |
375 | ||
376 | return new TObjString(parList) ; | |
377 | } | |
378 | ||
f59c9dd3 | 379 | //___________________________________________________________ |
bc41680b | 380 | TList * AliAnaEMCALTriggerClusters::GetCreateOutputObjects() |
381 | { | |
382 | // Create histograms to be saved in output file and | |
383 | // store them in outputContainer | |
384 | TList * outputContainer = new TList() ; | |
385 | outputContainer->SetName("EMCALTriggerClusters") ; | |
386 | ||
387 | Int_t nptbins = GetHistogramRanges()->GetHistoPtBins(); Float_t ptmax = GetHistogramRanges()->GetHistoPtMax(); Float_t ptmin = GetHistogramRanges()->GetHistoPtMin(); | |
388 | Int_t nphibins = GetHistogramRanges()->GetHistoPhiBins(); Float_t phimax = GetHistogramRanges()->GetHistoPhiMax(); Float_t phimin = GetHistogramRanges()->GetHistoPhiMin(); | |
389 | Int_t netabins = GetHistogramRanges()->GetHistoEtaBins(); Float_t etamax = GetHistogramRanges()->GetHistoEtaMax(); Float_t etamin = GetHistogramRanges()->GetHistoEtaMin(); | |
390 | Int_t ntimebins= GetHistogramRanges()->GetHistoTimeBins(); Float_t timemax = GetHistogramRanges()->GetHistoTimeMax(); Float_t timemin = GetHistogramRanges()->GetHistoTimeMin(); | |
391 | ||
392 | Int_t nTrigBC = 1; | |
393 | Int_t iBCShift = 0; | |
394 | if(!GetReader()->AreBadTriggerEventsRemoved()) | |
395 | { | |
396 | nTrigBC = 11; | |
397 | iBCShift = 5; | |
398 | } | |
399 | ||
400 | fhE = new TH1F("hE","raw cluster #it{E}",nptbins,ptmin,ptmax); | |
401 | fhE->SetYTitle("d#it{N}/d#it{E} "); | |
402 | fhE->SetXTitle("#it{E} (GeV)"); | |
403 | outputContainer->Add(fhE) ; | |
404 | ||
405 | fhESelected = new TH1F("hESelected","selected cluster #it{E}",nptbins,ptmin,ptmax); | |
406 | fhESelected->SetYTitle("d#it{N}/d#it{E} "); | |
407 | fhESelected->SetXTitle("#it{E} (GeV)"); | |
408 | outputContainer->Add(fhESelected) ; | |
409 | ||
410 | fhEtaPhi = new TH2F | |
411 | ("hEtaPhi","cluster,#it{E} > 0.5 GeV, #eta vs #phi",netabins,etamin,etamax,nphibins,phimin,phimax); | |
412 | fhEtaPhi->SetYTitle("#phi (rad)"); | |
413 | fhEtaPhi->SetXTitle("#eta"); | |
414 | outputContainer->Add(fhEtaPhi) ; | |
415 | ||
416 | fhEtaPhiSelected = new TH2F | |
417 | ("hEtaPhiSelected","selected cluster,#it{E} > 0.5 GeV, #eta vs #phi",netabins,etamin,etamax,nphibins,phimin,phimax); | |
418 | fhEtaPhiSelected->SetYTitle("#phi (rad)"); | |
419 | fhEtaPhiSelected->SetXTitle("#eta"); | |
420 | outputContainer->Add(fhEtaPhiSelected) ; | |
421 | ||
422 | fhEtaPhiEMCALBC0 = new TH2F | |
423 | ("hEtaPhiEMCALBC0","cluster,#it{E} > 2 GeV, #eta vs #phi, for clusters with |time| < 25 ns, EMCAL-BC=0",netabins,etamin,etamax,nphibins,phimin,phimax); | |
424 | fhEtaPhiEMCALBC0->SetYTitle("#phi (rad)"); | |
425 | fhEtaPhiEMCALBC0->SetXTitle("#eta"); | |
426 | outputContainer->Add(fhEtaPhiEMCALBC0) ; | |
427 | ||
428 | fhEtaPhiEMCALBC1 = new TH2F | |
429 | ("hEtaPhiEMCALBC1","cluster,#it{E} > 2 GeV, #eta vs #phi, for clusters with 25 < |time| < 75 ns, EMCAL-BC=1",netabins,etamin,etamax,nphibins,phimin,phimax); | |
430 | fhEtaPhiEMCALBC1->SetYTitle("#phi (rad)"); | |
431 | fhEtaPhiEMCALBC1->SetXTitle("#eta"); | |
432 | outputContainer->Add(fhEtaPhiEMCALBC1) ; | |
433 | ||
434 | fhEtaPhiEMCALBCN = new TH2F | |
435 | ("hEtaPhiEMCALBCN","cluster,#it{E} > 2 GeV, #eta vs #phi, for clusters with |time| > 75 ns, EMCAL-BC>1",netabins,etamin,etamax,nphibins,phimin,phimax); | |
436 | fhEtaPhiEMCALBCN->SetYTitle("#phi (rad)"); | |
437 | fhEtaPhiEMCALBCN->SetXTitle("#eta"); | |
438 | outputContainer->Add(fhEtaPhiEMCALBCN) ; | |
439 | ||
440 | for(Int_t i = 0; i < nTrigBC; i++) | |
441 | { | |
442 | fhEtaPhiTriggerEMCALBC[i] = new TH2F | |
443 | (Form("hEtaPhiTriggerEMCALBC%d",i-iBCShift), | |
444 | Form("cluster #it{E} > 2 GeV, #eta vs #phi, Trigger EMCAL-BC=%d",i-iBCShift), | |
445 | netabins,etamin,etamax,nphibins,phimin,phimax); | |
446 | fhEtaPhiTriggerEMCALBC[i]->SetYTitle("#phi (rad)"); | |
447 | fhEtaPhiTriggerEMCALBC[i]->SetXTitle("#eta"); | |
448 | outputContainer->Add(fhEtaPhiTriggerEMCALBC[i]) ; | |
449 | ||
450 | fhTimeTriggerEMCALBC[i] = new TH2F | |
451 | (Form("hTimeTriggerEMCALBC%d",i-iBCShift), | |
452 | Form("cluster #it{time} vs #it{E} of clusters, Trigger EMCAL-BC=%d",i-iBCShift), | |
453 | nptbins,ptmin,ptmax, ntimebins,timemin,timemax); | |
454 | fhTimeTriggerEMCALBC[i]->SetXTitle("#it{E} (GeV)"); | |
455 | fhTimeTriggerEMCALBC[i]->SetYTitle("#it{time} (ns)"); | |
456 | outputContainer->Add(fhTimeTriggerEMCALBC[i]); | |
457 | ||
458 | fhTimeTriggerEMCALBCPileUpSPD[i] = new TH2F | |
459 | (Form("hTimeTriggerEMCALBC%dPileUpSPD",i-iBCShift), | |
460 | Form("cluster #it{time} vs #it{E} of clusters, Trigger EMCAL-BC=%d",i-iBCShift), | |
461 | nptbins,ptmin,ptmax, ntimebins,timemin,timemax); | |
462 | fhTimeTriggerEMCALBCPileUpSPD[i]->SetXTitle("#it{E} (GeV)"); | |
463 | fhTimeTriggerEMCALBCPileUpSPD[i]->SetYTitle("#it{time} (ns)"); | |
464 | outputContainer->Add(fhTimeTriggerEMCALBCPileUpSPD[i]); | |
465 | ||
466 | fhEtaPhiTriggerEMCALBCUM[i] = new TH2F | |
467 | (Form("hEtaPhiTriggerEMCALBC%d_UnMatch",i-iBCShift), | |
468 | Form("cluster #it{E} > 2 GeV, #eta vs #phi, unmatched trigger EMCAL-BC=%d",i-iBCShift), | |
469 | netabins,etamin,etamax,nphibins,phimin,phimax); | |
470 | fhEtaPhiTriggerEMCALBCUM[i]->SetYTitle("#phi (rad)"); | |
471 | fhEtaPhiTriggerEMCALBCUM[i]->SetXTitle("#eta"); | |
472 | outputContainer->Add(fhEtaPhiTriggerEMCALBCUM[i]) ; | |
473 | ||
474 | fhTimeTriggerEMCALBCUM[i] = new TH2F | |
475 | (Form("hTimeTriggerEMCALBC%d_UnMatch",i-iBCShift), | |
476 | Form("cluster #it{time} vs #it{E} of clusters, unmatched trigger EMCAL-BC=%d",i-iBCShift), | |
477 | nptbins,ptmin,ptmax, ntimebins,timemin,timemax); | |
478 | fhTimeTriggerEMCALBCUM[i]->SetXTitle("#it{E} (GeV)"); | |
479 | fhTimeTriggerEMCALBCUM[i]->SetYTitle("#it{time} (ns)"); | |
480 | outputContainer->Add(fhTimeTriggerEMCALBCUM[i]); | |
481 | ||
482 | fhEtaPhiTriggerEMCALBCCluster[i] = new TH2F | |
483 | (Form("hEtaPhiTriggerEMCALBC%d_OnlyTrigger",i-iBCShift), | |
484 | Form("trigger cluster, #eta vs #phi, Trigger EMCAL-BC=%d",i-iBCShift), | |
485 | netabins,etamin,etamax,nphibins,phimin,phimax); | |
486 | fhEtaPhiTriggerEMCALBCCluster[i]->SetYTitle("#phi (rad)"); | |
487 | fhEtaPhiTriggerEMCALBCCluster[i]->SetXTitle("#eta"); | |
488 | outputContainer->Add(fhEtaPhiTriggerEMCALBCCluster[i]) ; | |
489 | ||
490 | fhEtaPhiTriggerEMCALBCUMCluster[i] = new TH2F | |
491 | (Form("hEtaPhiTriggerEMCALBC%d_OnlyTrigger_UnMatch",i-iBCShift), | |
492 | Form("trigger cluster, #eta vs #phi, unmatched trigger EMCAL-BC=%d",i-iBCShift), | |
493 | netabins,etamin,etamax,nphibins,phimin,phimax); | |
494 | fhEtaPhiTriggerEMCALBCUMCluster[i]->SetYTitle("#phi (rad)"); | |
495 | fhEtaPhiTriggerEMCALBCUMCluster[i]->SetXTitle("#eta"); | |
496 | outputContainer->Add(fhEtaPhiTriggerEMCALBCUMCluster[i]) ; | |
497 | } | |
498 | ||
499 | fhTimeTriggerEMCALBCCluster = new TH2F("hTimeTriggerEMCALBC_OnlyTrigger", | |
500 | "trigger cluster #it{time} vs #it{E} of clusters", | |
501 | nptbins,ptmin,ptmax, ntimebins,timemin,timemax); | |
502 | fhTimeTriggerEMCALBCCluster->SetXTitle("#it{E} (GeV)"); | |
503 | fhTimeTriggerEMCALBCCluster->SetYTitle("#it{time} (ns)"); | |
504 | outputContainer->Add(fhTimeTriggerEMCALBCCluster); | |
505 | ||
506 | fhTimeTriggerEMCALBCUMCluster = new TH2F("hTimeTriggerEMCALBC_OnlyTrigger_UnMatch", | |
507 | "trigger cluster #it{time} vs #it{E} of clusters, unmatched trigger", | |
508 | nptbins,ptmin,ptmax, ntimebins,timemin,timemax); | |
509 | fhTimeTriggerEMCALBCUMCluster->SetXTitle("#it{E} (GeV)"); | |
510 | fhTimeTriggerEMCALBCUMCluster->SetYTitle("#it{time} (ns)"); | |
511 | outputContainer->Add(fhTimeTriggerEMCALBCUMCluster); | |
512 | ||
513 | fhEtaPhiTriggerEMCALBCClusterOverTh = new TH2F | |
514 | ("hEtaPhiTriggerEMCALBC0_OnlyTrigger_OverThreshold", | |
515 | "trigger cluster #it{E} > trigger threshold, #eta vs #phi, Trigger EMCAL-BC=0", | |
516 | netabins,etamin,etamax,nphibins,phimin,phimax); | |
517 | fhEtaPhiTriggerEMCALBCClusterOverTh->SetYTitle("#phi (rad)"); | |
518 | fhEtaPhiTriggerEMCALBCClusterOverTh->SetXTitle("#eta"); | |
519 | outputContainer->Add(fhEtaPhiTriggerEMCALBCClusterOverTh) ; | |
520 | ||
521 | fhEtaPhiTriggerEMCALBCUMClusterOverTh = new TH2F | |
522 | ("hEtaPhiTriggerEMCALBC0_OnlyTrigger_OverThreshold_UnMatch", | |
523 | "trigger cluster #it{E} > trigger threshold, #eta vs #phi, unmatched trigger EMCAL-BC=0", | |
524 | netabins,etamin,etamax,nphibins,phimin,phimax); | |
525 | fhEtaPhiTriggerEMCALBCUMClusterOverTh->SetYTitle("#phi (rad)"); | |
526 | fhEtaPhiTriggerEMCALBCUMClusterOverTh->SetXTitle("#eta"); | |
527 | outputContainer->Add(fhEtaPhiTriggerEMCALBCUMClusterOverTh) ; | |
528 | ||
529 | fhEtaPhiTriggerEMCALBCClusterBelowTh1 = new TH2F | |
530 | ("hEtaPhiTriggerEMCALBC0_OnlyTrigger_BelowThreshold1", | |
531 | "trigger cluster thresh-1 < #it{E} < thres, #eta vs #phi, Trigger EMCAL-BC=0", | |
532 | netabins,etamin,etamax,nphibins,phimin,phimax); | |
533 | fhEtaPhiTriggerEMCALBCClusterBelowTh1->SetYTitle("#phi (rad)"); | |
534 | fhEtaPhiTriggerEMCALBCClusterBelowTh1->SetXTitle("#eta"); | |
535 | outputContainer->Add(fhEtaPhiTriggerEMCALBCClusterBelowTh1) ; | |
536 | ||
537 | fhEtaPhiTriggerEMCALBCUMClusterBelowTh1 = new TH2F | |
538 | ("hEtaPhiTriggerEMCALBC0_OnlyTrigger_BelowThreshold1_UnMatch", | |
539 | "trigger cluster thresh-1 < #it{E} < thres, #eta vs #phi, unmatched trigger EMCAL-BC=0", | |
540 | netabins,etamin,etamax,nphibins,phimin,phimax); | |
541 | fhEtaPhiTriggerEMCALBCUMClusterBelowTh1->SetYTitle("#phi (rad)"); | |
542 | fhEtaPhiTriggerEMCALBCUMClusterBelowTh1->SetXTitle("#eta"); | |
543 | outputContainer->Add(fhEtaPhiTriggerEMCALBCUMClusterBelowTh1) ; | |
544 | ||
545 | fhEtaPhiTriggerEMCALBCClusterBelowTh2 = new TH2F | |
546 | ("hEtaPhiTriggerEMCALBC0_OnlyTrigger_BelowThreshold2", | |
547 | "trigger cluster thresh-2 < #it{E} < thres, #eta vs #phi, Trigger EMCAL-BC=0", | |
548 | netabins,etamin,etamax,nphibins,phimin,phimax); | |
549 | fhEtaPhiTriggerEMCALBCClusterBelowTh2->SetYTitle("#phi (rad)"); | |
550 | fhEtaPhiTriggerEMCALBCClusterBelowTh2->SetXTitle("#eta"); | |
551 | outputContainer->Add(fhEtaPhiTriggerEMCALBCClusterBelowTh2) ; | |
552 | ||
553 | fhEtaPhiTriggerEMCALBCUMClusterBelowTh2 = new TH2F | |
554 | ("hEtaPhiTriggerEMCALBC0_OnlyTrigger_BelowThreshold2_UnMatch", | |
555 | "trigger cluster thresh-2 < #it{E} < thres, #eta vs #phi, unmatched trigger EMCAL-BC=0", | |
556 | netabins,etamin,etamax,nphibins,phimin,phimax); | |
557 | fhEtaPhiTriggerEMCALBCUMClusterBelowTh2->SetYTitle("#phi (rad)"); | |
558 | fhEtaPhiTriggerEMCALBCUMClusterBelowTh2->SetXTitle("#eta"); | |
559 | outputContainer->Add(fhEtaPhiTriggerEMCALBCUMClusterBelowTh2) ; | |
560 | ||
561 | if(!GetReader()->AreBadTriggerEventsRemoved()) | |
562 | { | |
563 | fhEtaPhiTriggerEMCALBCExotic = new TH2F | |
564 | ("hEtaPhiTriggerExotic", | |
565 | "cluster #it{E} > 2 GeV, #eta vs #phi, Trigger Exotic", | |
566 | netabins,etamin,etamax,nphibins,phimin,phimax); | |
567 | fhEtaPhiTriggerEMCALBCExotic->SetYTitle("#phi (rad)"); | |
568 | fhEtaPhiTriggerEMCALBCExotic->SetXTitle("#eta"); | |
569 | outputContainer->Add(fhEtaPhiTriggerEMCALBCExotic) ; | |
570 | ||
571 | fhTimeTriggerEMCALBCExotic = new TH2F | |
572 | ("hTimeTriggerExotic", | |
573 | "cluster #it{time} vs #it{E} of clusters, Trigger Exotic ", | |
574 | nptbins,ptmin,ptmax, ntimebins,timemin,timemax); | |
575 | fhTimeTriggerEMCALBCExotic->SetXTitle("#it{E} (GeV)"); | |
576 | fhTimeTriggerEMCALBCExotic->SetYTitle("#it{time} (ns)"); | |
577 | outputContainer->Add(fhTimeTriggerEMCALBCExotic); | |
578 | ||
579 | fhEtaPhiTriggerEMCALBCUMExotic = new TH2F | |
580 | ("hEtaPhiTriggerExotic_UnMatch", | |
581 | "cluster #it{E} > 2 GeV, #eta vs #phi, unmatched trigger Exotic", | |
582 | netabins,etamin,etamax,nphibins,phimin,phimax); | |
583 | fhEtaPhiTriggerEMCALBCUMExotic->SetYTitle("#phi (rad)"); | |
584 | fhEtaPhiTriggerEMCALBCUMExotic->SetXTitle("#eta"); | |
585 | outputContainer->Add(fhEtaPhiTriggerEMCALBCUMExotic) ; | |
586 | ||
587 | fhTimeTriggerEMCALBCUMExotic = new TH2F | |
588 | ("hTimeTriggerExotic_UnMatch", | |
589 | "cluster #it{time} vs #it{E} of clusters, unmatched trigger Exotic", | |
590 | nptbins,ptmin,ptmax, ntimebins,timemin,timemax); | |
591 | fhTimeTriggerEMCALBCUMExotic->SetXTitle("#it{E} (GeV)"); | |
592 | fhTimeTriggerEMCALBCUMExotic->SetYTitle("#it{time} (ns)"); | |
593 | outputContainer->Add(fhTimeTriggerEMCALBCUMExotic); | |
594 | ||
595 | fhEtaPhiTriggerEMCALBCExoticCluster = new TH2F | |
596 | ("hEtaPhiTriggerExotic_OnlyTrigger", | |
597 | "trigger cluster #it{E} > 2 GeV, #eta vs #phi, Trigger Exotic", | |
598 | netabins,etamin,etamax,nphibins,phimin,phimax); | |
599 | fhEtaPhiTriggerEMCALBCExoticCluster->SetYTitle("#phi (rad)"); | |
600 | fhEtaPhiTriggerEMCALBCExoticCluster->SetXTitle("#eta"); | |
601 | outputContainer->Add(fhEtaPhiTriggerEMCALBCExoticCluster) ; | |
602 | ||
603 | fhTimeTriggerEMCALBCExoticCluster = new TH2F | |
604 | ("hTimeTriggerExotic_OnlyTrigger", | |
605 | "trigger cluster #it{time} vs #it{E} of clusters, Trigger Exotic", | |
606 | nptbins,ptmin,ptmax, ntimebins,timemin,timemax); | |
607 | fhTimeTriggerEMCALBCExoticCluster->SetXTitle("#it{E} (GeV)"); | |
608 | fhTimeTriggerEMCALBCExoticCluster->SetYTitle("#it{time} (ns)"); | |
609 | outputContainer->Add(fhTimeTriggerEMCALBCExoticCluster); | |
610 | ||
611 | fhEtaPhiTriggerEMCALBCUMExoticCluster = new TH2F | |
612 | ("hEtaPhiTriggerExotic_OnlyTrigger_UnMatch", | |
613 | "trigger cluster #it{E} > 2 GeV, #eta vs #phi, unmatched trigger Exotic", | |
614 | netabins,etamin,etamax,nphibins,phimin,phimax); | |
615 | fhEtaPhiTriggerEMCALBCUMExoticCluster->SetYTitle("#phi (rad)"); | |
616 | fhEtaPhiTriggerEMCALBCUMExoticCluster->SetXTitle("#eta"); | |
617 | outputContainer->Add(fhEtaPhiTriggerEMCALBCUMExoticCluster) ; | |
618 | ||
619 | fhTimeTriggerEMCALBCUMExoticCluster = new TH2F | |
620 | ("hTimeTriggerExotic_OnlyTrigger_UnMatch", | |
621 | "trigger cluster #it{time} vs #it{E} of clusters, unmatched trigger Exotic", | |
622 | nptbins,ptmin,ptmax, ntimebins,timemin,timemax); | |
623 | fhTimeTriggerEMCALBCUMExoticCluster->SetXTitle("#it{E} (GeV)"); | |
624 | fhTimeTriggerEMCALBCUMExoticCluster->SetYTitle("#it{time} (ns)"); | |
625 | outputContainer->Add(fhTimeTriggerEMCALBCUMExoticCluster); | |
626 | ||
627 | fhEtaPhiTriggerEMCALBCBad = new TH2F | |
628 | ("hEtaPhiTriggerBad", | |
629 | "cluster #it{E} > 2 GeV, #eta vs #phi, Trigger Bad", | |
630 | netabins,etamin,etamax,nphibins,phimin,phimax); | |
631 | fhEtaPhiTriggerEMCALBCBad->SetYTitle("#phi (rad)"); | |
632 | fhEtaPhiTriggerEMCALBCBad->SetXTitle("#eta"); | |
633 | outputContainer->Add(fhEtaPhiTriggerEMCALBCBad) ; | |
634 | ||
635 | fhTimeTriggerEMCALBCBad = new TH2F | |
636 | ("hTimeTriggerBad", | |
637 | "cluster #it{time} vs #it{E} of clusters, Trigger Bad ", | |
638 | nptbins,ptmin,ptmax, ntimebins,timemin,timemax); | |
639 | fhTimeTriggerEMCALBCBad->SetXTitle("#it{E} (GeV)"); | |
640 | fhTimeTriggerEMCALBCBad->SetYTitle("#it{time} (ns)"); | |
641 | outputContainer->Add(fhTimeTriggerEMCALBCBad); | |
642 | ||
643 | fhEtaPhiTriggerEMCALBCUMBad = new TH2F | |
644 | ("hEtaPhiTriggerBad_UnMatch", | |
645 | "cluster #it{E} > 2 GeV, #eta vs #phi, unmatched trigger Bad", | |
646 | netabins,etamin,etamax,nphibins,phimin,phimax); | |
647 | fhEtaPhiTriggerEMCALBCUMBad->SetYTitle("#phi (rad)"); | |
648 | fhEtaPhiTriggerEMCALBCUMBad->SetXTitle("#eta"); | |
649 | outputContainer->Add(fhEtaPhiTriggerEMCALBCUMBad) ; | |
650 | ||
651 | fhTimeTriggerEMCALBCUMBad = new TH2F | |
652 | ("hTimeTriggerBad_UnMatch", | |
653 | "cluster #it{time} vs #it{E} of clusters, unmatched trigger Bad", | |
654 | nptbins,ptmin,ptmax, ntimebins,timemin,timemax); | |
655 | fhTimeTriggerEMCALBCUMBad->SetXTitle("#it{E} (GeV)"); | |
656 | fhTimeTriggerEMCALBCUMBad->SetYTitle("#it{time} (ns)"); | |
657 | outputContainer->Add(fhTimeTriggerEMCALBCUMBad); | |
658 | ||
659 | fhEtaPhiTriggerEMCALBCBadCluster = new TH2F | |
660 | ("hEtaPhiTriggerBad_OnlyTrigger", | |
661 | "trigger cluster #it{E} > 2 GeV, #eta vs #phi, Trigger Bad", | |
662 | netabins,etamin,etamax,nphibins,phimin,phimax); | |
663 | fhEtaPhiTriggerEMCALBCBadCluster->SetYTitle("#phi (rad)"); | |
664 | fhEtaPhiTriggerEMCALBCBadCluster->SetXTitle("#eta"); | |
665 | outputContainer->Add(fhEtaPhiTriggerEMCALBCBadCluster) ; | |
666 | ||
667 | fhTimeTriggerEMCALBCBadCluster = new TH2F | |
668 | ("hTimeTriggerBad_OnlyTrigger", | |
669 | "trigger cluster #it{time} vs #it{E} of clusters, Trigger Bad", | |
670 | nptbins,ptmin,ptmax, ntimebins,timemin,timemax); | |
671 | fhTimeTriggerEMCALBCBadCluster->SetXTitle("#it{E} (GeV)"); | |
672 | fhTimeTriggerEMCALBCBadCluster->SetYTitle("#it{time} (ns)"); | |
673 | outputContainer->Add(fhTimeTriggerEMCALBCBadCluster); | |
674 | ||
675 | fhEtaPhiTriggerEMCALBCUMBadCluster = new TH2F | |
676 | ("hEtaPhiTriggerBad_OnlyTrigger_UnMatch", | |
677 | "trigger cluster #it{E} > 2 GeV, #eta vs #phi, unmatched trigger Bad", | |
678 | netabins,etamin,etamax,nphibins,phimin,phimax); | |
679 | fhEtaPhiTriggerEMCALBCUMBadCluster->SetYTitle("#phi (rad)"); | |
680 | fhEtaPhiTriggerEMCALBCUMBadCluster->SetXTitle("#eta"); | |
681 | outputContainer->Add(fhEtaPhiTriggerEMCALBCUMBadCluster) ; | |
682 | ||
683 | fhTimeTriggerEMCALBCUMBadCluster = new TH2F | |
684 | ("hTimeTriggerBad_OnlyTrigger_UnMatch", | |
685 | "trigger cluster time vs #it{E} of clusters, unmatched trigger Bad", | |
686 | nptbins,ptmin,ptmax, ntimebins,timemin,timemax); | |
687 | fhTimeTriggerEMCALBCUMBadCluster->SetXTitle("#it{E} (GeV)"); | |
688 | fhTimeTriggerEMCALBCUMBadCluster->SetYTitle("#it{time} (ns)"); | |
689 | outputContainer->Add(fhTimeTriggerEMCALBCUMBadCluster); | |
690 | ||
691 | fhEtaPhiTriggerEMCALBCBadExotic = new TH2F | |
692 | ("hEtaPhiTriggerBadExotic", | |
693 | "cluster #it{E} > 2 GeV, #eta vs #phi, Trigger Bad&Exotic", | |
694 | netabins,etamin,etamax,nphibins,phimin,phimax); | |
695 | fhEtaPhiTriggerEMCALBCBadExotic->SetYTitle("#phi (rad)"); | |
696 | fhEtaPhiTriggerEMCALBCBadExotic->SetXTitle("#eta"); | |
697 | outputContainer->Add(fhEtaPhiTriggerEMCALBCBadExotic) ; | |
698 | ||
699 | fhTimeTriggerEMCALBCBadExotic = new TH2F | |
700 | ("hTimeTriggerBadExotic", | |
701 | "cluster #it{time} vs #it{E} of clusters, Trigger Bad&Exotic ", | |
702 | nptbins,ptmin,ptmax, ntimebins,timemin,timemax); | |
703 | fhTimeTriggerEMCALBCBadExotic->SetXTitle("#it{E} (GeV)"); | |
704 | fhTimeTriggerEMCALBCBadExotic->SetYTitle("#it{time} (ns)"); | |
705 | outputContainer->Add(fhTimeTriggerEMCALBCBadExotic); | |
706 | ||
707 | fhEtaPhiTriggerEMCALBCUMBadExotic = new TH2F | |
708 | ("hEtaPhiTriggerBadExotic_UnMatch", | |
709 | "cluster #it{E} > 2 GeV, #eta vs #phi, unmatched trigger Bad&Exotic", | |
710 | netabins,etamin,etamax,nphibins,phimin,phimax); | |
711 | fhEtaPhiTriggerEMCALBCUMBadExotic->SetYTitle("#phi (rad)"); | |
712 | fhEtaPhiTriggerEMCALBCUMBadExotic->SetXTitle("#eta"); | |
713 | outputContainer->Add(fhEtaPhiTriggerEMCALBCUMBadExotic) ; | |
714 | ||
715 | fhTimeTriggerEMCALBCUMBadExotic = new TH2F | |
716 | ("hTimeTriggerBadExotic_UnMatch", | |
717 | "cluster #it{time} vs #it{E} of clusters, unmatched trigger Bad&Exotic", | |
718 | nptbins,ptmin,ptmax, ntimebins,timemin,timemax); | |
719 | fhTimeTriggerEMCALBCUMBadExotic->SetXTitle("#it{E} (GeV)"); | |
720 | fhTimeTriggerEMCALBCUMBadExotic->SetYTitle("#it{time} (ns)"); | |
721 | outputContainer->Add(fhTimeTriggerEMCALBCUMBadExotic); | |
722 | ||
723 | fhEtaPhiTriggerEMCALBCBadExoticCluster = new TH2F | |
724 | ("hEtaPhiTriggerBadExotic_OnlyTrigger", | |
725 | "trigger cluster #it{E} > 2 GeV, #eta vs #phi, Trigger Bad&Exotic", | |
726 | netabins,etamin,etamax,nphibins,phimin,phimax); | |
727 | fhEtaPhiTriggerEMCALBCBadExoticCluster->SetYTitle("#phi (rad)"); | |
728 | fhEtaPhiTriggerEMCALBCBadExoticCluster->SetXTitle("#eta"); | |
729 | outputContainer->Add(fhEtaPhiTriggerEMCALBCBadExoticCluster) ; | |
730 | ||
731 | fhTimeTriggerEMCALBCBadExoticCluster = new TH2F | |
732 | ("hTimeTriggerBadExotic_OnlyTrigger", | |
733 | "trigger cluster #it{time} vs #it{E} of clusters, Trigger Bad&Exotic", | |
734 | nptbins,ptmin,ptmax, ntimebins,timemin,timemax); | |
735 | fhTimeTriggerEMCALBCBadExoticCluster->SetXTitle("#it{E} (GeV)"); | |
736 | fhTimeTriggerEMCALBCBadExoticCluster->SetYTitle("#it{time} (ns)"); | |
737 | outputContainer->Add(fhTimeTriggerEMCALBCBadExoticCluster); | |
738 | ||
739 | fhEtaPhiTriggerEMCALBCUMBadExoticCluster = new TH2F | |
740 | ("hEtaPhiTriggerBadExotic_OnlyTrigger_UnMatch", | |
741 | "trigger cluster #it{E} > 2 GeV, #eta vs #phi, unmatched trigger Bad&Exotic", | |
742 | netabins,etamin,etamax,nphibins,phimin,phimax); | |
743 | fhEtaPhiTriggerEMCALBCUMBadExoticCluster->SetYTitle("#phi (rad)"); | |
744 | fhEtaPhiTriggerEMCALBCUMBadExoticCluster->SetXTitle("#eta"); | |
745 | outputContainer->Add(fhEtaPhiTriggerEMCALBCUMBadExoticCluster) ; | |
746 | ||
747 | fhTimeTriggerEMCALBCUMBadExoticCluster = new TH2F | |
748 | ("hTimeTriggerBadExotic_OnlyTrigger_UnMatch", | |
749 | "trigger cluster #it{time} vs #it{E} of clusters, unmatched trigger Bad&Exotic", | |
750 | nptbins,ptmin,ptmax, ntimebins,timemin,timemax); | |
751 | fhTimeTriggerEMCALBCUMBadExoticCluster->SetXTitle("#it{E} (GeV)"); | |
752 | fhTimeTriggerEMCALBCUMBadExoticCluster->SetYTitle("#it{time} (ns)"); | |
753 | outputContainer->Add(fhTimeTriggerEMCALBCUMBadExoticCluster); | |
754 | ||
755 | fhTimeTriggerEMCALBCBadMaxCell = new TH2F | |
756 | ("hTimeTriggerBadMaxCell", | |
757 | "cluster #it{time} vs #it{E} of clusters, Trigger BadMaxCell", | |
758 | nptbins,ptmin,ptmax, ntimebins,timemin,timemax); | |
759 | fhTimeTriggerEMCALBCBadMaxCell->SetXTitle("#it{E} (GeV)"); | |
760 | fhTimeTriggerEMCALBCBadMaxCell->SetYTitle("#it{time} (ns)"); | |
761 | outputContainer->Add(fhTimeTriggerEMCALBCBadMaxCell); | |
762 | ||
763 | fhTimeTriggerEMCALBCUMBadMaxCell = new TH2F | |
764 | ("hTimeTriggerBadMaxCell_UnMatch", | |
765 | "cluster #it{time} vs #it{E} of clusters, unmatched trigger BadMaxCell", | |
766 | nptbins,ptmin,ptmax, ntimebins,timemin,timemax); | |
767 | fhTimeTriggerEMCALBCUMBadMaxCell->SetXTitle("#it{E} (GeV)"); | |
768 | fhTimeTriggerEMCALBCUMBadMaxCell->SetYTitle("#it{time} (ns)"); | |
769 | outputContainer->Add(fhTimeTriggerEMCALBCUMBadMaxCell); | |
770 | ||
771 | ||
772 | fhTimeTriggerEMCALBCBadMaxCellExotic = new TH2F | |
773 | ("hTimeTriggerBadMaxCellExotic", | |
774 | "cluster #it{time} vs #it{E} of clusters, Trigger BadMaxCell&Exotic", | |
775 | nptbins,ptmin,ptmax, ntimebins,timemin,timemax); | |
776 | fhTimeTriggerEMCALBCBadMaxCellExotic->SetXTitle("#it{E} (GeV)"); | |
777 | fhTimeTriggerEMCALBCBadMaxCellExotic->SetYTitle("#it{time} (ns)"); | |
778 | outputContainer->Add(fhTimeTriggerEMCALBCBadMaxCellExotic); | |
779 | ||
780 | fhTimeTriggerEMCALBCUMBadMaxCellExotic = new TH2F | |
781 | ("hTimeTriggerBadMaxCellExotic_UnMatch", | |
782 | "cluster #it{time} vs #it{E} of clusters, unmatched trigger BadMaxCell&Exotic", | |
783 | nptbins,ptmin,ptmax, ntimebins,timemin,timemax); | |
784 | fhTimeTriggerEMCALBCUMBadMaxCellExotic->SetXTitle("#it{E} (GeV)"); | |
785 | fhTimeTriggerEMCALBCUMBadMaxCellExotic->SetYTitle("#it{time} (ns)"); | |
786 | outputContainer->Add(fhTimeTriggerEMCALBCUMBadMaxCellExotic); | |
787 | ||
788 | fhTimeNoTrigger = new TH2F | |
789 | ("hTimeNoTrigger", | |
790 | "events with no foundable trigger, time vs e of clusters", | |
791 | nptbins,ptmin,ptmax, ntimebins,timemin,timemax); | |
792 | fhTimeNoTrigger->SetXTitle("#it{E} (GeV)"); | |
793 | fhTimeNoTrigger->SetYTitle("#it{time} (ns)"); | |
794 | outputContainer->Add(fhTimeNoTrigger); | |
795 | ||
796 | fhEtaPhiNoTrigger = new TH2F | |
797 | ("hEtaPhiNoTrigger", | |
798 | "events with no foundable trigger, eta vs phi of clusters", | |
799 | netabins,etamin,etamax,nphibins,phimin,phimax); | |
800 | fhEtaPhiNoTrigger->SetYTitle("#phi (rad)"); | |
801 | fhEtaPhiNoTrigger->SetXTitle("#eta"); | |
802 | outputContainer->Add(fhEtaPhiNoTrigger) ; | |
803 | } | |
804 | ||
805 | fhEtaPhiTriggerEMCALBCUMReMatchOpenTimeCluster = new TH2F("hEtaPhiTriggerEMCALBC0_OnlyTrigger_UnMatch_ReMatch_OpenTime", | |
806 | "cluster #it{E} > 2 GeV, #eta vs #phi, Trigger EMCAL-BC=0, un match, rematch open time", | |
807 | netabins,etamin,etamax,nphibins,phimin,phimax); | |
808 | fhEtaPhiTriggerEMCALBCUMReMatchOpenTimeCluster->SetYTitle("#phi (rad)"); | |
809 | fhEtaPhiTriggerEMCALBCUMReMatchOpenTimeCluster->SetXTitle("#eta"); | |
810 | outputContainer->Add(fhEtaPhiTriggerEMCALBCUMReMatchOpenTimeCluster) ; | |
811 | ||
812 | fhTimeTriggerEMCALBCUMReMatchOpenTimeCluster = new TH2F("hTimeTrigger_OnlyTrigger_UnMatch_ReMatch_OpenTime", | |
813 | "cluster #it{time} vs #it{E} of clusters, no match, rematch open time", | |
814 | nptbins,ptmin,ptmax, ntimebins,timemin,timemax); | |
815 | fhTimeTriggerEMCALBCUMReMatchOpenTimeCluster->SetXTitle("#it{E} (GeV)"); | |
816 | fhTimeTriggerEMCALBCUMReMatchOpenTimeCluster->SetYTitle("#it{time} (ns)"); | |
817 | outputContainer->Add(fhTimeTriggerEMCALBCUMReMatchOpenTimeCluster); | |
818 | ||
819 | ||
820 | fhEtaPhiTriggerEMCALBCUMReMatchCheckNeighCluster = new TH2F("hEtaPhiTriggerEMCALBC0_OnlyTrigger_UnMatch_ReMatch_CheckNeighbours", | |
821 | "cluster #it{E} > 2 GeV, #eta vs #phi, Trigger EMCAL-BC=0, un match, rematch with neighbour patches", | |
822 | netabins,etamin,etamax,nphibins,phimin,phimax); | |
823 | fhEtaPhiTriggerEMCALBCUMReMatchCheckNeighCluster->SetYTitle("#phi (rad)"); | |
824 | fhEtaPhiTriggerEMCALBCUMReMatchCheckNeighCluster->SetXTitle("#eta"); | |
825 | outputContainer->Add(fhEtaPhiTriggerEMCALBCUMReMatchCheckNeighCluster) ; | |
826 | ||
827 | fhTimeTriggerEMCALBCUMReMatchCheckNeighCluster = new TH2F("hTimeTrigger_OnlyTrigger_UnMatch_ReMatch_CheckNeighbours", | |
828 | "cluster #it{time} vs #it{E} of clusters, no match, rematch with neigbour parches", | |
829 | nptbins,ptmin,ptmax, ntimebins,timemin,timemax); | |
830 | fhTimeTriggerEMCALBCUMReMatchCheckNeighCluster->SetXTitle("#it{E} (GeV)"); | |
831 | fhTimeTriggerEMCALBCUMReMatchCheckNeighCluster->SetYTitle("#it{time} (ns)"); | |
832 | outputContainer->Add(fhTimeTriggerEMCALBCUMReMatchCheckNeighCluster); | |
833 | ||
834 | fhEtaPhiTriggerEMCALBCUMReMatchBothCluster = new TH2F("hEtaPhiTriggerEMCALBC0_OnlyTrigger_UnMatch_ReMatch_Both", | |
835 | "cluster #it{E} > 2 GeV, #eta vs #phi, Trigger EMCAL-BC=0, un match, rematch open time and neighbour", | |
836 | netabins,etamin,etamax,nphibins,phimin,phimax); | |
837 | fhEtaPhiTriggerEMCALBCUMReMatchBothCluster->SetYTitle("#phi (rad)"); | |
838 | fhEtaPhiTriggerEMCALBCUMReMatchBothCluster->SetXTitle("#eta"); | |
839 | outputContainer->Add(fhEtaPhiTriggerEMCALBCUMReMatchBothCluster) ; | |
840 | ||
841 | fhTimeTriggerEMCALBCUMReMatchBothCluster = new TH2F("hTimeTrigger_OnlyTrigger_UnMatch_ReMatch_Both", | |
842 | "cluster #it{time} vs #it{E} of clusters, no match, rematch open time and neigbour", | |
843 | nptbins,ptmin,ptmax, ntimebins,timemin,timemax); | |
844 | fhTimeTriggerEMCALBCUMReMatchBothCluster->SetXTitle("#it{E} (GeV)"); | |
845 | fhTimeTriggerEMCALBCUMReMatchBothCluster->SetYTitle("#it{time} (ns)"); | |
846 | outputContainer->Add(fhTimeTriggerEMCALBCUMReMatchBothCluster); | |
847 | ||
848 | fhTimeTriggerEMCALBC0UMReMatchOpenTime = new TH2F("hTimeTriggerBC0_UnMatch_ReMatch_OpenTime", | |
849 | "cluster #it{time} vs #it{E} of clusters, no match, rematch open time", | |
850 | nptbins,ptmin,ptmax, ntimebins,timemin,timemax); | |
851 | fhTimeTriggerEMCALBC0UMReMatchOpenTime->SetXTitle("#it{E} (GeV)"); | |
852 | fhTimeTriggerEMCALBC0UMReMatchOpenTime->SetYTitle("#it{time} (ns)"); | |
853 | outputContainer->Add(fhTimeTriggerEMCALBC0UMReMatchOpenTime); | |
854 | ||
855 | ||
856 | fhTimeTriggerEMCALBC0UMReMatchCheckNeigh = new TH2F("hTimeTriggerBC0_UnMatch_ReMatch_CheckNeighbours", | |
857 | "cluster #it{time} vs #it{E} of clusters, no match, rematch with neigbour parches", | |
858 | nptbins,ptmin,ptmax, ntimebins,timemin,timemax); | |
859 | fhTimeTriggerEMCALBC0UMReMatchCheckNeigh->SetXTitle("#it{E} (GeV)"); | |
860 | fhTimeTriggerEMCALBC0UMReMatchCheckNeigh->SetYTitle("#it{time} (ns)"); | |
861 | outputContainer->Add(fhTimeTriggerEMCALBC0UMReMatchCheckNeigh); | |
862 | ||
863 | fhTimeTriggerEMCALBC0UMReMatchBoth = new TH2F("hTimeTriggerBC0_UnMatch_ReMatch_Both", | |
864 | "cluster #it{time} vs #it{E} of clusters, no match, rematch open time and neigbour", | |
865 | nptbins,ptmin,ptmax, ntimebins,timemin,timemax); | |
866 | fhTimeTriggerEMCALBC0UMReMatchBoth->SetXTitle("#it{E} (GeV)"); | |
867 | fhTimeTriggerEMCALBC0UMReMatchBoth->SetYTitle("#it{time} (ns)"); | |
868 | outputContainer->Add(fhTimeTriggerEMCALBC0UMReMatchBoth); | |
869 | ||
870 | fhEtaPhiSelectedEMCALBC0 = new TH2F | |
871 | ("hEtaPhiSelectedEMCALBC0","Selected, #it{E} > 2 GeV, #eta vs #phi, for clusters with |time| < 25 ns, EMCAL-BC=0",netabins,etamin,etamax,nphibins,phimin,phimax); | |
872 | fhEtaPhiSelectedEMCALBC0->SetYTitle("#phi (rad)"); | |
873 | fhEtaPhiSelectedEMCALBC0->SetXTitle("#eta"); | |
874 | outputContainer->Add(fhEtaPhiSelectedEMCALBC0) ; | |
875 | ||
876 | fhEtaPhiSelectedEMCALBC1 = new TH2F | |
877 | ("hEtaPhiSelectedEMCALBC1","Selected, #it{E} > 2 GeV, #eta vs #phi, for clusters with 25 < |time| < 75 ns, EMCAL-BC=1",netabins,etamin,etamax,nphibins,phimin,phimax); | |
878 | fhEtaPhiSelectedEMCALBC1->SetYTitle("#phi (rad)"); | |
879 | fhEtaPhiSelectedEMCALBC1->SetXTitle("#eta"); | |
880 | outputContainer->Add(fhEtaPhiSelectedEMCALBC1) ; | |
881 | ||
882 | fhEtaPhiSelectedEMCALBCN = new TH2F | |
883 | ("hEtaPhiSelectedEMCALBCN","Selected, #it{E} > 2 GeV, #eta vs #phi, for clusters with |time| > 75 ns, EMCAL-BC>1",netabins,etamin,etamax,nphibins,phimin,phimax); | |
884 | fhEtaPhiSelectedEMCALBCN->SetYTitle("#phi (rad)"); | |
885 | fhEtaPhiSelectedEMCALBCN->SetXTitle("#eta"); | |
886 | outputContainer->Add(fhEtaPhiSelectedEMCALBCN) ; | |
887 | ||
888 | for(Int_t i = 0; i < nTrigBC; i++) | |
889 | { | |
890 | fhEtaPhiSelectedTriggerEMCALBC[i] = new TH2F | |
891 | (Form("hEtaPhiSelectedTriggerEMCALBC%d",i-iBCShift), | |
892 | Form("photon #it{E} > 2 GeV, #eta vs #phi, SelectedTrigger EMCAL-BC=%d",i-iBCShift), | |
893 | netabins,etamin,etamax,nphibins,phimin,phimax); | |
894 | fhEtaPhiSelectedTriggerEMCALBC[i]->SetYTitle("#phi (rad)"); | |
895 | fhEtaPhiSelectedTriggerEMCALBC[i]->SetXTitle("#eta"); | |
896 | outputContainer->Add(fhEtaPhiSelectedTriggerEMCALBC[i]) ; | |
897 | ||
898 | fhTimeSelectedTriggerEMCALBC[i] = new TH2F | |
899 | (Form("hTimeSelectedTriggerEMCALBC%d",i-iBCShift), | |
900 | Form("photon #it{time} vs #it{E} of clusters, SelectedTrigger EMCAL-BC=%d",i-iBCShift), | |
901 | nptbins,ptmin,ptmax, ntimebins,timemin,timemax); | |
902 | fhTimeSelectedTriggerEMCALBC[i]->SetXTitle("#it{E} (GeV)"); | |
903 | fhTimeSelectedTriggerEMCALBC[i]->SetYTitle("#it{time} (ns)"); | |
904 | outputContainer->Add(fhTimeSelectedTriggerEMCALBC[i]); | |
905 | ||
906 | fhTimeSelectedTriggerEMCALBCPileUpSPD[i] = new TH2F | |
907 | (Form("hTimeSelectedTriggerEMCALBC%dPileUpSPD",i-iBCShift), | |
908 | Form("photon #it{time} vs #it{E}, SelectedTrigger EMCAL-BC=%d",i-iBCShift), | |
909 | nptbins,ptmin,ptmax, ntimebins,timemin,timemax); | |
910 | fhTimeSelectedTriggerEMCALBCPileUpSPD[i]->SetXTitle("#it{E} (GeV)"); | |
911 | fhTimeSelectedTriggerEMCALBCPileUpSPD[i]->SetYTitle("#it{time} (ns)"); | |
912 | outputContainer->Add(fhTimeSelectedTriggerEMCALBCPileUpSPD[i]); | |
913 | ||
914 | fhEtaPhiSelectedTriggerEMCALBCUM[i] = new TH2F | |
915 | (Form("hEtaPhiSelectedTriggerEMCALBC%d_UnMatch",i-iBCShift), | |
916 | Form("photon #it{E} > 2 GeV, #eta vs #phi, unmatched trigger EMCAL-BC=%d",i-iBCShift), | |
917 | netabins,etamin,etamax,nphibins,phimin,phimax); | |
918 | fhEtaPhiSelectedTriggerEMCALBCUM[i]->SetYTitle("#phi (rad)"); | |
919 | fhEtaPhiSelectedTriggerEMCALBCUM[i]->SetXTitle("#eta"); | |
920 | outputContainer->Add(fhEtaPhiSelectedTriggerEMCALBCUM[i]) ; | |
921 | ||
922 | fhTimeSelectedTriggerEMCALBCUM[i] = new TH2F | |
923 | (Form("hTimeSelectedTriggerEMCALBC%d_UnMatch",i-iBCShift), | |
924 | Form("photon #it{time} vs #it{E}, unmatched trigger EMCAL-BC=%d",i-iBCShift), | |
925 | nptbins,ptmin,ptmax, ntimebins,timemin,timemax); | |
926 | fhTimeSelectedTriggerEMCALBCUM[i]->SetXTitle("#it{E} (GeV)"); | |
927 | fhTimeSelectedTriggerEMCALBCUM[i]->SetYTitle("#it{time} (ns)"); | |
928 | outputContainer->Add(fhTimeSelectedTriggerEMCALBCUM[i]); | |
929 | ||
930 | } | |
931 | ||
932 | fhTimeSelectedTriggerEMCALBC0UMReMatchOpenTime = new TH2F("hTimeSelectedTriggerBC0_UnMatch_ReMatch_OpenTime", | |
933 | "cluster #it{time} vs #it{E} of photons, no match, rematch open time", | |
934 | nptbins,ptmin,ptmax, ntimebins,timemin,timemax); | |
935 | fhTimeSelectedTriggerEMCALBC0UMReMatchOpenTime->SetXTitle("#it{E} (GeV)"); | |
936 | fhTimeSelectedTriggerEMCALBC0UMReMatchOpenTime->SetYTitle("#it{time} (ns)"); | |
937 | outputContainer->Add(fhTimeSelectedTriggerEMCALBC0UMReMatchOpenTime); | |
938 | ||
939 | ||
940 | fhTimeSelectedTriggerEMCALBC0UMReMatchCheckNeigh = new TH2F("hTimeSelectedTriggerBC0_UnMatch_ReMatch_CheckNeighbours", | |
941 | "cluster #it{time} vs #it{E} of photons, no match, rematch with neigbour parches", | |
942 | nptbins,ptmin,ptmax, ntimebins,timemin,timemax); | |
943 | fhTimeSelectedTriggerEMCALBC0UMReMatchCheckNeigh->SetXTitle("#it{E} (GeV)"); | |
944 | fhTimeSelectedTriggerEMCALBC0UMReMatchCheckNeigh->SetYTitle("#it{time} (ns)"); | |
945 | outputContainer->Add(fhTimeSelectedTriggerEMCALBC0UMReMatchCheckNeigh); | |
946 | ||
947 | fhTimeSelectedTriggerEMCALBC0UMReMatchBoth = new TH2F("hTimeSelectedTriggerBC0_UnMatch_ReMatch_Both", | |
948 | "cluster #it{time} vs #it{E} of photons, no match, rematch open time and neigbour", | |
949 | nptbins,ptmin,ptmax, ntimebins,timemin,timemax); | |
950 | fhTimeSelectedTriggerEMCALBC0UMReMatchBoth->SetXTitle("#it{E} (GeV)"); | |
951 | fhTimeSelectedTriggerEMCALBC0UMReMatchBoth->SetYTitle("#it{time} (ns)"); | |
952 | outputContainer->Add(fhTimeSelectedTriggerEMCALBC0UMReMatchBoth); | |
953 | ||
954 | return outputContainer ; | |
955 | ||
956 | } | |
957 | ||
f59c9dd3 | 958 | //_____________________________________ |
bc41680b | 959 | void AliAnaEMCALTriggerClusters::Init() |
960 | { | |
961 | ||
962 | //Init | |
963 | //Do some checks | |
964 | if(!GetReader()->IsEMCALSwitchedOn() || GetReader()->GetDataType() == AliCaloTrackReader::kMC) | |
965 | { | |
966 | AliFatal("You want to use EMCAL real data in analysis but it is not read!! \n!!Check the configuration file!!\n"); | |
967 | } | |
968 | ||
969 | } | |
970 | ||
f59c9dd3 | 971 | //_______________________________________________ |
bc41680b | 972 | void AliAnaEMCALTriggerClusters::InitParameters() |
973 | { | |
974 | ||
975 | //Initialize the parameters of the analysis. | |
976 | AddToHistogramsName("AnaEMCALTriggerCluster_"); | |
977 | ||
978 | fRejectTrackMatch = kTRUE; | |
979 | fMinM02 = 0.1; | |
980 | fMaxM02 = 0.3; | |
981 | fNCellsCut = 2; | |
982 | ||
983 | } | |
984 | ||
f59c9dd3 | 985 | //____________________________________________________________ |
bc41680b | 986 | void AliAnaEMCALTriggerClusters::MakeAnalysisFillHistograms() |
987 | { | |
988 | //Do photon analysis and fill aods | |
989 | ||
990 | TObjArray * pl = GetEMCALClusters(); | |
991 | ||
992 | if(!pl) | |
993 | { | |
2db10729 | 994 | AliWarning("TObjArray with clusters is NULL!"); |
bc41680b | 995 | return; |
996 | } | |
997 | ||
998 | FillBadTriggerEventHistogram(); | |
999 | ||
1000 | // Loop on raw clusters before filtering in the reader and fill control histogram | |
1001 | ||
1002 | Int_t nCaloClusters = pl->GetEntriesFast(); | |
1003 | Int_t idTrig = GetReader()->GetTriggerClusterIndex(); | |
bc41680b | 1004 | |
2db10729 | 1005 | AliDebug(1,Form("Input cluster entries %d", nCaloClusters)); |
bc41680b | 1006 | |
1007 | // Loop on clusters | |
1008 | for(Int_t icalo = 0; icalo < nCaloClusters; icalo++) | |
1009 | { | |
1010 | AliVCluster * calo = (AliVCluster*) (pl->At(icalo)); | |
1011 | //printf("calo %d, %f\n",icalo,calo->E()); | |
1012 | ||
f59c9dd3 | 1013 | calo->GetMomentum(fMomentum,GetVertex(0)) ; |
bc41680b | 1014 | |
1015 | Float_t tofcluster = calo->GetTOF()*1.e9; | |
f59c9dd3 | 1016 | Float_t ecluster = fMomentum.E(); |
1017 | Float_t etacluster = fMomentum.Eta(); | |
1018 | Float_t phicluster = fMomentum.Phi(); | |
bc41680b | 1019 | if(phicluster < 0) phicluster+=TMath::TwoPi(); |
1020 | ||
1021 | FillRawClusterTriggerBCHistograms(calo->GetID(),ecluster,tofcluster,etacluster,phicluster); | |
1022 | ||
1023 | // Select clusters | |
1024 | ||
1025 | if(idTrig < 0) continue; | |
1026 | ||
1027 | fhE->Fill(ecluster); | |
1028 | if(ecluster > 0.5) fhEtaPhi->Fill(etacluster, phicluster); | |
1029 | ||
1030 | //....................................... | |
1031 | //If too small or big energy, skip it | |
1032 | if(ecluster < GetMinEnergy() || ecluster > GetMaxEnergy() ) continue ; | |
1033 | ||
1034 | //....................................... | |
1035 | if(calo->GetNCells() <= fNCellsCut) continue; | |
1036 | ||
1037 | //....................................... | |
1038 | //Check acceptance selection | |
1039 | if(IsFiducialCutOn()) | |
1040 | { | |
f59c9dd3 | 1041 | Bool_t in = GetFiducialCut()->IsInFiducialCut(fMomentum.Eta(),fMomentum.Phi(),kEMCAL) ; |
bc41680b | 1042 | if(! in ) continue ; |
1043 | } | |
1044 | ||
1045 | //....................................... | |
1046 | //Skip matched clusters with tracks | |
1047 | if(fRejectTrackMatch && IsTrackMatched(calo,GetReader()->GetInputEvent())) continue; | |
1048 | ||
1049 | //....................................... | |
1050 | //Skip matched clusters with Large shower shape | |
1051 | if(calo->GetM02() < fMinM02 || calo->GetM02() > fMaxM02) continue; | |
1052 | ||
1053 | fhESelected ->Fill(ecluster); | |
1054 | if(ecluster > 0.5) fhEtaPhiSelected->Fill(etacluster, phicluster); | |
1055 | ||
1056 | Float_t tofUS = TMath::Abs(tofcluster); | |
1057 | ||
1058 | if(calo->E() > 2) | |
1059 | { | |
1060 | if (tofUS < 25) fhEtaPhiSelectedEMCALBC0->Fill(etacluster, phicluster); | |
1061 | else if (tofUS < 75) fhEtaPhiSelectedEMCALBC1->Fill(etacluster, phicluster); | |
1062 | else fhEtaPhiSelectedEMCALBCN->Fill(etacluster, phicluster); | |
1063 | } | |
1064 | ||
1065 | Int_t bc = GetReader()->GetTriggerClusterBC(); | |
1066 | Int_t histoBC = bc-5; | |
1067 | if(GetReader()->AreBadTriggerEventsRemoved()) histoBC = 0 ; // histograms created only for one BC since the others where rejected | |
1068 | ||
1069 | if(TMath::Abs(bc) < 6 && !GetReader()->IsBadCellTriggerEvent() && !GetReader()->IsExoticEvent()) | |
1070 | { | |
1071 | if(GetReader()->IsTriggerMatched()) | |
1072 | { | |
1073 | if(calo->E() > 2) fhEtaPhiSelectedTriggerEMCALBC[histoBC]->Fill(etacluster, phicluster); | |
1074 | fhTimeSelectedTriggerEMCALBC[histoBC]->Fill(ecluster, tofcluster); | |
1075 | if(GetReader()->IsPileUpFromSPD()) fhTimeSelectedTriggerEMCALBCPileUpSPD[histoBC]->Fill(ecluster, tofcluster); | |
1076 | } | |
1077 | else | |
1078 | { | |
1079 | if(calo->E() > 2) fhEtaPhiSelectedTriggerEMCALBCUM[histoBC]->Fill(etacluster, phicluster); | |
1080 | fhTimeSelectedTriggerEMCALBCUM[histoBC]->Fill(calo->E(), tofcluster); | |
1081 | ||
1082 | if(bc==0) | |
1083 | { | |
1084 | if(GetReader()->IsTriggerMatchedOpenCuts(0)) fhTimeSelectedTriggerEMCALBC0UMReMatchOpenTime ->Fill(ecluster, tofcluster); | |
1085 | if(GetReader()->IsTriggerMatchedOpenCuts(1)) fhTimeSelectedTriggerEMCALBC0UMReMatchCheckNeigh ->Fill(ecluster, tofcluster); | |
1086 | if(GetReader()->IsTriggerMatchedOpenCuts(2)) fhTimeSelectedTriggerEMCALBC0UMReMatchBoth ->Fill(ecluster, tofcluster); | |
1087 | } | |
1088 | } | |
1089 | } | |
1090 | else if(TMath::Abs(bc) >= 6) | |
2db10729 | 1091 | AliWarning(Form("Trigger BC not expected = %d",bc)); |
bc41680b | 1092 | |
1093 | }// cluster loop | |
1094 | ||
2db10729 | 1095 | AliDebug(1,"End fill histograms"); |
bc41680b | 1096 | |
1097 | } | |
1098 | ||
1099 | ||
1100 | //__________________________________________________________________ | |
1101 | void AliAnaEMCALTriggerClusters::Print(const Option_t * opt) const | |
1102 | { | |
1103 | //Print some relevant parameters set for the analysis | |
1104 | ||
1105 | if(! opt) | |
1106 | return; | |
1107 | ||
1108 | printf("**** Print %s %s ****\n", GetName(), GetTitle() ) ; | |
1109 | //AliAnaCaloTrackCorrBaseClass::Print(" "); | |
1110 | printf("Reject clusters with a track matched = %d\n", fRejectTrackMatch); | |
1111 | printf("M02 Cut: %2.2f < m02 < %2.2f\n" , fMinM02,fMaxM02); | |
1112 | printf("Number of cells in cluster is > %d \n" , fNCellsCut); | |
1113 | } |