]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG4/JetTasks/AliAnalysisTaskJetChem.h
Adding some histograms for jet shape
[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     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;           //!
256
257     TH1F* fhdNdzK0;                   //!
258     TH1F* fhdNdzK05to10;              //!
259     TH1F* fhdNdzK010to20;             //!
260     TH1F* fhdNdzK020to30;             //!
261     TH1F* fhdNdzK030to40;             //!
262     TH1F* fhdNdzK040to60;             //!
263
264     TH1F* fhdNdxiK0;                 //!
265
266     TH1F* fhdNdzLambda;              //!
267     TH1F* fhdNdzAntiLambda;          //!
268
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;               //!
299     TH1F* fhdRV0MC;                  //!
300
301     TH1F* fhdNdptchPiMCMax;               //!
302     TH1F* fhdNdptK0MCMax;                 //!
303     TH1F* fhdNdptchKMCMax;                //!
304     TH1F* fhdNdptpMCMax;                  //!
305     TH1F* fhdNdptpBarMCMax;               //!
306     TH1F* fhdNdptLambdaMCMax;             //!
307     TH1F* fhdNdptLambdaBarMCMax;          //!
308
309     TH1F* fhdNdptchPiMCMin;               //!
310     TH1F* fhdNdptK0MCMin;                 //!
311     TH1F* fhdNdptchKMCMin;                //!
312     TH1F* fhdNdptpMCMin;                  //!
313     TH1F* fhdNdptpBarMCMin;               //!
314     TH1F* fhdNdptLambdaMCMin;             //!
315     TH1F* fhdNdptLambdaBarMCMin;          //!
316     TH1F* fhdNdptOmegaMCMin;              //!
317     TH1F* fhdNdptOmegaBarMCMin;           //!
318
319     TH1F* fhdNdptchPiMCJet;               //!
320     TH1F* fhdNdptK0MCJet;                 //!
321     TH1F* fhdNdptchKMCJet;                //!
322     TH1F* fhdNdptpMCJet;                  //!
323     TH1F* fhdNdptpBarMCJet;               //!
324     TH1F* fhdNdptLambdaMCJet;             //!
325     TH1F* fhdNdptLambdaBarMCJet;          //!
326
327
328     // kine tree 
329     TH1F* fhPIDMC;                    //!
330     TH1F* fhPIDMC_quarkEv;            //!
331     TH1F* fhPIDMC_gluonEv;            //!
332     TH1F* fhPIDMCAll;                 //!
333     TH1F* fhPIDMCMin;                 //!
334     TH1F* fhPIDMCJet;                 //!
335  
336     TH1F* fhPIDMCMotherK0;            //!
337     TH1F* fhPIDMCGrandMotherK0;       //!
338     TH1F* fhPIDMCMotherChK;           //!
339     TH1F* fhPIDMCMotherK0Trans;       //!
340     TH1F* fhPIDMCGrandMotherK0Trans;  //!
341     TH1F* fhPIDMCMotherChKTrans;      //!
342
343     TH1F* fhdNdptgammaMC;             //!
344     TH1F* fhdNdptchPiMC;              //!
345     TH1F* fhdNdptpi0MC;               //!
346     TH1F* fhdNdptK0MC;                //!
347     TH1F* fhdNdptchKMC;               //!
348     TH1F* fhdNdptpMC;                 //!
349     TH1F* fhdNdptpBarMC;              //!
350     TH1F* fhdNdptLambdaMC;            //!
351     TH1F* fhdNdptLambdaBarMC;         //!
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
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
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, 
423                            kPythiaPIDP53Bin=9, kPythiaPIDP68Bin=11, kPythiaPIDP92Bin=13, kPythiaPIDP93Bin=15, 
424                            kPythiaPIDP94Bin=17,kPythiaPIDP95Bin=19, kPythiaPIDPOtherBin=21}; 
425
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 
431   };
432
433 #endif
434
435