]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG4/JetTasks/AliAnalysisTaskJetChem.h
updated track cut systematic study
[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; //!
fb72ed5f 218 TH2F* fhV0PtVsInvMassK0; //!
9b2de807 219 TH1F* fhV0InvMassK0JetEvt; //!
220 TH1F* fhV0InvMassLambda; //!
221 TH1F* fhV0InvMassAntiLambda; //!
222 TH1F* fhV0InvMassLambdaJetEvt; //!
223 TH1F* fhV0InvMassAntiLambdaJetEvt; //!
224
225 TH2F* fhdROpanK0VsPt; //!
226 TH1F* fhdPhiJetV0; //!
227 TH1F* fhdPhiJetK0; //!
228 TH1F* fhdRJetK0; //!
229
230 TH1F* fhdNdptV0; //!
231 TH1F* fhdNdptK0; //!
232 TH2F* fhPtVsEtaK0; //!
233
234 TH1F* fhV0InvMassK0DCA; //!
235 TH1F* fhV0InvMassK0DCAdEdx; //!
fb72ed5f 236 TH2F* fhV0PtVsInvMassK0DCAdEdx; //!
237
9b2de807 238 TH1F* fhV0InvMassK0DCAPID; //!
239 TH1F* fhV0InvMassLambdaDCAdEdx; //!
240 TH1F* fhV0InvMassAntiLambdaDCAdEdx; //!
241 TH1F* fhdNdptK0DCA; //!
242 TH1F* fhdNdptK0DCAdEdx; //!
243
244 TH1F* fhV0InvMassK0Min; //!
245 TH1F* fhV0InvMassLambdaMin; //!
246 TH1F* fhV0InvMassAntiLambdaMin; //!
247
248 TH1F* fhV0InvMassK0Max; //!
249 TH1F* fhV0InvMassLambdaMax; //!
250 TH1F* fhV0InvMassAntiLambdaMax; //!
251
252 TH1F* fhV0InvMassK0Jet; //!
253 TH1F* fhV0InvMassLambdaJet; //!
254 TH1F* fhV0InvMassAntiLambdaJet; //!
255
256 TH1F* fhV0InvMassK0Lambda; //!
257
258 TH1F* fhdNdptK0JetEvt; //!
e2c14c6e 259
260 TH1F* fhdNdzK0; //!
261 TH1F* fhdNdzK05to10; //!
262 TH1F* fhdNdzK010to20; //!
263 TH1F* fhdNdzK020to30; //!
264 TH1F* fhdNdzK030to40; //!
265 TH1F* fhdNdzK040to60; //!
266
9b2de807 267 TH1F* fhdNdxiK0; //!
268
e2c14c6e 269 TH1F* fhdNdzLambda; //!
270 TH1F* fhdNdzAntiLambda; //!
271
9b2de807 272 TH1F* fhdNdzK0Max; //!
273 TH1F* fhdNdxiK0Max; //!
274 TH1F* fhdNdzLambdaMax; //!
275 TH1F* fhdNdxiLambdaMax; //!
276
277 TH1F* fhdNdptK0Max; //!
278 TH1F* fhdNdptLambdaMax; //!
279
280 TH1F* fhdNdzK0Min; //!
281 TH1F* fhdNdxiK0Min; //!
282 TH1F* fhdNdzLambdaMin; //!
283 TH1F* fhdNdxiLambdaMin; //!
284
285 TH1F* fhdNdptK0Min; //!
286 TH1F* fhdNdptLambdaMin; //!
287
288 TH1F* fhdNdzK0Jet; //!
289 TH1F* fhdNdxiK0Jet; //!
290 TH1F* fhdNdzLambdaJet; //!
291 TH1F* fhdNdxiLambdaJet; //!
292
293 TH1F* fhdNdptK0Jet; //!
294 TH1F* fhdNdptLambdaJet; //!
295
296 TH2F* fhdEdxVsMomV0; //!
297 TH2F* fhdEdxVsMomV0pidEdx; //!
298 TH2F* fhdEdxVsMomV0piPID; //!
299
300 TH1F* fhdPhiJetK0MC; //!
301 TH1F* fhdRJetK0MC; //!
e2c14c6e 302 TH1F* fhdRV0MC; //!
9b2de807 303
e2c14c6e 304 TH1F* fhdNdptchPiMCMax; //!
305 TH1F* fhdNdptK0MCMax; //!
306 TH1F* fhdNdptchKMCMax; //!
307 TH1F* fhdNdptpMCMax; //!
308 TH1F* fhdNdptpBarMCMax; //!
309 TH1F* fhdNdptLambdaMCMax; //!
310 TH1F* fhdNdptLambdaBarMCMax; //!
9b2de807 311
312 TH1F* fhdNdptchPiMCMin; //!
e2c14c6e 313 TH1F* fhdNdptK0MCMin; //!
9b2de807 314 TH1F* fhdNdptchKMCMin; //!
315 TH1F* fhdNdptpMCMin; //!
316 TH1F* fhdNdptpBarMCMin; //!
e2c14c6e 317 TH1F* fhdNdptLambdaMCMin; //!
318 TH1F* fhdNdptLambdaBarMCMin; //!
319 TH1F* fhdNdptOmegaMCMin; //!
320 TH1F* fhdNdptOmegaBarMCMin; //!
9b2de807 321
9b2de807 322 TH1F* fhdNdptchPiMCJet; //!
e2c14c6e 323 TH1F* fhdNdptK0MCJet; //!
9b2de807 324 TH1F* fhdNdptchKMCJet; //!
325 TH1F* fhdNdptpMCJet; //!
326 TH1F* fhdNdptpBarMCJet; //!
e2c14c6e 327 TH1F* fhdNdptLambdaMCJet; //!
328 TH1F* fhdNdptLambdaBarMCJet; //!
329
9b2de807 330
331 // kine tree
332 TH1F* fhPIDMC; //!
e2c14c6e 333 TH1F* fhPIDMC_quarkEv; //!
334 TH1F* fhPIDMC_gluonEv; //!
9b2de807 335 TH1F* fhPIDMCAll; //!
336 TH1F* fhPIDMCMin; //!
337 TH1F* fhPIDMCJet; //!
338
e2c14c6e 339 TH1F* fhPIDMCMotherK0; //!
340 TH1F* fhPIDMCGrandMotherK0; //!
341 TH1F* fhPIDMCMotherChK; //!
342 TH1F* fhPIDMCMotherK0Trans; //!
343 TH1F* fhPIDMCGrandMotherK0Trans; //!
344 TH1F* fhPIDMCMotherChKTrans; //!
345
9b2de807 346 TH1F* fhdNdptgammaMC; //!
347 TH1F* fhdNdptchPiMC; //!
348 TH1F* fhdNdptpi0MC; //!
349 TH1F* fhdNdptK0MC; //!
350 TH1F* fhdNdptchKMC; //!
351 TH1F* fhdNdptpMC; //!
352 TH1F* fhdNdptpBarMC; //!
e2c14c6e 353 TH1F* fhdNdptLambdaMC; //!
354 TH1F* fhdNdptLambdaBarMC; //!
9b2de807 355 TH1F* fhdNdptOmegaMC; //!
356 TH1F* fhdNdptOmegaBarMC; //!
357
358 TH1F* fhdNdxiMC; //!
359 TH1F* fhdNdxiK0MC; //!
360 TH1F* fhdNdxiK0MCJet; //!
361
362 TH1F* fhdNdzK0MC; //!
363 TH1F* fhdNdzK0MCJet; //!
364 TH1F* fhdNdptK0MCJetEvt; //!
365
366 TH2F* fhnJetsAODvsMC; //!
367 TH2F* fhLeadingPtAODvsMC; //!
368 TH2F* fhLeadingEtaAODvsMC; //!
369 TH2F* fhLeadingPhiAODvsMC; //!
370 TH2F* fhnTracksLeadingAODvsMC; //!
371
372 TH1F* fhLeadingdRAODMC; //!
373 TH2F* fhLeadingPtAODvsMCdRcut; //!
374 TH2F* fhdnTracksVsdPtLeadingAODMC; //!
375
376 TH2F* fhnTracksJetVsPtAOD; //!
377 TH2F* fhnTracksJetVsPtAODquarkEv; //!
378 TH2F* fhRadiusJetVsPtAOD; //!
379 TH2F* fhnTracksJetVsPtMC; //!
380 TH2F* fhnTracksJetVsPtMCquarkEv; //!
381 TH2F* fhRadiusJetVsPtMC; //!
382
383 TH2F* fhnTracksJetVsPtMCK0; //!
384 TH2F* fhnTracksJetVsPtMCK0quarkEv; //!
385 TH2F* fhRadiusJetVsPtMCK0; //!
386
387 TH2F* fhnTracksJetVsPtAODK0; //!
388 TH2F* fhnTracksJetVsPtAODK0quarkEv; //!
389 TH2F* fhRadiusJetVsPtAODK0; //!
390 TH2F* fhnTracksJetVsPtAODpKch; //!
391 TH2F* fhRadiusJetVsPtAODpKch; //!
392
393 TH1F* fhPythiaProcess; //!
394 TH1F* fhPythiaProcessK0; //!
395 TH1F* fhPythiaProcessKch; //!
396 TH1F* fhPythiaProcessp; //!
397 TH1F* fhPythiaProcesspbar; //!
398
e2c14c6e 399 TH1F* fhdNdzJets5to10; //!
400 TH1F* fhdNdzJets10to20; //!
401 TH1F* fhdNdzJets20to30; //!
402 TH1F* fhdNdzJets30to40; //!
403 TH1F* fhdNdzJets40to60; //!
404
405 TH1F* fhdNdxiJets5to10; //!
406 TH1F* fhdNdxiJets10to20; //!
407 TH1F* fhdNdxiJets20to30; //!
408 TH1F* fhdNdxiJets30to40; //!
409 TH1F* fhdNdxiJets40to60; //!
410
411 TH1F* fhdNdptTracksJetPt5to10; //!
412 TH1F* fhdNdptTracksJetPt10to20; //!
413 TH1F* fhdNdptTracksJetPt20to30; //!
414 TH1F* fhdNdptTracksJetPt30to40; //!
415 TH1F* fhdNdptTracksJetPt40to60; //!
416
417
9b2de807 418 TProfile* fh1Xsec; //!
419 TH1F* fh1Trials; //!
420
421 //TTree* fSettingsTree; //! Fast Settings saving
422
423 TDatabasePDG* fpdgdb; //!
424
425 enum PythiaPIDHistoBin{kPythiaPIDP11Bin=1, kPythiaPIDP12Bin=3, kPythiaPIDP13Bin=5, kPythiaPIDP28Bin=7,
e2c14c6e 426 kPythiaPIDP53Bin=9, kPythiaPIDP68Bin=11, kPythiaPIDP92Bin=13, kPythiaPIDP93Bin=15,
427 kPythiaPIDP94Bin=17,kPythiaPIDP95Bin=19, kPythiaPIDPOtherBin=21};
9b2de807 428
e2c14c6e 429
430 enum PIDHistoBin{kPDGpm311Bin=48,kPDG333Bin=49,kPDGpm313Bin=50,kPDGp323Bin=51,kPDGm323Bin=52,
431 kPDGNeutrinoBin=53,kPDGCharmedBaryonBin=54,kPDGQuarkBin=55,kPDGDiQuarkBin=56};
432
fb72ed5f 433 ClassDef( AliAnalysisTaskJetChem, 2); // Analysis task for jet chemistry analysis
9b2de807 434 };
435
436#endif
437
438