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