]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG4/JetTasks/AliAnalysisTaskJetChem.h
Bug fix, size of array
[u/mrichter/AliRoot.git] / PWG4 / JetTasks / AliAnalysisTaskJetChem.h
CommitLineData
9b2de807 1// Analysis task for jet chemistry analysis
2// Oliver Busch, o.busch@gsi.de
3// UE task & CDF jet finder based on UE task by Arian Abrahantes Quintana and Enesto Lopez
4
5
6#ifndef ALIANALYSISTASKJETCHEM_H
7#define ALIANALYSISTASKJETCHEM_H
8
9/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
10 * See cxx source for full Copyright notice */
11
12#include "AliAnalysisTaskSE.h"
13#include "AliPID.h"
14
15//class AliAnalysisTaskSE;
16class AliESDEvent;
17class AliAODEvent;
18class TH1F;
19class TH2F;
20class TH1I;
21class TProfile;
22class TVector3;
23class TTree;
24class AliAODJet;
25class AliAODTrack;
26class AliPID;
27class TDatabasePDG;
28
29class AliAnalysisTaskJetChem : public AliAnalysisTaskSE
30 {
31 public:
32 AliAnalysisTaskJetChem(const char* name="AliAnalysisTaskJetChem");
33 virtual ~AliAnalysisTaskJetChem() {;}
34
35 // Implementation of interface methods
36 virtual Bool_t UserNotify();
37 virtual void UserCreateOutputObjects();
38 virtual void UserExec(Option_t *option);
39 virtual void Terminate(Option_t *);
40
41 // Setters
42 virtual void SetDebugLevel( Int_t level ) { fDebug = level; }
43
44 // Read deltaAODs
45 void ReadDeltaAOD() { fDeltaAOD = kTRUE; }
46 void SelectDeltaAODBranch(const char* val){ fDeltaAODBranch = val; }
47 void SelectAODBranch(const char* val) { fAODBranch = val; }
48 void SelectDeltaAODBranchMC(const char* val){ fDeltaAODBranchMC = val; }
49 void SelectAODBranchMC(const char* val) { fAODBranchMC = val; }
50
51 void SetJetsOnFly( Bool_t val ) { fJetsOnFly = val; }
52
53 // use internal jet finder
54
55 void SetUseLOConeJets( ) { fUseLOConeJets = kTRUE; }
56 void SetUseLOConeMCJets() { fUseLOConeMCJets = kTRUE; fUsePythiaJets = kFALSE;}
57 void SetUsePythiaJets() { fUseLOConeMCJets = kFALSE; fUsePythiaJets = kTRUE; }
58 void SetConeRadius( Double_t val ) { fConeRadius = val; }
59 void SetTrackPtCutJF( Double_t val ) { fTrackPtCutJF = val; }
60
61 void SetFilterBitJF( UInt_t val ) { fFilterBitJF = val; }
62 void SetRequireITSRefitJF() { fRequireITSRefitJF = kTRUE; }
63 void SetRejectK0TracksJF() { fRejectK0TracksJF = kTRUE; }
64
65 // Jet cuts
66 void SetJetPtCut( Double_t val ) { fJetPtCut = val; }
67 void SetJetEtaCut( Double_t val ) { fJetEtaCut = val; }
68
69 // track cuts
70 void SetFilterBit( UInt_t val ) { fFilterBit = val; }
71 void SetTrackPtCut( Double_t val ) { fTrackPtCut = val; }
72 void SetTrackEtaCut( Double_t val ) { fTrackEtaCut = val; }
73
74 // K0 cuts
75
76 void SetUseOnFlyV0s() { fUseOnFlyV0s = kTRUE; }
77 void SetCutnSigdEdx( Double_t val) { fCutnSigdEdx = val; }
78
79
80 // Setters for MC
81 void SetUseAODMCTracksForUE(){ fUseAODMCTracksForUE = kTRUE;}
82
83
84 private:
85 AliAnalysisTaskJetChem(const AliAnalysisTaskJetChem &det);
86 AliAnalysisTaskJetChem& operator=(const AliAnalysisTaskJetChem &det);
87
88 void AnalyseEvent();
89 Int_t IsTrackInsideRegion(const AliAODJet* aodjetVect, const TVector3 *partVect);
90
91 void FillPIDhisto(TH1F* hist,Int_t pdg,Float_t weight=1);
92 TH1F* CreatePIDhisto(const char* name);
93 TH1F* CreatePythiaIDhisto(const char* name);
94 void FillPythiaIDhisto(TH1F* h, const Int_t PID);
95 void CreateHistos();
96 void FillSumPtRegion( Double_t leadingE, Double_t ptMax, Double_t ptMin );
97 void FillMultRegion(Double_t leadingE, Double_t nTrackPtmax, Double_t nTrackPtmin);
98 TClonesArray* FindChargedParticleJets();
99 TClonesArray* FindChargedParticleJetsMC();
100 TClonesArray* GetPythiaJets();
101 void QSortTracks(TObjArray &a, Int_t first, Int_t last);
102 void WriteSettings();
103
104 Bool_t IsK0InvMass(const Double_t mass) const;
105 Bool_t IsLambdaInvMass(const Double_t mass) const;
9f77f0ce 106 Bool_t IsAcceptedDCAK0(/*const Double_t dca*/) const;
107 Bool_t IsAcceptedDCALambda(/*const Double_t dca*/) const;
9b2de807 108 Bool_t IsAccepteddEdx(const Double_t mom, const Double_t dEdx, AliPID::EParticleType n, const Double_t cutnSig) const;
109 void CheckV0s(AliAODJet* jetVect, Int_t maxPtRegionIndex, Bool_t& foundK0);
110 void CheckMCParticles(AliAODJet* jetVect, Int_t maxPtRegionIndex,Bool_t& isK0event);
111 Double_t AssociateV0MC(const TVector3* V0Mom,const Int_t pdg);
112 void CompLeadingJets(AliAODJet* jetLeadingAOD,AliAODJet* jetLeadingMC,const Int_t pythiaPID,
113 const Bool_t foundK0AID,const Bool_t foundK0MC);
114 Double_t GetJetRadius(const AliAODJet* jet, const Double_t energyFrac);
115 Bool_t IsTrackFromK0(const Int_t indexTrackCheck);
116
117 Bool_t IsQuarkHardScatteringEvent(const Int_t PID);
e2c14c6e 118 Bool_t IsGluonHardScatteringEvent(const Int_t PID);
9b2de807 119 Bool_t IsDiffractiveEvent(const Int_t PID);
120 Int_t GetPythiaProcessID();
121
e2c14c6e 122 void GetJetTracksResum(TList* list, AliAODJet* jet, const Double_t radius);
123 void GetJetTracksTrackrefs(TList* list, AliAODJet* jet);
124 void FillReferenceFF(AliAODJet* jet);
125 void FillReferencePlotsTracks();
9b2de807 126
127 Int_t fDebug; // Debug flag
128
129 Bool_t fDeltaAOD; // Read jets from delta AOD
130 TString fDeltaAODBranch; // Jet branch name from delta AOD
131 TString fAODBranch; // Jet branch name from standard AOD
132 TString fDeltaAODBranchMC; // MC Jet branch name from delta AOD
133 TString fAODBranchMC; // MC Jet branch name from standard AOD
134
135 TClonesArray* fArrayJetsAOD; // Array of AOD Jets from delta AOD
136 TClonesArray* fArrayJetsMC; // Array of MC Jets from delta AOD
137
138
139 AliAODEvent* fAOD; //! AOD Event
140 AliAODEvent* fAODjets; //! AOD Event for reconstructed on the fly (see ConnectInputData()
141 TList* fListOfHistos; // Output list of histograms
142 Bool_t fJetsOnFly; // if jets are reconstructed on the fly from AOD tracks
143
144 Bool_t fUseLOConeJets; // Use LO cone finder instead of jets from AOD
145 Bool_t fUseLOConeMCJets; // Use LO cone finder on aodmcparticles
146 Bool_t fUsePythiaJets; // use pythia internal jet finder output
147
148 Double_t fConeRadius; // if selected Cone-like region type, set Radius (=0.7 default)
149 Double_t fTrackPtCutJF; // track lower pt for JF
150 UInt_t fFilterBitJF; // track filter for JetFinder
151 Bool_t fRequireITSRefitJF; // additional ITS refit requirement in JF
152 Bool_t fRejectK0TracksJF; // exclude tracks from K0 decay in JF
153
154
155 // Jet cuts
156 Double_t fJetPtCut; // Min Pt for charged Particle Jet
157 Double_t fJetEtaCut; // |jet1 eta| < fJet1EtaCut (fAnaType = 1,2,3)
158
159 // track cuts
160 UInt_t fFilterBit; // Select tracks from an specific track cut (default 0xFF all track selected)
161 Double_t fTrackPtCut; // Pt cut of tracks in the regions
162 Double_t fTrackEtaCut; // Eta cut on tracks in the regions (fRegionType=1)
163
164 // K0 cuts
165 Bool_t fUseOnFlyV0s; // on-the-fly V0s versus vertex track 'offline' V0s
166 Double_t fCutnSigdEdx; // TPC dEdx cut
167
168
169 // For MC
170 Bool_t fUseAODMCTracksForUE; // use aodmcparticles branch to determine max/min transverse region
171 Double_t fAreaReg; // Area of the region To be used as normalization factor when filling histograms
172 Double_t fAvgTrials; // average trials used to fill the fh1Triasl histogram in case we do not have trials on a event by event basis
173
174
175 // Histograms ( are owned by fListOfHistos TList )
e2c14c6e 176 TH1F* fhPrimVertexNCont; //!
9b2de807 177 TH1F* fhPrimVertexRho; //!
178 TH1F* fhPrimVertexZ; //!
179 TH1F* fhNJets; //!
180 TH1F* fhNJetsMC; //!
181 TH1F* fhLeadingEta; //!
e2c14c6e 182 TH2F* fhLeadingNTracksVsEta; //!
183 TH2F* fhLeadingPtVsEta; //!
9b2de807 184 TH1F* fhLeadingPhi; //!
185 TH1F* fhLeadingPt; //!
186 TH1F* fhLeadingPtDiffr; //!
187 TH1F* fhLeadingEtaMC; //!
188 TH1F* fhLeadingPhiMC; //!
189 TH1F* fhLeadingPtMC; //!
190 TH1F* fhLeadingPtMCDiffr; //!
e2c14c6e 191 TH2F* fhPhiEtaTracksNoCut; //!
192 TH1F* fhPtTracksNoCut; //!
193 TH2F* fhPhiEtaTracks; //!
9b2de807 194 TH1F* fhPtTracks; //!
e2c14c6e 195 TH1F* fhTrackMult; //!
196
9b2de807 197 TH1F* fhEtaMCTracks; //!
198 TH1F* fhPhiMCTracks; //!
199 TH1F* fhPtMCTracks; //!
200 TH2F* fhnTracksVsPtLeading; //!
201
202 TH1F* fhdNdEtaPhiDist; //!
203
204 TH1F* fhRegionSumPtMaxVsEt; //!
205 TH1F* fhRegionMultMaxVsEt; //!
206 TH1F* fhRegionSumPtMinVsEt; //!
207 TH1F* fhRegionMultMinVsEt; //!
208
209
210 TH1F* fhNV0s; //!
211 TH1F* fhV0onFly; //!
212 TH1F* fhV0DCADaughters; //!
213 TH1F* fhV0Radius; //!
214 TH1F* fhV0DCAToVertex; //!
215 TH1F* fhV0DCAToVertexK0; //!
216
217 TH1F* fhV0InvMassK0; //!
218 TH1F* fhV0InvMassK0JetEvt; //!
219 TH1F* fhV0InvMassLambda; //!
220 TH1F* fhV0InvMassAntiLambda; //!
221 TH1F* fhV0InvMassLambdaJetEvt; //!
222 TH1F* fhV0InvMassAntiLambdaJetEvt; //!
223
224 TH2F* fhdROpanK0VsPt; //!
225 TH1F* fhdPhiJetV0; //!
226 TH1F* fhdPhiJetK0; //!
227 TH1F* fhdRJetK0; //!
228
229 TH1F* fhdNdptV0; //!
230 TH1F* fhdNdptK0; //!
231 TH2F* fhPtVsEtaK0; //!
232
233 TH1F* fhV0InvMassK0DCA; //!
234 TH1F* fhV0InvMassK0DCAdEdx; //!
235 TH1F* fhV0InvMassK0DCAPID; //!
236 TH1F* fhV0InvMassLambdaDCAdEdx; //!
237 TH1F* fhV0InvMassAntiLambdaDCAdEdx; //!
238 TH1F* fhdNdptK0DCA; //!
239 TH1F* fhdNdptK0DCAdEdx; //!
240
241 TH1F* fhV0InvMassK0Min; //!
242 TH1F* fhV0InvMassLambdaMin; //!
243 TH1F* fhV0InvMassAntiLambdaMin; //!
244
245 TH1F* fhV0InvMassK0Max; //!
246 TH1F* fhV0InvMassLambdaMax; //!
247 TH1F* fhV0InvMassAntiLambdaMax; //!
248
249 TH1F* fhV0InvMassK0Jet; //!
250 TH1F* fhV0InvMassLambdaJet; //!
251 TH1F* fhV0InvMassAntiLambdaJet; //!
252
253 TH1F* fhV0InvMassK0Lambda; //!
254
255 TH1F* fhdNdptK0JetEvt; //!
e2c14c6e 256
257 TH1F* fhdNdzK0; //!
258 TH1F* fhdNdzK05to10; //!
259 TH1F* fhdNdzK010to20; //!
260 TH1F* fhdNdzK020to30; //!
261 TH1F* fhdNdzK030to40; //!
262 TH1F* fhdNdzK040to60; //!
263
9b2de807 264 TH1F* fhdNdxiK0; //!
265
e2c14c6e 266 TH1F* fhdNdzLambda; //!
267 TH1F* fhdNdzAntiLambda; //!
268
9b2de807 269 TH1F* fhdNdzK0Max; //!
270 TH1F* fhdNdxiK0Max; //!
271 TH1F* fhdNdzLambdaMax; //!
272 TH1F* fhdNdxiLambdaMax; //!
273
274 TH1F* fhdNdptK0Max; //!
275 TH1F* fhdNdptLambdaMax; //!
276
277 TH1F* fhdNdzK0Min; //!
278 TH1F* fhdNdxiK0Min; //!
279 TH1F* fhdNdzLambdaMin; //!
280 TH1F* fhdNdxiLambdaMin; //!
281
282 TH1F* fhdNdptK0Min; //!
283 TH1F* fhdNdptLambdaMin; //!
284
285 TH1F* fhdNdzK0Jet; //!
286 TH1F* fhdNdxiK0Jet; //!
287 TH1F* fhdNdzLambdaJet; //!
288 TH1F* fhdNdxiLambdaJet; //!
289
290 TH1F* fhdNdptK0Jet; //!
291 TH1F* fhdNdptLambdaJet; //!
292
293 TH2F* fhdEdxVsMomV0; //!
294 TH2F* fhdEdxVsMomV0pidEdx; //!
295 TH2F* fhdEdxVsMomV0piPID; //!
296
297 TH1F* fhdPhiJetK0MC; //!
298 TH1F* fhdRJetK0MC; //!
e2c14c6e 299 TH1F* fhdRV0MC; //!
9b2de807 300
e2c14c6e 301 TH1F* fhdNdptchPiMCMax; //!
302 TH1F* fhdNdptK0MCMax; //!
303 TH1F* fhdNdptchKMCMax; //!
304 TH1F* fhdNdptpMCMax; //!
305 TH1F* fhdNdptpBarMCMax; //!
306 TH1F* fhdNdptLambdaMCMax; //!
307 TH1F* fhdNdptLambdaBarMCMax; //!
9b2de807 308
309 TH1F* fhdNdptchPiMCMin; //!
e2c14c6e 310 TH1F* fhdNdptK0MCMin; //!
9b2de807 311 TH1F* fhdNdptchKMCMin; //!
312 TH1F* fhdNdptpMCMin; //!
313 TH1F* fhdNdptpBarMCMin; //!
e2c14c6e 314 TH1F* fhdNdptLambdaMCMin; //!
315 TH1F* fhdNdptLambdaBarMCMin; //!
316 TH1F* fhdNdptOmegaMCMin; //!
317 TH1F* fhdNdptOmegaBarMCMin; //!
9b2de807 318
9b2de807 319 TH1F* fhdNdptchPiMCJet; //!
e2c14c6e 320 TH1F* fhdNdptK0MCJet; //!
9b2de807 321 TH1F* fhdNdptchKMCJet; //!
322 TH1F* fhdNdptpMCJet; //!
323 TH1F* fhdNdptpBarMCJet; //!
e2c14c6e 324 TH1F* fhdNdptLambdaMCJet; //!
325 TH1F* fhdNdptLambdaBarMCJet; //!
326
9b2de807 327
328 // kine tree
329 TH1F* fhPIDMC; //!
e2c14c6e 330 TH1F* fhPIDMC_quarkEv; //!
331 TH1F* fhPIDMC_gluonEv; //!
9b2de807 332 TH1F* fhPIDMCAll; //!
333 TH1F* fhPIDMCMin; //!
334 TH1F* fhPIDMCJet; //!
335
e2c14c6e 336 TH1F* fhPIDMCMotherK0; //!
337 TH1F* fhPIDMCGrandMotherK0; //!
338 TH1F* fhPIDMCMotherChK; //!
339 TH1F* fhPIDMCMotherK0Trans; //!
340 TH1F* fhPIDMCGrandMotherK0Trans; //!
341 TH1F* fhPIDMCMotherChKTrans; //!
342
9b2de807 343 TH1F* fhdNdptgammaMC; //!
344 TH1F* fhdNdptchPiMC; //!
345 TH1F* fhdNdptpi0MC; //!
346 TH1F* fhdNdptK0MC; //!
347 TH1F* fhdNdptchKMC; //!
348 TH1F* fhdNdptpMC; //!
349 TH1F* fhdNdptpBarMC; //!
e2c14c6e 350 TH1F* fhdNdptLambdaMC; //!
351 TH1F* fhdNdptLambdaBarMC; //!
9b2de807 352 TH1F* fhdNdptOmegaMC; //!
353 TH1F* fhdNdptOmegaBarMC; //!
354
355 TH1F* fhdNdxiMC; //!
356 TH1F* fhdNdxiK0MC; //!
357 TH1F* fhdNdxiK0MCJet; //!
358
359 TH1F* fhdNdzK0MC; //!
360 TH1F* fhdNdzK0MCJet; //!
361 TH1F* fhdNdptK0MCJetEvt; //!
362
363 TH2F* fhnJetsAODvsMC; //!
364 TH2F* fhLeadingPtAODvsMC; //!
365 TH2F* fhLeadingEtaAODvsMC; //!
366 TH2F* fhLeadingPhiAODvsMC; //!
367 TH2F* fhnTracksLeadingAODvsMC; //!
368
369 TH1F* fhLeadingdRAODMC; //!
370 TH2F* fhLeadingPtAODvsMCdRcut; //!
371 TH2F* fhdnTracksVsdPtLeadingAODMC; //!
372
373 TH2F* fhnTracksJetVsPtAOD; //!
374 TH2F* fhnTracksJetVsPtAODquarkEv; //!
375 TH2F* fhRadiusJetVsPtAOD; //!
376 TH2F* fhnTracksJetVsPtMC; //!
377 TH2F* fhnTracksJetVsPtMCquarkEv; //!
378 TH2F* fhRadiusJetVsPtMC; //!
379
380 TH2F* fhnTracksJetVsPtMCK0; //!
381 TH2F* fhnTracksJetVsPtMCK0quarkEv; //!
382 TH2F* fhRadiusJetVsPtMCK0; //!
383
384 TH2F* fhnTracksJetVsPtAODK0; //!
385 TH2F* fhnTracksJetVsPtAODK0quarkEv; //!
386 TH2F* fhRadiusJetVsPtAODK0; //!
387 TH2F* fhnTracksJetVsPtAODpKch; //!
388 TH2F* fhRadiusJetVsPtAODpKch; //!
389
390 TH1F* fhPythiaProcess; //!
391 TH1F* fhPythiaProcessK0; //!
392 TH1F* fhPythiaProcessKch; //!
393 TH1F* fhPythiaProcessp; //!
394 TH1F* fhPythiaProcesspbar; //!
395
e2c14c6e 396 TH1F* fhdNdzJets5to10; //!
397 TH1F* fhdNdzJets10to20; //!
398 TH1F* fhdNdzJets20to30; //!
399 TH1F* fhdNdzJets30to40; //!
400 TH1F* fhdNdzJets40to60; //!
401
402 TH1F* fhdNdxiJets5to10; //!
403 TH1F* fhdNdxiJets10to20; //!
404 TH1F* fhdNdxiJets20to30; //!
405 TH1F* fhdNdxiJets30to40; //!
406 TH1F* fhdNdxiJets40to60; //!
407
408 TH1F* fhdNdptTracksJetPt5to10; //!
409 TH1F* fhdNdptTracksJetPt10to20; //!
410 TH1F* fhdNdptTracksJetPt20to30; //!
411 TH1F* fhdNdptTracksJetPt30to40; //!
412 TH1F* fhdNdptTracksJetPt40to60; //!
413
414
9b2de807 415 TProfile* fh1Xsec; //!
416 TH1F* fh1Trials; //!
417
418 //TTree* fSettingsTree; //! Fast Settings saving
419
420 TDatabasePDG* fpdgdb; //!
421
422 enum PythiaPIDHistoBin{kPythiaPIDP11Bin=1, kPythiaPIDP12Bin=3, kPythiaPIDP13Bin=5, kPythiaPIDP28Bin=7,
e2c14c6e 423 kPythiaPIDP53Bin=9, kPythiaPIDP68Bin=11, kPythiaPIDP92Bin=13, kPythiaPIDP93Bin=15,
424 kPythiaPIDP94Bin=17,kPythiaPIDP95Bin=19, kPythiaPIDPOtherBin=21};
9b2de807 425
e2c14c6e 426
427 enum PIDHistoBin{kPDGpm311Bin=48,kPDG333Bin=49,kPDGpm313Bin=50,kPDGp323Bin=51,kPDGm323Bin=52,
428 kPDGNeutrinoBin=53,kPDGCharmedBaryonBin=54,kPDGQuarkBin=55,kPDGDiQuarkBin=56};
429
430 ClassDef( AliAnalysisTaskJetChem, 1); // Analysis task for jet chemistry analysis
9b2de807 431 };
432
433#endif
434
435