Updated treatment of TOF PID in QA task (Francesco+Pietro)
[u/mrichter/AliRoot.git] / PWGJE / AliAnalysisTaskJetChem.h
1 /*************************************************************************
2  *                                                                       *
3  * Task for Jet Chemistry Analysis in PWG4 Jet Task Force Train          *
4  *                                                                       *
5  *                                                                       *
6  * contact: Oliver Busch                                                 *
7  * o.busch@gsi.de                                                        *
8  *                                                                       *
9  *************************************************************************/
10
11 #ifndef ALIANALYSISTASKJETCHEM_H
12 #define ALIANALYSISTASKJETCHEM_H
13
14 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
15  * See cxx source for full Copyright notice                               */
16
17 /* $Id$ */
18
19 #include "AliAnalysisTaskFragmentationFunction.h"
20 #include "AliPID.h"
21
22 class AliAnalysisTaskJetChem : public AliAnalysisTaskFragmentationFunction {
23
24  public:
25   
26   //----------------------------------------
27   class AliFragFuncHistosInvMass : public TObject
28   {
29     
30     public:
31     
32     AliFragFuncHistosInvMass(const char* name = "FFIMhistos", 
33                              Int_t nJetPt = 0, Float_t jetPtMin = 0, Float_t jetPtMax = 0,
34                              Int_t nInvMass = 0, Float_t invMassMin=0, Float_t invMassMax=0,  
35                              Int_t nPt = 0, Float_t ptMin = 0, Float_t ptMax = 0,
36                              Int_t nXi = 0, Float_t xiMin = 0, Float_t xiMax = 0,
37                              Int_t nZ  = 0, Float_t zMin  = 0, Float_t zMax  = 0);
38     AliFragFuncHistosInvMass(const AliFragFuncHistosInvMass& copy);
39     AliFragFuncHistosInvMass& operator=(const AliFragFuncHistosInvMass &o);
40     virtual ~AliFragFuncHistosInvMass();
41     
42     virtual void DefineHistos();
43     virtual void FillFF(Float_t trackPt, Float_t invM, Float_t jetPt,Bool_t incrementJetPt);
44     virtual void AddToOutput(TList* list) const;
45
46   private:
47
48     Int_t   fNBinsJetPt;    // FF histos bins
49     Float_t fJetPtMin;      // FF histos limits
50     Float_t fJetPtMax;      // FF histos limits
51     Int_t   fNBinsInvMass;  // FF histos bins
52     Float_t fInvMassMin;    // FF histos limits
53     Float_t fInvMassMax;    // FF histos limits
54     Int_t   fNBinsPt;       // FF histos bins
55     Float_t fPtMin;         // FF histos limits
56     Float_t fPtMax;         // FF histos limits
57     Int_t   fNBinsXi;       // FF histos bins
58     Float_t fXiMin;         // FF histos limits
59     Float_t fXiMax;         // FF histos limits
60     Int_t   fNBinsZ;        // FF histos bins
61     Float_t fZMin;          // FF histos limits
62     Float_t fZMax;          // FF histos limits
63   
64     TH3F*   fh3TrackPt;     //! FF: track transverse momentum 
65     TH3F*   fh3Xi;          //! FF: xi 
66     TH3F*   fh3Z;           //! FF: z  
67     TH1F*   fh1JetPt;       //! jet pt 
68
69     TString fNameFF;        // histo names prefix
70     
71     ClassDef(AliFragFuncHistosInvMass, 1);
72   };
73   
74
75  //----------------------------------------
76   class AliFragFuncHistosPhiCorrInvMass : public TObject
77   {
78                                    
79     public:
80     
81     AliFragFuncHistosPhiCorrInvMass(const char* name = "FFPhiCorrIMhistos", 
82                                     Int_t nPt = 0, Float_t ptMin = 0, Float_t ptMax = 0,
83                                     Int_t nPhi = 0, Float_t phiMin = 0, Float_t phiMax = 0,
84                                     Int_t nInvMass = 0, Float_t invMassMin=0, Float_t invMassMax=0);
85
86     AliFragFuncHistosPhiCorrInvMass(const AliFragFuncHistosPhiCorrInvMass& copy);
87     AliFragFuncHistosPhiCorrInvMass& operator=(const AliFragFuncHistosPhiCorrInvMass &o);
88     virtual ~AliFragFuncHistosPhiCorrInvMass();
89     
90     virtual void DefineHistos();
91     virtual void FillPhiCorr(Float_t pt, Float_t phi, Float_t invM);
92     virtual void AddToOutput(TList* list) const;
93
94   private:
95
96     Int_t   fNBinsPt;       // FF histos bins
97     Float_t fPtMin;         // FF histos limits
98     Float_t fPtMax;         // FF histos limits
99
100     Int_t   fNBinsPhi;      // FF histos bins
101     Float_t fPhiMin;        // FF histos limits
102     Float_t fPhiMax;        // FF histos limits
103     
104     Int_t   fNBinsInvMass;  // FF histos bins
105     Float_t fInvMassMin;    // FF histos limits
106     Float_t fInvMassMax;    // FF histos limits
107   
108     TH3F*   fh3PhiCorr;     //! FF: phi correlation histo 
109
110     TString fNamePhiCorr;   // histo names prefix
111     
112     ClassDef(AliFragFuncHistosPhiCorrInvMass, 1);
113   };
114   
115   //----------------------------------------
116
117   AliAnalysisTaskJetChem(); 
118   AliAnalysisTaskJetChem(const char *name);
119   AliAnalysisTaskJetChem(const  AliAnalysisTaskJetChem &copy);
120   AliAnalysisTaskJetChem& operator=(const  AliAnalysisTaskJetChem &o);
121   virtual ~AliAnalysisTaskJetChem();
122   
123   virtual void   UserCreateOutputObjects();
124   virtual void   UserExec(Option_t *option);
125
126   static  void   SetProperties(TH3F* h,const char* x, const char* y,const char* z);
127
128   Bool_t IsAccepteddEdx(const Double_t mom,const Double_t signal, AliPID::EParticleType n, const Double_t cutnSig) const;
129   Bool_t IsK0InvMass(const Double_t mass) const; 
130   Int_t  GetListOfK0s(TList *list, const Int_t type);
131   virtual void SetK0Type(Int_t i){ fK0Type = i; }
132   virtual void SetFilterMaskK0(UInt_t i) {fFilterMaskK0 = i;}
133
134
135   void   SetFFInvMassHistoBins(Int_t nJetPt = 19, Float_t jetPtMin = 5, Float_t jetPtMax = 100, 
136                                Int_t nInvM = 50, Float_t invMMin = 0.450,  Float_t invMMax = 0.550,
137                                Int_t nPt = 20, Float_t ptMin = 0., Float_t ptMax = 20., 
138                                Int_t nXi = 35, Float_t xiMin = 0., Float_t xiMax = 7.,
139                                Int_t nZ = 11,  Float_t zMin = 0.,  Float_t zMax = 1.1)
140   { fFFIMNBinsJetPt = nJetPt; fFFIMJetPtMin = jetPtMin; fFFIMJetPtMax = jetPtMax; 
141     fFFIMNBinsInvM = nInvM; fFFIMInvMMin = invMMin; fFFIMInvMMax = invMMax; fFFIMNBinsPt = nPt; fFFIMPtMin = ptMin; fFFIMPtMax = ptMax; 
142     fFFIMNBinsXi = nXi; fFFIMXiMin = xiMin; fFFIMXiMax = xiMax; fFFIMNBinsZ  = nZ;  fFFIMZMin  = zMin;  fFFIMZMax  = zMax; }
143
144   void   SetPhiCorrInvMassHistoBins(Int_t nPt = 40, Float_t ptMin = 0., Float_t ptMax = 20., 
145                                     Int_t nPhi = 20, Float_t phiMin = 0., Float_t phiMax = 2*TMath::Pi(),
146                                     Int_t nInvM = 50, Float_t invMMin = 0.450,  Float_t invMMax = 0.550)
147                                     
148   { fPhiCorrIMNBinsPt = nPt; fPhiCorrIMPtMin = ptMin; fPhiCorrIMPtMax = ptMax;
149     fPhiCorrIMNBinsPhi = nPhi; fPhiCorrIMPhiMin = phiMin; fPhiCorrIMPhiMax = phiMax;
150     fPhiCorrIMNBinsInvM = nInvM; fPhiCorrIMInvMMin = invMMin; fPhiCorrIMInvMMax = invMMax;
151   }
152   
153   
154   // consts
155   enum { kTrackUndef =0, kOnFly, kOnFlyPID, kOnFlydEdx, kOnFlyPrim, kOffl, kOfflPID, kOffldEdx, kOfflPrim };  
156   
157  private:
158   
159   Int_t fK0Type;                                           //! K0 cuts
160   UInt_t fFilterMaskK0;                                    //! K0 legs cuts
161   TList* fListK0s;                                         //! K0 list 
162
163   AliFragFuncQATrackHistos*  fV0QAK0;                      //! track QA: V0s in K0 inv mass range
164   AliFragFuncHistos*         fFFHistosRecCutsK0Evt;        //! inclusive FF for K0 evt
165   AliFragFuncHistosInvMass*  fFFHistosIMK0AllEvt;          //! K0 pt spec for all events
166   AliFragFuncHistosInvMass*  fFFHistosIMK0Jet;             //! K0 FF all dPhi   
167   AliFragFuncHistosInvMass*  fFFHistosIMK0Cone;            //! K0 FF jet cone   
168   AliFragFuncHistosPhiCorrInvMass*  fFFHistosPhiCorrIMK0;  //! K0 corelation to jet axis 
169
170   // histogram bins  
171
172   Int_t   fFFIMNBinsJetPt;    // FF histos bins
173   Float_t fFFIMJetPtMin;      // FF histos limits
174   Float_t fFFIMJetPtMax;      // FF histos limits
175
176   Int_t   fFFIMNBinsInvM;     // FF histos bins
177   Float_t fFFIMInvMMin;       // FF histos bins
178   Float_t fFFIMInvMMax;       // FF histos bins
179
180   Int_t   fFFIMNBinsPt;       // FF histos bins
181   Float_t fFFIMPtMin;         // FF histos limits
182   Float_t fFFIMPtMax;         // FF histos limits
183
184   Int_t   fFFIMNBinsXi;       // FF histos bins
185   Float_t fFFIMXiMin;         // FF histos limits
186   Float_t fFFIMXiMax;         // FF histos limits
187
188   Int_t   fFFIMNBinsZ;        // FF histos bins
189   Float_t fFFIMZMin;          // FF histos limits
190   Float_t fFFIMZMax;          // FF histos limits
191
192
193   Int_t fPhiCorrIMNBinsPt;    // FF histos bins
194   Float_t fPhiCorrIMPtMin;    // FF histos limits
195   Float_t fPhiCorrIMPtMax;    // FF histos limits
196
197   Int_t fPhiCorrIMNBinsPhi;   // FF histos bins
198   Float_t fPhiCorrIMPhiMin;   // FF histos limits
199   Float_t fPhiCorrIMPhiMax;   // FF histos limits
200                 
201   Int_t fPhiCorrIMNBinsInvM;  // FF histos bins
202   Float_t fPhiCorrIMInvMMin;  // FF histos limits
203   Float_t fPhiCorrIMInvMMax;  // FF histos limits
204   
205
206
207   // Histograms
208
209   TH1F* fh1K0Mult;                  //!
210   TH1F* fh1dPhiJetK0;               //!
211
212
213   ClassDef(AliAnalysisTaskJetChem, 3);
214 };
215
216 #endif