]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/SPECTRA/AliAnalysisTaskCheckPerformanceCascade.h
Fix Coveriry 15461
[u/mrichter/AliRoot.git] / PWG2 / SPECTRA / 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    *f2dHistRecoMultVsMCMult;       //! resolution of the multiplicity estimator (based on primary tracks)
86         
87         
88         // proton
89         TH1F    *fHistEtaGenProton;                     //! MC Pseudo-rapidity of any generated p+ (no cuts in acceptance)
90         TH1F    *fHistEtaGenAntiProton;                 //! MC Pseudo-rapidity of any generated p+ (no cuts in acceptance)
91
92 // Part 1 - Generated cascades
93         
94         //--------------
95         // Xi-
96         TH1F    *fHistEtaGenCascXiMinus;                //! MC Pseudo-rapidity of any generated Xi- (no cuts in acceptance)
97         TH2F    *f2dHistGenPtVsGenYGenXiMinus;          //! MC Pt Vs MC Y of generated Xi- 
98                 
99         // - Histos planned for Xi- emitted within the acceptance (cuts in theta + pt of daughters)
100         //      = findable cascades
101         TH1F    *fHistThetaGenCascXiMinus;              //! MC Theta angle of the generated Xi-
102         TH2F    *f2dHistGenPtVsGenYFdblXiMinus;         //! MC Pt Vs MC y of the findable Xi-
103         
104         TH1F    *fHistThetaLambdaXiMinus;               //! MC Theta angle of the Lambda daughter of the generated Xi-
105         TH1F    *fHistThetaBachXiMinus;                 //! MC Theta angle of the Bachelor (pi-)
106         
107         TH1F    *fHistThetaMesDghterXiMinus;            //! MC Theta angle of the mesonic  V0 daughter in the generated cascade, pi-
108         TH1F    *fHistThetaBarDghterXiMinus;            //! MC Theta angle of the baryonic V0 daughter in the generated cascade, p+
109         
110         TH1F    *fHistPtBachXiMinus;                    //! MC Pt of the Bachelor (pi-)                         (Control Plot)
111         TH1F    *fHistPtMesDghterXiMinus;               //! MC Pt of the meson daughter of the 'Lambda0', pi-   (Control Plot)
112         TH1F    *fHistPtBarDghterXiMinus;               //! MC Pt of the baryon daughter of the 'Lambda0', p+   (Control Plot)
113         
114         
115         
116         //--------------
117         // Xi+
118         TH1F    *fHistEtaGenCascXiPlus;                 //! MC Pseudo-rapidity of any generated Xi+ (no cuts in acceptance)
119         TH2F    *f2dHistGenPtVsGenYGenXiPlus;           //! MC Pt Vs MC Y of generated Xi+ 
120                         
121         // - Histos planned for Xi+ emitted within the acceptance (cuts in theta + pt of daughters)
122         TH1F    *fHistThetaGenCascXiPlus;               //! MC Theta angle of the generated Xi+
123         TH2F    *f2dHistGenPtVsGenYFdblXiPlus;          //! MC Pt Vs MC y of the findable Xi+
124         
125         TH1F    *fHistThetaLambdaXiPlus;                //! MC Theta angle of the anti-Lambda daughter of the generated Xi+
126         TH1F    *fHistThetaBachXiPlus;                  //! MC Theta angle of the Bachelor (pi+)
127         
128         TH1F    *fHistThetaMesDghterXiPlus;             //! MC Theta angle of the mesonic  V0 daughter in the generated cascade, pi+
129         TH1F    *fHistThetaBarDghterXiPlus;             //! MC Theta angle of the baryonic V0 daughter in the generated cascade, p-
130         
131         TH1F    *fHistPtBachXiPlus;                     //! MC Pt of the Bachelor (pi+)                       (Control Plot)
132         TH1F    *fHistPtMesDghterXiPlus;                //! MC Pt of the meson daughter of the 'Lambda0', pi+ (Control Plot)
133         TH1F    *fHistPtBarDghterXiPlus;                //! MC Pt of the baryon daughter of the 'Lambda0', p- (Control Plot)
134         
135         
136         
137         //--------------
138         // Omega-
139         TH1F    *fHistEtaGenCascOmegaMinus;             //! MC Pseudo-rapidity of any generated Omega- (no cuts in acceptance)
140         TH2F    *f2dHistGenPtVsGenYGenOmegaMinus;       //! MC Pt Vs MC Y of generated Omega-   
141         
142         // - Histos planned for Omega- emitted within the acceptance (cuts in theta + pt of daughters)
143         TH1F    *fHistThetaGenCascOmegaMinus;           //! MC Theta angle of the generated Omega-
144         TH2F    *f2dHistGenPtVsGenYFdblOmegaMinus;      //! MC Pt Vs MC y of the findable Omega-
145         
146         TH1F    *fHistThetaLambdaOmegaMinus;            //! MC Theta angle of the Lambda daughter of the generated Omega-
147         TH1F    *fHistThetaBachOmegaMinus;              //! MC Theta angle of the Bachelor (K-)
148         
149         TH1F    *fHistThetaMesDghterOmegaMinus;         //! MC Theta angle of the mesonic  V0 daughter in the generated cascade, pi-
150         TH1F    *fHistThetaBarDghterOmegaMinus;         //! MC Theta angle of the baryonic V0 daughter in the generated cascade, p+
151         
152         TH1F    *fHistPtBachOmegaMinus;                 //! MC Pt of the Bachelor (K-)                   (Control Plot)
153         TH1F    *fHistPtMesDghterOmegaMinus;            //! MC Pt of the meson daughter of the 'Lambda0', pi- (Control Plot)
154         TH1F    *fHistPtBarDghterOmegaMinus;            //! MC Pt of the baryon daughter of the 'Lambda0', p+ (Control Plot)
155         
156         
157         
158         //--------------
159         // Omega+
160         TH1F    *fHistEtaGenCascOmegaPlus;              //! MC Pseudo-rapidity of any generated Omega+ (no cuts in acceptance)
161         TH2F    *f2dHistGenPtVsGenYGenOmegaPlus;        //! MC Pt Vs MC Y of generated Omega+   
162                 
163         // - Histos planned for Omega+ emitted within the acceptance (cuts in theta + pt of daughters)
164         TH1F    *fHistThetaGenCascOmegaPlus;            //! MC Theta angle of the generated Omega+
165         TH2F    *f2dHistGenPtVsGenYFdblOmegaPlus;       //! MC Pt Vs MC y of the findable Omega+
166         
167         TH1F    *fHistThetaLambdaOmegaPlus;             //! MC Theta angle of the anti-Lambda daughter of the generated Omega+
168         TH1F    *fHistThetaBachOmegaPlus;               //! MC Theta angle of the Bachelor (K+)
169         
170         TH1F    *fHistThetaMesDghterOmegaPlus;          //! MC Theta angle of the mesonic  V0 daughter in the generated cascade, pi+
171         TH1F    *fHistThetaBarDghterOmegaPlus;          //! MC Theta angle of the baryonic V0 daughter in the generated cascade, p-
172         
173         TH1F    *fHistPtBachOmegaPlus;                  //! MC Pt of the Bachelor (K+) (Control Plot)
174         TH1F    *fHistPtMesDghterOmegaPlus;             //! MC Pt of the meson daughter of the 'Lambda0', pi+ (Control Plot)
175         TH1F    *fHistPtBarDghterOmegaPlus;             //! MC Pt of the baryon daughter of the 'Lambda0', p- (Control Plot)
176         
177         
178         
179 // Part 2 - Any reconstructed cascades + reconstructed cascades associated with MC
180         // 2.1 - Effective mass and PID
181         // - Effective mass histos for all the cascade candidates
182         TH1F    *fHistMassXiMinus;                      //! reconstructed cascade effective mass, under Xi- hyp.
183         TH1F    *fHistMassXiPlus;                       //! reconstructed cascade effective mass, under Xi+ hyp.
184         TH1F    *fHistMassOmegaMinus;                   //! reconstructed cascade effective mass, under Omega- hyp.
185         TH1F    *fHistMassOmegaPlus;                    //! reconstructed cascade effective mass, under Omega+ hyp.
186         
187         // - Effective mass histos with reconstruction combined PID
188         TH1F    *fHistMassWithCombPIDXiMinus;           //! reconstructed Xi- effective mass, with bach. comb PID
189         TH1F    *fHistMassWithCombPIDXiPlus;            //! reconstructed Xi+ effective mass, with bach. comb PID
190         TH1F    *fHistMassWithCombPIDOmegaMinus;        //! reconstructed Omega- effective mass, with bach. comb PID
191         TH1F    *fHistMassWithCombPIDOmegaPlus;         //! reconstructed Omega+ effective mass, with bach. comb PID
192         
193         // - PID Probability versus MC Pt(bachelor track)
194         TH2F    *f2dHistPIDprobaKaonVsMCPtBach;         //! Comb. PID probability for the bach. to be a Kaon Vs MC pt(bach)
195         TH2F    *f2dHistPIDprobaPionVsMCPtBach;         //! Comb. PID probability for the bach. to be a Pion Vs MC pt(bach)     
196
197         // - Effective mass histos with perfect MC PID
198         TH1F    *fHistMassWithMcPIDXiMinus;             //! reconstructed Xi- effective mass, with MC bach. PID
199         TH1F    *fHistMassWithMcPIDXiPlus;              //! reconstructed Xi+ effective mass, with MC bach. PID
200         TH1F    *fHistMassWithMcPIDOmegaMinus;          //! reconstructed Omega- effective mass, with MC bach. PID
201         TH1F    *fHistMassWithMcPIDOmegaPlus;           //! reconstructed Omega+ effective mass, with MC bach. PID
202
203         
204         // 2.2 - Associated candidates
205         // - Effective mass histos for the cascade candidates associated with MC, without PID info
206         TH1F    *fHistAsMCMassXiMinus;                  //! reconstr. cascade effective mass, under Xi- hyp. for Associated cand.
207         TH1F    *fHistAsMCMassXiPlus;                   //! reconstr. cascade effective mass, under Xi+ hyp. for Associated cand.
208         TH1F    *fHistAsMCMassOmegaMinus;               //! reconstr. cascade effective mass, under Omega- hyp. for Associated cand.
209         TH1F    *fHistAsMCMassOmegaPlus;                //! reconstr. cascade effective mass, under Omega+ hyp. for Associated cand.
210         
211         // -  Generated Pt Vs generated Y of the cascade candidates associated with MC 
212         //     + having the proper maximum proba of combined PID for the bachelor
213         TH2F    *f2dHistAsMCandCombPIDGenPtVsGenYXiMinus;       //! Pt(gen) Vs Y(gen) from the MC Xi- associated with Reco cand + with PID info
214         TH2F    *f2dHistAsMCandCombPIDGenPtVsGenYXiPlus;        //! Pt(gen) Vs Y(gen) from the MC Xi+ associated with Reco cand + with PID info
215         TH2F    *f2dHistAsMCandCombPIDGenPtVsGenYOmegaMinus;    //! Pt(gen) Vs Y(gen) from the MC Omega- associated with Reco cand + with PID info
216         TH2F    *f2dHistAsMCandCombPIDGenPtVsGenYOmegaPlus;     //! Pt(gen) Vs Y(gen) from the MC Omega+ associated with Reco cand + with PID info
217         
218         // - Generated Pt Vs generated Y, for the cascade candidates associated with MC, without PID info
219         TH2F    *f2dHistAsMCGenPtVsGenYXiMinus;         //! gen. Pt Vs gen. Rap. from the MC Xi- associated with a reconstr. cascade
220         TH2F    *f2dHistAsMCGenPtVsGenYXiPlus;          //! gen. Pt Vs gen. Rap. from the MC Xi+ associated with a reconstr. cascade
221         TH2F    *f2dHistAsMCGenPtVsGenYOmegaMinus;      //! gen. Pt Vs gen. Rap. from the MC Omega- associated with a reconstr. cascade
222         TH2F    *f2dHistAsMCGenPtVsGenYOmegaPlus;       //! gen. Pt Vs gen. Rap. from the MC Omega+ associated with a reconstr. cascade
223         
224         // - Generated Eta of the the cascade candidates associated with MC, without PID info
225         TH1F    *fHistAsMCGenEtaXiMinus;                //! generated Eta from the MC Xi- associated with a reconstr. cascade
226         TH1F    *fHistAsMCGenEtaXiPlus;                 //! generated Eta from the MC Xi+ associated with a reconstr. cascade
227         TH1F    *fHistAsMCGenEtaOmegaMinus;             //! generated Eta from the MC Omega- associated with a reconstr. cascade
228         TH1F    *fHistAsMCGenEtaOmegaPlus;              //! generated Eta from the MC Omega+ associated with a reconstr. cascade
229         
230         // - Resolution in Pt as function of generated Pt
231         TH2F    *f2dHistAsMCResPtXiMinus;               //! resolution in Pt as function of gen. Pt, for Xi-
232         TH2F    *f2dHistAsMCResPtXiPlus;                //! resolution in Pt as function of gen. Pt, for Xi-
233         TH2F    *f2dHistAsMCResPtOmegaMinus;            //! resolution in Pt as function of gen. Pt, for Omega-
234         TH2F    *f2dHistAsMCResPtOmegaPlus;             //! resolution in Pt as function of gen. Pt, for Omega+
235         
236         // - Resolution in R(2D) as function of generated R
237         TH2F    *f2dHistAsMCResRXiMinus;                //! resolution in transv. R = f(transv. gen. R), for Xi-
238         TH2F    *f2dHistAsMCResRXiPlus;                 //! resolution in transv. R = f(transv. gen. R), for Xi+
239         TH2F    *f2dHistAsMCResROmegaMinus;             //! resolution in transv. R = f(transv. gen. R), for Omega-
240         TH2F    *f2dHistAsMCResROmegaPlus;              //! resolution in transv. R = f(transv. gen. R), for Omega+
241         
242         // - Resolution in phi as function of generated Pt
243         TH2F    *f2dHistAsMCResPhiXiMinus;              //! resolution in azimuth Phi = f(gen. Pt), for Xi-
244         TH2F    *f2dHistAsMCResPhiXiPlus;               //! resolution in azimuth Phi = f(gen. Pt), for Xi+
245         TH2F    *f2dHistAsMCResPhiOmegaMinus;           //! resolution in azimuth Phi = f(gen. Pt), for Omega-
246         TH2F    *f2dHistAsMCResPhiOmegaPlus;            //! resolution in azimuth Phi = f(gen. Pt), for Omega+
247         
248         
249         // - Compilation of all PID plots (3D = casc. transv. momemtum Vs Casc Eff mass Vs Y), stored into an AliCFContainer
250         AliCFContainer  *fCFContCascadePIDAsXiMinus;      //! for Xi-   : Container to store any 3D histos with the different PID flavours
251         AliCFContainer  *fCFContCascadePIDAsXiPlus;       //! for Xi+   : Container to store any 3D histos with the different PID flavours
252         AliCFContainer  *fCFContCascadePIDAsOmegaMinus;   //! for Omega-: Container to store any 3D histos with the different PID flavours
253         AliCFContainer  *fCFContCascadePIDAsOmegaPlus;    //! for Omega+: Container to store any 3D histos with the different PID flavours
254         
255         // - Towards the optimisation of topological selections/ systematics (on associated candidates)
256         AliCFContainer  *fCFContAsCascadeCuts;            //! Container meant to store all the relevant distributions corresponding to the cut variables
257         
258   AliAnalysisTaskCheckPerformanceCascade(const AliAnalysisTaskCheckPerformanceCascade&);            // not implemented
259   AliAnalysisTaskCheckPerformanceCascade& operator=(const AliAnalysisTaskCheckPerformanceCascade&); // not implemented
260   
261   ClassDef(AliAnalysisTaskCheckPerformanceCascade, 5);
262 };
263
264 #endif