]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG4/JetTasks/AliAnalysisTaskJetChem.h
updated track cut systematic study
[u/mrichter/AliRoot.git] / PWG4 / JetTasks / AliAnalysisTaskJetChem.h
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; 
16 class AliESDEvent;
17 class AliAODEvent;
18 class TH1F;
19 class TH2F;
20 class TH1I;
21 class TProfile;
22 class TVector3;
23 class TTree;
24 class AliAODJet;
25 class AliAODTrack;
26 class AliPID;
27 class TDatabasePDG;
28
29 class  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;
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);
116
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();
121
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(); 
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 )
176     TH1F*  fhPrimVertexNCont;        //!
177     TH1F*  fhPrimVertexRho;          //!
178     TH1F*  fhPrimVertexZ;            //!
179     TH1F*  fhNJets;                  //!
180     TH1F*  fhNJetsMC;                //!
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;              //!
196
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     TH2F* fhV0PtVsInvMassK0;           //!
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;          //!
236     TH2F* fhV0PtVsInvMassK0DCAdEdx;      //!
237
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;           //!
259
260     TH1F* fhdNdzK0;                   //!
261     TH1F* fhdNdzK05to10;              //!
262     TH1F* fhdNdzK010to20;             //!
263     TH1F* fhdNdzK020to30;             //!
264     TH1F* fhdNdzK030to40;             //!
265     TH1F* fhdNdzK040to60;             //!
266
267     TH1F* fhdNdxiK0;                 //!
268
269     TH1F* fhdNdzLambda;              //!
270     TH1F* fhdNdzAntiLambda;          //!
271
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;               //!
302     TH1F* fhdRV0MC;                  //!
303
304     TH1F* fhdNdptchPiMCMax;               //!
305     TH1F* fhdNdptK0MCMax;                 //!
306     TH1F* fhdNdptchKMCMax;                //!
307     TH1F* fhdNdptpMCMax;                  //!
308     TH1F* fhdNdptpBarMCMax;               //!
309     TH1F* fhdNdptLambdaMCMax;             //!
310     TH1F* fhdNdptLambdaBarMCMax;          //!
311
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;           //!
321
322     TH1F* fhdNdptchPiMCJet;               //!
323     TH1F* fhdNdptK0MCJet;                 //!
324     TH1F* fhdNdptchKMCJet;                //!
325     TH1F* fhdNdptpMCJet;                  //!
326     TH1F* fhdNdptpBarMCJet;               //!
327     TH1F* fhdNdptLambdaMCJet;             //!
328     TH1F* fhdNdptLambdaBarMCJet;          //!
329
330
331     // kine tree 
332     TH1F* fhPIDMC;                    //!
333     TH1F* fhPIDMC_quarkEv;            //!
334     TH1F* fhPIDMC_gluonEv;            //!
335     TH1F* fhPIDMCAll;                 //!
336     TH1F* fhPIDMCMin;                 //!
337     TH1F* fhPIDMCJet;                 //!
338  
339     TH1F* fhPIDMCMotherK0;            //!
340     TH1F* fhPIDMCGrandMotherK0;       //!
341     TH1F* fhPIDMCMotherChK;           //!
342     TH1F* fhPIDMCMotherK0Trans;       //!
343     TH1F* fhPIDMCGrandMotherK0Trans;  //!
344     TH1F* fhPIDMCMotherChKTrans;      //!
345
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;          //!
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
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
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, 
426                            kPythiaPIDP53Bin=9, kPythiaPIDP68Bin=11, kPythiaPIDP92Bin=13, kPythiaPIDP93Bin=15, 
427                            kPythiaPIDP94Bin=17,kPythiaPIDP95Bin=19, kPythiaPIDPOtherBin=21}; 
428
429
430     enum PIDHistoBin{kPDGpm311Bin=48,kPDG333Bin=49,kPDGpm313Bin=50,kPDGp323Bin=51,kPDGm323Bin=52,
431                      kPDGNeutrinoBin=53,kPDGCharmedBaryonBin=54,kPDGQuarkBin=55,kPDGDiQuarkBin=56};
432    
433     ClassDef( AliAnalysisTaskJetChem, 2); // Analysis task for jet chemistry analysis 
434   };
435
436 #endif
437
438