]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/SPECTRA/AliAnalysisTaskCheckCascadePbPb.h
Added pass1 and pass2 directories
[u/mrichter/AliRoot.git] / PWG2 / SPECTRA / AliAnalysisTaskCheckCascadePbPb.h
1 #ifndef ALIANALYSISTASKCHECKCASCADEPBPB_H
2 #define ALIANALYSISTASKCHECKCASCADEPBPB_H
3
4 /*  See cxx source for full Copyright notice */
5
6 //-----------------------------------------------------------------
7 //            AliAnalysisTaskCheckCascadePbPb class
8 //              Origin AliAnalysisTaskCheckCascade
9 //              This task has four roles :
10 //                1. QAing the Cascades from ESD and AOD
11 //                   Origin:  AliAnalysisTaskESDCheckV0 by Boris Hippolyte Nov2007, hippolyt@in2p3.fr
12 //                2. Prepare the plots which stand as raw material for yield extraction (wi/wo PID)
13 //                3. Supply an AliCFContainer meant to define the optimised topological selections
14 //                4. Rough azimuthal correlation study (Eta, Phi)
15 //                Adapted to Cascade : A.Maire Mar2008, antonin.maire@ires.in2p3.fr
16 //                Modified :           A.Maire Mar2010, antonin.maire@ires.in2p3.fr
17 //                Modified for PbPb analysis: M. Nicassio Feb 2011, maria.nicassio@ba.infn.it
18 //-----------------------------------------------------------------
19
20 class TList;
21 class TH1F;
22 class TH2F;
23 class TH3F;
24 class TVector3;
25 class THnSparse;
26  
27 class AliESDpid;
28 class AliESDEvent;
29 class AliPhysicsSelection;
30 class AliCFContainer;
31
32
33 #include "TString.h"
34
35 #include "AliAnalysisTaskSE.h"
36
37 class AliAnalysisTaskCheckCascadePbPb : public AliAnalysisTaskSE {
38  public:
39   AliAnalysisTaskCheckCascadePbPb();
40   AliAnalysisTaskCheckCascadePbPb(const char *name);
41   virtual ~AliAnalysisTaskCheckCascadePbPb();
42   
43   virtual void   UserCreateOutputObjects();
44   virtual void   UserExec(Option_t *option);
45 /*        void   DoAngularCorrelation(const Char_t   *lCascType, 
46                                             Double_t  lInvMassCascade, 
47                                       const Int_t    *lArrTrackID,
48                                             TVector3 &lTVect3MomXi, 
49                                             Double_t  lEtaXi);*/
50   virtual Int_t  DoESDTrackWithTPCrefitMultiplicity(const AliESDEvent *lESDevent);
51   
52   virtual void   Terminate(Option_t *);
53   
54   void SetCollidingSystems           (Short_t collidingSystems          = 0    ) { fCollidingSystems            = collidingSystems;           }
55   void SetAnalysisType               (const char* analysisType          = "ESD") { fAnalysisType                = analysisType;               }
56   void SetRelaunchV0CascVertexers    (Bool_t rerunV0CascVertexers       = 0    ) { fkRerunV0CascVertexers       = rerunV0CascVertexers;       }
57   void SetQualityCutZprimVtxPos      (Bool_t qualityCutZprimVtxPos      = kTRUE) { fkQualityCutZprimVtxPos      = qualityCutZprimVtxPos;      }
58   void SetQualityCutNoTPConlyPrimVtx (Bool_t qualityCutNoTPConlyPrimVtx = kTRUE) { fkQualityCutNoTPConlyPrimVtx = qualityCutNoTPConlyPrimVtx; }
59   void SetQualityCutTPCrefit         (Bool_t qualityCutTPCrefit         = kTRUE) { fkQualityCutTPCrefit         = qualityCutTPCrefit;         }
60   void SetQualityCut80TPCcls         (Bool_t qualityCut80TPCcls         = kTRUE) { fkQualityCut80TPCcls         = qualityCut80TPCcls;         }
61   void SetExtraSelections            (Bool_t extraSelections            = 0    ) { fkExtraSelections            = extraSelections;            }
62   void SetCentralityLowLim           (Float_t centrlowlim               = 0.   ) { fCentrLowLim                 = centrlowlim;                }  
63   void SetCentralityUpLim            (Float_t centruplim                = 100. ) { fCentrUpLim                  = centruplim;                 }
64   void SetCentralityEst              (TString   centrest                = "V0M") { fCentrEstimator              = centrest;                   }
65   void SetVertexRange                (Float_t vtxrange                  = 0.   ) { fVtxRange                    = vtxrange;                   }
66   void SetUseCFContCascadeCuts       (Bool_t usecfcontcascadecuts       = kFALSE){fUseCFContCascadeCuts         = usecfcontcascadecuts;       }
67
68  private:
69         // Note : In ROOT, "//!" means "do not stream the data from Master node to Worker node" ...
70         // your data member object is created on the worker nodes and streaming is not needed.
71         // http://root.cern.ch/download/doc/11InputOutput.pdf, page 14
72
73
74         TString         fAnalysisType;                  // "ESD" or "AOD" analysis type 
75         Short_t         fCollidingSystems;              // 0 = pp collisions or 1 = AA collisions
76
77         AliESDpid       *fESDpid;                       // Tool data member to manage the TPC Bethe-Bloch info
78         //TPaveText       *fPaveTextBookKeeping;          // TString to store all the relevant info necessary for book keeping (v0 cuts, cascade cuts, quality cuts, ...)
79
80         Bool_t          fkRerunV0CascVertexers;         // Boolean : kTRUE = relaunch both V0 + Cascade vertexers
81         Bool_t          fkQualityCutZprimVtxPos;        // Boolean : kTRUE = cut on the prim.vtx  z-position
82         Bool_t          fkQualityCutNoTPConlyPrimVtx;   // Boolean : kTRUE = prim vtx should be SPD or Tracking vertex
83         Bool_t          fkQualityCutTPCrefit;           // Boolean : kTRUE = ask for TPCrefit for the 3 daughter tracks
84         Bool_t          fkQualityCut80TPCcls;           // Boolean : kTRUE = ask for 80 TPC clusters for each daughter track
85         Bool_t          fkExtraSelections;              // Boolean : kTRUE = apply tighter selections, before starting the analysis
86         Float_t         fCentrLowLim;                   // Lower limit for centrality percentile selection
87         Float_t         fCentrUpLim;                    // Upper limit for centrality percentile selection
88         TString         fCentrEstimator;                // string for the centrality estimator
89         Float_t         fVtxRange;                      // to select events with |zvtx|<fVtxRange cm
90         Bool_t          fUseCFContCascadeCuts;          // to use CF containers for topological cut optimization
91
92        
93         Double_t        fAlephParameters[5];            // Array to store the 5 param values for the TPC Bethe-Bloch parametrisation
94         Double_t        fV0Sels[7];                     // Array to store the 7 values for the different selections V0 related (if fkRerunV0CascVertexers)
95         Double_t        fCascSels[8];                   // Array to store the 8 values for the different selections Casc. related (if fkRerunV0CascVertexers)
96
97
98         TList      *fListHistCascade;              //! List of Cascade histograms
99         
100         // - General histos (filled before the trigger selection)
101         TH1F    *fHistCascadeMultiplicityBeforeEvSel; //! Cascade multiplicity distribution
102          
103         // - General histos (filled for any triggered event)
104         TH1F    *fHistCascadeMultiplicityForCentrEvt;              //! Cascade multiplicity distribution
105         TH1F    *fHistTrackMultiplicityForCentrEvt;                //! Track multiplicity distribution (without any cut = include ITS stand-alone + global tracks)
106         TH1F    *fHistTPCrefitTrackMultiplicityForCentrEvt;        //! Track multiplicity distribution for tracks with TPCrefit
107         
108         // - General histos (filled for any triggered event + (|z(prim. vtx)| < 10 cm ) )
109         TH1F    *fHistCascadeMultiplicityForTrigEvtAndZprimVtx;   //! Cascade multiplicity distribution
110
111         // - General histos (filled for events selected in this analysis (|z(prim. vtx)| < 10 cm + prim vtx = SPD or Tracking) )
112         TH1F    *fHistCascadeMultiplicityForSelEvt;     //! Cascade multiplicity distribution
113         TH1F    *fHistPosBestPrimaryVtxXForSelEvt;      //! (best) primary vertex position distribution in x 
114         TH1F    *fHistPosBestPrimaryVtxYForSelEvt;      //! (best) primary vertex position distribution in y
115         TH1F    *fHistPosBestPrimaryVtxZForSelEvt;      //! (best) primary vertex position distribution in z
116         
117         
118         
119
120         // - Characteristics for event with >1 cascade : Track Multiplicity, TPC clusters + Prim. vertex positions
121         TH1F    *fHistTPCrefitTrackMultiplicityForCascadeEvt;   //! TPCrefit Track multiplicity distribution for event with >1 cascade candidate (NB: after quality sel. within the task)
122
123         TH1F    *fHistPosV0TPCClusters;                 //! TPC clusters distribution for Positive V0 daughter track
124         TH1F    *fHistNegV0TPCClusters;                 //! TPC clusters distribution for Negative V0 daughter track
125         TH1F    *fHistBachTPCClusters;                  //! TPC clusters distribution for Bachelor             track
126
127         TH1F    *fHistVtxStatus;                        //! Is there a tracking vertex in the cascade event ?
128
129                 // Vtx coming from the full tracking, for events containing at least a cascade
130         TH1F    *fHistPosTrkgPrimaryVtxXForCascadeEvt;  //! primary vertex position distribution in x 
131         TH1F    *fHistPosTrkgPrimaryVtxYForCascadeEvt;  //! primary vertex position distribution in y
132         TH1F    *fHistPosTrkgPrimaryVtxZForCascadeEvt;  //! primary vertex position distribution in z
133         TH1F    *fHistTrkgPrimaryVtxRadius;             //! primary vertex (3D) radius distribution 
134
135                 // Best primary Vtx available, for events containing at least a cascade
136         TH1F    *fHistPosBestPrimaryVtxXForCascadeEvt;  //! (best) primary vertex position distribution in x 
137         TH1F    *fHistPosBestPrimaryVtxYForCascadeEvt;  //! (best) primary vertex position distribution in y
138         TH1F    *fHistPosBestPrimaryVtxZForCascadeEvt;  //! (best) primary vertex position distribution in z
139         TH1F    *fHistBestPrimaryVtxRadius;             //! (best) primary vertex radius distribution 
140
141                 // Correlation Best Vtx / Full Tracking Vtx
142         TH2F    *f2dHistTrkgPrimVtxVsBestPrimVtx;       //!  Radius of prim. Vtx from tracks Vs Radius of best Prim. Vtx
143
144
145 // PART 1 : Adavanced QA
146 // - Typical histos on the variables used for the selection of cascades
147         TH1F    *fHistEffMassXi;                        //! reconstructed cascade effective mass
148         TH1F    *fHistChi2Xi;                           //! chi2 value
149         TH1F    *fHistDcaXiDaughters;                   //! dca between Xi's daughters
150         TH1F    *fHistDcaBachToPrimVertex;              //! dca of the bachelor track to primary vertex
151         TH1F    *fHistXiCosineOfPointingAngle;          //! cosine of Xi pointing angle in a cascade
152         TH1F    *fHistXiRadius;                         //! (transverse) radius of the cascade vertex 
153                 
154         // - Histos about ~ the "V0 selection part" of the cascade,  coming by inheritance from AliESDv0
155         TH1F    *fHistMassLambdaAsCascDghter;           //! Test Invariant Mass of Lambda coming from Cascade
156         TH1F    *fHistV0Chi2Xi;                         //! V0 chi2 distribution, for the V0 associated to a cascade
157         TH1F    *fHistDcaV0DaughtersXi;                 //! Dca between V0 daughters, for the V0 associated to a cascade
158         TH1F    *fHistDcaV0ToPrimVertexXi;              //! Dca of V0 to primary vertex, for the V0 associated to a cascade     
159         TH1F    *fHistV0CosineOfPointingAngleXi;        //! Cosine of V0 pointing angle, for the V0 associated to a cascade
160         TH1F    *fHistV0RadiusXi;                       //! V0 (transverse) distance distribution, for the V0 associated to a cascade
161
162         TH1F    *fHistDcaPosToPrimVertexXi;             //! Dca of V0 positive daughter to primary vertex, for the V0 associated to a cascade
163         TH1F    *fHistDcaNegToPrimVertexXi;             //! Dca of V0 negative daughter to primary vertex, for the V0 associated to a cascade
164         
165
166         // - Effective mass histos for cascades.
167         TH1F    *fHistMassXiMinus;                      //! reconstructed cascade effective mass, under Xi- hyp.
168         TH1F    *fHistMassXiPlus;                       //! reconstructed cascade effective mass, under Xi+ hyp.
169         TH1F    *fHistMassOmegaMinus;                   //! reconstructed cascade effective mass, under Omega- hyp.
170         TH1F    *fHistMassOmegaPlus;                    //! reconstructed cascade effective mass, under Omega+ hyp.
171         
172         TH1F    *fHistMassWithCombPIDXiMinus;           //! reconstructed Xi- effective mass, with bach. comb PID
173         TH1F    *fHistMassWithCombPIDXiPlus;            //! reconstructed Xi+ effective mass, with bach. comb PID
174         TH1F    *fHistMassWithCombPIDOmegaMinus;        //! reconstructed Omega- effective mass, with bach. comb PID
175         TH1F    *fHistMassWithCombPIDOmegaPlus;         //! reconstructed Omega+ effective mass, with bach. comb PID
176
177         // - Complements for QA
178         TH1F    *fHistXiTransvMom;                      //! Xi transverse momentum, around the mass peak of Xi-/+ 
179         TH1F    *fHistXiTotMom;                         //! Xi momentum norm, around the mass peak of Xi-/+
180         
181         TH1F    *fHistBachTransvMomXi;                  //! bachelor transverse momentum, for cand. around the mass peak of Xi-/+
182         TH1F    *fHistBachTotMomXi;                     //! bachelor momentum norm, for cand. around the mass peak of Xi-/+
183
184         TH1F    *fHistChargeXi;                         //! Charge sign of the cascade candidate
185         TH1F    *fHistV0toXiCosineOfPointingAngle;      //! Cos. of Pointing angle between the V0 mom and the Xi-V0 vtx line
186   
187         TH1F    *fHistRapXi;                            //! rapidity of Xi candidates, around the mass peak of Xi-/+
188         TH1F    *fHistRapOmega;                         //! rapidity of Omega candidates, around the mass peak of Omega-/+
189         TH1F    *fHistEtaXi;                            //! eta distrib. of all the cascade candidates, around the mass peak of Xi-/+
190         TH1F    *fHistThetaXi;                          //! theta distrib. of all the cascade candidates, around the mass peak of Xi-/+
191         TH1F    *fHistPhiXi;                            //! phi distrib. of all the cascade candidates, around the mass peak of Xi-/+
192         
193         TH2F    *f2dHistArmenteros;                     //! alpha(casc. cand.) Vs PtArm(casc. cand.)
194         
195         TH2F    *f2dHistEffMassLambdaVsEffMassXiMinus;  //! Xi- Eff mass Vs V0 Eff mass, under Xi- hyp.
196         TH2F    *f2dHistEffMassXiVsEffMassOmegaMinus;   //! Xi- Eff mass Vs Omega- Eff mass, for negative cascades
197         TH2F    *f2dHistEffMassLambdaVsEffMassXiPlus;   //! Xi+ Eff mass Vs V0 Eff mass, under Xi+ hyp.
198         TH2F    *f2dHistEffMassXiVsEffMassOmegaPlus;    //! Xi+ Eff mass Vs Omega+ Eff mass, for positive cascades
199         
200         TH2F    *f2dHistXiRadiusVsEffMassXiMinus;       //! transv. casc. decay radius Vs Xi- Eff mass, under Xi- hyp.
201         TH2F    *f2dHistXiRadiusVsEffMassXiPlus;        //! transv. casc. decay radius Vs Xi+ Eff mass, under Xi+ hyp.
202         TH2F    *f2dHistXiRadiusVsEffMassOmegaMinus;    //! transv. casc. decay radius Vs Omega- Eff mass, under Omega- hyp.
203         TH2F    *f2dHistXiRadiusVsEffMassOmegaPlus;     //! transv. casc. decay radius Vs Omega+ Eff mass, under Omega+ hyp.
204         
205         TH2F    *f2dHistTPCdEdxOfCascDghters;           //! TPC Bethe-Bloch curve, populated with the cascade daughters
206         
207         
208         // PART 2 : TH3F needed for pt spectrum and yield extraction
209         // Without any PID
210 /*      TH3F    *f3dHistXiPtVsEffMassVsYXiMinus;        //! casc. transv. momemtum Vs Xi- Eff mass Vs Y
211         TH3F    *f3dHistXiPtVsEffMassVsYXiPlus;         //! casc. transv. momemtum Vs Xi+ Eff mass Vs Y
212         TH3F    *f3dHistXiPtVsEffMassVsYOmegaMinus;     //! casc. transv. momemtum Vs Omega- Eff mass Vs Y
213         TH3F    *f3dHistXiPtVsEffMassVsYOmegaPlus;      //! casc. transv. momemtum Vs Omega+ Eff mass Vs Y
214 */      
215         // Compilation of all PID plots (3D = casc. transv. momemtum Vs Casc Eff mass Vs Y), stored into an AliCFContainer
216         AliCFContainer  *fCFContCascadePIDXiMinus;      //! for Xi-   : Container to store any 3D histos with the different PID flavours
217         AliCFContainer  *fCFContCascadePIDXiPlus;       //! for Xi+   : Container to store any 3D histos with the different PID flavours
218         AliCFContainer  *fCFContCascadePIDOmegaMinus;   //! for Omega-: Container to store any 3D histos with the different PID flavours
219         AliCFContainer  *fCFContCascadePIDOmegaPlus;    //! for Omega+: Container to store any 3D histos with the different PID flavours
220         
221         
222         
223         // PART 3 : Towards the optimisation of topological selections / systematics
224         AliCFContainer  *fCFContCascadeCuts;            //! Container meant to store all the relevant distributions corresponding to the cut variables
225         
226         
227         // PART 4 :  Azimuthal correlation study
228 /*      THnSparseF      *fHnSpAngularCorrXiMinus;       //! Delta Phi(Casc,any trck) Vs Delta Eta(Casc,any trck) Vs Casc Pt Vs Pt of the tracks Vs Eff Mass
229         THnSparseF      *fHnSpAngularCorrXiPlus;        //! Delta Phi(Casc,any trck) Vs Delta Eta(Casc,any trck) Vs Casc Pt Vs Pt of the tracks Vs Eff Mass
230         THnSparseF      *fHnSpAngularCorrOmegaMinus;    //! Delta Phi(Casc,any trck) Vs Delta Eta(Casc,any trck) Vs Casc Pt Vs Pt of the tracks Vs Eff Mass
231         THnSparseF      *fHnSpAngularCorrOmegaPlus;     //! Delta Phi(Casc,any trck) Vs Delta Eta(Casc,any trck) Vs Casc Pt Vs Pt of the tracks Vs Eff Mass
232 */
233         TH1F *fV0Ampl;                                  //! histo to check the V0 amplitude distribution  
234
235         TH2F    *fHistDcaXiDaughtersvsInvMass;          //! cut variables vs inv. mass
236         TH2F    *fHistDcaBachToPrimVertexvsInvMass;     //! cut variables vs inv. mass
237         TH2F    *fHistXiCosineOfPointingAnglevsInvMass; //! cut variables vs inv. mass
238         TH2F    *fHistMassLambdaAsCascDghtervsInvMass;  //! cut variables vs inv. mass
239         TH2F    *fHistDcaV0DaughtersXivsInvMass;        //! cut variables vs inv. mass
240         TH2F    *fHistDcaV0ToPrimVertexXivsInvMass;     //! cut variables vs inv. mass
241
242
243
244   AliAnalysisTaskCheckCascadePbPb(const AliAnalysisTaskCheckCascadePbPb&);            // not implemented
245   AliAnalysisTaskCheckCascadePbPb& operator=(const AliAnalysisTaskCheckCascadePbPb&); // not implemented
246   
247   ClassDef(AliAnalysisTaskCheckCascadePbPb, 1);
248 };
249
250 #endif