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
6 #ifndef ALIANALYSISTASKJETCHEM_H
7 #define ALIANALYSISTASKJETCHEM_H
9 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
10 * See cxx source for full Copyright notice */
12 #include "AliAnalysisTaskSE.h"
15 //class AliAnalysisTaskSE;
29 class AliAnalysisTaskJetChem : public AliAnalysisTaskSE
32 AliAnalysisTaskJetChem(const char* name="AliAnalysisTaskJetChem");
33 virtual ~AliAnalysisTaskJetChem() {;}
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 *);
42 virtual void SetDebugLevel( Int_t level ) { fDebug = level; }
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; }
51 void SetJetsOnFly( Bool_t val ) { fJetsOnFly = val; }
53 // use internal jet finder
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; }
61 void SetFilterBitJF( UInt_t val ) { fFilterBitJF = val; }
62 void SetRequireITSRefitJF() { fRequireITSRefitJF = kTRUE; }
63 void SetRejectK0TracksJF() { fRejectK0TracksJF = kTRUE; }
66 void SetJetPtCut( Double_t val ) { fJetPtCut = val; }
67 void SetJetEtaCut( Double_t val ) { fJetEtaCut = val; }
70 void SetFilterBit( UInt_t val ) { fFilterBit = val; }
71 void SetTrackPtCut( Double_t val ) { fTrackPtCut = val; }
72 void SetTrackEtaCut( Double_t val ) { fTrackEtaCut = val; }
76 void SetUseOnFlyV0s() { fUseOnFlyV0s = kTRUE; }
77 void SetCutnSigdEdx( Double_t val) { fCutnSigdEdx = val; }
81 void SetUseAODMCTracksForUE(){ fUseAODMCTracksForUE = kTRUE;}
85 AliAnalysisTaskJetChem(const AliAnalysisTaskJetChem &det);
86 AliAnalysisTaskJetChem& operator=(const AliAnalysisTaskJetChem &det);
89 Int_t IsTrackInsideRegion(const AliAODJet* aodjetVect, const TVector3 *partVect);
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);
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();
104 Bool_t IsK0InvMass(const Double_t mass) const;
105 Bool_t IsLambdaInvMass(const Double_t mass) const;
106 Bool_t IsAcceptedDCAK0(/*const Double_t dca*/) const;
107 Bool_t IsAcceptedDCALambda(/*const Double_t dca*/) const;
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);
117 Bool_t IsQuarkHardScatteringEvent(const Int_t PID);
118 Bool_t IsGluonHardScatteringEvent(const Int_t PID);
119 Bool_t IsDiffractiveEvent(const Int_t PID);
120 Int_t GetPythiaProcessID();
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();
127 Int_t fDebug; // Debug flag
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
135 TClonesArray* fArrayJetsAOD; // Array of AOD Jets from delta AOD
136 TClonesArray* fArrayJetsMC; // Array of MC Jets from delta AOD
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
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
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
156 Double_t fJetPtCut; // Min Pt for charged Particle Jet
157 Double_t fJetEtaCut; // |jet1 eta| < fJet1EtaCut (fAnaType = 1,2,3)
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)
165 Bool_t fUseOnFlyV0s; // on-the-fly V0s versus vertex track 'offline' V0s
166 Double_t fCutnSigdEdx; // TPC dEdx cut
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
175 // Histograms ( are owned by fListOfHistos TList )
176 TH1F* fhPrimVertexNCont; //!
177 TH1F* fhPrimVertexRho; //!
178 TH1F* fhPrimVertexZ; //!
181 TH1F* fhLeadingEta; //!
182 TH2F* fhLeadingNTracksVsEta; //!
183 TH2F* fhLeadingPtVsEta; //!
184 TH1F* fhLeadingPhi; //!
185 TH1F* fhLeadingPt; //!
186 TH1F* fhLeadingPtDiffr; //!
187 TH1F* fhLeadingEtaMC; //!
188 TH1F* fhLeadingPhiMC; //!
189 TH1F* fhLeadingPtMC; //!
190 TH1F* fhLeadingPtMCDiffr; //!
191 TH2F* fhPhiEtaTracksNoCut; //!
192 TH1F* fhPtTracksNoCut; //!
193 TH2F* fhPhiEtaTracks; //!
194 TH1F* fhPtTracks; //!
195 TH1F* fhTrackMult; //!
197 TH1F* fhEtaMCTracks; //!
198 TH1F* fhPhiMCTracks; //!
199 TH1F* fhPtMCTracks; //!
200 TH2F* fhnTracksVsPtLeading; //!
202 TH1F* fhdNdEtaPhiDist; //!
204 TH1F* fhRegionSumPtMaxVsEt; //!
205 TH1F* fhRegionMultMaxVsEt; //!
206 TH1F* fhRegionSumPtMinVsEt; //!
207 TH1F* fhRegionMultMinVsEt; //!
212 TH1F* fhV0DCADaughters; //!
213 TH1F* fhV0Radius; //!
214 TH1F* fhV0DCAToVertex; //!
215 TH1F* fhV0DCAToVertexK0; //!
217 TH1F* fhV0InvMassK0; //!
218 TH2F* fhV0PtVsInvMassK0; //!
219 TH1F* fhV0InvMassK0JetEvt; //!
220 TH1F* fhV0InvMassLambda; //!
221 TH1F* fhV0InvMassAntiLambda; //!
222 TH1F* fhV0InvMassLambdaJetEvt; //!
223 TH1F* fhV0InvMassAntiLambdaJetEvt; //!
225 TH2F* fhdROpanK0VsPt; //!
226 TH1F* fhdPhiJetV0; //!
227 TH1F* fhdPhiJetK0; //!
232 TH2F* fhPtVsEtaK0; //!
234 TH1F* fhV0InvMassK0DCA; //!
235 TH1F* fhV0InvMassK0DCAdEdx; //!
236 TH2F* fhV0PtVsInvMassK0DCAdEdx; //!
238 TH1F* fhV0InvMassK0DCAPID; //!
239 TH1F* fhV0InvMassLambdaDCAdEdx; //!
240 TH1F* fhV0InvMassAntiLambdaDCAdEdx; //!
241 TH1F* fhdNdptK0DCA; //!
242 TH1F* fhdNdptK0DCAdEdx; //!
244 TH1F* fhV0InvMassK0Min; //!
245 TH1F* fhV0InvMassLambdaMin; //!
246 TH1F* fhV0InvMassAntiLambdaMin; //!
248 TH1F* fhV0InvMassK0Max; //!
249 TH1F* fhV0InvMassLambdaMax; //!
250 TH1F* fhV0InvMassAntiLambdaMax; //!
252 TH1F* fhV0InvMassK0Jet; //!
253 TH1F* fhV0InvMassLambdaJet; //!
254 TH1F* fhV0InvMassAntiLambdaJet; //!
256 TH1F* fhV0InvMassK0Lambda; //!
258 TH1F* fhdNdptK0JetEvt; //!
261 TH1F* fhdNdzK05to10; //!
262 TH1F* fhdNdzK010to20; //!
263 TH1F* fhdNdzK020to30; //!
264 TH1F* fhdNdzK030to40; //!
265 TH1F* fhdNdzK040to60; //!
269 TH1F* fhdNdzLambda; //!
270 TH1F* fhdNdzAntiLambda; //!
272 TH1F* fhdNdzK0Max; //!
273 TH1F* fhdNdxiK0Max; //!
274 TH1F* fhdNdzLambdaMax; //!
275 TH1F* fhdNdxiLambdaMax; //!
277 TH1F* fhdNdptK0Max; //!
278 TH1F* fhdNdptLambdaMax; //!
280 TH1F* fhdNdzK0Min; //!
281 TH1F* fhdNdxiK0Min; //!
282 TH1F* fhdNdzLambdaMin; //!
283 TH1F* fhdNdxiLambdaMin; //!
285 TH1F* fhdNdptK0Min; //!
286 TH1F* fhdNdptLambdaMin; //!
288 TH1F* fhdNdzK0Jet; //!
289 TH1F* fhdNdxiK0Jet; //!
290 TH1F* fhdNdzLambdaJet; //!
291 TH1F* fhdNdxiLambdaJet; //!
293 TH1F* fhdNdptK0Jet; //!
294 TH1F* fhdNdptLambdaJet; //!
296 TH2F* fhdEdxVsMomV0; //!
297 TH2F* fhdEdxVsMomV0pidEdx; //!
298 TH2F* fhdEdxVsMomV0piPID; //!
300 TH1F* fhdPhiJetK0MC; //!
301 TH1F* fhdRJetK0MC; //!
304 TH1F* fhdNdptchPiMCMax; //!
305 TH1F* fhdNdptK0MCMax; //!
306 TH1F* fhdNdptchKMCMax; //!
307 TH1F* fhdNdptpMCMax; //!
308 TH1F* fhdNdptpBarMCMax; //!
309 TH1F* fhdNdptLambdaMCMax; //!
310 TH1F* fhdNdptLambdaBarMCMax; //!
312 TH1F* fhdNdptchPiMCMin; //!
313 TH1F* fhdNdptK0MCMin; //!
314 TH1F* fhdNdptchKMCMin; //!
315 TH1F* fhdNdptpMCMin; //!
316 TH1F* fhdNdptpBarMCMin; //!
317 TH1F* fhdNdptLambdaMCMin; //!
318 TH1F* fhdNdptLambdaBarMCMin; //!
319 TH1F* fhdNdptOmegaMCMin; //!
320 TH1F* fhdNdptOmegaBarMCMin; //!
322 TH1F* fhdNdptchPiMCJet; //!
323 TH1F* fhdNdptK0MCJet; //!
324 TH1F* fhdNdptchKMCJet; //!
325 TH1F* fhdNdptpMCJet; //!
326 TH1F* fhdNdptpBarMCJet; //!
327 TH1F* fhdNdptLambdaMCJet; //!
328 TH1F* fhdNdptLambdaBarMCJet; //!
333 TH1F* fhPIDMC_quarkEv; //!
334 TH1F* fhPIDMC_gluonEv; //!
335 TH1F* fhPIDMCAll; //!
336 TH1F* fhPIDMCMin; //!
337 TH1F* fhPIDMCJet; //!
339 TH1F* fhPIDMCMotherK0; //!
340 TH1F* fhPIDMCGrandMotherK0; //!
341 TH1F* fhPIDMCMotherChK; //!
342 TH1F* fhPIDMCMotherK0Trans; //!
343 TH1F* fhPIDMCGrandMotherK0Trans; //!
344 TH1F* fhPIDMCMotherChKTrans; //!
346 TH1F* fhdNdptgammaMC; //!
347 TH1F* fhdNdptchPiMC; //!
348 TH1F* fhdNdptpi0MC; //!
349 TH1F* fhdNdptK0MC; //!
350 TH1F* fhdNdptchKMC; //!
351 TH1F* fhdNdptpMC; //!
352 TH1F* fhdNdptpBarMC; //!
353 TH1F* fhdNdptLambdaMC; //!
354 TH1F* fhdNdptLambdaBarMC; //!
355 TH1F* fhdNdptOmegaMC; //!
356 TH1F* fhdNdptOmegaBarMC; //!
359 TH1F* fhdNdxiK0MC; //!
360 TH1F* fhdNdxiK0MCJet; //!
362 TH1F* fhdNdzK0MC; //!
363 TH1F* fhdNdzK0MCJet; //!
364 TH1F* fhdNdptK0MCJetEvt; //!
366 TH2F* fhnJetsAODvsMC; //!
367 TH2F* fhLeadingPtAODvsMC; //!
368 TH2F* fhLeadingEtaAODvsMC; //!
369 TH2F* fhLeadingPhiAODvsMC; //!
370 TH2F* fhnTracksLeadingAODvsMC; //!
372 TH1F* fhLeadingdRAODMC; //!
373 TH2F* fhLeadingPtAODvsMCdRcut; //!
374 TH2F* fhdnTracksVsdPtLeadingAODMC; //!
376 TH2F* fhnTracksJetVsPtAOD; //!
377 TH2F* fhnTracksJetVsPtAODquarkEv; //!
378 TH2F* fhRadiusJetVsPtAOD; //!
379 TH2F* fhnTracksJetVsPtMC; //!
380 TH2F* fhnTracksJetVsPtMCquarkEv; //!
381 TH2F* fhRadiusJetVsPtMC; //!
383 TH2F* fhnTracksJetVsPtMCK0; //!
384 TH2F* fhnTracksJetVsPtMCK0quarkEv; //!
385 TH2F* fhRadiusJetVsPtMCK0; //!
387 TH2F* fhnTracksJetVsPtAODK0; //!
388 TH2F* fhnTracksJetVsPtAODK0quarkEv; //!
389 TH2F* fhRadiusJetVsPtAODK0; //!
390 TH2F* fhnTracksJetVsPtAODpKch; //!
391 TH2F* fhRadiusJetVsPtAODpKch; //!
393 TH1F* fhPythiaProcess; //!
394 TH1F* fhPythiaProcessK0; //!
395 TH1F* fhPythiaProcessKch; //!
396 TH1F* fhPythiaProcessp; //!
397 TH1F* fhPythiaProcesspbar; //!
399 TH1F* fhdNdzJets5to10; //!
400 TH1F* fhdNdzJets10to20; //!
401 TH1F* fhdNdzJets20to30; //!
402 TH1F* fhdNdzJets30to40; //!
403 TH1F* fhdNdzJets40to60; //!
405 TH1F* fhdNdxiJets5to10; //!
406 TH1F* fhdNdxiJets10to20; //!
407 TH1F* fhdNdxiJets20to30; //!
408 TH1F* fhdNdxiJets30to40; //!
409 TH1F* fhdNdxiJets40to60; //!
411 TH1F* fhdNdptTracksJetPt5to10; //!
412 TH1F* fhdNdptTracksJetPt10to20; //!
413 TH1F* fhdNdptTracksJetPt20to30; //!
414 TH1F* fhdNdptTracksJetPt30to40; //!
415 TH1F* fhdNdptTracksJetPt40to60; //!
418 TProfile* fh1Xsec; //!
421 //TTree* fSettingsTree; //! Fast Settings saving
423 TDatabasePDG* fpdgdb; //!
425 enum PythiaPIDHistoBin{kPythiaPIDP11Bin=1, kPythiaPIDP12Bin=3, kPythiaPIDP13Bin=5, kPythiaPIDP28Bin=7,
426 kPythiaPIDP53Bin=9, kPythiaPIDP68Bin=11, kPythiaPIDP92Bin=13, kPythiaPIDP93Bin=15,
427 kPythiaPIDP94Bin=17,kPythiaPIDP95Bin=19, kPythiaPIDPOtherBin=21};
430 enum PIDHistoBin{kPDGpm311Bin=48,kPDG333Bin=49,kPDGpm313Bin=50,kPDGp323Bin=51,kPDGm323Bin=52,
431 kPDGNeutrinoBin=53,kPDGCharmedBaryonBin=54,kPDGQuarkBin=55,kPDGDiQuarkBin=56};
433 ClassDef( AliAnalysisTaskJetChem, 2); // Analysis task for jet chemistry analysis