]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/STRANGENESS/Cascades/AliAnalysisTaskCheckPerformanceCascadepp276.h
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / PWGLF / STRANGENESS / Cascades / AliAnalysisTaskCheckPerformanceCascadepp276.h
1 #ifndef ALIANALYSISTASKCHECKPERFORMANCECASCADEPP276_H
2 #define ALIANALYSISTASKCHECKPERFORMANCECASCADEPP276_H
3
4 /*  See cxx source for full Copyright notice */
5
6 // //-----------------------------------------------------------------
7 // //        AliAnalysisTaskCheckPerformanceCascadePbPb class
8 // //            This task is for a performance study of cascade identification.
9 // //            It works with MC info and ESD and AOD tree 
10 // //            Origin   : A.Maire    Jan2010, antonin.maire@ires.in2p3.fr
11 // //            Modified : M.Nicassio Feb2011, maria.nicassio@ba.infn.it
12 // //            Modified : D.Colella  Feb2012, domenico.colella@ba.infn.it
13 // //-----------------------------------------------------------------
14
15 class TList;
16 class TH1F;
17 class TH2F;
18 class TH3F; 
19
20 class AliESDEvent;
21 class AliESDtrackCuts;
22 class AliPhysicsSelection;
23 class AliCFContainer;
24 class AliPIDResponse;
25 class AliAnalysisUtils;
26
27 #include "AliAnalysisTaskSE.h"
28
29 class AliAnalysisTaskCheckPerformanceCascadepp276 : public AliAnalysisTaskSE {
30  public:
31  
32   AliAnalysisTaskCheckPerformanceCascadepp276();
33   AliAnalysisTaskCheckPerformanceCascadepp276(const char *name );
34   virtual ~AliAnalysisTaskCheckPerformanceCascadepp276();
35   
36   virtual void   UserCreateOutputObjects();
37   virtual void   UserExec(Option_t *option);
38   virtual void   Terminate(Option_t *);
39   
40   void SetAnalysisType               (const char* analysisType           = "ESD") { fAnalysisType                 = analysisType;               }
41   void SetCollidingSystem            (const char* collidingSystem        = "pp" ) { fCollidingSystem              = collidingSystem;            }  
42   void SetRelaunchV0CascVertexers    (Bool_t  rerunV0CascVertexers       = 0    ) { fkRerunV0CascVertexers        = rerunV0CascVertexers;       }
43   void SetSDDSelection               (Bool_t  sddOnSelection             = kTRUE) { fkSDDselectionOn              = sddOnSelection;             }
44   void SetQualityCutZprimVtxPos      (Bool_t  qualityCutZprimVtxPos      = kTRUE) { fkQualityCutZprimVtxPos       = qualityCutZprimVtxPos;      }
45   void SetRejectEventPileUp          (Bool_t  rejectPileUp               = kTRUE) { fkRejectEventPileUp           = rejectPileUp;               }
46   void SetQualityCutNoTPConlyPrimVtx (Bool_t  qualityCutNoTPConlyPrimVtx = kTRUE) { fkQualityCutNoTPConlyPrimVtx  = qualityCutNoTPConlyPrimVtx; }
47   void SetQualityCutTPCrefit         (Bool_t  qualityCutTPCrefit         = kTRUE) { fkQualityCutTPCrefit          = qualityCutTPCrefit;         }
48   void SetQualityCutnTPCcls          (Bool_t  qualityCutnTPCcls          = kTRUE) { fkQualityCutnTPCcls           = qualityCutnTPCcls;          }
49   void SetWithSDDOn                  (Bool_t  withsddOn                  = kTRUE) { fwithSDD                      = withsddOn;                  }
50   void SetQualityCutMinnTPCcls       (Int_t   minnTPCcls                 = 70   ) { fMinnTPCcls                   = minnTPCcls;                 }
51   void SetExtraSelections            (Bool_t  extraSelections            = 0    ) { fkExtraSelections             = extraSelections;            }
52   void SetVertexRange                (Float_t vtxrange                   = 0.   ) { fVtxRange                     = vtxrange;                   }
53   void SetVertexRangeMin             (Float_t vtxrangemin                = 0.   ) { fVtxRangeMin                  = vtxrangemin;                }
54   void SetApplyAccCut                (Bool_t  acccut                     = kFALSE){ fApplyAccCut                  = acccut;                     }    
55   void SetMinptCutOnDaughterTracks   (Float_t minptdaughtrks             = 0.   ) { fMinPtCutOnDaughterTracks     = minptdaughtrks;             }
56   void SetEtaCutOnDaughterTracks     (Float_t etadaughtrks               = 0.   ) { fEtaCutOnDaughterTracks       = etadaughtrks;               }
57
58  private:
59         // Note : In ROOT, "//!" means "do not stream the data from Master node to Worker node" ...
60         // your data member object is created on the worker nodes and streaming is not needed.
61         // http://root.cern.ch/download/doc/11InputOutput.pdf, page 14
62
63         TString         fAnalysisType;          // "ESD" or "AOD" analysis type 
64         AliESDtrackCuts *fESDtrackCuts;         // ESD track cuts used for primary track definition
65         AliAnalysisUtils *fUtils;
66         TString         fCollidingSystem;       // "pPb" or "pp" colliding system
67        // AliESDtrackCuts *fESDtrackCuts;         // ESD track cuts used for primary track definition
68         AliPIDResponse *fPIDResponse;           //! PID response object        
69        // AliAnalysisUtils *fUtils;
70
71         Bool_t          fkRerunV0CascVertexers;         // Boolean : kTRUE = relaunch both V0 + Cascade vertexers
72         Bool_t          fkSDDselectionOn;               // Boolean : kTRUE = enable the selection based on the SDD status
73         Bool_t          fkQualityCutZprimVtxPos;        // Boolean : kTRUE = cut on the prim.vtx  z-position
74         Bool_t          fkRejectEventPileUp;            // Boolean : kTRUE = enable the rejection of events tagged as pile-up by SPD (AliESDEvent::IsPileupFromSPD)
75         Bool_t          fkQualityCutNoTPConlyPrimVtx;   // Boolean : kTRUE = prim vtx should be SPD or Tracking vertex
76         Bool_t          fkQualityCutTPCrefit;           // Boolean : kTRUE = ask for TPCrefit for the 3 daughter tracks
77         Bool_t          fkQualityCutnTPCcls;            // Boolean : kTRUE = ask for n TPC clusters for each daughter track
78         Bool_t          fwithSDD;                       // Boolean : kTRUE = select events with SDD reco
79         Int_t           fMinnTPCcls;                    // Boolean : set the value for the minimum number of TPC clusters
80         Bool_t          fkExtraSelections;              // Boolean : kTRUE = apply tighter selections, before starting the analysis
81         Float_t         fVtxRange;                      // to select events with |zvtx|<fVtxRange cm
82         Float_t         fVtxRangeMin;                   // to select events with |zvtx|>fVtxRangeMin cm
83         Bool_t          fApplyAccCut;                   // flag to apply acceptance cuts to MC cascades       
84         Float_t         fMinPtCutOnDaughterTracks;      // minimum pt cut on daughter tracks
85         Float_t         fEtaCutOnDaughterTracks;        // pseudorapidity cut on daughter tracks 
86         
87         Double_t        fV0Sels[7];                     // Array to store the 7 values for the different selections V0 related (if fkRerunV0CascVertexers)
88         Double_t        fCascSels[8];                   // Array to store the 8 values for the different selections Casc. related (if fkRerunV0CascVertexers)
89         
90         TList   *fListHistCascade;                      //! List of Cascade histograms
91          // - General Plots
92          // Cascade multiplicity plots
93          TH1F *fHistCascadeMultiplicityBeforeAnySel;
94          TH1F *fHistCascadeMultiplicityAfterSDDSel;
95          TH1F *fHistCascadeMultiplicityAfterPhysicsSel;
96          TH1F *fHistCascadeMultiplicityForSelEvtNoTPCOnly;
97          TH1F *fHistCascadeMultiplicityForSelEvtNoTPCOnlyNoPileup;
98          TH1F *fHistCascadeMultiplicityAfterVertexCutSel;
99          TH1F *fHistnXiPlusPerEvTot;                  // After any event selections, in all the eta and pt range
100          TH1F *fHistnXiMinusPerEvTot;                 // After any event selections, in all the eta and pt range
101          TH1F *fHistnOmegaPlusPerEvTot;               // After any event selections, in all the eta and pt range
102          TH1F *fHistnOmegaMinusPerEvTot;              // After any event selections, in all the eta and pt range
103          TH1F *fHistnXiPlusPerEv;                     // After any event selections, in the detector acceptance and over a pt minimum
104          TH1F *fHistnXiMinusPerEv;                    // After any event selections, in the detector acceptance and over a pt minimum
105          TH1F *fHistnOmegaPlusPerEv;                  // After any event selections, in the detector acceptance and over a pt minimum
106          TH1F *fHistnOmegaMinusPerEv;                 // After any event selections, in the detector acceptance and over a pt minimum
107          TH1F *fHistnAssoXiMinus;                     // For the Reconstructed-Associated cascades 
108          TH1F *fHistnAssoXiPlus;                      // For the Reconstructed-Associated cascades 
109          TH1F *fHistnAssoOmegaMinus;                  // For the Reconstructed-Associated cascades 
110          TH1F *fHistnAssoOmegaPlus;                   // For the Reconstructed-Associated cascades 
111          // Tracks multiplicity plots
112          TH1F *fHistTrackMultiplicityBeforeAnySel;
113          TH1F *fHistTrackMultiplicityAfterSDDSel;
114          TH1F *fHistTrackMultiplicityAfterPhysicsSel;
115          TH1F *fHistTrackMultiplicityForSelEvtNoTPCOnly;
116          TH1F *fHistTrackMultiplicityForSelEvtNoTPCOnlyNoPileup;
117          TH1F *fHistTrackMultiplicityAfterVertexCutSel;
118          // Vertex position plots (BestVertex)
119          TH1F *fHistPVx;                              // After any selections but before |Z| < 10 cm
120          TH1F *fHistPVy;                              // After any selections but before |Z| < 10 cm
121          TH1F *fHistPVz;                              // After any selections but before |Z| < 10 cm
122          TH1F *fHistPVxAnalysis;                      // After any event selections 
123          TH1F *fHistPVyAnalysis;                      // After any event selections
124          TH1F *fHistPVzAnalysis;                      // After any event selections
125          // - Plots before Physics Selection
126          TH3D *f3dHistGenPtVsGenYvsNtracksXiMinus;    // After the SDD event selection (For efficinecy calculation)
127          TH3D *f3dHistGenPtVsGenctauvsYXiMinus;       // After the SDD event selection (For efficinecy calculation)
128          TH3D *f3dHistGenPtVsGenYvsNtracksXiPlus;     // After the SDD event selection (For efficinecy calculation)
129          TH3D *f3dHistGenPtVsGenctauvsYXiPlus;        // After the SDD event selection (For efficinecy calculation)
130          TH3D *f3dHistGenPtVsGenYvsNtracksOmegaMinus; // After the SDD event selection (For efficinecy calculation)
131          TH3D *f3dHistGenPtVsGenctauvsYOmegaMinus;    // After the SDD event selection (For efficinecy calculation)
132          TH3D *f3dHistGenPtVsGenYvsNtracksOmegaPlus;  // After the SDD event selection (For efficinecy calculation)
133          TH3D *f3dHistGenPtVsGenctauvsYOmegaPlus;     // After the SDD event selection (For efficinecy calculation)
134
135          // - Generated cascade plots
136          // After all the event selections 
137          //Xi-
138          TH1F *fHistEtaGenCascXiMinus;                // In all the eta and pt range (as they are generated)
139          TH1F *fHistThetaGenCascXiMinus;              // In all the eta and pt range (as they are generated)
140          TH3D *f3dHistGenPtVsGenYvsNtracksXiMinusPhysEff;    // 
141          TH3D *f3dHistGenPtVsGenctauvsYXiMinusPhysEff;       // 
142          TH2D *f2dHistGenPtVsGenYFdblXiMinus;         // In the detector acceptance and over a pt minimum (Findable particle)
143          TH1F *fHistThetaLambdaXiMinus;               // In the detector acceptance and over a pt minimum (Findable particle)
144          TH1F *fHistThetaBachXiMinus;                 // In the detector acceptance and over a pt minimum (Findable particle)
145          TH1F *fHistThetaMesDghterXiMinus;            // In the detector acceptance and over a pt minimum (Findable particle)
146          TH1F *fHistThetaBarDghterXiMinus;            // In the detector acceptance and over a pt minimum (Findable particle)
147          TH1F *fHistPtBachXiMinus;                    // In the detector acceptance and over a pt minimum (Findable particle)
148          TH1F *fHistPtMesDghterXiMinus;               // In the detector acceptance and over a pt minimum (Findable particle)
149          TH1F *fHistPtBarDghterXiMinus;               // In the detector acceptance and over a pt minimum (Findable particle)
150          //Xi+
151          TH1F *fHistEtaGenCascXiPlus;                 // In all the eta and pt range (as they are generated)
152          TH1F *fHistThetaGenCascXiPlus;               // In all the eta and pt range (as they are generated)
153          TH3D *f3dHistGenPtVsGenYvsNtracksXiPlusPhysEff;    // 
154          TH3D *f3dHistGenPtVsGenctauvsYXiPlusPhysEff;       // 
155          TH2D *f2dHistGenPtVsGenYFdblXiPlus;          // In the detector acceptance and over a pt minimum (Findable particle)
156          TH1F *fHistThetaLambdaXiPlus;                // In the detector acceptance and over a pt minimum (Findable particle)
157          TH1F *fHistThetaBachXiPlus;                  // In the detector acceptance and over a pt minimum (Findable particle)
158          TH1F *fHistThetaMesDghterXiPlus;             // In the detector acceptance and over a pt minimum (Findable particle)
159          TH1F *fHistThetaBarDghterXiPlus;             // In the detector acceptance and over a pt minimum (Findable particle)
160          TH1F *fHistPtBachXiPlus;                     // In the detector acceptance and over a pt minimum (Findable particle)
161          TH1F *fHistPtMesDghterXiPlus;                // In the detector acceptance and over a pt minimum (Findable particle)
162          TH1F *fHistPtBarDghterXiPlus;                // In the detector acceptance and over a pt minimum (Findable particle)
163          //Omega-
164          TH1F *fHistEtaGenCascOmegaMinus;             // In all the eta and pt range (as they are generated)
165          TH1F *fHistThetaGenCascOmegaMinus;           // In all the eta and pt range (as they are generated)
166          TH3D *f3dHistGenPtVsGenYvsNtracksOmegaMinusPhysEff;    // 
167          TH3D *f3dHistGenPtVsGenctauvsYOmegaMinusPhysEff;       //
168          TH2D *f2dHistGenPtVsGenYFdblOmegaMinus;      // In the detector acceptance and over a pt minimum (Findable particle)
169          TH1F *fHistThetaLambdaOmegaMinus;            // In the detector acceptance and over a pt minimum (Findable particle)
170          TH1F *fHistThetaBachOmegaMinus;              // In the detector acceptance and over a pt minimum (Findable particle)
171          TH1F *fHistThetaMesDghterOmegaMinus;         // In the detector acceptance and over a pt minimum (Findable particle)
172          TH1F *fHistThetaBarDghterOmegaMinus;         // In the detector acceptance and over a pt minimum (Findable particle)
173          TH1F *fHistPtBachOmegaMinus;                 // In the detector acceptance and over a pt minimum (Findable particle)
174          TH1F *fHistPtMesDghterOmegaMinus;            // In the detector acceptance and over a pt minimum (Findable particle)
175          TH1F *fHistPtBarDghterOmegaMinus;            // In the detector acceptance and over a pt minimum (Findable particle)
176          //Omega+      
177          TH1F *fHistEtaGenCascOmegaPlus;              // In all the eta and pt range (as they are generated)
178          TH1F *fHistThetaGenCascOmegaPlus;            // In all the eta and pt range (as they are generated)
179          TH3D *f3dHistGenPtVsGenYvsNtracksOmegaPlusPhysEff;    // 
180          TH3D *f3dHistGenPtVsGenctauvsYOmegaPlusPhysEff;       //
181          TH2D *f2dHistGenPtVsGenYFdblOmegaPlus;       // In the detector acceptance and over a pt minimum (Findable particle)
182          TH1F *fHistThetaLambdaOmegaPlus;             // In the detector acceptance and over a pt minimum (Findable particle)
183          TH1F *fHistThetaBachOmegaPlus;               // In the detector acceptance and over a pt minimum (Findable particle)
184          TH1F *fHistThetaMesDghterOmegaPlus;          // In the detector acceptance and over a pt minimum (Findable particle)
185          TH1F *fHistThetaBarDghterOmegaPlus;          // In the detector acceptance and over a pt minimum (Findable particle)
186          TH1F *fHistPtBachOmegaPlus;                  // In the detector acceptance and over a pt minimum (Findable particle)
187          TH1F *fHistPtMesDghterOmegaPlus;             // In the detector acceptance and over a pt minimum (Findable particle)
188          TH1F *fHistPtBarDghterOmegaPlus;             // In the detector acceptance and over a pt minimum (Findable particle)
189
190          // - Associated to MC cascade plots
191          TH1F *fHistMassXiMinus;                      // For the Reconstructed-Associated cascades
192          TH1F *fHistMassXiPlus;                       // For the Reconstructed-Associated cascades
193          TH1F *fHistMassOmegaMinus;                   // For the Reconstructed-Associated cascades
194          TH1F *fHistMassOmegaPlus;                    // For the Reconstructed-Associated cascades
195          // Effective mass histos with combined PID
196          TH1F *fHistMassWithCombPIDXiMinus;
197          TH1F *fHistMassWithCombPIDXiPlus;
198          TH1F *fHistMassWithCombPIDOmegaMinus;
199          TH1F *fHistMassWithCombPIDOmegaPlus;
200          // PID Probability versus MC Pt(bachelor track)
201          TH2F *f2dHistPIDprobaKaonVsMCPtBach; 
202          TH2F *f2dHistPIDprobaPionVsMCPtBach;
203          // Effective mass histos with perfect MC PID on the bachelor
204          TH1F *fHistMassWithMcPIDXiMinus; 
205          TH1F *fHistMassWithMcPIDXiPlus;
206          TH1F *fHistMassWithMcPIDOmegaMinus; 
207          TH1F *fHistMassWithMcPIDOmegaPlus;
208          // Effective mass histos for the cascade candidates associated with MC
209          TH1F *fHistAsMCMassXiMinus;
210          TH1F *fHistAsMCMassXiPlus;
211          TH1F *fHistAsMCMassOmegaMinus;
212          TH1F *fHistAsMCMassOmegaPlus;
213          // Generated Pt Vs generated y, for the cascade candidates associated with MC + Info Comb. PID
214          TH2F *f2dHistAsMCandCombPIDGenPtVsGenYXiMinus;
215          TH2F *f2dHistAsMCandCombPIDGenPtVsGenYXiPlus;
216          TH2F *f2dHistAsMCandCombPIDGenPtVsGenYOmegaMinus;
217          TH2F *f2dHistAsMCandCombPIDGenPtVsGenYOmegaPlus;
218          // Generated Pt Vs generated y, for the cascade candidates associated with MC
219          TH2F *f2dHistAsMCGenPtVsGenYXiMinus;
220          TH2F *f2dHistAsMCGenPtVsGenYXiPlus;
221          TH2F *f2dHistAsMCGenPtVsGenYOmegaMinus;
222          TH2F *f2dHistAsMCGenPtVsGenYOmegaPlus;
223          // Generated Eta of the the cascade candidates associated with MC
224          TH1F *fHistAsMCGenEtaXiMinus;
225          TH1F *fHistAsMCGenEtaXiPlus;
226          TH1F *fHistAsMCGenEtaOmegaMinus;
227          TH1F *fHistAsMCGenEtaOmegaPlus;
228          // Resolution in Pt as function of generated Pt
229          TH2F *f2dHistAsMCResPtXiMinus;
230          TH2F *f2dHistAsMCResPtXiPlus;
231          TH2F *f2dHistAsMCResPtOmegaMinus;
232          TH2F *f2dHistAsMCResPtOmegaPlus;
233          // Resolution in R(2D) as function of generated R
234          TH2F *f2dHistAsMCResRXiMinus;
235          TH2F *f2dHistAsMCResRXiPlus;
236          TH2F *f2dHistAsMCResROmegaMinus;
237          TH2F *f2dHistAsMCResROmegaPlus;
238          // Resolution in phi as function of generated Pt
239          TH2F *f2dHistAsMCResPhiXiMinus;
240          TH2F *f2dHistAsMCResPhiXiPlus;
241          TH2F *f2dHistAsMCResPhiOmegaMinus;
242          TH2F *f2dHistAsMCResPhiOmegaPlus;
243          // Correlation between proton (antiproton) daughter MC pt and Xi/Omega MC pt (to apply Geat/Fluka correction)
244          TH2F *f2dHistAsMCptProtonMCptXiMinus;
245          TH2F *f2dHistAsMCptAntiprotonMCptXiPlus;
246          TH2F *f2dHistAsMCptProtonMCptOmegaMinus;
247          TH2F *f2dHistAsMCptAntiprotonMCptOmegaPlus;
248          // QA plots
249          TH1F *fHistV0toXiCosineOfPointingAngle;
250          TH2F *fHistV0CosineOfPointingAnglevsPtXi;
251          TH2F *fHistV0CosineOfPointingAnglevsPtOmega;
252
253          // Containers                       
254          AliCFContainer  *fCFContCascadePIDAsXiMinus;
255          AliCFContainer  *fCFContCascadePIDAsXiPlus;
256          AliCFContainer  *fCFContCascadePIDAsOmegaMinus;
257          AliCFContainer  *fCFContCascadePIDAsOmegaPlus;
258          AliCFContainer  *fCFContAsCascadeCuts;
259
260
261
262   AliAnalysisTaskCheckPerformanceCascadepp276(const AliAnalysisTaskCheckPerformanceCascadepp276&);            // not implemented
263   AliAnalysisTaskCheckPerformanceCascadepp276& operator=(const AliAnalysisTaskCheckPerformanceCascadepp276&); // not implemented
264   
265   ClassDef(AliAnalysisTaskCheckPerformanceCascadepp276, 8);
266 };
267
268 #endif