]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/UserTasks/AliAnalysisTaskIDFFTCF.h
Merge branch 'master' into TRDdev
[u/mrichter/AliRoot.git] / PWGJE / UserTasks / AliAnalysisTaskIDFFTCF.h
1 // *************************************************************************
2 // * Task for Fragmentation Function Analysis in PWG4 Jet Task Force Train *
3 // *************************************************************************
4
5 #ifndef ALIANALYSISTASKIDFFTCFN_H
6 #define ALIANALYSISTASKIDFFTCFN_H
7
8 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
9  * See cxx source for full Copyright notice                               */
10
11 /* $Id$ */
12
13 class AliESDEvent;
14 class AliAODEvent;
15 class AliAODJets;
16 class AliAODExtension;
17 class TList;
18 class TH1F;
19 class TH2F;
20 class TH3F;
21 class TProfile;
22 class THnSparse; 
23 class TRandom3;
24 class TArrayS;
25 class AliAODTrack;
26 class AliAODMCParticle;
27
28 #include "AliAnalysisTaskSE.h"
29 #include "TAxis.h"
30 #include "THnSparse.h"
31 #include <TTreeStream.h>
32   
33 class AliAnalysisTaskIDFFTCF : public AliAnalysisTaskSE {
34
35  public:
36   
37   //----------------------------------------
38   class AliFragFuncHistos : public TObject
39   {
40     
41     public:
42     
43     AliFragFuncHistos(const char* name = "FFhistos", 
44                       Int_t nJetPt = 0, Float_t jetPtMin = 0, Float_t jetPtMax = 0,
45                       Int_t nPt = 0, Float_t ptMin = 0, Float_t ptMax = 0,
46                       Int_t nXi = 0, Float_t xiMin = 0, Float_t xiMax = 0,
47                       Int_t nZ  = 0, Float_t zMin  = 0, Float_t zMax  = 0);
48     
49     AliFragFuncHistos(const AliFragFuncHistos& copy);
50     AliFragFuncHistos& operator=(const AliFragFuncHistos &o);
51     virtual ~AliFragFuncHistos();
52     
53     virtual void DefineHistos();
54     virtual void FillFF(Float_t trackPt, Float_t trackEta, Float_t jetPt, 
55                         Bool_t incrementJetPt, Float_t norm = 0, Bool_t scaleStrangeness = kFALSE, Float_t scaleFacStrangeness = 1.);
56
57     virtual void AddToOutput(TList* list) const;
58
59   private:
60
61     Int_t   fNBinsJetPt; // FF histos bins
62     Float_t fJetPtMin;   // FF histos limits
63     Float_t fJetPtMax;   // FF histos limits
64     Int_t   fNBinsPt;    // FF histos bins
65     Float_t fPtMin;      // FF histos limits
66     Float_t fPtMax;      // FF histos limits
67     Int_t   fNBinsXi;    // FF histos bins
68     Float_t fXiMin;      // FF histos limits
69     Float_t fXiMax;      // FF histos limits
70     Int_t   fNBinsZ;     // FF histos bins
71     Float_t fZMin;       // FF histos limits
72     Float_t fZMax;       // FF histos limits
73   
74     TH2F*   fh2TrackPt;   //! FF: track transverse momentum 
75     TH2F*   fh2Xi;        //! FF: xi 
76     TH2F*   fh2Z;         //! FF: z  
77     TH1F*   fh1JetPt;     //! jet pt 
78
79     TH3F*   fh3TrackPtVsEta;  //! FF: track transverse momentum vs track eta 
80     TH3F*   fh3TrackPVsEta;   //! FF: track momentum vs track eta 
81
82     TString fNameFF;      // histo names prefix
83     
84     ClassDef(AliFragFuncHistos, 1);
85   };
86   
87   //----------------------------------------
88   class AliFragFuncQAJetHistos : public TObject
89   {
90
91   public:
92  
93     AliFragFuncQAJetHistos(const char* name = "QAJethistos",
94                 Int_t nPt  = 0, Float_t ptMin  = 0, Float_t ptMax  = 0,
95                 Int_t nEta = 0, Float_t etaMin = 0, Float_t etaMax = 0,
96                 Int_t nPhi = 0, Float_t phiMin = 0, Float_t phiMax = 0);
97       
98     AliFragFuncQAJetHistos(const AliFragFuncQAJetHistos& copy);
99     AliFragFuncQAJetHistos& operator=(const AliFragFuncQAJetHistos &o);
100     virtual ~AliFragFuncQAJetHistos();
101     virtual void DefineHistos();
102     virtual void FillJetQA(Float_t eta, Float_t phi, Float_t pt);
103     virtual void AddToOutput(TList* list) const;
104
105   private:
106     
107     Int_t   fNBinsPt;    // jet QA histos bins
108     Float_t fPtMin;      // jet QA histos limits
109     Float_t fPtMax;      // jet QA histos limits
110     Int_t   fNBinsEta;   // jet QA histos bins
111     Float_t fEtaMin;     // jet QA histos limits
112     Float_t fEtaMax;     // jet QA histos limits
113     Int_t   fNBinsPhi;   // jet QA histos bins
114     Float_t fPhiMin;     // jet QA histos limits
115     Float_t fPhiMax;     // jet QA histos limits
116     
117     TH2F*   fh2EtaPhi;   //! jet phi vs eta 
118     TH1F*   fh1Pt;       //! jet transverse momentum 
119     TString fNameQAJ;    // histo names prefix
120     
121     ClassDef(AliFragFuncQAJetHistos, 1);
122   };
123   
124   //----------------------------------------
125   class AliFragFuncQATrackHistos : public TObject
126   {
127
128   public:
129
130     AliFragFuncQATrackHistos(const char* name = "QATrackhistos", 
131                   Int_t nPt  = 0, Float_t ptMin  = 0, Float_t ptMax  = 0,
132                   Int_t nEta = 0, Float_t etaMin = 0, Float_t etaMax = 0,
133                   Int_t nPhi = 0, Float_t phiMin = 0, Float_t phiMax = 0, 
134                   Float_t ptThresh = 0);
135     
136     AliFragFuncQATrackHistos(const AliFragFuncQATrackHistos& copy);
137     AliFragFuncQATrackHistos& operator=(const AliFragFuncQATrackHistos &o);
138     virtual ~AliFragFuncQATrackHistos();
139     virtual void DefineHistos();
140     virtual void FillTrackQA(Float_t eta, Float_t phi, Float_t pt, Bool_t weightPt = kFALSE, Float_t norm = 0., Bool_t scaleStrangeness = kFALSE, Float_t scaleFacStrangeness = 1.);
141     virtual void AddToOutput(TList* list) const;
142
143   private:
144     
145     Int_t   fNBinsPt;    // track QA histos bins in pt
146     Float_t fPtMin;      // track QA histos limits in pt
147     Float_t fPtMax;      // track QA histos limits in pt
148     Int_t   fNBinsEta;   // track QA histos bins in eta
149     Float_t fEtaMin;     // track QA histos limits in eta
150     Float_t fEtaMax;     // track QA histos limits in eta
151     Int_t   fNBinsPhi;   // track QA histos bins in phi
152     Float_t fPhiMin;     // track QA histos limits in phi
153     Float_t fPhiMax;     // track QA histos limits in phi
154
155     Float_t fHighPtThreshold; //  high pt track phi vs eta distribution
156
157     TH2F*   fh2EtaPhi;        //! track phi vs eta 
158     TH1F*   fh1Pt;            //! track transverse momentum 
159     TH2F*   fh2HighPtEtaPhi;  //! phi vs eta for high pt (>fgHighPtThreshold) tracks
160     TH2F*   fh2PhiPt;         //! track phi vs pt
161
162     TString fNameQAT;         // histo names prefix
163     
164     ClassDef(AliFragFuncQATrackHistos, 2);
165   };
166   
167   enum TPCCUTMODE{
168     kPIDNone = 0, 
169     kPIDN,
170     kMIGeo
171   };
172   static Bool_t fkDump;  //=1: enable debug streamer; =0 : not.
173
174   AliAnalysisTaskIDFFTCF(); 
175   AliAnalysisTaskIDFFTCF(const char *name);
176   AliAnalysisTaskIDFFTCF(const  AliAnalysisTaskIDFFTCF &copy);
177   AliAnalysisTaskIDFFTCF& operator=(const  AliAnalysisTaskIDFFTCF &o);
178   virtual ~AliAnalysisTaskIDFFTCF();
179   
180   virtual void   UserCreateOutputObjects();
181   virtual void   Init();
182   virtual void   LocalInit() {Init();}
183
184   virtual void   UserExec(Option_t *option);
185   virtual void   Terminate(Option_t* );
186   virtual Bool_t Notify();
187
188   virtual void   SetNonStdFile(char* c){fNonStdFile = c;} 
189
190   virtual void   SetTrackTypeGen(Int_t i){fTrackTypeGen = i;}
191   virtual void   SetJetTypeGen(Int_t i){fJetTypeGen = i;}
192   virtual void   SetJetTypeRecEff(Int_t i){fJetTypeRecEff = i;}
193
194   virtual void   SetBranchGenJets(const char* c){fBranchGenJets = c;}
195   virtual void   SetBranchRecJets(const char* c){fBranchRecJets = c;}
196
197   virtual void   SetTrackCuts(Float_t trackPt = 0.15, Float_t trackEtaMin = -0.9, Float_t trackEtaMax = 0.9, 
198                               Float_t trackPhiMin = 0., Float_t trackPhiMax = 2*TMath::Pi())
199   {fTrackPtCut = trackPt; fTrackEtaMin = trackEtaMin; fTrackEtaMax = trackEtaMax; 
200     fTrackPhiMin = trackPhiMin; fTrackPhiMax = trackPhiMax;}
201
202   virtual void   UseAODInputJets(Bool_t b) {fUseAODInputJets = b;}  
203   virtual void   SetFilterMask(UInt_t i) {fFilterMask = i;}
204   virtual void   UsePhysicsSelection(Bool_t b) {fUsePhysicsSelection = b;}
205   virtual void   SetEventSelectionMask(UInt_t i){fEvtSelectionMask = i;}
206   virtual void   SetEventClass(Int_t i){fEventClass = i;}
207   virtual void   SetMaxVertexZ(Float_t z){fMaxVertexZ = z;}
208   virtual void   UseLeadingJet(Bool_t b){fLeadingJets = b;}
209
210   virtual void   SetJetCuts(Float_t jetPt = 5., Float_t jetEtaMin = -0.5, Float_t jetEtaMax = 0.5, 
211                             Float_t jetPhiMin = 0., Float_t jetPhiMax = 2*TMath::Pi())
212   {fJetPtCut = jetPt; fJetEtaMin = jetEtaMin; fJetEtaMax = jetEtaMax; 
213     fJetPhiMin = jetPhiMin; fJetPhiMax = jetPhiMax;}
214
215   virtual void   SetFFRadius(Float_t r = 0.4) { fFFRadius = r; }
216   virtual void   SetFFMinLTrackPt(Float_t pt = -1) { fFFMinLTrackPt = pt; }
217   virtual void   SetFFMaxTrackPt(Float_t pt = -1) { fFFMaxTrackPt = pt; }
218   virtual void   SetFFMinNTracks(Int_t nTracks = 0) { fFFMinnTracks = nTracks; }
219   virtual void   SetQAMode(Int_t qa = 3)      {fQAMode = qa;}
220   virtual void   SetFFMode(Int_t ff = 1)      {fFFMode = ff;}
221   virtual void   SetEffMode(Int_t eff = 1)    {fEffMode = eff;}
222
223   static  void   SetProperties(TH1* h,const char* x, const char* y);
224   static  void   SetProperties(TH1* h,const char* x, const char* y,const char* z);
225   static  void   SetProperties(THnSparse* h, Int_t dim, const char** labels);
226
227   void SetTPCCutMode(Int_t mode){ fTPCCutMode = mode; }
228   Int_t GetTPCCutMode(){return fTPCCutMode; }
229
230   void SetTOFCutMode(Int_t mode){ fTOFCutMode = mode; }
231   Int_t GetTOFCutMode(){return fTOFCutMode; }
232
233   void   SetHighPtThreshold(Float_t pt = 5.) { fQATrackHighPtThreshold = pt; }
234
235   void   SetFFHistoBins(Int_t nJetPt = 245, Float_t jetPtMin = 5, Float_t jetPtMax = 250, 
236                         Int_t nPt = 200, Float_t ptMin = 0., Float_t ptMax = 200., 
237                         Int_t nXi = 70, Float_t xiMin = 0., Float_t xiMax = 7.,
238                         Int_t nZ = 22,  Float_t zMin = 0.,  Float_t zMax = 1.1)
239   { fFFNBinsJetPt = nJetPt; fFFJetPtMin = jetPtMin; fFFJetPtMax = jetPtMax; 
240     fFFNBinsPt = nPt; fFFPtMin = ptMin; fFFPtMax = ptMax;
241     fFFNBinsXi = nXi; fFFXiMin = xiMin; fFFXiMax = xiMax;
242     fFFNBinsZ  = nZ;  fFFZMin  = zMin;  fFFZMax  = zMax; }
243
244   void  SetQAJetHistoBins(Int_t nPt = 300, Float_t ptMin = 0., Float_t ptMax = 300.,
245                           Int_t nEta = 20, Float_t etaMin = -1.0, Float_t etaMax = 1.0,
246                           Int_t nPhi = 60, Float_t phiMin = 0., Float_t phiMax = 2*TMath::Pi())
247     { fQAJetNBinsPt = nPt; fQAJetPtMin = ptMin; fQAJetPtMax = ptMax;
248       fQAJetNBinsEta = nEta; fQAJetEtaMin = etaMin; fQAJetEtaMax = etaMax;
249       fQAJetNBinsPhi = nPhi; fQAJetPhiMin = phiMin; fQAJetPhiMax = phiMax; }
250   
251   void  SetQATrackHistoBins(Int_t nPt = 200, Float_t ptMin = 0., Float_t ptMax = 200.,
252                             Int_t nEta = 20, Float_t etaMin = -1.0, Float_t etaMax = 1.0,
253                             Int_t nPhi = 60, Float_t phiMin = 0., Float_t phiMax = 2*TMath::Pi())
254   { fQATrackNBinsPt = nPt; fQATrackPtMin = ptMin; fQATrackPtMax = ptMax;
255     fQATrackNBinsEta = nEta; fQATrackEtaMin = etaMin; fQATrackEtaMax = etaMax;
256     fQATrackNBinsPhi = nPhi; fQATrackPhiMin = phiMin; fQATrackPhiMax = phiMax; }
257   
258
259   Float_t  GetFFRadius() const { return fFFRadius; }
260   Float_t  GetFFMinLTrackPt() const { return fFFMinLTrackPt; }
261   Float_t  GetFFMaxTrackPt() const { return fFFMaxTrackPt; }
262   Float_t  GetFFMinNTracks() const { return fFFMinnTracks; }
263
264   void     GetJetTracksTrackrefs(TList* l, const AliAODJet* j, Double_t minPtL, Double_t maxPt, Bool_t& isBadPt);
265   void     GetJetTracksPointing(TList* in, TList* out, const AliAODJet* j, Double_t r, Double_t& sumPt, Double_t minPtL, Double_t maxPt, Bool_t& isBadPt);  
266
267   void     AssociateGenRec(TList* tracksAODMCCharged,TList* tracksRec, TArrayI& indexAODTr,TArrayI& indexMCTr,TArrayS& isRefGen,TH2F* fh2PtRecVsGen);
268
269   void     FillSingleTrackHistosRecGen(AliFragFuncQATrackHistos* trackQAGen, AliFragFuncQATrackHistos* trackQARec, TList* tracksGen, 
270                                        const TArrayI& indexAODTr, const TArrayS& isRefGen, Int_t pdg = 0, 
271                                        Bool_t scaleGFL = kFALSE, Bool_t scaleStrangeness = kFALSE);
272
273
274   void     FillJetTrackHistosRec(AliFragFuncHistos* histRec,  AliAODJet* jet, 
275                                  TList* jetTrackList, const TList* tracksGen, const TList* tracksRec, const TArrayI& indexAODTr,
276                                  const TArrayS& isRefGen, TList* jetTrackListTR = 0, Int_t pdg = 0, 
277                                  Bool_t scaleGFL = kFALSE, Bool_t scaleStrangeness = kFALSE);
278
279
280   Float_t  CalcJetArea(Float_t etaJet, Float_t rc) const;
281  
282   void     BookQAHistos(TList* list = 0, AliFragFuncQATrackHistos** rec = 0, TString strTitRec = "", AliFragFuncQATrackHistos** gen = 0, TString strTitGen = "",
283                         AliFragFuncQATrackHistos** sec = 0, TString strTitSec = "");
284
285   void     BookFFHistos(TList* list, AliFragFuncHistos** rec = 0, TString strTitRec = "", AliFragFuncHistos** gen = 0, TString strTitGen = "",
286                         AliFragFuncHistos** sec = 0, TString strTitSec = "");
287
288   Double_t  TrackingPtGeantFlukaCorrectionPrMinus(Double_t pTmc);
289   Double_t  TrackingPtGeantFlukaCorrectionKaMinus(Double_t pTmc);
290   Double_t  GetMCStrangenessFactorCMS(AliAODMCParticle* daughter);
291     
292
293
294   // Consts
295   enum {kTrackUndef=0, kTrackAOD, kTrackAODQualityCuts, kTrackAODCuts,  
296         kTrackKineAll, kTrackKineCharged, kTrackKineChargedAcceptance, 
297         kTrackAODMCAll, kTrackAODMCCharged, kTrackAODMCChargedAcceptance, kTrackAODMCChargedSec, kTrackAOCMCChargedPrimAcceptance};
298   enum {kJetsUndef=0, kJetsRec, kJetsRecAcceptance, kJetsGen, kJetsGenAcceptance, kJetsKine, kJetsKineAcceptance};
299
300  
301  protected:
302   
303   Int_t   GetListOfTracks(TList* list, Int_t type);
304   Int_t   GetListOfJets(TList* list, Int_t type);
305
306   AliESDEvent* fESD;      // ESD event
307   AliAODEvent* fAOD;      // AOD event
308   AliAODEvent* fAODJets;  // AOD event with jet branch (case we have AOD both in input and output)
309   AliAODExtension  *fAODExtension; //! where we take the jets from can be input or output AOD
310   TString       fNonStdFile; // name of delta aod file to catch the extension
311  
312  
313   TString fBranchRecJets;         // branch name for reconstructed jets
314   TString fBranchGenJets;         // branch name for generated jets
315
316   Int_t   fTrackTypeGen;        // type of generated tracks
317   Int_t   fJetTypeGen;          // type of generated jets
318
319   Int_t   fJetTypeRecEff;       // type of jets used for filling reconstruction efficiency histos
320
321   Bool_t  fUseAODInputJets;     // take jets from in/output - only relevant if AOD event both in input AND output and we want to use output
322   UInt_t  fFilterMask;          // filter bit for selected tracks
323   Bool_t  fUsePhysicsSelection; // switch for event selection
324   UInt_t  fEvtSelectionMask;    // trigger class selection
325   Int_t   fEventClass;          // centrality class selection
326   Float_t fMaxVertexZ;          // maximum abs(z) position of primiary vertex [cm]
327   Bool_t  fLeadingJets;         // leading/all jets
328
329
330   Int_t fTPCCutMode;      //mode for cutting TPC for good dE/dx
331   Int_t fTOFCutMode;      //mode for cutting TOF
332   TTreeStream * fStream; //debug streamer
333   TTree * fTree;         //tree of streamer
334
335   // track cuts
336   Float_t fTrackPtCut;    // track transverse momentum cut
337   Float_t fTrackEtaMin;   // track eta cut
338   Float_t fTrackEtaMax;   // track eta cut
339   Float_t fTrackPhiMin;   // track phi cut
340   Float_t fTrackPhiMax;   // track phi cut
341   
342
343   // jet cuts
344   Float_t fJetPtCut;      // jet transverse momentum cut
345   Float_t fJetEtaMin;     // jet eta cut
346   Float_t fJetEtaMax;     // jet eta cut
347   Float_t fJetPhiMin;     // jet phi cut
348   Float_t fJetPhiMax;     // jet phi cut
349
350   Float_t fFFRadius;        // if radius > 0 construct FF from tracks within cone around jet axis, otherwise use trackRefs  
351   Float_t fFFMinLTrackPt;   // reject jets with leading track with pt smaller than this value
352   Float_t fFFMaxTrackPt;    // reject jets containing any track with pt larger than this value
353   Int_t   fFFMinnTracks;    // reject jets with less tracks than this value
354   Int_t   fQAMode;          // QA mode: 0x00=0 none, 0x01=1 track qa, 0x10=2 track qa, 0x11=3 both
355   Int_t   fFFMode;          // fragmentation function mode
356   Int_t   fEffMode;         // efficiency mode
357
358   Float_t fAvgTrials;       // average number of trials per event
359   
360   TList* fTracksRecCuts;           //! reconstructed tracks after cuts
361   TList* fTracksGen;               //! generated tracks 
362   TList* fTracksAODMCCharged;      //! AOD MC tracks 
363   TList* fTracksAODMCChargedSec;   //! AOD MC tracks - secondaries 
364   TList* fTracksRecQualityCuts;    //! reconstructed tracks after quality cuts, no acceptance/pt cut
365
366   TList* fJetsRec;        //! jets from reconstructed tracks
367   TList* fJetsRecCuts;    //! jets from reonstructed tracks after jet cuts 
368   TList* fJetsGen;        //! jets from generated tracks
369   TList* fJetsRecEff;     //! jets used for reconstruction efficiency histos 
370
371    
372   AliFragFuncQATrackHistos* fQATrackHistosRecCuts;  //! track QA: reconstructed tracks after cuts
373   AliFragFuncQATrackHistos* fQATrackHistosGen;      //! track QA: generated tracks
374   
375   AliFragFuncQAJetHistos*  fQAJetHistosRec;             //! jet QA: jets from reconstructed tracks
376   AliFragFuncQAJetHistos*  fQAJetHistosRecCuts;         //! jet QA: jets from reconstructed tracks after jet cuts 
377   AliFragFuncQAJetHistos*  fQAJetHistosRecCutsLeading;  //! jet QA: leading jet from reconstructed tracks after jet cuts 
378   AliFragFuncQAJetHistos*  fQAJetHistosGen;             //! jet QA: jets from generated tracks  
379   AliFragFuncQAJetHistos*  fQAJetHistosGenLeading;      //! jet QA: leading jet from generated tracks  
380   AliFragFuncQAJetHistos*  fQAJetHistosRecEffLeading;   //! jet QA: leading jet used for reconstruction efficiency histos  
381   
382
383   AliFragFuncHistos*  fFFHistosRecCutsInc;       //! inclusive FF (all jets) 
384   AliFragFuncHistos*  fFFHistosRecCutsIncPi;     //! inclusive FF (all jets) 
385   AliFragFuncHistos*  fFFHistosRecCutsIncPro;    //! inclusive FF (all jets) 
386   AliFragFuncHistos*  fFFHistosRecCutsIncK;      //! inclusive FF (all jets) 
387   AliFragFuncHistos*  fFFHistosRecCutsIncEl;     //! inclusive FF (all jets) 
388   AliFragFuncHistos*  fFFHistosRecCutsIncMu;     //! inclusive FF (all jets) 
389
390   AliFragFuncHistos*  fFFHistosRecLeadingTrack; //! FF reconstructed tracks after cuts: leading track pt / jet pt (all jets)
391
392   AliFragFuncHistos*  fFFHistosGenInc;       //! inclusive FF (all jets) 
393   AliFragFuncHistos*  fFFHistosGenIncPi;     //! inclusive FF (all jets) 
394   AliFragFuncHistos*  fFFHistosGenIncPro;    //! inclusive FF (all jets) 
395   AliFragFuncHistos*  fFFHistosGenIncK;      //! inclusive FF (all jets) 
396   AliFragFuncHistos*  fFFHistosGenIncEl;     //! inclusive FF (all jets) 
397   AliFragFuncHistos*  fFFHistosGenIncMu;     //! inclusive FF (all jets) 
398   AliFragFuncHistos*  fFFHistosGenLeadingTrack; //! FF reconstructed tracks after cuts: leading track pt / jet pt (all jets)
399
400   Float_t  fQATrackHighPtThreshold;       // track QA high transverse momentum threshold
401   
402   THnSparseD * fTHnIDFF;                //! tracks in jets
403   THnSparseD * fTHnIncl;                //! inclusive tracks
404
405   // histogram bins  
406
407   Int_t   fFFNBinsJetPt;    // FF histos bins
408   Float_t fFFJetPtMin;      // FF histos limits
409   Float_t fFFJetPtMax;      // FF histos limits
410
411   Int_t   fFFNBinsPt;       // FF histos bins
412   Float_t fFFPtMin;         // FF histos limits
413   Float_t fFFPtMax;         // FF histos limits
414
415   Int_t   fFFNBinsXi;       // FF histos bins
416   Float_t fFFXiMin;         // FF histos limits
417   Float_t fFFXiMax;         // FF histos limits
418
419   Int_t   fFFNBinsZ;        // FF histos bins
420   Float_t fFFZMin;          // FF histos limits
421   Float_t fFFZMax;          // FF histos limits
422
423   Int_t   fQAJetNBinsPt;    // jet QA histos bins
424   Float_t fQAJetPtMin;      // jet QA histos limits
425   Float_t fQAJetPtMax;      // jet QA histos limits
426   
427   Int_t   fQAJetNBinsEta;   // jet QA histos bins
428   Float_t fQAJetEtaMin;     // jet QA histos limits
429   Float_t fQAJetEtaMax;     // jet QA histos limits
430   
431   Int_t   fQAJetNBinsPhi;   // jet QA histos bins
432   Float_t fQAJetPhiMin;     // jet QA histos limits
433   Float_t fQAJetPhiMax;     // jet QA histos limits
434   
435   Int_t   fQATrackNBinsPt;  // track QA histos bins
436   Float_t fQATrackPtMin;    // track QA histos limits
437   Float_t fQATrackPtMax;    // track QA histos limits
438   
439   Int_t   fQATrackNBinsEta; // track QA histos bins
440   Float_t fQATrackEtaMin;   // track QA histos limits
441   Float_t fQATrackEtaMax;   // track QA histos limits
442   
443   Int_t   fQATrackNBinsPhi; // track QA histos bins
444   Float_t fQATrackPhiMin;   // track QA histos limits
445   Float_t fQATrackPhiMax;   // track QA histos limits
446   
447   // Histograms
448   TList *fCommonHistList;         // List of common histos
449   
450   TH1F  *fh1EvtSelection;         //! event cuts 
451   TH1F  *fh1VertexNContributors;  //! NContributors to prim vertex
452   TH1F  *fh1VertexZ;              //! prim vertex z distribution
453   TH1F  *fh1EvtMult;              //! number of reconstructed tracks after cuts 
454   TH1F  *fh1EvtCent;              //! centrality percentile 
455
456   TProfile* fh1Xsec;              //! pythia cross section and trials
457   TH1F*     fh1Trials;            //! sum of trials
458   TH1F*     fh1PtHard;            //! pt hard of the event
459   TH1F*     fh1PtHardTrials;      //! pt hard of the event
460
461   TH1F  *fh1nRecJetsCuts;         //! number of jets from reconstructed tracks per event 
462   TH1F  *fh1nGenJets;             //! number of jets from generated tracks per event
463   TH1F  *fh1nRecEffJets;          //! number of jets for reconstruction eff per event
464
465   TH2F  *fh2PtRecVsGenPrim;       //! association rec/gen MC: rec vs gen pt, primaries 
466   TH2F  *fh2PtRecVsGenSec;        //! association rec/gen MC: rec vs gen pt, secondaries 
467
468   // tracking efficiency / secondaries
469   
470   AliFragFuncQATrackHistos* fQATrackHistosRecEffGen;      //! tracking efficiency: generated primaries 
471   AliFragFuncQATrackHistos* fQATrackHistosRecEffRec;      //! tracking efficiency: reconstructed primaries
472   AliFragFuncQATrackHistos* fQATrackHistosSecRec;         //! reconstructed secondaries
473   AliFragFuncQATrackHistos* fQATrackHistosSecRecSSc;      //! reconstructed secondaries
474
475   AliFragFuncQATrackHistos* fQATrackHistosRecEffGenPi;     //! tracking efficiency: generated primaries 
476   AliFragFuncQATrackHistos* fQATrackHistosRecEffGenPro;    //! tracking efficiency: generated primaries 
477   AliFragFuncQATrackHistos* fQATrackHistosRecEffGenK;      //! tracking efficiency: generated primaries 
478   AliFragFuncQATrackHistos* fQATrackHistosRecEffGenEl;     //! tracking efficiency: generated primaries 
479   AliFragFuncQATrackHistos* fQATrackHistosRecEffGenMu;     //! tracking efficiency: generated primaries 
480
481   AliFragFuncQATrackHistos* fQATrackHistosRecEffRecPi;       //! tracking efficiency: generated primaries 
482   AliFragFuncQATrackHistos* fQATrackHistosRecEffRecPro;      //! tracking efficiency: generated primaries 
483   AliFragFuncQATrackHistos* fQATrackHistosRecEffRecK;        //! tracking efficiency: generated primaries 
484   AliFragFuncQATrackHistos* fQATrackHistosRecEffRecEl;       //! tracking efficiency: generated primaries 
485   AliFragFuncQATrackHistos* fQATrackHistosRecEffRecMu;       //! tracking efficiency: generated primaries 
486   AliFragFuncQATrackHistos* fQATrackHistosRecEffRecProGFL;   //! tracking efficiency: generated primaries 
487   AliFragFuncQATrackHistos* fQATrackHistosRecEffRecKGFL;     //! tracking efficiency: generated primaries 
488
489   AliFragFuncQATrackHistos* fQATrackHistosSecRecPi;       //! tracking efficiency: generated primaries 
490   AliFragFuncQATrackHistos* fQATrackHistosSecRecPro;      //! tracking efficiency: generated primaries 
491   AliFragFuncQATrackHistos* fQATrackHistosSecRecK;        //! tracking efficiency: generated primaries 
492   AliFragFuncQATrackHistos* fQATrackHistosSecRecEl;       //! tracking efficiency: generated primaries 
493   AliFragFuncQATrackHistos* fQATrackHistosSecRecMu;       //! tracking efficiency: generated primaries 
494   AliFragFuncQATrackHistos* fQATrackHistosSecRecProGFL;   //! tracking efficiency: generated primaries 
495   AliFragFuncQATrackHistos* fQATrackHistosSecRecKGFL;     //! tracking efficiency: generated primaries 
496
497   AliFragFuncQATrackHistos* fQATrackHistosSecRecPiSSc;       //! tracking efficiency: generated primaries 
498   AliFragFuncQATrackHistos* fQATrackHistosSecRecProSSc;      //! tracking efficiency: generated primaries 
499   AliFragFuncQATrackHistos* fQATrackHistosSecRecKSSc;        //! tracking efficiency: generated primaries 
500   AliFragFuncQATrackHistos* fQATrackHistosSecRecElSSc;       //! tracking efficiency: generated primaries 
501   AliFragFuncQATrackHistos* fQATrackHistosSecRecMuSSc;       //! tracking efficiency: generated primaries 
502   AliFragFuncQATrackHistos* fQATrackHistosSecRecProGFLSSc;   //! tracking efficiency: generated primaries 
503   AliFragFuncQATrackHistos* fQATrackHistosSecRecKGFLSSc;     //! tracking efficiency: generated primaries 
504
505
506
507
508   AliFragFuncHistos*  fFFHistosRecEffRec;                 //! tracking efficiency: FF reconstructed primaries
509   AliFragFuncHistos*  fFFHistosSecRec;                    //! secondary contamination: FF reconstructed secondaries 
510   AliFragFuncHistos*  fFFHistosSecRecSSc;                 //! secondary contamination: FF reconstructed secondaries 
511
512   AliFragFuncHistos*  fFFHistosRecEffRecPi;               //! tracking efficiency: FF reconstructed primaries
513   AliFragFuncHistos*  fFFHistosRecEffRecPro;              //! tracking efficiency: FF reconstructed primaries
514   AliFragFuncHistos*  fFFHistosRecEffRecK;                //! tracking efficiency: FF reconstructed primaries
515   AliFragFuncHistos*  fFFHistosRecEffRecEl;               //! tracking efficiency: FF reconstructed primaries
516   AliFragFuncHistos*  fFFHistosRecEffRecMu;               //! tracking efficiency: FF reconstructed primaries
517   AliFragFuncHistos*  fFFHistosRecEffRecProGFL;           //! tracking efficiency: FF reconstructed primaries
518   AliFragFuncHistos*  fFFHistosRecEffRecKGFL;             //! tracking efficiency: FF reconstructed primaries
519
520   AliFragFuncHistos*  fFFHistosSecRecPi;                  //! secondary contamination: FF reconstructed secondaries 
521   AliFragFuncHistos*  fFFHistosSecRecPro;                 //! secondary contamination: FF reconstructed secondaries 
522   AliFragFuncHistos*  fFFHistosSecRecK;                   //! secondary contamination: FF reconstructed secondaries 
523   AliFragFuncHistos*  fFFHistosSecRecEl;                  //! secondary contamination: FF reconstructed secondaries 
524   AliFragFuncHistos*  fFFHistosSecRecMu;                  //! secondary contamination: FF reconstructed secondaries 
525   AliFragFuncHistos*  fFFHistosSecRecProGFL;              //! secondary contamination: FF reconstructed secondaries 
526   AliFragFuncHistos*  fFFHistosSecRecKGFL;                //! secondary contamination: FF reconstructed secondaries 
527
528   AliFragFuncHistos*  fFFHistosSecRecPiSSc;            //! tracking efficiency: FF reconstructed primaries
529   AliFragFuncHistos*  fFFHistosSecRecProSSc;           //! tracking efficiency: FF reconstructed primaries
530   AliFragFuncHistos*  fFFHistosSecRecKSSc;             //! tracking efficiency: FF reconstructed primaries
531   AliFragFuncHistos*  fFFHistosSecRecElSSc;            //! tracking efficiency: FF reconstructed primaries
532   AliFragFuncHistos*  fFFHistosSecRecMuSSc;            //! tracking efficiency: FF reconstructed primaries
533   AliFragFuncHistos*  fFFHistosSecRecProGFLSSc;        //! tracking efficiency: FF reconstructed primaries
534   AliFragFuncHistos*  fFFHistosSecRecKGFLSSc;          //! tracking efficiency: FF reconstructed primaries
535
536
537   TRandom3*                   fRandom;          // TRandom3 for background estimation 
538
539   ClassDef(AliAnalysisTaskIDFFTCF, 1);
540 };
541
542 #endif