]>
Commit | Line | Data |
---|---|---|
364c8fcb | 1 | #include "TList.h" |
2 | #include "TH1F.h" | |
3 | #include "TH2F.h" | |
4 | #include "TLorentzVector.h" | |
5 | #include "TParticle.h" | |
6 | #include "TClonesArray.h" | |
7 | #include "TFile.h" | |
8 | #include "TRandom3.h" | |
9 | #include "TVector3.h" | |
10 | #include "TClonesArray.h" | |
11 | #include "TString.h" | |
12 | ||
13 | #include "AliVEvent.h" | |
14 | #include "AliStack.h" | |
15 | #include "AliAnalysisTaskSE.h" | |
16 | #include "AliAnalysisTaskEMCALCaloTrackCorr.h" | |
17 | #include "AliEMCALGeometry.h" | |
18 | #include "AliEMCALRecoUtils.h" | |
19 | #include "AliAnalysisManager.h" | |
20 | #include "AliInputEventHandler.h" | |
21 | #include "AliESDEvent.h" | |
22 | #include "AliAODEvent.h" | |
23 | #include "AliMCEvent.h" | |
24 | #include "AliVCaloCells.h" | |
25 | #include "AliVCluster.h" | |
26 | #include "AliVParticle.h" | |
27 | #include "AliESDtrack.h" | |
28 | #include "AliVVertex.h" | |
29 | #include "AliESDtrackCuts.h" | |
30 | #include "AliAODTrack.h" | |
31 | #include "AliCentrality.h" | |
9c1fcdc6 | 32 | #include "AliCaloTrackParticle.h" |
364c8fcb | 33 | #include "AliTriggerAnalysis.h" |
34 | #include "AliFiducialCut.h" | |
35 | #include "AliEventplane.h" | |
36 | #include "AliAODHeader.h" | |
37 | ||
38 | ||
39 | ClassImp(AliAnalysisTaskEMCALCaloTrackCorr) | |
40 | ||
41 | //________________________________________________________________________ | |
42 | AliAnalysisTaskEMCALCaloTrackCorr::AliAnalysisTaskEMCALCaloTrackCorr(const char *name) | |
43 | :AliAnalysisTaskSE(name), | |
44 | fManager(NULL), fInputHandler(NULL), | |
45 | fEvent(NULL), fMCEvent(NULL), fStack(NULL), | |
46 | fCentrality(0x0), fEventPlane(0x0), | |
47 | fEMCALRecU(0x0), fEMCALGeom(0x0), fESDtrackCuts(0x0), /* fFidCut(0x0),*/ | |
48 | outputContainer(0), | |
49 | ||
50 | fEMCALGeomName("EMCAL_COMPLETEV1"), | |
51 | fCentralityClass(""), fCentralityBinMin(0), fCentralityBinMax(0), | |
44e6df08 | 52 | fEventPlaneMethod(""), fEventTriggerMaks(0), fNCentralityBins(0), fNEventPlaneBins(0), |
364c8fcb | 53 | fHistoPtBins(0), fHistoPtMax(0.), fHistoPtMin(0.), |
54 | fHistoPhiBins(0), fHistoPhiMax(0.), fHistoPhiMin(0.), | |
55 | fHistoEtaBins(0), fHistoEtaMax(0.), fHistoEtaMin(0.), | |
56 | fMinNCells(0) , fMinE(0), fMinDistBad(0), | |
57 | fL0CutMin(0), fL0CutMax(0), fTimeCutMin(0), | |
58 | fTimeCutMax(0), fPhotonPairTimeCut(0),fEMCALDPhiCut(0), | |
59 | fEMCALDEtaCut(0), fZVertexCut(0), fDebug(0), | |
60 | fAnaMesonType(0), fAsymmetryCut(0), fDataType(0), | |
61 | fTrackFilterMask(0), | |
62 | ||
63 | fInvMassMinCut(0), fInvMassMaxCut(0), fLeftBandMinCut(0), | |
64 | fLeftBandMaxCut(0), fRightBandMinCut(0), fRightBandMaxCut(0), | |
65 | ||
66 | kMC(0), kNeutralMesonHistos(0), kDoMixEventsAna(0), | |
67 | kDoPhotonCorrAna(0), kDoAsymmetryCut(0), kDoSelectHybridTracks(0), | |
68 | kDoMesonFill(0), kDoMesonCorrAna(0), kDoIsolatedAna(0), | |
69 | kDoTrackMultBins(0), kUELeftRight(0), kUENearAway(0), | |
70 | kDecayPhotonCorr(0), kAnaMCTruthCorr(0), kAnaMCPrimaryCorr(0), | |
71 | kAnaPi0Prim(0), kAnaEtaPrim(0), kAnaPhotonPrim(0), | |
72 | kMakeAbsoluteLeading(0), kMakeNearSideLeading(0), kTwoTracksCorr(0), | |
73 | kPhotonInAcceptance(0), kAnaDecayMapping(0), /*fCheckFidCut(0),*/ | |
74 | kEventTriggerAtSE(0), kPhotonPairTimeCut(0), kDoPhotonIDCut(0), | |
75 | ||
76 | fhNEvents(0), fnEvents(0), fhNEventsAnalyized(0), fEventAnalyized(0), | |
77 | fPhotonEvent(0), fPhotonPairEvent(0), fCTSEvent(0), | |
78 | nPhotonsEMCAL(0), nTracksCTS(0), fAnaTypeInIsolated(0), | |
79 | nMixedEvents(0), | |
80 | fSetConeR(0), fSetPtThreshold(0), fSetSumPtThreshold(0), | |
81 | fSetPtFraction(0), fICMethod(0), fParticlesInCone(0), | |
82 | ||
83 | fTriggPtArray(0), fNTriggPtBins(0), fptTriggerBegin(0), fptTriggerEnd(0), | |
84 | fAssocPtArray(0), fNAssocPtBins(0), fptAssociatedBegin(0), | |
85 | ||
86 | fDeltaPhiMaxCut(0.), fDeltaPhiMinCut(0.), fUeDeltaPhiSize(0), | |
87 | fUeDeltaPhiFix(0), fDeltaPhiHRSize(0), | |
88 | ||
89 | fhPhotonE(0), fhPhotonPtPhi(0), fhPhotonPtEta(0), fhPhotonPhiEta(0), | |
90 | fhMesonE(0), fhMesonPtPhi(0), fhMesonPtEta(0), fhMesonPhiEta(0), | |
91 | ||
92 | fhAnglePairNoCut(0), fhInvMassPairNoCut(0), fhAsyNoCut(0), | |
93 | fhInvMassPairAsyCut(0), fhAnglePairAsyCut(0), fhInvMassPairPhi(0), | |
94 | fhInvMassPairEta(0), fhInvMassPairAllCut(0), fhAnglePairAllCut(0), | |
95 | fhAsyAllCut(0), | |
96 | ||
97 | fhPi0DecayPhoton1(0), fhPi0DecayPhoton1Dphi(0), fhDecayPhoton1Pi0Dphi(0), | |
98 | fhPi0DecayPhoton2(0), fhPi0DecayPhoton2Dphi(0), fhDecayPhoton2Pi0Dphi(0), | |
99 | fhDecayPhoton1Photon2(0),fhDecayPhoton1Photon2Dphi(0), fhDecayPhoton2Photon1Dphi(0), | |
100 | ||
101 | ||
102 | ||
103 | fhNtracksAll(0), fhNtracksEMC7(0), fhNtracksAnyINT(0), | |
104 | fhNtracksCentral(0), fhNtracksSemiCentral(0), fhNtracksOtherTirgger(0), | |
105 | fhNtracksCorr(0), fhTrackPtPhi(0), | |
106 | fhTrackPtEta(0), fhTrackPhiEta(0), fhPtPhiLeading(0), | |
107 | fhPtEtaLeading(0), fhMixPtPhiLeading(0), fhMixPtEtaLeading(0), | |
108 | fhDPhiTriggPtAssocPt(0), fhDEtaTriggPtAssocPt(0), | |
109 | fhAssocPtTriggPt(0), fhxELogTriggPt(0), fhpoutTriggPt(0), | |
110 | fhzTTriggPt(0), fhxETriggPt(0), | |
111 | fhAssocPtTriggPtHR(0), fhxELogTriggPtHR(0), fhpoutTriggPtHR(0), | |
112 | fhzTTriggPtHR(0), fhxETriggPtHR(0), | |
113 | fhNUeAssocPtTriggPt(0), fhNUepoutTriggPt(0), fhNUexETriggPt(0), | |
114 | fhNUezTTriggPt(0), fhNUexELogTriggPt(0), fhNUeDPhiDEta(0), | |
115 | fhAUeAssocPtTriggPt(0), fhAUepoutTriggPt(0), fhAUezTTriggPt(0), | |
116 | fhAUexETriggPt(0), fhAUexELogTriggPt(0), fhAUeDPhiDEta(0), | |
117 | ||
118 | fhMCPtPhiLeading(0), fhMCPtEtaLeading(0), | |
119 | fhMCAssocPtTriggPt(0), fhMCxELogTriggPt(0), fhMCpoutTriggPt(0), | |
120 | fhMCzTTriggPt(0), fhMCxETriggPt(0), | |
121 | fhMCAssocPtTriggPtHR(0), fhMCxELogTriggPtHR(0), fhMCpoutTriggPtHR(0), | |
122 | fhMCzTTriggPtHR(0), fhMCxETriggPtHR(0), | |
123 | fhMCNUeAssocPtTriggPt(0),fhMCNUepoutTriggPt(0), fhMCNUexETriggPt(0), | |
124 | fhMCNUezTTriggPt(0), fhMCNUexELogTriggPt(0), | |
125 | fhMCAUeAssocPtTriggPt(0),fhMCAUepoutTriggPt(0), fhMCAUezTTriggPt(0), | |
126 | fhMCAUexETriggPt(0), fhMCAUexELogTriggPt(0), | |
127 | fhDPhiAssocPt15T(0), fhDEtaAssocPt15T(0), fhMixDPhiAssocPt15T(0), | |
128 | fhMixDEtaAssocPt15T(0), fhMCDPhiAssocPt15T(0), fhMCDEtaAssocPt15T(0) | |
129 | ||
130 | { | |
131 | // Constructor | |
132 | for(Int_t imix=0;imix<10;imix++){ | |
133 | for(Int_t jmix=0;jmix<10;jmix++){ | |
134 | for(Int_t kmix=0;kmix<10;kmix++) | |
135 | fListMixEvents[imix][jmix][kmix]=0x0; | |
136 | } | |
137 | } | |
138 | ||
139 | // Default constructor. | |
140 | for(Int_t i = 0; i< GetNAssocPtBins(); i++){ | |
141 | fhDPhiTriggPtT[i] = 0; | |
142 | fhDEtaTriggPtT[i] = 0; | |
143 | fhMixDPhiTriggPtT[i] = 0; | |
144 | fhMixDEtaTriggPtT[i] = 0; | |
145 | } | |
146 | ||
147 | for(Int_t j = 0; j < GetNTriggPtBins(); j++){ | |
148 | for(Int_t k = 0; k< GetNAssocPtBins(); k++){ | |
149 | fhDPhiSumPtBin[j][k] = 0; | |
150 | fhDEtaSumPtBin[j][k] = 0; | |
151 | fhDPhiDEtaBin[j][k] = 0; | |
152 | fhMixDPhiDEtaBin[j][k] = 0; | |
153 | } | |
154 | } | |
155 | ||
156 | for(Int_t j1 = 0; j1 < GetNTriggPtBins(); j1++){ | |
157 | fhDPhiAssocPtA[j1] = 0; | |
158 | fhDEtaAssocPtA[j1] = 0; | |
159 | fhMixDPhiAssocPtA[j1] = 0; | |
160 | fhMixDEtaAssocPtA[j1] = 0; | |
161 | } | |
162 | ||
163 | /////MC | |
164 | for(Int_t i = 0; i< GetNAssocPtBins(); i++){ | |
165 | fhMCDPhiTriggPtT[i] = 0; | |
166 | fhMCDEtaTriggPtT[i] = 0; | |
167 | } | |
168 | ||
169 | for(Int_t j = 0; j < GetNTriggPtBins(); j++){ | |
170 | for(Int_t k = 0; k< GetNAssocPtBins(); k++){ | |
171 | fhMCDPhiSumPtBin[j][k] = 0; | |
172 | fhMCDEtaSumPtBin[j][k] = 0; | |
173 | fhMCDPhiDEtaBin[j][k] = 0; | |
174 | } | |
175 | } | |
176 | ||
177 | for(Int_t j1 = 0; j1 < GetNTriggPtBins(); j1++){ | |
178 | fhMCDPhiAssocPtA[j1] = 0; | |
179 | fhMCDEtaAssocPtA[j1] = 0; | |
180 | } | |
181 | ||
182 | //Initialize parameters | |
183 | InitParameters(); | |
184 | ||
185 | DefineOutput(1, TList::Class()); | |
186 | } | |
187 | ||
188 | //________________________________________________________________________ | |
189 | void AliAnalysisTaskEMCALCaloTrackCorr::UserCreateOutputObjects() | |
190 | { | |
191 | ||
192 | fEMCALGeom = AliEMCALGeometry::GetInstance(fEMCALGeomName); | |
193 | fEMCALRecU = new AliEMCALRecoUtils(); | |
194 | ||
195 | Int_t nptbins = GetHistoPtBins(); | |
196 | Int_t nphibins = GetHistoPhiBins(); | |
197 | Int_t netabins = GetHistoEtaBins(); | |
198 | Float_t ptmax = GetHistoPtMax(); | |
199 | Float_t phimax = GetHistoPhiMax(); | |
200 | Float_t etamax = GetHistoEtaMax(); | |
201 | Float_t ptmin = GetHistoPtMin(); | |
202 | Float_t phimin = GetHistoPhiMin(); | |
203 | Float_t etamin = GetHistoEtaMin(); | |
204 | ||
205 | Int_t ndphibins = 350; | |
206 | Float_t dphimin = -2.; | |
207 | Float_t dphimax = 5.; | |
208 | ||
209 | Int_t ndetabins = 360; | |
210 | Float_t detamin = -1.8; | |
211 | Float_t detamax = 1.8; | |
212 | ||
213 | Int_t nzTbins = 150; | |
214 | Float_t zTmin = 0.; | |
215 | Float_t zTmax = 3.; | |
216 | ||
217 | Int_t nxEbins = 150; | |
218 | Float_t xEmin = 0.; | |
219 | Float_t xEmax = 3.; | |
220 | ||
221 | Int_t nxElogbins = 180; | |
222 | Float_t xElogmin = 0.; | |
223 | Float_t xElogmax = 9.; | |
224 | ||
225 | Int_t nmassbins = 200; | |
226 | Float_t massmin = 0.; | |
227 | Float_t massmax = 1.; | |
228 | ||
229 | Int_t nanglebins = 300; | |
230 | Float_t anglemin = 0.; | |
231 | Float_t anglemax = 0.6; | |
232 | ||
233 | outputContainer = new TList(); | |
234 | outputContainer->SetOwner(kTRUE); | |
235 | ||
236 | fhNEvents = new TH1F ("hNEvents","Number of all events",1,0.5,1.5); | |
237 | outputContainer->Add(fhNEvents); | |
238 | ||
239 | fhNEventsAnalyized = new TH1F ("hNEventsAnalyized","Number of events analyzed Last",1,0.5,1.5); | |
240 | outputContainer->Add(fhNEventsAnalyized); | |
241 | ||
242 | fhPhotonE = new TH1F("hPhotonE","Number of #gamma over calorimeter vs energy",nptbins,ptmin,ptmax); | |
243 | fhPhotonE->SetYTitle("N"); | |
244 | fhPhotonE->SetXTitle("E_{#gamma}(GeV)"); | |
245 | outputContainer->Add(fhPhotonE) ; | |
246 | ||
247 | fhPhotonPtPhi = new TH2F | |
248 | ("hPhotonPtPhi","#phi_{#gamma} vs p_{T}",nptbins,ptmin,ptmax,nphibins,phimin,phimax); | |
249 | fhPhotonPtPhi->SetYTitle("#phi (rad)"); | |
250 | fhPhotonPtPhi->SetXTitle("p_{T #gamma} (GeV/c)"); | |
251 | outputContainer->Add(fhPhotonPtPhi) ; | |
252 | ||
253 | fhPhotonPtEta = new TH2F | |
254 | ("hPhotonPtEta","#eta_{#gamma} vs p_{T}",nptbins,ptmin,ptmax,netabins,etamin,etamax); | |
255 | fhPhotonPtEta->SetYTitle("#eta"); | |
256 | fhPhotonPtEta->SetXTitle("p_{T #gamma} (GeV/c)"); | |
257 | outputContainer->Add(fhPhotonPtEta) ; | |
258 | ||
259 | fhPhotonPhiEta = new TH2F | |
260 | ("hPhotonPhiEta","#phi vs #eta",nphibins,phimin,phimax, netabins,etamin,etamax); | |
261 | fhPhotonPhiEta->SetXTitle("#phi (rad)"); | |
262 | fhPhotonPhiEta->SetYTitle("#eta"); | |
263 | outputContainer->Add(fhPhotonPhiEta); | |
264 | ||
265 | if(kDoMesonFill){ | |
266 | fhMesonE = new TH1F("hMesonE","Number of #pi^{0}(#eta) over calorimeter vs energy",nptbins,ptmin,ptmax); | |
267 | fhMesonE->SetYTitle("N"); | |
268 | fhMesonE->SetXTitle("E_{#meson}(GeV)"); | |
269 | outputContainer->Add(fhMesonE) ; | |
270 | ||
271 | fhMesonPtPhi = new TH2F | |
272 | ("hMesonPtPhi","#phi vs p_{T} of #pi^{0}(#eta)",nptbins,ptmin,ptmax,nphibins,phimin,phimax); | |
273 | fhMesonPtPhi->SetYTitle("#phi (rad)"); | |
274 | fhMesonPtPhi->SetXTitle("p_{T meson} (GeV/c)"); | |
275 | outputContainer->Add(fhMesonPtPhi) ; | |
276 | ||
277 | fhMesonPtEta = new TH2F | |
278 | ("hMesonPtEta","#eta vs p_{T} of #pi^{0}(#eta)",nptbins,ptmin,ptmax,netabins,etamin,etamax); | |
279 | fhMesonPtEta->SetYTitle("#eta"); | |
280 | fhMesonPtEta->SetXTitle("p_{T meson} (GeV/c)"); | |
281 | outputContainer->Add(fhMesonPtEta) ; | |
282 | ||
283 | fhMesonPhiEta = new TH2F | |
284 | ("hMesonPhiEta","#phi vs #eta of #pi^{0}(#eta)",nphibins,phimin,phimax, netabins,etamin,etamax); | |
285 | fhMesonPhiEta->SetXTitle("#phi (rad)"); | |
286 | fhMesonPhiEta->SetYTitle("#eta"); | |
287 | outputContainer->Add(fhMesonPhiEta); | |
288 | ||
289 | if(kNeutralMesonHistos){ | |
290 | fhAnglePairNoCut = new TH2F("hAnglePairNoCut","Angle between all #gamma pair vs E_{#pi^{0}}", | |
291 | nptbins,ptmin,ptmax,nanglebins,anglemin,anglemax); | |
292 | fhAnglePairNoCut->SetYTitle("Angle (rad)"); | |
293 | fhAnglePairNoCut->SetXTitle("E_{ #pi^{0}} (GeV)"); | |
294 | ||
295 | fhAsyNoCut = new TH2F("hAsymmetryNoCut","Asymmetry of all #gamma pair vs E_{#pi^{0}}", | |
296 | nptbins,ptmin,ptmax,100,0,1); | |
297 | fhAsyNoCut->SetYTitle("Asymmetry"); | |
298 | fhAsyNoCut->SetXTitle("E_{ #pi^{0}} (GeV)"); | |
299 | ||
300 | fhInvMassPairNoCut = new TH2F("hInvMassPairNoCut","Invariant Mass of all #gamma pair vs E_{#pi^{0}}", | |
301 | nptbins,ptmin,ptmax,nmassbins, massmin, massmax); | |
302 | fhInvMassPairNoCut->SetYTitle("hInvariant Mass (GeV/c^{2})"); | |
303 | fhInvMassPairNoCut->SetXTitle("E_{ #pi^{0}} (GeV)"); | |
304 | ||
305 | outputContainer->Add(fhAnglePairNoCut) ; | |
306 | outputContainer->Add(fhAsyNoCut) ; | |
307 | outputContainer->Add(fhInvMassPairNoCut) ; | |
308 | ||
309 | ||
310 | if(kDoAsymmetryCut) { | |
311 | fhAnglePairAsyCut = new TH2F("hAnglePairAsymmetryCut","AnglePairAsymmetryCut", | |
312 | nptbins,ptmin,ptmax,nanglebins,anglemin,anglemax); | |
313 | fhAnglePairAsyCut->SetYTitle("Angle (rad)"); | |
314 | fhAnglePairAsyCut->SetXTitle("E_{ #pi^{0}} (GeV)"); | |
315 | ||
316 | fhInvMassPairAsyCut = new TH2F("hInvMassPairAsymmetryCut","Invariant Mass of #gamma pair vs E_{#pi^{0}}", | |
317 | nptbins,ptmin,ptmax,nmassbins, massmin, massmax); | |
318 | fhInvMassPairAsyCut->SetYTitle("Invariant Mass (GeV/c^{2})"); | |
319 | fhInvMassPairAsyCut->SetXTitle("E_{#pi^{0}}(GeV)"); | |
320 | ||
321 | fhInvMassPairPhi = new TH2F("hInvMassPairPhi", "M_{#gamma#gamma} vs #phi", | |
322 | nptbins,ptmin,ptmax,nphibins, phimin, phimax); | |
323 | fhInvMassPairPhi->SetYTitle("#phi (rad)"); | |
324 | fhInvMassPairPhi->SetXTitle("E_{ #pi^{0}} (GeV)"); | |
325 | ||
326 | fhInvMassPairEta = new TH2F("hInvMassPairEta","M_{#gamma#gamma} vs #eta", | |
327 | nptbins,ptmin,ptmax, netabins, etamin, etamax); | |
328 | fhInvMassPairEta->SetYTitle("#eta"); | |
329 | fhInvMassPairEta->SetXTitle("E_{ #pi^{0}} (GeV)"); | |
330 | ||
331 | outputContainer->Add(fhAnglePairAsyCut) ; | |
332 | outputContainer->Add(fhInvMassPairAsyCut) ; | |
333 | outputContainer->Add(fhInvMassPairPhi); | |
334 | outputContainer->Add(fhInvMassPairEta); | |
335 | } | |
336 | ||
337 | fhAnglePairAllCut = new TH2F("hAnglePairAllCut", "Angle between all #gamma pair (opening angle + asymmetry + inv mass cut) vs E_{#pi^{0}}", | |
338 | nptbins,ptmin,ptmax,nanglebins,anglemin,anglemax); | |
339 | fhAnglePairAllCut->SetYTitle("Angle (rad)"); | |
340 | fhAnglePairAllCut->SetXTitle("E_{ #pi^{0}} (GeV)"); | |
341 | ||
342 | fhInvMassPairAllCut = new TH2F("hInvMassPairAllCut","Invariant Mass of #gamma pair (opening angle + asymmetry + invmass cut) vs E_{#pi^{0}}", | |
343 | nptbins,ptmin,ptmax,nmassbins, massmin, massmax); | |
344 | fhInvMassPairAllCut->SetYTitle("Invariant Mass (GeV/c^{2})"); | |
345 | fhInvMassPairAllCut->SetXTitle("E_{#pi^{0}}(GeV)"); | |
346 | ||
347 | fhAsyAllCut = new TH2F("hAsymmetryAllCut", "Asymmetry of #gamma pair (opening angle+invmass cut) vs E_{#pi^{0}}", | |
348 | nptbins,ptmin,ptmax,100,0,1); | |
349 | fhAsyAllCut->SetYTitle("Asymmetry"); | |
350 | fhAsyAllCut->SetXTitle("E_{#pi^{0}}(GeV)"); | |
351 | ||
352 | outputContainer->Add(fhAnglePairAllCut) ; | |
353 | outputContainer->Add(fhAsyAllCut) ; | |
354 | outputContainer->Add(fhInvMassPairAllCut) ; | |
355 | } | |
356 | ||
357 | fhPi0DecayPhoton1 = new TH2F("hPi0DecayPhoton1","#pi^{0} vs its decay #gamma1 ",nptbins,ptmin,ptmax,nptbins,ptmin,ptmax); | |
358 | fhPi0DecayPhoton1->SetYTitle("p_{T #gamma1}(GeV/c)"); | |
359 | fhPi0DecayPhoton1->SetXTitle("p_{T #pi^{0}}(GeV/c)"); | |
360 | outputContainer->Add(fhPi0DecayPhoton1); | |
361 | ||
362 | fhPi0DecayPhoton1Dphi = new TH2F("hPi0DecayPhoton1Dphi","#pi^{0} vs #Delta#phi ",nptbins,ptmin,ptmax,300,0,0.6); | |
363 | fhPi0DecayPhoton1Dphi->SetYTitle("#Delta#phi(rad)"); | |
364 | fhPi0DecayPhoton1Dphi->SetXTitle("p_{T #pi^{0}}(GeV/c)"); | |
365 | outputContainer->Add(fhPi0DecayPhoton1Dphi); | |
366 | ||
367 | fhDecayPhoton1Pi0Dphi = new TH2F("hDecayPhoton1Pi0Dphi","decay #gamma1 vs #Delta#phi",nptbins,ptmin,ptmax,300,0,0.6); | |
368 | fhDecayPhoton1Pi0Dphi->SetYTitle("#Delta#phi(rad)"); | |
369 | fhDecayPhoton1Pi0Dphi->SetXTitle("p_{T #gamma1}(GeV/c)"); | |
370 | outputContainer->Add(fhDecayPhoton1Pi0Dphi); | |
371 | ||
372 | fhPi0DecayPhoton2 = new TH2F("hPi0DecayPhoton2","#pi^{0} vs its decay #gamma2",nptbins,ptmin,ptmax,nptbins,ptmin,ptmax); | |
373 | fhPi0DecayPhoton2->SetYTitle("p_{T #gamma2}(GeV/c)"); | |
374 | fhPi0DecayPhoton2->SetXTitle("p_{T #pi^{0}}(GeV/c)"); | |
375 | outputContainer->Add(fhPi0DecayPhoton2); | |
376 | ||
377 | fhPi0DecayPhoton2Dphi = new TH2F("hPi0DecayPhoton2Dphi","#pi^{0} vs #Delta#phi",nptbins,ptmin,ptmax,300,0,0.6); | |
378 | fhPi0DecayPhoton2Dphi->SetYTitle("#Delta#phi(rad)"); | |
379 | fhPi0DecayPhoton2Dphi->SetXTitle("p_{T #pi^{0}}(GeV/c)"); | |
380 | outputContainer->Add(fhPi0DecayPhoton2Dphi); | |
381 | ||
382 | fhDecayPhoton2Pi0Dphi = new TH2F("hDecayPhoton2Pi0Dphi","decay #gamma2 vs #Delta#phi",nptbins,ptmin,ptmax,300,0,0.6); | |
383 | fhDecayPhoton2Pi0Dphi->SetYTitle("#Delta#phi(rad)"); | |
384 | fhDecayPhoton2Pi0Dphi->SetXTitle("p_{T #gamma2}(GeV/c)"); | |
385 | outputContainer->Add(fhDecayPhoton2Pi0Dphi); | |
386 | ||
387 | fhDecayPhoton1Photon2 = new TH2F("hDecayPhoton1Photon2","#gamma one vs #gamma two",nptbins,ptmin,ptmax,nptbins,ptmin,ptmax); | |
388 | fhDecayPhoton1Photon2->SetYTitle("p_{T #gamma2}(GeV/c)"); | |
389 | fhDecayPhoton1Photon2->SetXTitle("p_{T #gamma1}(GeV/c)"); | |
390 | outputContainer->Add(fhDecayPhoton1Photon2); | |
391 | ||
392 | fhDecayPhoton1Photon2Dphi = new TH2F("hDecayPhoton1Photon2Dphi","#gamma one vs #Delta#phi",nptbins,ptmin,ptmax,300,0,0.6); | |
393 | fhDecayPhoton1Photon2Dphi->SetYTitle("#Delta#phi(rad)"); | |
394 | fhDecayPhoton1Photon2Dphi->SetXTitle("p_{T #gamma1}(GeV/c)"); | |
395 | outputContainer->Add(fhDecayPhoton1Photon2Dphi); | |
396 | ||
397 | fhDecayPhoton2Photon1Dphi = new TH2F("hDecayPhoton2Photon1Dphi","#gamma two vs #Delta#phi",nptbins,ptmin,ptmax,300,0,0.6); | |
398 | fhDecayPhoton2Photon1Dphi->SetZTitle("#Delta#phi(rad)"); | |
399 | fhDecayPhoton2Photon1Dphi->SetXTitle("p_{T #gamma2}(GeV/c)"); | |
400 | outputContainer->Add(fhDecayPhoton2Photon1Dphi); | |
401 | } | |
402 | ||
403 | fhNtracksAll=new TH1F("hNtracksAll","Number of tracks w/o event trigger",2000,0,2000); | |
404 | outputContainer->Add(fhNtracksAll); | |
405 | ||
406 | fhNtracksEMC7=new TH1F("hNtracksEMC7","Number of tracks w/ event trigger kEMC7",2000,0,2000); | |
407 | outputContainer->Add(fhNtracksEMC7); | |
408 | ||
409 | fhNtracksAnyINT=new TH1F("hNtracksAnyINT","Number of tracks w/ event trigger kAnyINT",2000,0,2000); | |
410 | outputContainer->Add(fhNtracksAnyINT); | |
411 | ||
412 | fhNtracksCentral=new TH1F("hNtracksCentral","Number of tracks w/ event trigger kCentral",2000,0,2000); | |
413 | outputContainer->Add(fhNtracksCentral); | |
414 | ||
415 | fhNtracksSemiCentral=new TH1F("hNtracksSemiCentral","Number of tracks w/ event trigger kSemiCentral",2000,0,2000); | |
416 | outputContainer->Add(fhNtracksSemiCentral); | |
417 | ||
418 | fhNtracksOtherTirgger=new TH1F("hNtracksOtherTirgger","Number of tracks w/ event trigger other ",2000,0,2000); | |
419 | outputContainer->Add(fhNtracksOtherTirgger); | |
420 | ||
421 | fhNtracksCorr=new TH1F("hNtracksCorr","Number of tracks w/ event trigger same with correlation",2000,0,2000); | |
422 | outputContainer->Add(fhNtracksCorr); | |
423 | ||
424 | fhTrackPtPhi = new TH2F ("hTrackPtPhi","p_{T} and #phi distribution of tracks", nptbins,ptmin,ptmax, nphibins, phimin, phimax); | |
425 | outputContainer->Add(fhTrackPtPhi); | |
426 | ||
427 | fhTrackPtEta = new TH2F ("hTrackPtEta","p_{T} and #eta distribution of tracks",nptbins,ptmin,ptmax, netabins,etamin,etamax); | |
428 | outputContainer->Add(fhTrackPtEta); | |
429 | ||
430 | fhTrackPhiEta = new TH2F ("hTrackPhiEta","#phi and #eta distribution of tracks",nphibins, phimin, phimax, netabins,etamin,etamax); | |
431 | outputContainer->Add(fhTrackPhiEta); | |
432 | ||
433 | fhPtPhiLeading = new TH2F ("hPtPhiLeading","p_{T} and #phi distribution of leading particles", nptbins,ptmin,ptmax, nphibins, phimin, phimax); | |
434 | outputContainer->Add(fhPtPhiLeading); | |
435 | ||
436 | fhPtEtaLeading = new TH2F ("hPtEtaLeading","p_{T} and #eta distribution of leading",nptbins,ptmin,ptmax, netabins,etamin,etamax); | |
437 | outputContainer->Add(fhPtEtaLeading); | |
438 | ||
439 | fhMixPtPhiLeading = new TH2F ("hMixPtPhiLeading","p_{T} and #phi distribution of mixed leading particles", nptbins,ptmin,ptmax, nphibins, phimin, phimax); | |
440 | outputContainer->Add(fhMixPtPhiLeading); | |
441 | ||
442 | fhMixPtEtaLeading = new TH2F ("hMixPtEtaLeading","p_{T} and #eta distribution of mixed leading particles",nptbins,ptmin,ptmax, netabins,etamin,etamax); | |
443 | outputContainer->Add(fhMixPtEtaLeading); | |
444 | ||
445 | for(Int_t i=0; i< GetNAssocPtBins(); i++){ | |
446 | fhDPhiTriggPtT[i] = new TH2F(Form("hDPhiTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fT",fptTriggerBegin, fptTriggerEnd, fAssocPtArray[i], fAssocPtArray[i+1]), | |
447 | Form("DPhiTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fT",fptTriggerBegin, fptTriggerEnd, fAssocPtArray[i], fAssocPtArray[i+1]),ndphibins,dphimin,dphimax,nptbins, ptmin, ptmax); | |
448 | outputContainer->Add(fhDPhiTriggPtT[i]); | |
449 | ||
450 | fhDEtaTriggPtT[i] = new TH2F(Form("hDEtaTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fT",fptTriggerBegin, fptTriggerEnd, fAssocPtArray[i], fAssocPtArray[i+1]), | |
451 | Form("DEtaTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fT",fptTriggerBegin, fptTriggerEnd, fAssocPtArray[i], fAssocPtArray[i+1]), ndetabins,detamin,detamax,nptbins, ptmin, ptmax); | |
452 | outputContainer->Add(fhDEtaTriggPtT[i]); | |
453 | ||
454 | fhMixDPhiTriggPtT[i] = new TH2F(Form("hMixDPhiTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fT",fptTriggerBegin, fptTriggerEnd, fAssocPtArray[i], fAssocPtArray[i+1]), | |
455 | Form("MixDPhiTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fT",fptTriggerBegin, fptTriggerEnd, fAssocPtArray[i], fAssocPtArray[i+1]),ndphibins,dphimin,dphimax,nptbins, ptmin, ptmax); | |
456 | outputContainer->Add(fhMixDPhiTriggPtT[i]); | |
457 | ||
458 | fhMixDEtaTriggPtT[i] = new TH2F(Form("hMixDEtaTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fT",fptTriggerBegin, fptTriggerEnd, fAssocPtArray[i], fAssocPtArray[i+1]), | |
459 | Form("MixDEtaTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fT",fptTriggerBegin, fptTriggerEnd, fAssocPtArray[i], fAssocPtArray[i+1]), ndetabins,detamin,detamax,nptbins, ptmin, ptmax); | |
460 | outputContainer->Add(fhMixDEtaTriggPtT[i]); | |
461 | } | |
462 | ||
463 | fhDPhiAssocPt15T = new TH2F(Form("hDPhiTriggPtTrigg%1.f_%1.fAssoc1.0_5.0",fptTriggerBegin, fptTriggerEnd), | |
464 | Form("DPhiTriggPtTrigg%1.f_%1.fAssoc1.0_5.0",fptTriggerBegin, fptTriggerEnd),ndphibins,dphimin,dphimax,nptbins, ptmin, ptmax); | |
465 | outputContainer->Add(fhDPhiAssocPt15T); | |
466 | ||
467 | fhDEtaAssocPt15T = new TH2F(Form("hDEtaTriggPtTrigg%1.f_%1.fAssoc1.0_5.0",fptTriggerBegin, fptTriggerEnd), | |
468 | Form("DEtaTriggPtTrigg%1.f_%1.fAssoc1.0_5.0",fptTriggerBegin, fptTriggerEnd),ndetabins,detamin,detamax,nptbins, ptmin, ptmax); | |
469 | outputContainer->Add(fhDEtaAssocPt15T); | |
470 | ||
471 | fhMixDPhiAssocPt15T = new TH2F(Form("hMixDPhiTriggPtTrigg%1.f_%1.fAssoc1.0_5.0",fptTriggerBegin, fptTriggerEnd), | |
472 | Form("MixDPhiTriggPtTrigg%1.f_%1.fAssoc1.0_5.0",fptTriggerBegin, fptTriggerEnd),ndphibins,dphimin,dphimax,nptbins, ptmin, ptmax); | |
473 | outputContainer->Add(fhMixDPhiAssocPt15T); | |
474 | ||
475 | fhMixDEtaAssocPt15T = new TH2F(Form("hMixDEtaTriggPtTrigg%1.f_%1.fAssoc1.0_5.0",fptTriggerBegin, fptTriggerEnd), | |
476 | Form("MixDEtaTriggPtTrigg%1.f_%1.fAssoc1.0_5.0",fptTriggerBegin, fptTriggerEnd),ndetabins,detamin,detamax,nptbins, ptmin, ptmax); | |
477 | outputContainer->Add(fhMixDEtaAssocPt15T); | |
478 | ||
479 | for(Int_t i = 0 ; i < GetNTriggPtBins() ; i++){ | |
480 | for(Int_t j=0; j<GetNAssocPtBins(); j++){ | |
481 | fhDPhiSumPtBin[i][j] = new TH2F(Form("hDPhiSumPtBinTrigg%1.f_%1.fAssoc%1.f_%1.f",fTriggPtArray[i], fTriggPtArray[i+1],fAssocPtArray[j],fAssocPtArray[j+1]), | |
482 | Form("DPhiSumPtBinTrigg%1.f_%1.fAssoc%1.f_%1.f",fTriggPtArray[i], fTriggPtArray[i+1],fAssocPtArray[j],fAssocPtArray[j+1]), ndphibins,dphimin,dphimax,nptbins, ptmin, ptmax); | |
483 | outputContainer->Add(fhDPhiSumPtBin[i][j]); | |
484 | ||
485 | fhDEtaSumPtBin[i][j] = new TH2F(Form("hDEtaSumPtBinTrigg%1.f_%1.fAssoc%1.f_%1.f",fTriggPtArray[i], fTriggPtArray[i+1],fAssocPtArray[j],fAssocPtArray[j+1]), | |
486 | Form("DEtaSumPtBinTrigg%1.f_%1.fAssoc%1.f_%1.f",fTriggPtArray[i], fTriggPtArray[i+1],fAssocPtArray[j],fAssocPtArray[j+1]), ndetabins,detamin,detamax,nptbins, ptmin, ptmax); | |
487 | outputContainer->Add(fhDEtaSumPtBin[i][j]); | |
488 | ||
489 | fhDPhiDEtaBin[i][j] = new TH2F(Form("hDPhiDEtaBinTrigg%1.f_%1.fAssoc%1.f_%1.f",fTriggPtArray[i], fTriggPtArray[i+1],fAssocPtArray[j],fAssocPtArray[j+1]), | |
490 | Form("hDPhiDEtaBinTrigg%1.f_%1.fAssoc%1.f_%1.f",fTriggPtArray[i], fTriggPtArray[i+1], fAssocPtArray[j],fAssocPtArray[j+1]), ndphibins, dphimin, dphimax, ndetabins,detamin,detamax); | |
491 | outputContainer->Add(fhDPhiDEtaBin[i][j]); | |
492 | ||
493 | fhMixDPhiDEtaBin[i][j] = new TH2F(Form("hMixDPhiDEtaBinTrigg%1.f_%1.fAssoc%1.f_%1.f",fTriggPtArray[i], fTriggPtArray[i+1],fAssocPtArray[j],fAssocPtArray[j+1]), | |
494 | Form("hMixDPhiDEtaBinTrigg%1.f_%1.fAssoc%1.f_%1.f",fTriggPtArray[i], fTriggPtArray[i+1],fAssocPtArray[j],fAssocPtArray[j+1]), ndphibins, dphimin, dphimax, ndetabins,detamin,detamax); | |
495 | outputContainer->Add(fhMixDPhiDEtaBin[i][j]); | |
496 | ||
497 | }/////end loop for associated bins | |
498 | } | |
499 | ||
500 | for(Int_t i=0; i<GetNTriggPtBins(); i++){ | |
501 | fhDPhiAssocPtA[i] = new TH2F(Form("hDPhiAssocPtTrigg%1.f_%1.fAssoc%1.f_%1.fA",fTriggPtArray[i], fTriggPtArray[i+1],fptAssociatedBegin, 0.), | |
502 | Form("DPhiAssocPtTrigg%1.f_%1.fAssoc%1.f_%1.fA",fTriggPtArray[i], fTriggPtArray[i+1],fptAssociatedBegin, 0.),ndphibins,dphimin,dphimax,nptbins, ptmin, ptmax); | |
503 | outputContainer->Add(fhDPhiAssocPtA[i]); | |
504 | ||
505 | fhDEtaAssocPtA[i] = new TH2F(Form("hDEtaAssocPtTrigg%1.f_%1.fAssoc%1.f_%1.fA",fTriggPtArray[i], fTriggPtArray[i+1],fptAssociatedBegin, 0.), | |
506 | Form("DEtaAssocPtTrigg%1.f_%1.fAssoc%1.f_%1.fA",fTriggPtArray[i], fTriggPtArray[i+1],fptAssociatedBegin, 0.), ndetabins,detamin,detamax,nptbins, ptmin, ptmax); | |
507 | outputContainer->Add(fhDEtaAssocPtA[i]); | |
508 | ||
509 | fhMixDPhiAssocPtA[i] = new TH2F(Form("hMixDPhiAssocPtTrigg%1.f_%1.fAssoc%1.f_%1.fA",fTriggPtArray[i], fTriggPtArray[i+1],fptAssociatedBegin, 0.), | |
510 | Form("MixDPhiAssocPtTrigg%1.f_%1.fAssoc%1.f_%1.fA",fTriggPtArray[i], fTriggPtArray[i+1],fptAssociatedBegin, 0.),ndphibins,dphimin,dphimax,nptbins, ptmin, ptmax); | |
511 | outputContainer->Add(fhMixDPhiAssocPtA[i]); | |
512 | ||
513 | fhMixDEtaAssocPtA[i] = new TH2F(Form("hMixDEtaAssocPtTrigg%1.f_%1.fAssoc%1.f_%1.fA",fTriggPtArray[i], fTriggPtArray[i+1],fptAssociatedBegin, 0.), | |
514 | Form("MixDEtaAssocPtTrigg%1.f_%1.fAssoc%1.f_%1.fA",fTriggPtArray[i], fTriggPtArray[i+1],fptAssociatedBegin, 0.), ndetabins,detamin,detamax,nptbins, ptmin, ptmax); | |
515 | outputContainer->Add(fhMixDEtaAssocPtA[i]); | |
516 | } | |
517 | ||
518 | /////all | |
519 | fhDPhiTriggPtAssocPt = new TH2F(Form("hDPhiTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), | |
520 | Form("DPhiTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.),ndphibins,dphimin,dphimax,nptbins, ptmin, ptmax); | |
521 | outputContainer->Add(fhDPhiTriggPtAssocPt); | |
522 | ||
523 | fhDEtaTriggPtAssocPt = new TH2F(Form("hDEtaTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), | |
524 | Form("DEtaTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.),ndetabins,detamin,detamax,nptbins, ptmin, ptmax); | |
525 | outputContainer->Add(fhDEtaTriggPtAssocPt); | |
526 | ||
527 | fhAssocPtTriggPt = new TH2F(Form("hAssocPtTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), | |
528 | Form("AssocPtTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), nptbins, ptmin, ptmax,nptbins, ptmin, ptmax); | |
529 | outputContainer->Add(fhAssocPtTriggPt); | |
530 | ||
531 | fhpoutTriggPt = new TH2F(Form("hpoutTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), | |
532 | Form("poutTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), nptbins, ptmin, ptmax,nptbins, ptmin, ptmax); | |
533 | outputContainer->Add(fhpoutTriggPt); | |
534 | ||
535 | fhzTTriggPt = new TH2F(Form("hzTTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), | |
536 | Form("zTTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), nzTbins,zTmin,zTmax,nptbins, ptmin, ptmax); | |
537 | outputContainer->Add(fhzTTriggPt); | |
538 | ||
539 | fhxETriggPt = new TH2F(Form("hxETriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), | |
540 | Form("xETriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), nxEbins,xEmin,xEmax,nptbins, ptmin, ptmax); | |
541 | outputContainer->Add(fhxETriggPt); | |
542 | ||
543 | fhxELogTriggPt = new TH2F(Form("hxELogTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), | |
544 | Form("xELogTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), nxElogbins,xElogmin,xElogmax,nptbins, ptmin, ptmax); | |
545 | outputContainer->Add(fhxELogTriggPt); | |
546 | ||
547 | ////pout at Head Region in Away side | |
548 | fhAssocPtTriggPtHR = new TH2F(Form("hAssocPtTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fHR",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), | |
549 | Form("AssocPtTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fHR",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), nptbins, ptmin, ptmax,nptbins, ptmin, ptmax); | |
550 | outputContainer->Add(fhAssocPtTriggPtHR); | |
551 | ||
552 | fhpoutTriggPtHR = new TH2F(Form("hpoutTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fHR",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), | |
553 | Form("poutTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fHR",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), nptbins, ptmin, ptmax,nptbins, ptmin, ptmax); | |
554 | outputContainer->Add(fhpoutTriggPtHR); | |
555 | ||
556 | fhzTTriggPtHR = new TH2F(Form("hzTTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fHR",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), | |
557 | Form("zTTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fHR",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), nzTbins,zTmin,zTmax,nptbins, ptmin, ptmax); | |
558 | outputContainer->Add(fhzTTriggPtHR); | |
559 | ||
560 | ////xE at Head Region in Away side | |
561 | fhxETriggPtHR = new TH2F(Form("hxETriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fHR",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), | |
562 | Form("xETriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fHR",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), nxEbins,xEmin,xEmax,nptbins, ptmin, ptmax); | |
563 | outputContainer->Add(fhxETriggPtHR); | |
564 | ||
565 | ////-log(xE) at Head Region in away side | |
566 | fhxELogTriggPtHR = new TH2F(Form("hxELogTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fHR",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), | |
567 | Form("xELogTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fHR",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), nxElogbins,xElogmin,xElogmax,nptbins, ptmin, ptmax); | |
568 | outputContainer->Add(fhxELogTriggPtHR); | |
569 | //////underlying observalbes | |
570 | ///////////Ue at Left side | |
571 | fhNUeAssocPtTriggPt = new TH2F(Form("hNUeAssocPtTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), | |
572 | Form("NUeAssocPtTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), nptbins, ptmin, ptmax,nptbins, ptmin, ptmax); | |
573 | outputContainer->Add(fhNUeAssocPtTriggPt); | |
574 | ||
575 | fhNUepoutTriggPt= new TH2F(Form("hNUepoutTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), | |
576 | Form("NUepoutTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), nptbins, ptmin, ptmax,nptbins, ptmin, ptmax); | |
577 | outputContainer->Add(fhNUepoutTriggPt); | |
578 | ||
579 | fhNUezTTriggPt = new TH2F(Form("hNUezTTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), | |
580 | Form("NUezTTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), nzTbins,zTmin,zTmax,nptbins, ptmin, ptmax); | |
581 | outputContainer->Add(fhNUezTTriggPt); | |
582 | ||
583 | fhNUexETriggPt = new TH2F(Form("hNUexETriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), | |
584 | Form("NUexETriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), nxEbins,xEmin,xEmax,nptbins, ptmin, ptmax); | |
585 | outputContainer->Add(fhNUexETriggPt); | |
586 | ||
587 | fhNUexELogTriggPt = new TH2F(Form("hNUexELogTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), | |
588 | Form("NUexELogTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), nxElogbins,xElogmin,xElogmax,nptbins, ptmin, ptmax); | |
589 | outputContainer->Add(fhNUexELogTriggPt); | |
590 | ||
591 | fhNUeDPhiDEta = new TH2F(Form("hNUeDPhiDEta%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), | |
592 | Form("NUeDPhiDEtaTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), ndphibins, dphimin, dphimax, ndetabins,detamin,detamax); | |
593 | outputContainer->Add(fhNUeDPhiDEta); | |
594 | ||
595 | fhAUeAssocPtTriggPt = new TH2F(Form("hAUeAssocPtTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), | |
596 | Form("AUeAssocPtTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), nptbins, ptmin, ptmax,nptbins, ptmin, ptmax); | |
597 | outputContainer->Add(fhAUeAssocPtTriggPt); | |
598 | ||
599 | fhAUepoutTriggPt = new TH2F(Form("hAUepoutTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), | |
600 | Form("AUepoutTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), nptbins, ptmin, ptmax,nptbins, ptmin, ptmax); | |
601 | outputContainer->Add(fhAUepoutTriggPt); | |
602 | ||
603 | fhAUezTTriggPt = new TH2F(Form("hAUezTTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), | |
604 | Form("AUezTTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), nzTbins,zTmin,zTmax,nptbins, ptmin, ptmax); | |
605 | outputContainer->Add(fhAUezTTriggPt); | |
606 | ||
607 | fhAUexETriggPt = new TH2F(Form("hAUexETriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), | |
608 | Form("AUexETriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), nxEbins,xEmin,xEmax,nptbins, ptmin, ptmax); | |
609 | outputContainer->Add(fhAUexETriggPt); | |
610 | ||
611 | fhAUexELogTriggPt = new TH2F(Form("hAUexELogTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), | |
612 | Form("AUexELogTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), nxElogbins,xElogmin,xElogmax,nptbins, ptmin, ptmax); | |
613 | outputContainer->Add(fhAUexELogTriggPt); | |
614 | ||
615 | fhAUeDPhiDEta = new TH2F(Form("hAUeDPhiDEta%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), | |
616 | Form("AUeDPhiDEtaTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), ndphibins, dphimin, dphimax, ndetabins,detamin,detamax); | |
617 | outputContainer->Add(fhAUeDPhiDEta); | |
618 | ||
619 | if(IsDataMC() && (kAnaMCTruthCorr || kAnaMCPrimaryCorr)){ | |
620 | fhMCPtPhiLeading = new TH2F ("hMCPtPhiLeading","p_{T} and #phi distribution of leading particles", nptbins,ptmin,ptmax, nphibins, phimin, phimax); | |
621 | outputContainer->Add(fhMCPtPhiLeading); | |
622 | fhMCPtEtaLeading = new TH2F ("hMCPtEtaLeading","p_{T} and #eta distribution of leading",nptbins,ptmin,ptmax, netabins,etamin,etamax); | |
623 | outputContainer->Add(fhMCPtEtaLeading); | |
624 | ||
625 | for(Int_t i=0; i< GetNAssocPtBins(); i++){ | |
626 | fhMCDPhiTriggPtT[i] = new TH2F(Form("hMCDPhiTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fT",fptTriggerBegin, fptTriggerEnd, fAssocPtArray[i], fAssocPtArray[i+1]), | |
627 | Form("MCDPhiTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fT",fptTriggerBegin, fptTriggerEnd, fAssocPtArray[i], fAssocPtArray[i+1]),ndphibins,dphimin,dphimax,nptbins, ptmin, ptmax); | |
628 | outputContainer->Add(fhMCDPhiTriggPtT[i]); | |
629 | ||
630 | fhMCDEtaTriggPtT[i] = new TH2F(Form("hMCDEtaTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fT",fptTriggerBegin, fptTriggerEnd, fAssocPtArray[i], fAssocPtArray[i+1]), | |
631 | Form("MCDEtaTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fT",fptTriggerBegin, fptTriggerEnd, fAssocPtArray[i], fAssocPtArray[i+1]), ndetabins,detamin,detamax,nptbins, ptmin, ptmax); | |
632 | outputContainer->Add(fhMCDEtaTriggPtT[i]); | |
633 | } | |
634 | ||
635 | for(Int_t i = 0 ; i < GetNTriggPtBins() ; i++){ | |
636 | for(Int_t j=0; j<GetNAssocPtBins(); j++){ | |
637 | fhMCDPhiSumPtBin[i][j] = new TH2F(Form("hMCDPhiSumPtBinTrigg%1.f_%1.fAssoc%1.f_%1.f",fTriggPtArray[i], fTriggPtArray[i+1],fAssocPtArray[j],fAssocPtArray[j+1]), | |
638 | Form("MCDPhiSumPtBinTrigg%1.f_%1.fAssoc%1.f_%1.f",fTriggPtArray[i], fTriggPtArray[i+1],fAssocPtArray[j],fAssocPtArray[j+1]), ndphibins,dphimin,dphimax,nptbins, ptmin, ptmax); | |
639 | outputContainer->Add(fhMCDPhiSumPtBin[i][j]); | |
640 | ||
641 | fhMCDEtaSumPtBin[i][j] = new TH2F(Form("hMCDEtaSumPtBinTrigg%1.f_%1.fAssoc%1.f_%1.f",fTriggPtArray[i], fTriggPtArray[i+1],fAssocPtArray[j],fAssocPtArray[j+1]), | |
642 | Form("MCDEtaSumPtBinTrigg%1.f_%1.fAssoc%1.f_%1.f",fTriggPtArray[i], fTriggPtArray[i+1],fAssocPtArray[j],fAssocPtArray[j+1]), ndetabins,detamin,detamax,nptbins, ptmin, ptmax); | |
643 | outputContainer->Add(fhMCDEtaSumPtBin[i][j]); | |
644 | ||
645 | fhMCDPhiDEtaBin[i][j] = new TH2F(Form("hMCDPhiDEtaBinTrigg%1.f_%1.fAssoc%1.f_%1.f",fTriggPtArray[i], fTriggPtArray[i+1],fAssocPtArray[j],fAssocPtArray[j+1]), | |
646 | Form("hMCDPhiDEtaBinTrigg%1.f_%1.fAssoc%1.f_%1.f",fTriggPtArray[i], fTriggPtArray[i+1], fAssocPtArray[j],fAssocPtArray[j+1]), ndphibins, dphimin, dphimax, ndetabins,detamin,detamax); | |
647 | outputContainer->Add(fhMCDPhiDEtaBin[i][j]); | |
648 | }/////end loop for associated bins | |
649 | } | |
650 | ||
651 | for(Int_t i=0; i<GetNTriggPtBins(); i++){ | |
652 | fhMCDPhiAssocPtA[i] = new TH2F(Form("hMCDPhiAssocPtTrigg%1.f_%1.fAssoc%1.f_%1.fA",fTriggPtArray[i], fTriggPtArray[i+1],fptAssociatedBegin, 0.), | |
653 | Form("MCDPhiAssocPtTrigg%1.f_%1.fAssoc%1.f_%1.fA",fTriggPtArray[i], fTriggPtArray[i+1],fptAssociatedBegin, 0.),ndphibins,dphimin,dphimax,nptbins, ptmin, ptmax); | |
654 | outputContainer->Add(fhMCDPhiAssocPtA[i]); | |
655 | ||
656 | fhMCDEtaAssocPtA[i] = new TH2F(Form("hMCDEtaAssocPtTrigg%1.f_%1.fAssoc%1.f_%1.fA",fTriggPtArray[i], fTriggPtArray[i+1],fptAssociatedBegin, 0.), | |
657 | Form("MCDEtaAssocPtTrigg%1.f_%1.fAssoc%1.f_%1.fA",fTriggPtArray[i], fTriggPtArray[i+1],fptAssociatedBegin, 0.), ndetabins,detamin,detamax,nptbins, ptmin, ptmax); | |
658 | outputContainer->Add(fhMCDEtaAssocPtA[i]); | |
659 | } | |
660 | ||
661 | /////all | |
662 | fhMCDPhiAssocPt15T = new TH2F(Form("hMCDPhiTriggPtTrigg%1.f_%1.fAssoc1.0_5.0",fptTriggerBegin, fptTriggerEnd), | |
663 | Form("MCDPhiTriggPtTrigg%1.f_%1.fAssoc1.0_5.0",fptTriggerBegin, fptTriggerEnd),ndphibins,dphimin,dphimax,nptbins, ptmin, ptmax); | |
664 | outputContainer->Add(fhMCDPhiAssocPt15T); | |
665 | ||
666 | fhMCDEtaAssocPt15T = new TH2F(Form("hMCDEtaTriggPtTrigg%1.f_%1.fAssoc1.0_5.0",fptTriggerBegin, fptTriggerEnd), | |
667 | Form("MCDEtaTriggPtTrigg%1.f_%1.fAssoc1.0_5.0",fptTriggerBegin, fptTriggerEnd),ndetabins,detamin,detamax,nptbins, ptmin, ptmax); | |
668 | outputContainer->Add(fhMCDEtaAssocPt15T); | |
669 | ||
670 | fhMCAssocPtTriggPt = new TH2F(Form("hMCAssocPtTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), | |
671 | Form("MCAssocPtTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), nptbins, ptmin, ptmax,nptbins, ptmin, ptmax); | |
672 | outputContainer->Add(fhMCAssocPtTriggPt); | |
673 | ||
674 | fhMCpoutTriggPt = new TH2F(Form("hMCpoutTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), | |
675 | Form("MCpoutTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), nptbins, ptmin, ptmax,nptbins, ptmin, ptmax); | |
676 | outputContainer->Add(fhMCpoutTriggPt); | |
677 | ||
678 | fhMCzTTriggPt = new TH2F(Form("hMCzTTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), | |
679 | Form("MCzTTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), nzTbins,zTmin,zTmax,nptbins, ptmin, ptmax); | |
680 | outputContainer->Add(fhMCzTTriggPt); | |
681 | ||
682 | fhMCxETriggPt = new TH2F(Form("hMCxETriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), | |
683 | Form("MCxETriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), nxEbins,xEmin,xEmax,nptbins, ptmin, ptmax); | |
684 | outputContainer->Add(fhMCxETriggPt); | |
685 | ||
686 | fhMCxELogTriggPt = new TH2F(Form("hMCxELogTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), | |
687 | Form("MCxELogTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), nxElogbins,xElogmin,xElogmax,nptbins, ptmin, ptmax); | |
688 | outputContainer->Add(fhMCxELogTriggPt); | |
689 | ||
690 | ////pout at Head Region in Away side | |
691 | fhMCAssocPtTriggPtHR = new TH2F(Form("hMCAssocPtTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fHR",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), | |
692 | Form("MCAssocPtTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fHR",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), nptbins, ptmin, ptmax,nptbins, ptmin, ptmax); | |
693 | outputContainer->Add(fhMCAssocPtTriggPtHR); | |
694 | ||
695 | fhMCpoutTriggPtHR = new TH2F(Form("hMCpoutTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fHR",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), | |
696 | Form("MCpoutTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fHR",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), nptbins, ptmin, ptmax,nptbins, ptmin, ptmax); | |
697 | outputContainer->Add(fhMCpoutTriggPtHR); | |
698 | ||
699 | fhMCzTTriggPtHR = new TH2F(Form("hMCzTTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fHR",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), | |
700 | Form("MCzTTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fHR",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), nzTbins,zTmin,zTmax,nptbins, ptmin, ptmax); | |
701 | outputContainer->Add(fhMCzTTriggPtHR); | |
702 | ||
703 | ////xE at Head Region in Away side | |
704 | fhMCxETriggPtHR = new TH2F(Form("hMCxETriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fHR",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), | |
705 | Form("MCxETriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fHR",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), nxEbins,xEmin,xEmax,nptbins, ptmin, ptmax); | |
706 | outputContainer->Add(fhMCxETriggPtHR); | |
707 | ||
708 | ////-log(xE) at Head Region in away side | |
709 | fhMCxELogTriggPtHR = new TH2F(Form("hMCxELogTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fHR",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), | |
710 | Form("MCxELogTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fHR",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), nxElogbins,xElogmin,xElogmax,nptbins, ptmin, ptmax); | |
711 | outputContainer->Add(fhMCxELogTriggPtHR); | |
712 | ||
713 | //////underlying observalbes | |
714 | ///////////Ue at Left side | |
715 | fhMCNUeAssocPtTriggPt = new TH2F(Form("hMCNUeAssocPtTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), | |
716 | Form("MCNUeAssocPtTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), nptbins, ptmin, ptmax,nptbins, ptmin, ptmax); | |
717 | outputContainer->Add(fhMCNUeAssocPtTriggPt); | |
718 | ||
719 | fhMCNUepoutTriggPt= new TH2F(Form("hMCNUepoutTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), | |
720 | Form("MCNUepoutTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), nptbins, ptmin, ptmax,nptbins, ptmin, ptmax); | |
721 | outputContainer->Add(fhMCNUepoutTriggPt); | |
722 | ||
723 | fhMCNUezTTriggPt = new TH2F(Form("hMCNUezTTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), | |
724 | Form("MCNUezTTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), nzTbins,zTmin,zTmax,nptbins, ptmin, ptmax); | |
725 | outputContainer->Add(fhMCNUezTTriggPt); | |
726 | ||
727 | fhMCNUexETriggPt = new TH2F(Form("hMCNUexETriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), | |
728 | Form("MCNUexETriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), nxEbins,xEmin,xEmax,nptbins, ptmin, ptmax); | |
729 | outputContainer->Add(fhMCNUexETriggPt); | |
730 | ||
731 | fhMCNUexELogTriggPt = new TH2F(Form("hMCNUexELogTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), | |
732 | Form("MCNUexELogTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), nxElogbins,xElogmin,xElogmax,nptbins, ptmin, ptmax); | |
733 | outputContainer->Add(fhMCNUexELogTriggPt); | |
734 | ||
735 | fhMCAUeAssocPtTriggPt = new TH2F(Form("hMCAUeAssocPtTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), | |
736 | Form("MCAUeAssocPtTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), nptbins, ptmin, ptmax,nptbins, ptmin, ptmax); | |
737 | outputContainer->Add(fhMCAUeAssocPtTriggPt); | |
738 | ||
739 | fhMCAUepoutTriggPt = new TH2F(Form("hMCAUepoutTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), | |
740 | Form("MCAUepoutTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), nptbins, ptmin, ptmax,nptbins, ptmin, ptmax); | |
741 | outputContainer->Add(fhMCAUepoutTriggPt); | |
742 | ||
743 | fhMCAUezTTriggPt = new TH2F(Form("hMCAUezTTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), | |
744 | Form("MCAUezTTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), nzTbins,zTmin,zTmax,nptbins, ptmin, ptmax); | |
745 | outputContainer->Add(fhMCAUezTTriggPt); | |
746 | ||
747 | fhMCAUexETriggPt = new TH2F(Form("hMCAUexETriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), | |
748 | Form("MCAUexETriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), nxEbins,xEmin,xEmax,nptbins, ptmin, ptmax); | |
749 | outputContainer->Add(fhMCAUexETriggPt); | |
750 | ||
751 | fhMCAUexELogTriggPt = new TH2F(Form("hMCAUexELogTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), | |
752 | Form("MCAUexELogTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), nxElogbins,xElogmin,xElogmax,nptbins, ptmin, ptmax); | |
753 | outputContainer->Add(fhMCAUexELogTriggPt); | |
754 | ||
755 | } | |
756 | ||
757 | ||
758 | PostData(1,outputContainer); | |
759 | ||
760 | } | |
761 | ||
762 | //________________________________________________________________________ | |
763 | void AliAnalysisTaskEMCALCaloTrackCorr::UserExec(Option_t *) | |
764 | { | |
765 | // Execute analysis for current event | |
766 | fManager = AliAnalysisManager::GetAnalysisManager(); | |
767 | fInputHandler = dynamic_cast<AliInputEventHandler*>(fManager->GetInputEventHandler()); | |
768 | ||
95232e5a | 769 | if(!fInputHandler) return; |
364c8fcb | 770 | |
95232e5a | 771 | if(!FillInputEvent()) return; //select good event |
364c8fcb | 772 | |
773 | fEventPlane = (dynamic_cast<AliVEvent*>(InputEvent()))->GetEventplane(); | |
774 | ||
775 | UInt_t isSelectedReal = 0; | |
776 | if(!kEventTriggerAtSE) isSelectedReal = fInputHandler->IsEventSelected() & fEventTriggerMaks; | |
777 | ||
778 | const AliVVertex *fEventVertex = fEvent->GetPrimaryVertex(); | |
779 | Double_t vtx[3]; | |
780 | vtx[0] = fEventVertex->GetX(); | |
781 | vtx[1] = fEventVertex->GetY(); | |
782 | vtx[2] = fEventVertex->GetZ(); | |
783 | ||
784 | if(AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()){ | |
785 | fMCEvent = MCEvent(); | |
786 | fStack = fMCEvent->Stack(); | |
787 | } | |
788 | ||
789 | fnEvents++; | |
790 | ||
791 | if(fPhotonEvent) | |
792 | fPhotonEvent->Clear(); | |
793 | else | |
9c1fcdc6 | 794 | fPhotonEvent = new TClonesArray("AliCaloTrackParticle", InputEvent()->GetNumberOfCaloClusters()); |
364c8fcb | 795 | nPhotonsEMCAL=0; |
796 | if(fPhotonPairEvent) | |
797 | fPhotonPairEvent->Clear(); | |
798 | else | |
9c1fcdc6 | 799 | fPhotonPairEvent = new TClonesArray("AliCaloTrackParticle", InputEvent()->GetNumberOfCaloClusters()); |
364c8fcb | 800 | |
801 | if(fCTSEvent) | |
802 | fCTSEvent->Clear(); | |
803 | else | |
9c1fcdc6 | 804 | fCTSEvent = new TClonesArray("AliCaloTrackParticle", InputEvent()->GetNumberOfTracks()); |
364c8fcb | 805 | nTracksCTS = 0; |
806 | ||
807 | if(kEventTriggerAtSE){ | |
808 | FillInputTrack(); | |
809 | FillInputPhoton(); | |
810 | if(kDoMesonFill)FillInputMeson(); | |
811 | } | |
812 | else { | |
813 | FillInputTrack(); | |
814 | if(isSelectedReal){ | |
815 | FillInputPhoton(); | |
816 | if(kDoMesonFill)FillInputMeson(); | |
817 | } | |
818 | } | |
819 | if(nTracksCTS==0) return; | |
820 | ||
821 | ||
822 | UInt_t isSelectedMix = 0; | |
823 | isSelectedMix =((fInputHandler->IsEventSelected() & AliVEvent::kAnyINT) || | |
824 | (fInputHandler->IsEventSelected() & AliVEvent::kMB) || | |
825 | (fInputHandler->IsEventSelected() & AliVEvent::kCentral) || | |
826 | (fInputHandler->IsEventSelected() & AliVEvent::kSemiCentral)); | |
827 | ||
828 | Double_t vtx5[3] ={ fEvent->GetPrimaryVertex()->GetX(), | |
829 | fEvent->GetPrimaryVertex()->GetY(), | |
830 | fEvent->GetPrimaryVertex()->GetZ() | |
831 | }; | |
832 | Int_t zvtx = -999; | |
833 | Int_t centr = -999; | |
834 | Int_t replane = -999; | |
835 | Int_t nTracks = fCTSEvent->GetEntriesFast(); | |
836 | ||
837 | if(vtx5[2]>=-10. && vtx5[2]<-8) | |
838 | zvtx=0; | |
839 | else if(vtx5[2]>=-8. && vtx5[2]<-6) | |
840 | zvtx=1; | |
841 | else if(vtx5[2]>=-6. && vtx5[2]<-4) | |
842 | zvtx=2; | |
843 | else if(vtx5[2]>=-4. && vtx5[2]<-2) | |
844 | zvtx=3; | |
845 | else if(vtx5[2]>=-2. && vtx5[2]<-0) | |
846 | zvtx=4; | |
847 | else if(vtx5[2]>=0. && vtx5[2]<=2) | |
848 | zvtx=5; | |
849 | else if(vtx5[2]>2. && vtx5[2]<=4) | |
850 | zvtx=6; | |
851 | else if(vtx5[2]>4. && vtx5[2]<=6) | |
852 | zvtx=7; | |
853 | else if(vtx5[2]>6. && vtx5[2]<=8) | |
854 | zvtx=8; | |
855 | else if(vtx5[2]>8. && vtx5[2]<=10) | |
856 | zvtx=9; | |
857 | ||
858 | if(kDoTrackMultBins){ // for pp analysis | |
859 | if(nTracks<=5) | |
860 | centr=8; | |
861 | else if(nTracks<=10) | |
862 | centr=7; | |
863 | else if(nTracks<=15) | |
864 | centr=6; | |
865 | else if(nTracks<=20) | |
866 | centr=5; | |
867 | else if(nTracks<=30) | |
868 | centr=4; | |
869 | else if(nTracks<=40) | |
870 | centr=3; | |
871 | else if(nTracks<=55) | |
872 | centr=2; | |
873 | else if(nTracks<=70) | |
874 | centr=1; | |
875 | else centr=0; | |
876 | ||
877 | replane = 0; | |
878 | } | |
879 | else{///for PbPb | |
44e6df08 | 880 | Float_t fCentralityPerBin = (fCentralityBinMax -fCentralityBinMin)/fNCentralityBins; |
364c8fcb | 881 | Float_t fcentrality = 0; |
882 | ||
883 | if(fDataType == "ESD")fCentrality->GetCentralityPercentile(fCentralityClass); | |
884 | else if(fDataType == "AOD") fcentrality = ((AliAODHeader*)fEvent->GetHeader())->GetCentrality(); | |
885 | else fcentrality =0; | |
886 | ||
887 | if(fcentrality <=(fCentralityBinMin+1*fCentralityPerBin)) | |
888 | centr=9; | |
889 | else if(fcentrality <=(fCentralityBinMin+2*fCentralityPerBin)) | |
890 | centr=8; | |
891 | else if(fcentrality <=(fCentralityBinMin+3*fCentralityPerBin)) | |
892 | centr=7; | |
893 | else if(fcentrality <=(fCentralityBinMin+4*fCentralityPerBin)) | |
894 | centr=6; | |
895 | else if(fcentrality <=(fCentralityBinMin+5*fCentralityPerBin)) | |
896 | centr=5; | |
897 | else if(fcentrality <=(fCentralityBinMin+6*fCentralityPerBin)) | |
898 | centr=4; | |
899 | else if(fcentrality <=(fCentralityBinMin+7*fCentralityPerBin)) | |
900 | centr=3; | |
901 | else if(fcentrality <=(fCentralityBinMin+8*fCentralityPerBin)) | |
902 | centr=2; | |
903 | else if(fcentrality <=(fCentralityBinMin+9*fCentralityPerBin)) | |
904 | centr=1; | |
905 | else if(fcentrality <=(fCentralityBinMin+10*fCentralityPerBin)) | |
906 | centr=0; | |
907 | ||
908 | if(fEventPlane){ | |
909 | Float_t feventplane = fEventPlane->GetEventplane(fEventPlaneMethod); | |
910 | if(feventplane<0)feventplane+=TMath::Pi(); | |
911 | if(feventplane>TMath::Pi())feventplane-=TMath::Pi(); | |
912 | ||
44e6df08 | 913 | replane = Int_t((fNEventPlaneBins*feventplane)/TMath::Pi()); |
914 | if(replane>(fNEventPlaneBins -1)) replane = fNEventPlaneBins -1; | |
364c8fcb | 915 | } |
916 | else{ | |
917 | replane = 0; | |
918 | } | |
919 | } | |
920 | ||
921 | if(!fListMixEvents[zvtx][centr][replane]) fListMixEvents[zvtx][centr][replane]=new TList() ; | |
922 | TList *pool = fListMixEvents[zvtx][centr][replane]; | |
923 | ||
924 | TClonesArray *fAnaAODParticle = new TClonesArray(); | |
925 | if(kDoPhotonCorrAna && !kDoMesonCorrAna){ | |
926 | fAnaAODParticle = fPhotonEvent; | |
927 | } | |
928 | if(kDoMesonCorrAna && !kDoPhotonCorrAna){ | |
929 | fAnaAODParticle = fPhotonPairEvent; | |
930 | } | |
931 | ||
932 | Int_t naod = fAnaAODParticle->GetEntriesFast(); | |
933 | for(Int_t iaod=0; iaod<naod; iaod++){ | |
9c1fcdc6 | 934 | AliCaloTrackParticle *aodParticle=(AliCaloTrackParticle*)fAnaAODParticle->At(iaod); |
364c8fcb | 935 | if(!aodParticle) continue; |
936 | if(kDoIsolatedAna) { | |
937 | if(aodParticle->IsIsolated()) | |
938 | printf("Inclusive correlation Isolated pt=%f, id=%d\n",aodParticle->Pt(),iaod); | |
939 | if(GetAnaTypeInIsolated() == "Iso" && !aodParticle->IsIsolated()) continue; | |
940 | if(GetAnaTypeInIsolated() == "NoIso" && aodParticle->IsIsolated())continue; | |
941 | } | |
942 | ||
943 | if(kMakeAbsoluteLeading || kMakeNearSideLeading){ | |
944 | if(!aodParticle->IsLeading())continue; | |
945 | } | |
946 | ||
947 | Double_t ptTrigg0 = aodParticle->Pt(); | |
948 | Double_t phiTrigg0 = aodParticle->Phi(); | |
949 | if(phiTrigg0<0.) phiTrigg0+=TMath::TwoPi(); | |
950 | Double_t etaTrigg0 = aodParticle->Eta(); | |
951 | ||
952 | if(MakeChargedCorrelation(iaod, ptTrigg0, phiTrigg0, etaTrigg0)){ | |
953 | if(kDoMixEventsAna) MakeChargedMixCorrelation(ptTrigg0, phiTrigg0, etaTrigg0, pool); | |
954 | } | |
955 | ||
956 | aodParticle = 0; | |
364c8fcb | 957 | |
958 | } | |
959 | ||
960 | if(isSelectedMix && kDoMixEventsAna){ | |
961 | if(fCTSEvent->GetEntriesFast()>0){ | |
962 | pool->AddFirst(fCTSEvent); | |
963 | fCTSEvent=0; | |
964 | if(pool->GetSize()>nMixedEvents){//Remove redundant events | |
965 | TClonesArray * tmp = static_cast<TClonesArray*>(pool->Last()) ; | |
966 | pool->RemoveLast() ; | |
967 | delete tmp ; | |
968 | } | |
969 | } | |
970 | ||
971 | } | |
972 | ||
973 | PostData(1, outputContainer); | |
974 | fEventAnalyized++; | |
975 | ||
976 | } | |
977 | ||
978 | //============================================= | |
979 | void AliAnalysisTaskEMCALCaloTrackCorr::InitParameters() | |
980 | { | |
981 | fHistoPtBins = 300 ; fHistoPtMax = 60 ; fHistoPtMin = 0. ; | |
982 | fHistoPhiBins = 360 ; fHistoPhiMax = TMath::TwoPi(); fHistoPhiMin = 0. ; | |
983 | fHistoEtaBins = 180 ; fHistoEtaMax = 0.9; fHistoEtaMin = -0.9; | |
984 | ||
985 | fSetConeR = 0.4 ; | |
986 | fSetPtThreshold = 0.5 ; | |
987 | fSetSumPtThreshold = 0.5 ; | |
988 | fSetPtFraction = 0.1 ; | |
989 | fParticlesInCone = kIsolatedNeutralAndCharged; | |
990 | fICMethod = kSumPtFracationIC ; | |
991 | ||
992 | fCentralityClass = "V0M"; | |
993 | fCentralityBinMin = fCentralityBinMax=-1; | |
994 | fEventPlaneMethod = "Q"; | |
44e6df08 | 995 | fEventTriggerMaks = AliVEvent::kAny; |
996 | fNCentralityBins = 5; | |
997 | fNEventPlaneBins = 5; | |
364c8fcb | 998 | |
999 | kMC = kFALSE ; | |
1000 | kDoMixEventsAna = kTRUE ; | |
1001 | kDoPhotonCorrAna = kTRUE ; | |
1002 | kDoAsymmetryCut = kTRUE ; | |
1003 | kDoSelectHybridTracks = kFALSE; | |
1004 | kDoMesonFill = kTRUE ; | |
1005 | kNeutralMesonHistos = kTRUE ; | |
1006 | kDoMesonCorrAna = kFALSE ; | |
1007 | kDoIsolatedAna = kFALSE ; | |
1008 | kDoTrackMultBins = kTRUE ; | |
1009 | kUELeftRight = kFALSE ; | |
1010 | kUENearAway = kTRUE ; | |
1011 | kDecayPhotonCorr = kFALSE ; | |
1012 | kAnaMCTruthCorr = kTRUE ; | |
1013 | kAnaMCPrimaryCorr = kFALSE ; | |
1014 | kAnaPi0Prim = kFALSE ; | |
1015 | kAnaEtaPrim = kFALSE ; | |
1016 | kAnaPhotonPrim = kFALSE ; | |
1017 | kMakeAbsoluteLeading = kFALSE ; | |
1018 | kMakeNearSideLeading = kFALSE ; | |
1019 | kTwoTracksCorr = kFALSE ; | |
1020 | kPhotonInAcceptance = kTRUE; | |
1021 | kAnaDecayMapping = kTRUE ; | |
1022 | //fCheckFidCut = kTRUE ; | |
1023 | kEventTriggerAtSE = kTRUE ; | |
1024 | kPhotonPairTimeCut = kFALSE ; | |
1025 | kDoPhotonIDCut = kTRUE; | |
1026 | ||
1027 | fMinNCells = 1 ; | |
1028 | fMinE = 0.5; | |
44e6df08 | 1029 | fMinDistBad = 2. ; |
364c8fcb | 1030 | |
1031 | fL0CutMin = 0.1; | |
1032 | fL0CutMax = 0.27; | |
1033 | fTimeCutMin = -1000; | |
1034 | fTimeCutMax = 1000; | |
1035 | fPhotonPairTimeCut = 100; | |
1036 | fEMCALDPhiCut = 0.03; | |
1037 | fEMCALDEtaCut = 0.025; | |
1038 | fZVertexCut = 10.; | |
1039 | ||
1040 | fDebug = -1 ; | |
1041 | fAnaMesonType = "Pi0"; | |
1042 | fAsymmetryCut = 0.7; | |
1043 | fDataType = "ESD" ; | |
1044 | fTrackFilterMask = 128; | |
1045 | ||
1046 | ||
1047 | fAnaTypeInIsolated = "Iso"; | |
1048 | nMixedEvents = 200; | |
1049 | fptTriggerBegin = 5.; | |
1050 | fptTriggerEnd = 25.; | |
1051 | fptAssociatedBegin = 1.; | |
1052 | ||
1053 | fDeltaPhiMinCut = TMath::Pi()/2.; | |
1054 | fDeltaPhiMaxCut = 3*TMath::Pi()/2.; | |
1055 | fDeltaPhiHRSize = TMath::Pi()/5.; | |
1056 | fUeDeltaPhiSize = 0.2; | |
1057 | fUeDeltaPhiFix = 1.3; | |
1058 | ||
1059 | fESDtrackCuts = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts(); | |
1060 | ||
1061 | } | |
1062 | //===================================== | |
1063 | Bool_t AliAnalysisTaskEMCALCaloTrackCorr::FillInputEvent() | |
1064 | { | |
1065 | Float_t fcentrality = 0; | |
1066 | ||
1067 | if(GetDataType() == "ESD"){ | |
1068 | fEvent=dynamic_cast<AliESDEvent*>(InputEvent()); | |
1069 | if(!fEvent) { | |
1070 | Printf("ERROR: Could not retrieve event"); | |
1071 | return kFALSE; | |
1072 | } | |
1073 | ||
95232e5a | 1074 | AliESDEvent * fESDEvent = dynamic_cast<AliESDEvent*> (InputEvent()); |
1075 | if(!fESDEvent) return kFALSE; | |
1076 | if(fESDEvent->GetPrimaryVertexTracks()->GetNContributors() <= 0){ | |
364c8fcb | 1077 | return kFALSE; |
1078 | } | |
1079 | ||
95232e5a | 1080 | if(!IsDataMC()){; |
1081 | if((TMath::Abs(fEvent->GetPrimaryVertex()->GetX()) < 1.e-6) && | |
364c8fcb | 1082 | (TMath::Abs(fEvent->GetPrimaryVertex()->GetY()) < 1.e-6) && |
1083 | (TMath::Abs(fEvent->GetPrimaryVertex()->GetZ()) < 1.e-6)) | |
1084 | return kFALSE; | |
95232e5a | 1085 | } |
364c8fcb | 1086 | |
1087 | fCentrality = fEvent->GetCentrality(); | |
1088 | if(fCentrality) | |
1089 | fcentrality=fCentrality->GetCentralityPercentile(fCentralityClass); | |
1090 | ||
1091 | if((fcentrality < fCentralityBinMin) || (fcentrality>fCentralityBinMax)) return kFALSE; | |
1092 | ||
1093 | } | |
1094 | else if(GetDataType() == "AOD"){ | |
1095 | fEvent=dynamic_cast<AliAODEvent*>(InputEvent()); | |
1096 | if(!fEvent) { | |
1097 | Printf("ERROR: Could not retrieve event"); | |
1098 | return kFALSE; | |
364c8fcb | 1099 | } |
44e6df08 | 1100 | |
1101 | fcentrality = ((AliAODHeader*)fEvent->GetHeader())->GetCentrality(); | |
1102 | if((fcentrality < fCentralityBinMin) || (fcentrality>fCentralityBinMax)) return kFALSE; | |
1103 | ||
364c8fcb | 1104 | } |
1105 | else return kFALSE; | |
1106 | ||
1107 | if(TMath::Abs(fEvent->GetPrimaryVertex()->GetZ())>=fZVertexCut) { | |
1108 | return kFALSE; ///cut for primary vertex | |
1109 | } | |
1110 | ||
1111 | return kTRUE; | |
1112 | ||
1113 | } | |
1114 | ||
1115 | //====================================== | |
1116 | void AliAnalysisTaskEMCALCaloTrackCorr::FillInputTrack() | |
1117 | { | |
1118 | //select good track! | |
1119 | ||
1120 | for(Int_t itrack=0; itrack<fEvent->GetNumberOfTracks(); itrack++){ | |
1121 | AliVTrack* track = (AliVTrack*)fEvent->GetTrack(itrack); | |
1122 | ||
1123 | if(GetDataType() == "ESD"){ | |
1124 | AliESDtrack* esdTrack = dynamic_cast<AliESDtrack*>(track); | |
1125 | if(!esdTrack) { | |
1126 | AliError(Form("Couldn't get ESD track %d\n", itrack)); | |
1127 | continue; | |
1128 | } | |
1129 | ||
1130 | Bool_t trkOK = fESDtrackCuts->AcceptTrack(esdTrack); | |
1131 | if (!trkOK) continue; | |
1132 | ||
1133 | } | |
1134 | else if(GetDataType() == "AOD"){ | |
1135 | AliAODTrack *aodTrack = dynamic_cast <AliAODTrack*>(track); | |
1136 | if(!aodTrack) { | |
1137 | AliError(Form("Couldn't get AOD track %d\n", itrack)); | |
1138 | continue; | |
1139 | } | |
1140 | ||
1141 | if(kDoSelectHybridTracks){ | |
1142 | if(!aodTrack->IsHybridGlobalConstrainedGlobal()) continue; | |
1143 | } | |
1144 | else{ | |
1145 | if(aodTrack->TestFilterBit(fTrackFilterMask)==kFALSE) continue; | |
1146 | } | |
1147 | ||
1148 | if(aodTrack->GetType()!= AliAODTrack::kPrimary) continue; | |
1149 | ||
1150 | ||
1151 | } | |
1152 | ||
9c1fcdc6 | 1153 | new((*fCTSEvent)[nTracksCTS])AliCaloTrackParticle(track->Px(),track->Py(),track->Pz(),0); |
1154 | AliCaloTrackParticle * tr = (AliCaloTrackParticle*)fCTSEvent->At(nTracksCTS); | |
364c8fcb | 1155 | tr->SetChargedSign(track->Charge()); |
1156 | nTracksCTS++; | |
1157 | ||
1158 | }///end loop for tracks | |
1159 | ||
1160 | if(nTracksCTS==0) return; | |
1161 | ||
1162 | fhNtracksAll->Fill(nTracksCTS); | |
1163 | ||
1164 | if(fInputHandler->IsEventSelected( ) & AliVEvent::kAnyINT){ | |
1165 | fhNtracksAnyINT->Fill(nTracksCTS); | |
1166 | } | |
1167 | else if(fInputHandler->IsEventSelected( ) & AliVEvent::kCentral){ | |
1168 | fhNtracksCentral->Fill(nTracksCTS); | |
1169 | } | |
1170 | else if(fInputHandler->IsEventSelected( ) & AliVEvent::kSemiCentral){ | |
1171 | fhNtracksSemiCentral->Fill(nTracksCTS); | |
1172 | } | |
1173 | else if(fInputHandler->IsEventSelected( ) & AliVEvent::kEMC7){ | |
1174 | fhNtracksEMC7->Fill(nTracksCTS); | |
1175 | } | |
1176 | else{ | |
1177 | fhNtracksOtherTirgger->Fill(nTracksCTS); | |
1178 | } | |
1179 | ||
1180 | } | |
1181 | ||
1182 | //========================================= | |
1183 | void AliAnalysisTaskEMCALCaloTrackCorr::FillInputPhoton() | |
1184 | { | |
1185 | Int_t nClusters = 0; | |
1186 | Double_t tmpPt = 0; | |
1187 | Int_t tmpId = -1; | |
1188 | ||
1189 | nClusters=fEvent->GetNumberOfCaloClusters(); | |
1190 | if(nClusters==0) return; | |
1191 | ||
1192 | for (Int_t j=0; j<nClusters; j++) { | |
1193 | AliVCluster *clusEMCAL = fEvent->GetCaloCluster(j); | |
1194 | AliVCaloCells *cellEMCAL = fEvent->GetEMCALCells(); | |
1195 | if(!clusEMCAL->IsEMCAL()) continue; | |
1196 | if(clusEMCAL->E() < fMinE) continue; | |
1197 | if(clusEMCAL->GetNCells() < fMinNCells) continue; | |
1198 | if(clusEMCAL->GetDistanceToBadChannel() < fMinDistBad) continue; | |
1199 | if(!fEMCALRecU->IsGoodCluster(clusEMCAL, fEMCALGeom, cellEMCAL)) continue; | |
1200 | ||
1201 | TLorentzVector ph; | |
1202 | Double_t vtx[3]; | |
1203 | clusEMCAL ->GetMomentum(ph, vtx); | |
1204 | Int_t cellAbsId=-1; | |
1205 | fEMCALGeom->GetAbsCellIdFromEtaPhi(ph.Eta(), ph.Phi(), cellAbsId); | |
1206 | Int_t iSM=-1, iTower=-1, Iphi=-1, Ieta=-1; | |
1207 | fEMCALGeom->GetCellIndex(cellAbsId, iSM, iTower, Iphi, Ieta); | |
1208 | Int_t iPhi=-1, iEta=-1; | |
1209 | fEMCALGeom->GetCellPhiEtaIndexInSModule(iSM, iTower, Iphi, Ieta, iPhi, iEta); | |
1210 | ||
1211 | if(ph.Pt()>tmpPt){ | |
1212 | tmpPt = ph.Pt(); | |
1213 | tmpId = clusEMCAL->GetID(); | |
1214 | } | |
1215 | ||
9c1fcdc6 | 1216 | ////put selected clusters into AOD (AliCaloTrackParticle) |
1217 | new((*fPhotonEvent)[nPhotonsEMCAL])AliCaloTrackParticle(ph.Px(), ph.Py(), ph.Pz(), ph.E()); | |
1218 | AliCaloTrackParticle * phcluster = (AliCaloTrackParticle*)fPhotonEvent->At(nPhotonsEMCAL); | |
364c8fcb | 1219 | phcluster->SetModule(iSM); |
1220 | phcluster->SetNCells(clusEMCAL->GetNCells()); | |
1221 | phcluster->SetLambdas(clusEMCAL->GetM02(),clusEMCAL->GetM20()); | |
1222 | phcluster->SetDistBad(clusEMCAL->GetDistanceToBadChannel()); | |
1223 | phcluster->SetTOF(clusEMCAL->GetTOF()*1e9); | |
1224 | phcluster->SetClusterID(clusEMCAL->GetID()); | |
1225 | phcluster->SetAODClusterID(nPhotonsEMCAL); | |
1226 | phcluster->SetSSABit(kFALSE); | |
1227 | phcluster->SetTOFBit(kFALSE); | |
1228 | phcluster->SetTrackMatchedBit(kFALSE); | |
1229 | ||
1230 | Double_t tof = clusEMCAL->GetTOF()*1e9; | |
1231 | if(tof >= fTimeCutMin && tof <= fTimeCutMax) | |
1232 | phcluster->SetTOFBit(kTRUE); | |
1233 | ||
1234 | if(clusEMCAL->GetM02() > fL0CutMin && clusEMCAL->GetM02() < fL0CutMax) | |
1235 | phcluster->SetSSABit(kTRUE); | |
1236 | ||
1237 | Int_t nMatches = clusEMCAL->GetNTracksMatched(); | |
1238 | if(nMatches>0){ | |
1239 | Float_t dZ = 2000.; | |
1240 | Float_t dR = 2000.; | |
1241 | fEMCALRecU->GetMatchedResiduals(clusEMCAL->GetID(), dZ, dR); | |
1242 | if(TMath::Abs(dR) < fEMCALDPhiCut && TMath::Abs(dZ) < fEMCALDEtaCut){ | |
1243 | phcluster->SetTrackMatchedBit(kTRUE); | |
1244 | } | |
1245 | } | |
1246 | ||
1247 | nPhotonsEMCAL++; | |
1248 | ||
1249 | }///end loop for clusters | |
1250 | ||
1251 | for(Int_t j=0; j< nPhotonsEMCAL; j++){ | |
9c1fcdc6 | 1252 | AliCaloTrackParticle * phCan=(AliCaloTrackParticle*)fPhotonEvent->At(j); |
364c8fcb | 1253 | Double_t phPt = phCan->Pt(); |
1254 | Double_t phPhi = phCan->Phi(); | |
1255 | if(phPhi<0) phPhi+=TMath::TwoPi(); | |
1256 | Double_t phEta = phCan->Eta(); | |
1257 | ||
1258 | phCan->SetIsLeading(kFALSE); | |
1259 | if(tmpId == phCan->GetClusterID()) | |
1260 | phCan->SetIsLeading(kTRUE); | |
1261 | ||
1262 | phCan->SetIsolated(kFALSE); | |
1263 | phCan->SetIsolated(IsolatedPhoton(fPhotonEvent, fCTSEvent, j, phPt, phPhi, phEta)); | |
1264 | ||
1265 | if(kDoPhotonIDCut && !phCan->IsPIDOK(8)) continue; | |
1266 | ||
1267 | fhPhotonE->Fill(phCan->E()); | |
1268 | fhPhotonPtPhi->Fill(phCan->Pt(), phCan->Phi()); | |
1269 | fhPhotonPtEta->Fill(phCan->Pt(), phCan->Eta()); | |
1270 | fhPhotonPhiEta->Fill(phCan->Phi(), phCan->Eta()); | |
1271 | ||
1272 | } | |
1273 | ||
1274 | ||
1275 | } | |
1276 | ||
1277 | //=================================== | |
1278 | void AliAnalysisTaskEMCALCaloTrackCorr::FillInputMeson() | |
1279 | { ////do pi0 and eta meson tag | |
1280 | TLorentzVector ph12; | |
1281 | Int_t nPhotonPairEMCAL = 0; | |
1282 | ||
1283 | for (Int_t i=0; i<nPhotonsEMCAL-1; i++) { | |
9c1fcdc6 | 1284 | AliCaloTrackParticle * ph1=(AliCaloTrackParticle*)fPhotonEvent->At(i); |
364c8fcb | 1285 | if(kDoPhotonIDCut && !ph1->IsPIDOK(8)) continue; |
1286 | for (Int_t j=i+1; j<nPhotonsEMCAL; j++) { | |
9c1fcdc6 | 1287 | AliCaloTrackParticle * ph2=(AliCaloTrackParticle*)fPhotonEvent->At(j); |
364c8fcb | 1288 | if(kDoPhotonIDCut && !ph2->IsPIDOK(8)) continue; |
1289 | ph12 = *ph1 + *ph2; | |
1290 | Double_t phi=ph12.Phi(); | |
1291 | if(phi < 0) phi+=TMath::TwoPi(); | |
1292 | Float_t angle = ph1->Angle(ph2->Vect()); | |
1293 | Float_t asy = TMath::Abs((ph1->Energy()-ph2->Energy())/(ph1->Energy()+ph2->Energy())); | |
1294 | Double_t deltaTime = TMath::Abs(ph1->GetTOF()-ph2->GetTOF()); | |
1295 | Int_t deltaModule = TMath::Abs(ph1->GetModule()-ph2->GetModule()); | |
1296 | ||
9c1fcdc6 | 1297 | new((*fPhotonPairEvent)[nPhotonPairEMCAL])AliCaloTrackParticle(ph12.Px(), ph12.Py(), ph12.Pz(), ph12.E()); |
1298 | AliCaloTrackParticle * phPair = (AliCaloTrackParticle*)fPhotonPairEvent->At(nPhotonPairEMCAL); | |
364c8fcb | 1299 | phPair->SetPhotonPairAsy(asy); |
1300 | phPair->SetPhotonPairAngle(angle); | |
1301 | phPair->SetPhotonPairDTime(deltaTime); | |
1302 | phPair->SetPhotonPairDModule(deltaModule); | |
1303 | phPair->SetPhotonPairID(ph1->GetClusterID(), ph2->GetClusterID()); | |
1304 | phPair->SetAODPhotonPairID(ph1->GetAODClusterID(), ph2->GetAODClusterID()); | |
1305 | nPhotonPairEMCAL++; | |
1306 | }//ph2 | |
1307 | }//ph1 | |
1308 | ||
1309 | Double_t tmpMesonPt = 0; | |
1310 | Int_t tmpMesonID = -1; | |
1311 | ||
1312 | for(Int_t k=0; k<nPhotonPairEMCAL; k++){ | |
9c1fcdc6 | 1313 | AliCaloTrackParticle * phPairCan=(AliCaloTrackParticle*)fPhotonPairEvent->At(k); |
364c8fcb | 1314 | if(kPhotonPairTimeCut && phPairCan->GetPhotonPairDTime() > fPhotonPairTimeCut) continue; |
1315 | if(SelectPair(phPairCan)){ | |
9c1fcdc6 | 1316 | AliCaloTrackParticle *photon1 = (AliCaloTrackParticle*)fPhotonEvent->At(phPairCan->GetAODPhotonPairID(0)); |
1317 | AliCaloTrackParticle *photon2 = (AliCaloTrackParticle*)fPhotonEvent->At(phPairCan->GetAODPhotonPairID(1)); | |
364c8fcb | 1318 | |
1319 | fhMesonE->Fill(phPairCan->E()); | |
1320 | fhMesonPtPhi->Fill(phPairCan->Pt(), phPairCan->Phi()); | |
1321 | fhMesonPtEta->Fill(phPairCan->Pt(), phPairCan->Eta()); | |
1322 | fhMesonPhiEta->Fill(phPairCan->Phi(), phPairCan->Eta()); | |
1323 | ||
1324 | if(phPairCan->Pt() > tmpMesonPt){ | |
1325 | tmpMesonPt = phPairCan->Pt(); | |
1326 | tmpMesonID = k; | |
1327 | } | |
1328 | ||
1329 | if(kAnaDecayMapping){ | |
1330 | Double_t deltaphi1 = TMath::Abs(phPairCan->Phi()-photon1->Phi()); | |
1331 | if(deltaphi1 > TMath::TwoPi()) deltaphi1-= TMath::TwoPi(); | |
1332 | ||
1333 | Double_t deltaphi2 = TMath::Abs(phPairCan->Phi()-photon2->Phi()); | |
1334 | if(deltaphi2 > TMath::TwoPi()) deltaphi2-= TMath::TwoPi(); | |
1335 | ||
1336 | Double_t deltaphi3 = TMath::Abs(photon1->Phi()-photon2->Phi()); | |
1337 | if(deltaphi3 > TMath::TwoPi()) deltaphi3-= TMath::TwoPi(); | |
1338 | ||
1339 | fhPi0DecayPhoton1->Fill(phPairCan->Pt(),photon1->Pt()); | |
1340 | fhPi0DecayPhoton1Dphi->Fill(phPairCan->Pt(),deltaphi1); | |
1341 | fhDecayPhoton1Pi0Dphi->Fill(photon1->Pt(),deltaphi1); | |
1342 | fhPi0DecayPhoton2->Fill(phPairCan->Pt(),photon2->Pt()); | |
1343 | fhPi0DecayPhoton2Dphi->Fill(phPairCan->Pt(),deltaphi2); | |
1344 | fhDecayPhoton2Pi0Dphi->Fill(photon2->Pt(),deltaphi2); | |
1345 | fhDecayPhoton1Photon2->Fill(photon1->Pt(),photon2->Pt()); | |
1346 | fhDecayPhoton1Photon2Dphi->Fill(photon1->Pt(),deltaphi3); | |
1347 | fhDecayPhoton2Photon1Dphi->Fill(photon2->Pt(),deltaphi3); | |
1348 | } | |
1349 | } | |
1350 | }//end loop for mesons | |
1351 | ||
1352 | for(Int_t kmeson=0; kmeson<nPhotonPairEMCAL; kmeson++){ | |
9c1fcdc6 | 1353 | AliCaloTrackParticle * phPairCan=(AliCaloTrackParticle*)fPhotonPairEvent->At(kmeson); |
364c8fcb | 1354 | phPairCan->SetIsLeading(kFALSE); |
1355 | if(kmeson == tmpMesonID) phPairCan->SetIsLeading(kTRUE); | |
1356 | } | |
1357 | ||
1358 | } | |
1359 | ||
1360 | //====================================== | |
9c1fcdc6 | 1361 | Bool_t AliAnalysisTaskEMCALCaloTrackCorr::SelectPair(AliCaloTrackParticle *mesonCandidate) |
364c8fcb | 1362 | { |
1363 | Double_t fInvMassMaxCutParam[3]={0.}; | |
1364 | if(fAnaMesonType.Contains("Pi0")){ | |
1365 | fInvMassMaxCutParam[0] = 0.0 ; | |
1366 | fInvMassMaxCutParam[1] =-7.e-5 ; | |
1367 | fInvMassMaxCutParam[2] = 8.e-5 ; | |
1368 | } | |
1369 | else { | |
1370 | fInvMassMaxCutParam[0] = 0.00 ; | |
1371 | fInvMassMaxCutParam[1] = 0.00 ; | |
1372 | fInvMassMaxCutParam[2] = 0.00 ; | |
1373 | } | |
1374 | ||
1375 | if(fAnaMesonType.Contains("Pi0")){ | |
1376 | fInvMassMinCut = 0.12; | |
1377 | fInvMassMaxCut = 0.15; | |
1378 | fLeftBandMinCut = 0; | |
1379 | fLeftBandMaxCut = -1; | |
1380 | fRightBandMinCut = 0.17; | |
1381 | fRightBandMaxCut = 0.20; | |
1382 | } | |
1383 | ||
1384 | if(fAnaMesonType.Contains("Eta")){ | |
1385 | fInvMassMinCut = 0.52; | |
1386 | fInvMassMaxCut = 0.58; | |
1387 | fLeftBandMinCut = 0.38; | |
1388 | fLeftBandMaxCut = 0.43; | |
1389 | fRightBandMinCut = 0.65; | |
1390 | fRightBandMaxCut = 0.70; | |
1391 | } | |
1392 | ||
1393 | Double_t phi = mesonCandidate->Phi(); | |
1394 | if(phi < 0) phi+=TMath::TwoPi(); | |
1395 | Double_t eta = mesonCandidate->Eta(); | |
1396 | Double_t invmass = mesonCandidate->M(); | |
1397 | Double_t angle = mesonCandidate->GetPhotonPairAngle(); | |
1398 | Double_t e = mesonCandidate->Energy(); | |
1399 | Double_t asy = mesonCandidate->GetPhotonPairAsy(); | |
1400 | ||
1401 | if(kNeutralMesonHistos){ | |
1402 | fhAnglePairNoCut ->Fill(e,angle); | |
1403 | fhInvMassPairNoCut->Fill(e,invmass); | |
1404 | fhAsyNoCut ->Fill(e,asy); | |
1405 | } | |
1406 | ||
1407 | // Asymmetry cut | |
1408 | if(kDoAsymmetryCut){ | |
1409 | if(asy < fAsymmetryCut){ | |
1410 | if(kNeutralMesonHistos){ | |
1411 | fhInvMassPairAsyCut->Fill(e,invmass); | |
1412 | fhAnglePairAsyCut ->Fill(e,angle); | |
1413 | fhInvMassPairPhi->Fill(e, phi); | |
1414 | fhInvMassPairEta->Fill(e, eta); | |
1415 | } | |
1416 | } else return kFALSE; | |
1417 | } | |
1418 | ||
1419 | Float_t invmassmaxcut = fInvMassMaxCut; | |
1420 | Float_t invmassRightBandMinCut = fRightBandMinCut; | |
1421 | Float_t invmassRightBandMaxCut = fRightBandMaxCut; | |
1422 | ||
1423 | //for EMCAL, pi0s, mass depends strongly with energy for e > 6, loose max cut | |
44e6df08 | 1424 | if(e > 10.){ |
364c8fcb | 1425 | invmassmaxcut = (fInvMassMaxCutParam[0]+fInvMassMaxCut)+fInvMassMaxCutParam[1]*e+fInvMassMaxCutParam[2]*e*e; |
1426 | invmassRightBandMinCut = (fInvMassMaxCutParam[0]+fRightBandMinCut)+fInvMassMaxCutParam[1]*e+fInvMassMaxCutParam[2]*e*e; | |
1427 | invmassRightBandMaxCut = (fInvMassMaxCutParam[0]+fRightBandMaxCut)+fInvMassMaxCutParam[1]*e+fInvMassMaxCutParam[2]*e*e; | |
1428 | } | |
1429 | ||
1430 | if(!fAnaMesonType.Contains("SideBand")){ | |
1431 | if(invmass > fInvMassMinCut && invmass < invmassmaxcut){ | |
1432 | if(kNeutralMesonHistos){ | |
1433 | fhInvMassPairAllCut->Fill(e,invmass); | |
1434 | fhAnglePairAllCut ->Fill(e,angle); | |
1435 | fhAsyAllCut ->Fill(e,asy); | |
1436 | } | |
1437 | return kTRUE; | |
1438 | } | |
1439 | else{ | |
1440 | return kFALSE; | |
1441 | } | |
1442 | }//normal selection | |
1443 | else if(fAnaMesonType.Contains("SideBand")){ | |
1444 | // select a band around pi0/eta | |
1445 | if((invmass > fLeftBandMinCut && invmass < fLeftBandMaxCut)|| | |
1446 | (invmass > invmassRightBandMinCut && invmass < invmassRightBandMaxCut)){ | |
1447 | if(kNeutralMesonHistos){ | |
1448 | fhInvMassPairAllCut->Fill(e,invmass); | |
1449 | fhAnglePairAllCut ->Fill(e,angle); | |
1450 | fhAsyAllCut ->Fill(e,asy); | |
1451 | } | |
1452 | return kTRUE; | |
1453 | } | |
1454 | else{ | |
1455 | return kFALSE; | |
1456 | } | |
1457 | } | |
1458 | else return kFALSE; | |
1459 | } | |
1460 | ||
1461 | //============================================== | |
1462 | Bool_t AliAnalysisTaskEMCALCaloTrackCorr::IsolatedPhoton(TClonesArray *fPhotonEventIsolated, TClonesArray *fCTSEventIsolated, Int_t fIndexPhotonCan, Double_t ptPhotonCan, Double_t phiPhotonCan, Double_t etaPhotonCan) | |
1463 | { | |
1464 | ||
1465 | if(!kDoIsolatedAna) return kFALSE; | |
1466 | ||
1467 | Double_t fCalculatedConeR = -1.; | |
1468 | Double_t ptTrack = -1.; | |
1469 | Double_t phiTrack = -999.; | |
1470 | Double_t etaTrack = -999.; | |
1471 | Double_t ptNeutral = -1.; | |
1472 | Double_t phiNeutral = -999.; | |
1473 | Double_t etaNeutral = -999.; | |
1474 | ||
1475 | Float_t fSumPtInCone = 0.; | |
1476 | Int_t fNum = 0; | |
1477 | Int_t fNumFrac = 0; | |
1478 | Bool_t kIsolated = kFALSE; | |
1479 | ||
1480 | ////skip photon in the edge of r<0.1 | |
1481 | Double_t fPhiCut1 = TMath::Pi()*80./180.-0.1; | |
1482 | Double_t fPhiCut2 = TMath::Pi()-0.1; | |
1483 | Double_t fEtaCut1 = -0.6; | |
1484 | Double_t fEtaCut2 = 0.6; | |
1485 | ||
1486 | if(etaPhotonCan>fEtaCut2 || etaPhotonCan<fEtaCut1 || phiPhotonCan>fPhiCut2 || phiPhotonCan<fPhiCut1) return kFALSE; | |
1487 | ||
1488 | ||
1489 | if(fDebug>2) printf("candidate photon pt=%f, phi=%f, eta=%f\n",ptPhotonCan,phiPhotonCan,etaPhotonCan); | |
1490 | ||
1491 | if(fParticlesInCone==kIsolatedOnlyCharged ||fParticlesInCone==kIsolatedNeutralAndCharged){ | |
1492 | for(Int_t j1=0; j1<fCTSEventIsolated->GetEntries(); j1++){ | |
9c1fcdc6 | 1493 | AliCaloTrackParticle *traForIso=(AliCaloTrackParticle*)fCTSEventIsolated->At(j1); |
364c8fcb | 1494 | ptTrack = traForIso->Pt(); |
1495 | if(fDebug>2) printf("track pt=%f\n",ptTrack); | |
1496 | phiTrack = traForIso->Phi(); | |
1497 | if(phiTrack<0.) phiTrack+=TMath::TwoPi(); | |
1498 | etaTrack = traForIso->Eta(); | |
1499 | ||
1500 | fCalculatedConeR = TMath::Sqrt((etaPhotonCan-etaTrack)*(etaPhotonCan-etaTrack)+ (phiPhotonCan-phiTrack)*(phiPhotonCan-phiTrack)); | |
1501 | ||
1502 | if(fDebug>2) printf("track dR=%f\n",fCalculatedConeR); | |
1503 | ||
1504 | if(fCalculatedConeR<fSetConeR){ | |
1505 | if(fDebug>2) printf("track in Cone pt=%f\n",ptTrack); | |
1506 | //calcuate three cases | |
1507 | fSumPtInCone+=ptTrack; | |
1508 | if(ptTrack>fSetPtThreshold) fNum++; //larger the threshold pt, fNum++ | |
1509 | if(ptTrack>fSetPtFraction*ptPhotonCan) fNumFrac++; //larger the fraction of ptPhIso, fNumFrac++ | |
1510 | ||
1511 | }////Inside Cone R | |
1512 | }////loop for Isolated track | |
1513 | }////Onlycharged || NeutralAndCharged for whether Isolated photon | |
1514 | ||
1515 | if(fDebug>2) printf("track SumPtInCone=%f\n",fSumPtInCone); | |
1516 | ||
1517 | if(fParticlesInCone==kIsolatedOnlyNeutral || fParticlesInCone==kIsolatedNeutralAndCharged){ | |
1518 | for(Int_t i2=0; i2<fPhotonEventIsolated->GetEntries(); i2++){ | |
9c1fcdc6 | 1519 | AliCaloTrackParticle *ph2=(AliCaloTrackParticle*)fPhotonEventIsolated->At(i2); |
364c8fcb | 1520 | if(!ph2->IsInTrackMatched() || i2==fIndexPhotonCan) continue; |
1521 | ||
1522 | ptNeutral = ph2->Pt(); | |
1523 | if(fDebug>2) printf("photon or merged pt=%f\n",ptNeutral); | |
1524 | phiNeutral = ph2->Phi(); | |
1525 | if(phiNeutral<0.) phiNeutral+=TMath::TwoPi(); | |
1526 | etaNeutral = ph2->Eta(); | |
1527 | ||
1528 | fCalculatedConeR = TMath::Sqrt((etaPhotonCan-etaNeutral)*(etaPhotonCan-etaNeutral)+(phiPhotonCan-phiNeutral)*(phiPhotonCan-phiNeutral)); | |
1529 | ||
1530 | if(fDebug>2) printf("photon dR=%f\n",fCalculatedConeR); | |
1531 | ||
1532 | if(fCalculatedConeR<fSetConeR){ | |
1533 | if(fDebug>2)printf("photon in Cone pt=%f\n",ptNeutral); | |
1534 | //calcuate four cases | |
1535 | fSumPtInCone+=ptNeutral; | |
1536 | if(ptNeutral>fSetPtThreshold) fNum++; //larger the threshold pt, fNum++ | |
1537 | if(ptNeutral>fSetPtFraction*ptPhotonCan) fNumFrac++; //larger the fraction of ptPhIso, fNumFrac++ | |
1538 | ||
1539 | if(fSetPtFraction*ptPhotonCan<fSetPtThreshold) { | |
1540 | if(ptNeutral>fSetPtThreshold) fNumFrac++ ; | |
1541 | } | |
1542 | else { | |
1543 | if(ptNeutral>fSetPtFraction*ptPhotonCan) fNumFrac++; | |
1544 | } | |
1545 | ||
1546 | }////Inside Cone R | |
1547 | }////loop for neutral | |
1548 | }////if OnlyNeutral || NeutralAndCharged | |
1549 | ||
1550 | if(fDebug>2) printf("track and phton SumPtInCone=%f\n",fSumPtInCone); | |
1551 | ||
1552 | //check Isolation, depending on method | |
1553 | if(fICMethod == kPtThresholdIC){ | |
1554 | if(fNum == -1) kIsolated = kTRUE ; | |
1555 | } | |
1556 | else if(fICMethod == kSumPtInConeIC){ | |
1557 | if(fSumPtInCone<fSetSumPtThreshold) kIsolated = kTRUE ; | |
1558 | } | |
1559 | else if(fICMethod == kPtFracationIC){ | |
1560 | if(fNumFrac == -1) kIsolated = kTRUE ; | |
1561 | } | |
1562 | else if(fICMethod == kSumPtFracationIC){ | |
1563 | //when the fPtFraction*ptC<fSumPtThreshold then consider the later case | |
1564 | if(fSetPtFraction*ptPhotonCan<fSetSumPtThreshold && fSumPtInCone<fSetSumPtThreshold) kIsolated = kTRUE ; | |
1565 | if(fSetPtFraction*ptPhotonCan>fSetSumPtThreshold && fSumPtInCone<fSetPtFraction*ptPhotonCan) kIsolated = kTRUE ; | |
1566 | } | |
1567 | ||
1568 | if(fDebug>2) printf("kIsolated=%d\n",kIsolated); | |
1569 | return kIsolated; | |
1570 | ||
1571 | } | |
1572 | ||
1573 | ||
1574 | //======================================= | |
1575 | void AliAnalysisTaskEMCALCaloTrackCorr::SetTriggerBins(Float_t *ptTriggBins) | |
1576 | { | |
1577 | fTriggPtArray=new Float_t[GetNTriggPtBins()]; | |
1578 | for(Int_t i=0;i<=GetNTriggPtBins(); i++){ | |
1579 | fTriggPtArray[i] = ptTriggBins[i]; | |
1580 | } | |
1581 | } | |
1582 | ||
1583 | //========================================_ | |
1584 | void AliAnalysisTaskEMCALCaloTrackCorr::SetAssociatedBins(Float_t *ptAssocBins) | |
1585 | { | |
1586 | fAssocPtArray=new Float_t[GetNAssocPtBins()]; | |
1587 | for(Int_t i=0;i<=GetNAssocPtBins(); i++){ | |
1588 | fAssocPtArray[i] = ptAssocBins[i]; | |
1589 | } | |
1590 | } | |
1591 | ||
1592 | //======================================== | |
1593 | Bool_t AliAnalysisTaskEMCALCaloTrackCorr::MakeChargedCorrelation(Int_t fTrackIndex, Double_t ptTrigg, | |
1594 | Double_t phiTrigg, Double_t etaTrigg) | |
1595 | { | |
1596 | if(GetDebug() > 1)printf("AliAnalysisTaskEMCALCaloTrackCorr::MakeChargedCorrelation() - Make trigger particle - charged hadron correlation \n"); | |
1597 | if(fPhotonEvent->GetEntriesFast()<=0) return kFALSE; | |
1598 | ||
1599 | ||
1600 | Int_t nTracks = fCTSEvent->GetEntriesFast(); | |
1601 | fhNtracksCorr->Fill(nTracks); | |
1602 | ||
1603 | Double_t ptAssoc = -999.; | |
1604 | Double_t phiAssoc = -999. ; | |
1605 | Double_t etaAssoc = -999.; | |
1606 | Double_t deltaPhi = -999.; | |
1607 | Double_t deltaPhiUE = -999.; | |
1608 | Double_t deltaEta = -999.; | |
1609 | Double_t pout = -999.; | |
1610 | Double_t zT = -999.; | |
1611 | Double_t xE = -999.; | |
1612 | Double_t xELog = -999.; | |
1613 | Double_t uedPhi = -999.; | |
1614 | Double_t uexE = -999.; | |
1615 | Double_t uepout = -999.; | |
1616 | Double_t uexELog = -999.; | |
1617 | ||
1618 | for(Int_t j1 = 0;j1 < nTracks; j1++ ){ | |
9c1fcdc6 | 1619 | AliCaloTrackParticle *track = (AliCaloTrackParticle *)(fCTSEvent->At(j1)) ; |
364c8fcb | 1620 | if(!track) continue; |
1621 | if(kTwoTracksCorr && fTrackIndex ==j1) continue; | |
1622 | ptAssoc = track->Pt(); | |
1623 | etaAssoc = track->Eta(); | |
1624 | phiAssoc = track->Phi() ; | |
1625 | if(phiAssoc < 0) phiAssoc+=TMath::TwoPi(); | |
1626 | ||
1627 | fhTrackPtPhi->Fill(ptAssoc, phiAssoc); | |
1628 | fhTrackPtEta->Fill(ptAssoc, etaAssoc); | |
1629 | fhTrackPhiEta->Fill(phiAssoc, etaAssoc); | |
1630 | ||
1631 | deltaPhi = phiTrigg-phiAssoc; | |
1632 | if(deltaPhi < -TMath::PiOver2()) deltaPhi+=TMath::TwoPi(); | |
1633 | if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi(); | |
1634 | ||
1635 | //jump out this event if near side associated particle pt larger than trigger | |
1636 | if(kMakeNearSideLeading){ | |
1637 | if(ptAssoc > ptTrigg && (TMath::Abs(deltaPhi) < TMath::PiOver2())) return kFALSE; | |
1638 | } | |
1639 | //jump out this event if there is any other particle with pt larger than trigger | |
1640 | else if(kMakeAbsoluteLeading){ | |
1641 | if(ptAssoc > ptTrigg) return kFALSE; | |
1642 | } | |
1643 | ||
1644 | deltaEta = etaTrigg-etaAssoc; | |
1645 | ||
1646 | pout = ptAssoc*TMath::Abs(TMath::Sin(deltaPhi)); | |
1647 | xE =-ptAssoc/ptTrigg*TMath::Cos(deltaPhi); | |
1648 | if(xE<0) xE=-xE; | |
1649 | xELog = TMath::Log(1/xE); | |
1650 | zT = ptAssoc/ptTrigg; | |
1651 | ||
1652 | uedPhi = gRandom->Uniform(TMath::Pi()/2,3*TMath::Pi()/2); | |
1653 | uepout = ptAssoc*TMath::Sin(uedPhi); | |
1654 | uexE =(-1*ptAssoc/ptTrigg)*TMath::Cos(uedPhi); | |
1655 | if(uexE<0) uexE=-uexE; | |
1656 | uexELog = TMath::Log(1/uexE); | |
1657 | ||
1658 | if(GetDebug()>0) | |
1659 | printf("AliAnalysisTaskEMCALCaloTrackCorr::MakeChargedCorrelation(): deltaPhi= %f, deltaEta=%f, pout=%f, xE=%f\n",deltaPhi, deltaEta, pout, xE); | |
1660 | ||
1661 | for(Int_t kAssoc=0;kAssoc<GetNAssocPtBins();kAssoc++){ | |
1662 | if(ptAssoc>fAssocPtArray[kAssoc] && ptAssoc<fAssocPtArray[kAssoc+1]){ | |
1663 | if(ptTrigg>fptTriggerBegin && ptTrigg<fptTriggerEnd){ | |
1664 | fhDPhiTriggPtT[kAssoc]->Fill(deltaPhi, ptTrigg); | |
1665 | fhDEtaTriggPtT[kAssoc]->Fill(deltaEta, ptTrigg); | |
1666 | } | |
1667 | } | |
1668 | } | |
1669 | ||
1670 | if(ptTrigg>fptTriggerBegin && ptTrigg<fptTriggerEnd) { | |
1671 | ||
1672 | if(ptAssoc>1. && ptAssoc<5.){ | |
1673 | fhDPhiAssocPt15T->Fill(deltaPhi, ptTrigg); | |
1674 | fhDEtaAssocPt15T->Fill(deltaEta, ptTrigg); | |
1675 | } | |
1676 | ||
1677 | if(ptAssoc>fptAssociatedBegin){ | |
1678 | ||
1679 | fhDPhiTriggPtAssocPt->Fill(deltaPhi, ptAssoc); | |
1680 | fhDEtaTriggPtAssocPt->Fill(deltaEta, ptAssoc); | |
1681 | ||
1682 | if((deltaPhi > fDeltaPhiMinCut) && (deltaPhi < fDeltaPhiMaxCut)){ | |
1683 | fhAssocPtTriggPt->Fill(ptAssoc, ptTrigg); | |
1684 | fhxELogTriggPt->Fill(xELog, ptTrigg); | |
1685 | fhpoutTriggPt->Fill(pout , ptTrigg); | |
1686 | fhzTTriggPt->Fill(zT, ptTrigg); | |
1687 | fhxETriggPt->Fill(xE, ptTrigg); | |
1688 | }////Only analysis Away Side | |
1689 | ||
1690 | if(TMath::Abs(deltaPhi-TMath::Pi())<fDeltaPhiHRSize){ | |
1691 | fhAssocPtTriggPtHR->Fill(ptAssoc, ptTrigg); | |
1692 | fhxELogTriggPtHR->Fill(xELog, ptTrigg); | |
1693 | fhpoutTriggPtHR->Fill(pout , ptTrigg); | |
1694 | fhzTTriggPtHR->Fill(zT, ptTrigg); | |
1695 | fhxETriggPtHR->Fill(xE, ptTrigg); | |
1696 | }////Only analysis head region side in Away Side | |
1697 | ||
1698 | deltaPhiUE = deltaPhi; | |
1699 | Bool_t kAnaUECorr1 = kFALSE; | |
1700 | Bool_t kAnaUECorr2 = kFALSE; | |
1701 | Double_t fUeAwaySide = 0.; | |
1702 | if(fUeDeltaPhiFix == TMath::Pi()/2.) fUeAwaySide = 3*TMath::Pi()/2.; | |
1703 | else fUeAwaySide = -1*fUeDeltaPhiFix; | |
1704 | ||
1705 | if(kUELeftRight && !kUENearAway) { | |
1706 | if(deltaPhiUE>(-1*fUeDeltaPhiFix-fUeDeltaPhiSize) && deltaPhiUE < (-1*fUeDeltaPhiFix+fUeDeltaPhiSize)) | |
1707 | kAnaUECorr1 = kTRUE; | |
1708 | if(deltaPhiUE>(fUeDeltaPhiFix-fUeDeltaPhiSize) && deltaPhiUE < (fUeDeltaPhiFix+fUeDeltaPhiSize)) | |
1709 | kAnaUECorr2 = kTRUE; | |
1710 | } | |
1711 | if(!kUELeftRight && kUENearAway) { | |
1712 | if((deltaPhiUE>-1*fUeDeltaPhiFix && deltaPhiUE<(-1*fUeDeltaPhiFix + fUeDeltaPhiSize)) || (deltaPhiUE>(fUeDeltaPhiFix-fUeDeltaPhiSize) && deltaPhiUE<fUeDeltaPhiFix)) | |
1713 | kAnaUECorr1 = kTRUE; | |
1714 | if((deltaPhiUE>fUeDeltaPhiFix && deltaPhiUE<(fUeDeltaPhiFix + fUeDeltaPhiSize)) || (deltaPhiUE>(fUeAwaySide - fUeDeltaPhiSize) && deltaPhiUE<fUeAwaySide)) | |
1715 | kAnaUECorr2 = kTRUE; | |
1716 | } | |
1717 | ||
1718 | ////Ue at Near Side: pt_assoc in the side, but dphi at pi/2-3*pi/2 | |
1719 | if(kAnaUECorr1){ | |
1720 | fhNUeAssocPtTriggPt->Fill(ptAssoc, ptTrigg); | |
1721 | fhNUexELogTriggPt->Fill(uexELog, ptTrigg); | |
1722 | fhNUepoutTriggPt->Fill(uepout , ptTrigg); | |
1723 | fhNUexETriggPt->Fill(uexE, ptTrigg); | |
1724 | fhNUezTTriggPt->Fill(zT , ptTrigg); | |
1725 | fhNUexETriggPt->Fill(uexE, ptTrigg); | |
1726 | fhNUeDPhiDEta->Fill(deltaPhi, deltaEta); | |
1727 | }////Define the UE and analysis some UE physics observables at left | |
1728 | ||
1729 | ////Ue at Away Side | |
1730 | if(kAnaUECorr2){ | |
1731 | fhAUeAssocPtTriggPt->Fill(ptAssoc, ptTrigg); | |
1732 | fhAUexELogTriggPt->Fill(uexELog, ptTrigg); | |
1733 | fhAUepoutTriggPt->Fill(uepout, ptTrigg); | |
1734 | fhAUezTTriggPt->Fill(zT, ptTrigg); | |
1735 | fhAUexETriggPt->Fill(uexE, ptTrigg); | |
1736 | fhAUeDPhiDEta->Fill(deltaPhi, deltaEta); | |
1737 | }////Define the UE and analysis some UE physics observables at left | |
1738 | } | |
1739 | } | |
1740 | ||
1741 | for(Int_t iTrigg=0;iTrigg<GetNTriggPtBins();iTrigg++){ | |
1742 | if(ptTrigg>=fTriggPtArray[iTrigg] && ptTrigg<fTriggPtArray[iTrigg+1]){ | |
1743 | if(ptAssoc>fptAssociatedBegin){ | |
1744 | fhDPhiAssocPtA[iTrigg]->Fill(deltaPhi, ptAssoc); | |
1745 | fhDEtaAssocPtA[iTrigg]->Fill(deltaEta, ptAssoc); | |
1746 | } | |
1747 | ||
1748 | for(Int_t jAssoc=0;jAssoc<GetNAssocPtBins();jAssoc++){ | |
1749 | if(ptAssoc>fAssocPtArray[jAssoc] && ptAssoc<fAssocPtArray[jAssoc+1]){ | |
1750 | fhDPhiSumPtBin[iTrigg][jAssoc]->Fill(deltaPhi,ptAssoc+ptTrigg); | |
1751 | fhDEtaSumPtBin[iTrigg][jAssoc]->Fill(deltaEta,ptAssoc+ptTrigg); | |
1752 | fhDPhiDEtaBin[iTrigg][jAssoc]->Fill(deltaPhi, deltaEta); | |
1753 | } | |
1754 | }//// | |
1755 | } | |
1756 | } | |
1757 | ||
1758 | track=0; | |
364c8fcb | 1759 | |
1760 | }//end loop associated hadrons | |
1761 | ||
1762 | fhPtPhiLeading->Fill(ptTrigg,phiTrigg); | |
1763 | fhPtEtaLeading->Fill(ptTrigg, etaTrigg); | |
1764 | ||
1765 | return kTRUE; | |
1766 | ||
1767 | } | |
1768 | ||
1769 | //======================================= | |
1770 | void AliAnalysisTaskEMCALCaloTrackCorr::MakeChargedMixCorrelation(Double_t ptTriggMix, Double_t phiTriggMix, Double_t etaTriggMix, TList *poolMix) | |
1771 | { | |
1772 | Double_t ptAssoc = -999.; | |
1773 | Double_t phiAssoc = -999.; | |
1774 | Double_t etaAssoc = -999.; | |
1775 | Double_t deltaPhi = -999.; | |
1776 | Double_t deltaEta = -999.; | |
1777 | ||
1778 | for(Int_t ev=0;ev<poolMix->GetSize();ev++){ | |
1779 | TClonesArray *bgTracks = static_cast<TClonesArray*>(poolMix->At(ev)); | |
1780 | Int_t nTracks=bgTracks->GetEntriesFast(); | |
1781 | for(Int_t j1 = 0;j1 <nTracks; j1++ ){ | |
9c1fcdc6 | 1782 | AliCaloTrackParticle *track = (AliCaloTrackParticle*)bgTracks->At(j1) ; |
364c8fcb | 1783 | if(!track) continue; |
1784 | ptAssoc = track->Pt(); | |
1785 | etaAssoc = track->Eta(); | |
1786 | phiAssoc = track->Phi() ; | |
1787 | if(phiAssoc < 0) phiAssoc+=TMath::TwoPi(); | |
1788 | ||
1789 | deltaPhi = phiTriggMix-phiAssoc; | |
1790 | if(deltaPhi < -TMath::PiOver2()) deltaPhi+=TMath::TwoPi(); | |
1791 | if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi(); | |
1792 | deltaEta = etaTriggMix-etaAssoc; | |
1793 | ||
1794 | //jump out this event if near side associated particle pt larger than trigger | |
1795 | if(kMakeNearSideLeading){ | |
1796 | if(ptAssoc > ptTriggMix && (TMath::Abs(deltaPhi) < TMath::PiOver2())) return; | |
1797 | } | |
1798 | //jump out this event if there is any other particle with pt larger than trigger | |
1799 | else if(kMakeAbsoluteLeading){ | |
1800 | if(ptAssoc > ptTriggMix) return; | |
1801 | } | |
1802 | ||
1803 | if(GetDebug()>0) | |
1804 | printf("AliAnalysisTaskEMCALCaloTrackCorr::MakeChargedMixCorrelation(): deltaPhi= %f, deltaEta=%f\n",deltaPhi, deltaEta); | |
1805 | ||
1806 | for(Int_t iTrigg=0;iTrigg<GetNTriggPtBins();iTrigg++){ | |
1807 | if(ptTriggMix>=fTriggPtArray[iTrigg] && ptTriggMix<fTriggPtArray[iTrigg+1]){ | |
1808 | if(ptAssoc>fptAssociatedBegin){ | |
1809 | fhMixDPhiAssocPtA[iTrigg]->Fill(deltaPhi, ptAssoc); | |
1810 | fhMixDEtaAssocPtA[iTrigg]->Fill(deltaEta, ptAssoc); | |
1811 | } | |
1812 | ||
1813 | for(Int_t jAssoc=0;jAssoc<GetNAssocPtBins();jAssoc++){ | |
1814 | if(ptAssoc>fAssocPtArray[jAssoc] && ptAssoc<fAssocPtArray[jAssoc+1]){ | |
1815 | fhMixDPhiDEtaBin[iTrigg][jAssoc]->Fill(deltaPhi, deltaEta); | |
1816 | }//end if Associated pt bin | |
1817 | }//end loop Associated pt bins | |
1818 | }//end if trigger pt bin | |
1819 | }//end loop trigger bins | |
1820 | ||
1821 | if(ptTriggMix>fptTriggerBegin && ptTriggMix<fptTriggerEnd){ | |
1822 | if(ptAssoc>1. && ptAssoc<5.){ | |
1823 | fhMixDPhiAssocPt15T->Fill(deltaPhi, ptTriggMix); | |
1824 | fhMixDEtaAssocPt15T->Fill(deltaEta, ptTriggMix); | |
1825 | } | |
1826 | ||
1827 | for(Int_t kAssoc=0;kAssoc<GetNAssocPtBins();kAssoc++){ | |
1828 | if(ptAssoc>fAssocPtArray[kAssoc] && ptAssoc<fAssocPtArray[kAssoc+1]){ | |
1829 | fhMixDPhiTriggPtT[kAssoc]->Fill(deltaPhi, ptTriggMix); | |
1830 | fhMixDEtaTriggPtT[kAssoc]->Fill(deltaEta, ptTriggMix); | |
1831 | } | |
1832 | }//end loop Associated pt bin | |
1833 | }//end if Associated pt bins | |
1834 | ||
364c8fcb | 1835 | }//end loop associated hadrons |
1836 | ||
364c8fcb | 1837 | }//end loop Mixed event in pool |
1838 | ||
1839 | fhMixPtPhiLeading->Fill(ptTriggMix, phiTriggMix); | |
1840 | fhMixPtEtaLeading->Fill(ptTriggMix, etaTriggMix); | |
1841 | ||
1842 | } | |
1843 | ||
1844 | //======================================== | |
1845 | ||
1846 | ||
1847 | //============================================ | |
1848 | void AliAnalysisTaskEMCALCaloTrackCorr::SetTrackCuts(AliESDtrackCuts * cuts) | |
1849 | { | |
1850 | ||
1851 | if(fESDtrackCuts) delete fESDtrackCuts ; | |
1852 | fESDtrackCuts = cuts ; | |
1853 | ||
1854 | } | |
1855 | ||
1856 | //============================================= | |
1857 | void AliAnalysisTaskEMCALCaloTrackCorr::Terminate(Option_t *) | |
1858 | { | |
1859 | // Draw result to the screen | |
1860 | // Called once at the end of the query | |
1861 | ||
1862 | fhNEvents->Fill(1,fnEvents); | |
1863 | Printf("fnEvents=%d", fnEvents); | |
1864 | ||
1865 | fhNEventsAnalyized->Fill(1,fEventAnalyized); | |
1866 | Printf("fEventAnalyized=%d", fEventAnalyized); | |
1867 | ||
1868 | } |