Bug fix in AliExternalTrackParam::Invert()
[u/mrichter/AliRoot.git] / PWGLF / STRANGENESS / AliAnalysisTaskCheckPerformanceCascade.h
1 #ifndef ALIANALYSISTASKCHECKPERFORMANCECASCADE_H
2 #define ALIANALYSISTASKCHECKPERFORMANCECASCADE_H
3
4 /*  See cxx source for full Copyright notice */
5
6 // //-----------------------------------------------------------------
7 // //        AliAnalysisTaskCheckPerformanceCascade class
8 // //            This task is for a performance study of cascade identification.
9 // //            It works with MC info and ESD.
10 // //              Use with AOD tree = under development
11 // //            Origin   : A.Maire Mar2009, antonin.maire@ires.in2p3.fr
12 // //            Modified : A.Maire Jan2010, antonin.maire@ires.in2p3.fr
13 // //-----------------------------------------------------------------
14
15 class TList;
16 class TH1F;
17 class TH2F;
18 class AliESDEvent;
19 class AliESDpid;
20 class AliESDtrackCuts;
21 class AliCFContainer;
22
23 #include "AliAnalysisTaskSE.h"
24
25 class AliAnalysisTaskCheckPerformanceCascade : public AliAnalysisTaskSE {
26  public:
27  
28   AliAnalysisTaskCheckPerformanceCascade();
29   AliAnalysisTaskCheckPerformanceCascade(const char *name );
30   virtual ~AliAnalysisTaskCheckPerformanceCascade();
31   
32   //virtual void   ConnectInputData(Option_t *);
33   virtual void   UserCreateOutputObjects();
34   virtual void   UserExec(Option_t *option);
35   virtual Int_t  DoESDTrackWithTPCrefitMultiplicity(const AliESDEvent *lESDevent);
36   virtual void   Terminate(Option_t *);
37   
38   void SetDebugLevelCascade(Int_t lDebugCascade = 0)          {fDebugCascade = lDebugCascade;}
39   void SetCollidingSystems (Short_t collidingSystems = 0)     {fCollidingSystems = collidingSystems;}
40   
41   void SetAnalysisType     (const char* analysisType    = "ESD") { fAnalysisType     = analysisType;}
42   void SetTriggerMaskType  (const char* triggerMaskType = "kMB") { fTriggerMaskType  = triggerMaskType;}
43   
44   void SetRelaunchV0CascVertexers    (Bool_t rerunV0CascVertexers       = 0    ) { fkRerunV0CascVertexers         =  rerunV0CascVertexers;      }
45   void SetQualityCutZprimVtxPos      (Bool_t qualityCutZprimVtxPos      = kTRUE) { fkQualityCutZprimVtxPos        =  qualityCutZprimVtxPos;     }
46   void SetRejectEventPileUp          (Bool_t rejectPileUp               = kTRUE) { fkRejectEventPileUp            =  rejectPileUp;              }
47   void SetQualityCutNoTPConlyPrimVtx (Bool_t qualityCutNoTPConlyPrimVtx = kTRUE) { fkQualityCutNoTPConlyPrimVtx   =  qualityCutNoTPConlyPrimVtx;}
48   void SetQualityCutTPCrefit         (Bool_t qualityCutTPCrefit         = kTRUE) { fkQualityCutTPCrefit           =  qualityCutTPCrefit;        }
49   void SetQualityCut80TPCcls         (Bool_t qualityCut80TPCcls         = kTRUE) { fkQualityCut80TPCcls           =  qualityCut80TPCcls;        }
50   void SetAlephParamFor1PadTPCCluster(Bool_t onePadTPCCluster           = kTRUE) { fkIsDataRecoWith1PadTPCCluster =  onePadTPCCluster ;         }
51   void SetExtraSelections            (Bool_t extraSelections            = 0    ) { fkExtraSelections              =  extraSelections;           }
52
53  private:
54         // Note : In ROOT, "//!" means "do not stream the data from Master node to Worker node" ...
55         // your data member object is created on the worker nodes and streaming is not needed.
56         // http://root.cern.ch/download/doc/11InputOutput.pdf, page 14
57
58         Int_t           fDebugCascade;          // Denug Flag for this task devoted to cascade
59         TString         fAnalysisType;          // "ESD" or "AOD" analysis type 
60         TString         fTriggerMaskType;       // type of trigger to use in UserExec : AliVEvent::kMB or kHighMult ?
61         Short_t         fCollidingSystems;      // 0 = pp collisions or 1 = AA collisions
62
63         AliESDpid       *fESDpid;                       // Tool data member to manage the TPC Bethe-Bloch info
64         AliESDtrackCuts *fESDtrackCuts;                 // ESD track cuts used for primary track definition
65         //TPaveText       *fPaveTextBookKeeping;          // TString to store all the relevant info necessary for book keeping (v0 cuts, cascade cuts, quality cuts, ...)
66
67         Bool_t          fkRerunV0CascVertexers;         // Boolean : kTRUE = relaunch both V0 + Cascade vertexers
68         Bool_t          fkQualityCutZprimVtxPos;        // Boolean : kTRUE = cut on the prim.vtx  z-position
69         Bool_t          fkRejectEventPileUp;            // Boolean : kTRUE = enable the rejection of events tagged as pile-up by SPD (AliESDEvent::IsPileupFromSPD)
70         Bool_t          fkQualityCutNoTPConlyPrimVtx;   // Boolean : kTRUE = prim vtx should be SPD or Tracking vertex
71         Bool_t          fkQualityCutTPCrefit;           // Boolean : kTRUE = ask for TPCrefit for the 3 daughter tracks
72         Bool_t          fkQualityCut80TPCcls;           // Boolean : kTRUE = ask for 80 TPC clusters for each daughter track
73         Bool_t          fkIsDataRecoWith1PadTPCCluster; // Boolean : kTRUE = data reconstructed with the "one pad cluster" algo in TPC (important for the ALEPH param for TPC PID)
74         Bool_t          fkExtraSelections;              // Boolean : kTRUE = apply tighter selections, before starting the analysis
75         
76         Double_t        fAlephParameters[5];            // Array to store the 5 param values for the TPC Bethe-Bloch parametrisation
77         Double_t        fV0Sels[7];                     // Array to store the 7 values for the different selections V0 related (if fkRerunV0CascVertexers)
78         Double_t        fCascSels[8];                   // Array to store the 8 values for the different selections Casc. related (if fkRerunV0CascVertexers)
79
80         
81         TList   *fListHistCascade;              //! List of Cascade histograms
82                 // - Histos 
83         TH1F    *fHistMCTrackMultiplicity;      //! MC Track multiplicity (gen. primaries)
84                 // - Resolution of the multiplicity estimator
85         TH2F    *f2dHistRecoPrimTrckMultVsMCMult;       //! resolution of the multiplicity estimator (based on primary tracks)
86         TH2F    *f2dHistRecoEstimateMultVsMCMult;       //! resolution of the multiplicity estimator (based on ESDEvent::EstimateMultiplicity)
87         
88         
89         // proton
90         TH1F    *fHistEtaGenProton;                     //! MC Pseudo-rapidity of any generated p+ (no cuts in acceptance)
91         TH1F    *fHistEtaGenAntiProton;                 //! MC Pseudo-rapidity of any generated p+ (no cuts in acceptance)
92
93 // Part 1 - Generated cascades
94         
95         //--------------
96         // Xi-
97         TH1F    *fHistEtaGenCascXiMinus;                //! MC Pseudo-rapidity of any generated Xi- (no cuts in acceptance)
98         TH2F    *f2dHistGenPtVsGenYGenXiMinus;          //! MC Pt Vs MC Y of generated Xi- 
99                 
100         // - Histos planned for Xi- emitted within the acceptance (cuts in theta + pt of daughters)
101         //      = findable cascades
102         TH1F    *fHistThetaGenCascXiMinus;              //! MC Theta angle of the generated Xi-
103         TH2F    *f2dHistGenPtVsGenYFdblXiMinus;         //! MC Pt Vs MC y of the findable Xi-
104         
105         TH1F    *fHistThetaLambdaXiMinus;               //! MC Theta angle of the Lambda daughter of the generated Xi-
106         TH1F    *fHistThetaBachXiMinus;                 //! MC Theta angle of the Bachelor (pi-)
107         
108         TH1F    *fHistThetaMesDghterXiMinus;            //! MC Theta angle of the mesonic  V0 daughter in the generated cascade, pi-
109         TH1F    *fHistThetaBarDghterXiMinus;            //! MC Theta angle of the baryonic V0 daughter in the generated cascade, p+
110         
111         TH1F    *fHistPtBachXiMinus;                    //! MC Pt of the Bachelor (pi-)                         (Control Plot)
112         TH1F    *fHistPtMesDghterXiMinus;               //! MC Pt of the meson daughter of the 'Lambda0', pi-   (Control Plot)
113         TH1F    *fHistPtBarDghterXiMinus;               //! MC Pt of the baryon daughter of the 'Lambda0', p+   (Control Plot)
114         
115         
116         
117         //--------------
118         // Xi+
119         TH1F    *fHistEtaGenCascXiPlus;                 //! MC Pseudo-rapidity of any generated Xi+ (no cuts in acceptance)
120         TH2F    *f2dHistGenPtVsGenYGenXiPlus;           //! MC Pt Vs MC Y of generated Xi+ 
121                         
122         // - Histos planned for Xi+ emitted within the acceptance (cuts in theta + pt of daughters)
123         TH1F    *fHistThetaGenCascXiPlus;               //! MC Theta angle of the generated Xi+
124         TH2F    *f2dHistGenPtVsGenYFdblXiPlus;          //! MC Pt Vs MC y of the findable Xi+
125         
126         TH1F    *fHistThetaLambdaXiPlus;                //! MC Theta angle of the anti-Lambda daughter of the generated Xi+
127         TH1F    *fHistThetaBachXiPlus;                  //! MC Theta angle of the Bachelor (pi+)
128         
129         TH1F    *fHistThetaMesDghterXiPlus;             //! MC Theta angle of the mesonic  V0 daughter in the generated cascade, pi+
130         TH1F    *fHistThetaBarDghterXiPlus;             //! MC Theta angle of the baryonic V0 daughter in the generated cascade, p-
131         
132         TH1F    *fHistPtBachXiPlus;                     //! MC Pt of the Bachelor (pi+)                       (Control Plot)
133         TH1F    *fHistPtMesDghterXiPlus;                //! MC Pt of the meson daughter of the 'Lambda0', pi+ (Control Plot)
134         TH1F    *fHistPtBarDghterXiPlus;                //! MC Pt of the baryon daughter of the 'Lambda0', p- (Control Plot)
135         
136         
137         
138         //--------------
139         // Omega-
140         TH1F    *fHistEtaGenCascOmegaMinus;             //! MC Pseudo-rapidity of any generated Omega- (no cuts in acceptance)
141         TH2F    *f2dHistGenPtVsGenYGenOmegaMinus;       //! MC Pt Vs MC Y of generated Omega-   
142         
143         // - Histos planned for Omega- emitted within the acceptance (cuts in theta + pt of daughters)
144         TH1F    *fHistThetaGenCascOmegaMinus;           //! MC Theta angle of the generated Omega-
145         TH2F    *f2dHistGenPtVsGenYFdblOmegaMinus;      //! MC Pt Vs MC y of the findable Omega-
146         
147         TH1F    *fHistThetaLambdaOmegaMinus;            //! MC Theta angle of the Lambda daughter of the generated Omega-
148         TH1F    *fHistThetaBachOmegaMinus;              //! MC Theta angle of the Bachelor (K-)
149         
150         TH1F    *fHistThetaMesDghterOmegaMinus;         //! MC Theta angle of the mesonic  V0 daughter in the generated cascade, pi-
151         TH1F    *fHistThetaBarDghterOmegaMinus;         //! MC Theta angle of the baryonic V0 daughter in the generated cascade, p+
152         
153         TH1F    *fHistPtBachOmegaMinus;                 //! MC Pt of the Bachelor (K-)                   (Control Plot)
154         TH1F    *fHistPtMesDghterOmegaMinus;            //! MC Pt of the meson daughter of the 'Lambda0', pi- (Control Plot)
155         TH1F    *fHistPtBarDghterOmegaMinus;            //! MC Pt of the baryon daughter of the 'Lambda0', p+ (Control Plot)
156         
157         
158         
159         //--------------
160         // Omega+
161         TH1F    *fHistEtaGenCascOmegaPlus;              //! MC Pseudo-rapidity of any generated Omega+ (no cuts in acceptance)
162         TH2F    *f2dHistGenPtVsGenYGenOmegaPlus;        //! MC Pt Vs MC Y of generated Omega+   
163                 
164         // - Histos planned for Omega+ emitted within the acceptance (cuts in theta + pt of daughters)
165         TH1F    *fHistThetaGenCascOmegaPlus;            //! MC Theta angle of the generated Omega+
166         TH2F    *f2dHistGenPtVsGenYFdblOmegaPlus;       //! MC Pt Vs MC y of the findable Omega+
167         
168         TH1F    *fHistThetaLambdaOmegaPlus;             //! MC Theta angle of the anti-Lambda daughter of the generated Omega+
169         TH1F    *fHistThetaBachOmegaPlus;               //! MC Theta angle of the Bachelor (K+)
170         
171         TH1F    *fHistThetaMesDghterOmegaPlus;          //! MC Theta angle of the mesonic  V0 daughter in the generated cascade, pi+
172         TH1F    *fHistThetaBarDghterOmegaPlus;          //! MC Theta angle of the baryonic V0 daughter in the generated cascade, p-
173         
174         TH1F    *fHistPtBachOmegaPlus;                  //! MC Pt of the Bachelor (K+) (Control Plot)
175         TH1F    *fHistPtMesDghterOmegaPlus;             //! MC Pt of the meson daughter of the 'Lambda0', pi+ (Control Plot)
176         TH1F    *fHistPtBarDghterOmegaPlus;             //! MC Pt of the baryon daughter of the 'Lambda0', p- (Control Plot)
177         
178         
179         
180 // Part 2 - Any reconstructed cascades + reconstructed cascades associated with MC
181         // 2.1 - Effective mass and PID
182         // - Effective mass histos for all the cascade candidates
183         TH1F    *fHistMassXiMinus;                      //! reconstructed cascade effective mass, under Xi- hyp.
184         TH1F    *fHistMassXiPlus;                       //! reconstructed cascade effective mass, under Xi+ hyp.
185         TH1F    *fHistMassOmegaMinus;                   //! reconstructed cascade effective mass, under Omega- hyp.
186         TH1F    *fHistMassOmegaPlus;                    //! reconstructed cascade effective mass, under Omega+ hyp.
187         
188         // - Effective mass histos with reconstruction combined PID
189         TH1F    *fHistMassWithCombPIDXiMinus;           //! reconstructed Xi- effective mass, with bach. comb PID
190         TH1F    *fHistMassWithCombPIDXiPlus;            //! reconstructed Xi+ effective mass, with bach. comb PID
191         TH1F    *fHistMassWithCombPIDOmegaMinus;        //! reconstructed Omega- effective mass, with bach. comb PID
192         TH1F    *fHistMassWithCombPIDOmegaPlus;         //! reconstructed Omega+ effective mass, with bach. comb PID
193         
194         // - PID Probability versus MC Pt(bachelor track)
195         TH2F    *f2dHistPIDprobaKaonVsMCPtBach;         //! Comb. PID probability for the bach. to be a Kaon Vs MC pt(bach)
196         TH2F    *f2dHistPIDprobaPionVsMCPtBach;         //! Comb. PID probability for the bach. to be a Pion Vs MC pt(bach)     
197
198         // - Effective mass histos with perfect MC PID
199         TH1F    *fHistMassWithMcPIDXiMinus;             //! reconstructed Xi- effective mass, with MC bach. PID
200         TH1F    *fHistMassWithMcPIDXiPlus;              //! reconstructed Xi+ effective mass, with MC bach. PID
201         TH1F    *fHistMassWithMcPIDOmegaMinus;          //! reconstructed Omega- effective mass, with MC bach. PID
202         TH1F    *fHistMassWithMcPIDOmegaPlus;           //! reconstructed Omega+ effective mass, with MC bach. PID
203
204         
205         // 2.2 - Associated candidates
206         // - Effective mass histos for the cascade candidates associated with MC, without PID info
207         TH1F    *fHistAsMCMassXiMinus;                  //! reconstr. cascade effective mass, under Xi- hyp. for Associated cand.
208         TH1F    *fHistAsMCMassXiPlus;                   //! reconstr. cascade effective mass, under Xi+ hyp. for Associated cand.
209         TH1F    *fHistAsMCMassOmegaMinus;               //! reconstr. cascade effective mass, under Omega- hyp. for Associated cand.
210         TH1F    *fHistAsMCMassOmegaPlus;                //! reconstr. cascade effective mass, under Omega+ hyp. for Associated cand.
211         
212         // -  Generated Pt Vs generated Y of the cascade candidates associated with MC 
213         //     + having the proper maximum proba of combined PID for the bachelor
214         TH2F    *f2dHistAsMCandCombPIDGenPtVsGenYXiMinus;       //! Pt(gen) Vs Y(gen) from the MC Xi- associated with Reco cand + with PID info
215         TH2F    *f2dHistAsMCandCombPIDGenPtVsGenYXiPlus;        //! Pt(gen) Vs Y(gen) from the MC Xi+ associated with Reco cand + with PID info
216         TH2F    *f2dHistAsMCandCombPIDGenPtVsGenYOmegaMinus;    //! Pt(gen) Vs Y(gen) from the MC Omega- associated with Reco cand + with PID info
217         TH2F    *f2dHistAsMCandCombPIDGenPtVsGenYOmegaPlus;     //! Pt(gen) Vs Y(gen) from the MC Omega+ associated with Reco cand + with PID info
218         
219         // - Generated Pt Vs generated Y, for the cascade candidates associated with MC, without PID info
220         TH2F    *f2dHistAsMCGenPtVsGenYXiMinus;         //! gen. Pt Vs gen. Rap. from the MC Xi- associated with a reconstr. cascade
221         TH2F    *f2dHistAsMCGenPtVsGenYXiPlus;          //! gen. Pt Vs gen. Rap. from the MC Xi+ associated with a reconstr. cascade
222         TH2F    *f2dHistAsMCGenPtVsGenYOmegaMinus;      //! gen. Pt Vs gen. Rap. from the MC Omega- associated with a reconstr. cascade
223         TH2F    *f2dHistAsMCGenPtVsGenYOmegaPlus;       //! gen. Pt Vs gen. Rap. from the MC Omega+ associated with a reconstr. cascade
224         
225         // - Generated Eta of the the cascade candidates associated with MC, without PID info
226         TH1F    *fHistAsMCGenEtaXiMinus;                //! generated Eta from the MC Xi- associated with a reconstr. cascade
227         TH1F    *fHistAsMCGenEtaXiPlus;                 //! generated Eta from the MC Xi+ associated with a reconstr. cascade
228         TH1F    *fHistAsMCGenEtaOmegaMinus;             //! generated Eta from the MC Omega- associated with a reconstr. cascade
229         TH1F    *fHistAsMCGenEtaOmegaPlus;              //! generated Eta from the MC Omega+ associated with a reconstr. cascade
230         
231         // - Resolution in Pt as function of generated Pt
232         TH2F    *f2dHistAsMCResPtXiMinus;               //! resolution in Pt as function of gen. Pt, for Xi-
233         TH2F    *f2dHistAsMCResPtXiPlus;                //! resolution in Pt as function of gen. Pt, for Xi-
234         TH2F    *f2dHistAsMCResPtOmegaMinus;            //! resolution in Pt as function of gen. Pt, for Omega-
235         TH2F    *f2dHistAsMCResPtOmegaPlus;             //! resolution in Pt as function of gen. Pt, for Omega+
236         
237         // - Resolution in R(2D) as function of generated R
238         TH2F    *f2dHistAsMCResRXiMinus;                //! resolution in transv. R = f(transv. gen. R), for Xi-
239         TH2F    *f2dHistAsMCResRXiPlus;                 //! resolution in transv. R = f(transv. gen. R), for Xi+
240         TH2F    *f2dHistAsMCResROmegaMinus;             //! resolution in transv. R = f(transv. gen. R), for Omega-
241         TH2F    *f2dHistAsMCResROmegaPlus;              //! resolution in transv. R = f(transv. gen. R), for Omega+
242         
243         // - Resolution in phi as function of generated Pt
244         TH2F    *f2dHistAsMCResPhiXiMinus;              //! resolution in azimuth Phi = f(gen. Pt), for Xi-
245         TH2F    *f2dHistAsMCResPhiXiPlus;               //! resolution in azimuth Phi = f(gen. Pt), for Xi+
246         TH2F    *f2dHistAsMCResPhiOmegaMinus;           //! resolution in azimuth Phi = f(gen. Pt), for Omega-
247         TH2F    *f2dHistAsMCResPhiOmegaPlus;            //! resolution in azimuth Phi = f(gen. Pt), for Omega+
248         
249         // - Correlation in Pt between the cascade and its (anti)proton daughter
250         TH2F    *f2dHistAsMCPtProtonVsPtXiMinus;        //! Pt(p) Vs Pt(XiMinus), for a associated-to-reco cascade
251         TH2F    *f2dHistAsMCPtAntiProtonVsPtXiPlus;     //! Pt(anti-p) Vs Pt(XiPlus), for a associated-to-reco cascade
252         TH2F    *f2dHistAsMCPtProtonVsPtOmegaMinus;     //! Pt(p) Vs Pt(OmegaMinus), for a associated-to-reco cascade
253         TH2F    *f2dHistAsMCPtAntiProtonVsPtOmegaPlus;  //! Pt(anti-p) Vs Pt(OmegaPlus), for a associated-to-reco cascade
254         
255         
256         
257         // - Compilation of all PID plots (3D = casc. transv. momemtum Vs Casc Eff mass Vs Y), stored into an AliCFContainer
258         AliCFContainer  *fCFContCascadePIDAsXiMinus;      //! for Xi-   : Container to store any 3D histos with the different PID flavours
259         AliCFContainer  *fCFContCascadePIDAsXiPlus;       //! for Xi+   : Container to store any 3D histos with the different PID flavours
260         AliCFContainer  *fCFContCascadePIDAsOmegaMinus;   //! for Omega-: Container to store any 3D histos with the different PID flavours
261         AliCFContainer  *fCFContCascadePIDAsOmegaPlus;    //! for Omega+: Container to store any 3D histos with the different PID flavours
262         
263         // - Towards the optimisation of topological selections/ systematics (on associated candidates)
264         AliCFContainer  *fCFContAsCascadeCuts;            //! Container meant to store all the relevant distributions corresponding to the cut variables
265         
266   AliAnalysisTaskCheckPerformanceCascade(const AliAnalysisTaskCheckPerformanceCascade&);            // not implemented
267   AliAnalysisTaskCheckPerformanceCascade& operator=(const AliAnalysisTaskCheckPerformanceCascade&); // not implemented
268   
269   ClassDef(AliAnalysisTaskCheckPerformanceCascade, 6);
270 };
271
272 #endif