]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/STRANGENESS/LambdaK0/AliAnalysisTaskExtractV0.h
Bug fix in acquistion of SPD centrality (CL1).
[u/mrichter/AliRoot.git] / PWGLF / STRANGENESS / LambdaK0 / AliAnalysisTaskExtractV0.h
1 #ifndef ALIANALYSISTASKEXTRACTV0_H
2 #define ALIANALYSISTASKEXTRACTV0_H
3
4 /**************************************************************************
5  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
6  *                                                                        *
7  * Author: The ALICE Off-line Project.                                    *
8  * Contributors are mentioned in the code where appropriate.              *
9  *                                                                        *
10  * Permission to use, copy, modify and distribute this software and its   *
11  * documentation strictly for non-commercial purposes is hereby granted   *
12  * without fee, provided that the above copyright notice appears in all   *
13  * copies and that both the copyright notice and this permission notice   *
14  * appear in the supporting documentation. The authors make no claims     *
15  * about the suitability of this software for any purpose. It is          *
16  * provided "as is" without express or implied warranty.                  *
17  **************************************************************************/
18
19 //-----------------------------------------------------------------
20 //      AliAnalysisTaskExtractV0 class
21 //      ------------------------------
22 //
23 //    Please see cxx file for more details.   
24 //             
25 //-----------------------------------------------------------------
26
27 // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
28 //
29 // --- This version: 23rd March 2012 
30 //
31 // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
32
33 class TList;
34 class TH1F;
35 class TH2F;
36 class TH3F;
37 class TVector3;
38 class THnSparse;
39
40 class AliESDpid;
41 class AliESDtrackCuts;
42 class AliESDEvent;
43 class AliPhysicsSelection;
44 class AliCFContainer;
45
46 //#include "TString.h"
47 //#include "AliESDtrackCuts.h"
48 #include "AliAnalysisTaskSE.h"
49
50 class AliAnalysisTaskExtractV0 : public AliAnalysisTaskSE {
51  public:
52         AliAnalysisTaskExtractV0();
53         AliAnalysisTaskExtractV0(const char *name);
54         virtual ~AliAnalysisTaskExtractV0();
55         
56         virtual void     UserCreateOutputObjects();
57         virtual void     UserExec(Option_t *option);
58         virtual void     Terminate(Option_t *);
59   void CheckChargeV0(AliESDv0 *thisv0);
60
61   void SetIsNuclear           (Bool_t lIsNuclear   = kTRUE ) { fkIsNuclear   = lIsNuclear;   }
62   void SetINT7Trigger         (Bool_t lSwitchINT7  = kTRUE ) { fkSwitchINT7  = lSwitchINT7; }
63   void SetUseOnTheFly         (Bool_t lUseOnTheFly = kTRUE ) { fkUseOnTheFly = lUseOnTheFly; }
64   void SetTakeAllTracks       (Bool_t lTakeAllTracks = kTRUE ) { fkTakeAllTracks = lTakeAllTracks; }
65   void SetCentralityEstimator (TString lCentralityEstimator = "V0M" ) { fCentralityEstimator = lCentralityEstimator; }
66   void SetLightWeightAnalysis (Bool_t lLightWeight = kTRUE) {fkLightWeight = lLightWeight;  }
67   void SetFastOnly (TString lFastOnly = "kFastOnly") {fkFastOnly = lFastOnly;  }
68   
69  private:
70                                 // Note : In ROOT, "//!" means "do not stream the data from Master node to Worker node" ...
71                                 // your data member object is created on the worker nodes and streaming is not needed.
72                                 // http://root.cern.ch/download/doc/11InputOutput.pdf, page 14
73         TList   *fListHistV0;   //! List of output objects
74         TTree   *fTree;                                                 //! Output Tree
75
76   AliPIDResponse *fPIDResponse;     // PID response object
77   AliESDtrackCuts *fESDtrackCuts;   // ESD track cuts used for primary track definition
78
79   //Objects Controlling Task Behaviour 
80   
81   Bool_t fkIsNuclear;   // if true, replace multiplicity est. by centrality (default FALSE) 
82   Bool_t fkSwitchINT7; // if true, skip FASTOnly (default FALSE)
83   Bool_t fkUseOnTheFly; // if true, will use On-the-fly V0s instead of Offline V0s (default FALSE)
84   Bool_t fkTakeAllTracks; // if true, no TPC crossed rows and ratio cut
85   TString fCentralityEstimator; //Centrality Estimator String value (default V0M, DEPRECATED)
86   Bool_t fkLightWeight; // if true, analysis output will exclude some non-fundamental
87                         // debugging information. This creates smaller output.
88   TString fkFastOnly; //"" if no extra selection, "kFastOnly" -> without SDD, "NotkFastOnly" -> With SDD
89
90   //Variables for Tree
91         Float_t fTreeVariableChi2V0;         //!
92         Float_t fTreeVariableDcaV0Daughters; //!
93         Float_t fTreeVariableDcaV0ToPrimVertex; //!
94         Float_t fTreeVariableDcaPosToPrimVertex; //!
95         Float_t fTreeVariableDcaNegToPrimVertex; //!
96         Float_t fTreeVariableV0CosineOfPointingAngle; //!
97         Float_t fTreeVariableV0Radius; //!
98         Float_t fTreeVariablePt; //!
99         Float_t fTreeVariableRapK0Short; //!
100         Float_t fTreeVariableRapLambda; //!
101         Float_t fTreeVariableInvMassK0s; //!
102         Float_t fTreeVariableInvMassLambda; //!
103         Float_t fTreeVariableInvMassAntiLambda; //!
104         Float_t fTreeVariableAlphaV0; //!
105         Float_t fTreeVariablePtArmV0;//!
106         Float_t fTreeVariableNegTotMomentum; //!        
107         Float_t fTreeVariablePosTotMomentum; //!
108         Float_t fTreeVariableNegdEdxSig; //!
109         Float_t fTreeVariablePosdEdxSig; //!
110         Float_t fTreeVariableNegEta; //!
111         Float_t fTreeVariablePosEta; //!
112
113         Float_t fTreeVariableNSigmasPosProton; //!
114         Float_t fTreeVariableNSigmasPosPion; //! 
115         Float_t fTreeVariableNSigmasNegProton; //!
116         Float_t fTreeVariableNSigmasNegPion; //! 
117         
118         Float_t fTreeVariableDistOverTotMom;//!
119         Int_t   fTreeVariableLeastNbrCrossedRows;//!
120         Float_t fTreeVariableLeastRatioCrossedRowsOverFindable;//!
121         Int_t   fTreeVariableMultiplicity ;//!
122   Int_t   fTreeVariableMultiplicityV0A ;//!
123   Int_t   fTreeVariableMultiplicityZNA ;//!
124   Int_t   fTreeVariableMultiplicityTRK ;//!
125   Int_t   fTreeVariableMultiplicitySPD ;//!
126
127   Int_t   fTreeVariableRunNumber; //! 
128   ULong64_t fTreeVariableEventNumber; //!
129
130   Float_t fTreeVariableV0x; //!
131   Float_t fTreeVariableV0y; //!
132   Float_t fTreeVariableV0z; //!
133
134   Float_t fTreeVariableV0Px; //!
135   Float_t fTreeVariableV0Py; //!
136   Float_t fTreeVariableV0Pz; //!
137
138   Float_t fTreeVariablePVx; //!
139   Float_t fTreeVariablePVy; //!
140   Float_t fTreeVariablePVz; //!
141   
142   //Decay Length issue debugging: ULong_t with track status
143   ULong64_t fTreeVariableNegTrackStatus;
144   ULong64_t fTreeVariablePosTrackStatus;
145   
146 //Note: TDistOverTotMom needs a mass hypothesis to be converted to proper decaylength.
147
148         TH1F    *fHistV0MultiplicityBeforeTrigSel;             //! V0 multiplicity distribution
149         TH1F    *fHistV0MultiplicityForTrigEvt;                //! V0 multiplicity distribution
150         TH1F    *fHistV0MultiplicityForSelEvt;                 //! V0 multiplicity distribution
151         TH1F    *fHistV0MultiplicityForSelEvtNoTPCOnly;        //! V0 multiplicity distribution
152         TH1F    *fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup;//! V0 multiplicity distribution
153
154         TH1F    *fHistMultiplicityBeforeTrigSel;                //! multiplicity distribution    
155         TH1F    *fHistMultiplicityForTrigEvt;                   //! multiplicity distribution
156         TH1F    *fHistMultiplicity;                                                     //! multiplicity distribution
157         TH1F    *fHistMultiplicityNoTPCOnly;                            //! multiplicity distribution
158         TH1F    *fHistMultiplicityNoTPCOnlyNoPileup;                    //! multiplicity distribution
159
160   //V0A Centrality
161   TH1F    *fHistMultiplicityV0ABeforeTrigSel;           //! multiplicity distribution
162         TH1F    *fHistMultiplicityV0AForTrigEvt;                        //! multiplicity distribution
163         TH1F    *fHistMultiplicityV0A;                                                  //! multiplicity distribution
164         TH1F    *fHistMultiplicityV0ANoTPCOnly;                         //! multiplicity distribution
165         TH1F    *fHistMultiplicityV0ANoTPCOnlyNoPileup;                 //! multiplicity distribution
166
167   //ZNA Centrality
168   TH1F    *fHistMultiplicityZNABeforeTrigSel;           //! multiplicity distribution
169         TH1F    *fHistMultiplicityZNAForTrigEvt;                        //! multiplicity distribution
170         TH1F    *fHistMultiplicityZNA;                                                  //! multiplicity distribution
171         TH1F    *fHistMultiplicityZNANoTPCOnly;                         //! multiplicity distribution
172         TH1F    *fHistMultiplicityZNANoTPCOnlyNoPileup;                 //! multiplicity distribution
173   
174   //TRK Centrality
175   TH1F    *fHistMultiplicityTRKBeforeTrigSel;           //! multiplicity distribution
176         TH1F    *fHistMultiplicityTRKForTrigEvt;                        //! multiplicity distribution
177         TH1F    *fHistMultiplicityTRK;                                                  //! multiplicity distribution
178         TH1F    *fHistMultiplicityTRKNoTPCOnly;                         //! multiplicity distribution
179         TH1F    *fHistMultiplicityTRKNoTPCOnlyNoPileup;                 //! multiplicity distribution
180   
181   //SPD Centrality
182   TH1F    *fHistMultiplicitySPDBeforeTrigSel;           //! multiplicity distribution
183         TH1F    *fHistMultiplicitySPDForTrigEvt;                        //! multiplicity distribution
184         TH1F    *fHistMultiplicitySPD;                                                  //! multiplicity distribution
185         TH1F    *fHistMultiplicitySPDNoTPCOnly;                         //! multiplicity distribution
186         TH1F    *fHistMultiplicitySPDNoTPCOnlyNoPileup;                 //! multiplicity distribution
187   
188   
189   //Raw Data for Vertex Z position estimator change
190         TH2F    *f2dHistMultiplicityVsVertexZBeforeTrigSel;             //! multiplicity distribution    
191         TH2F    *f2dHistMultiplicityVsVertexZForTrigEvt;                        //! multiplicity distribution
192         TH2F    *f2dHistMultiplicityVsVertexZ;                                                  //! multiplicity distribution
193         TH2F    *f2dHistMultiplicityVsVertexZNoTPCOnly;                         //! multiplicity distribution
194         TH2F    *f2dHistMultiplicityVsVertexZNoTPCOnlyNoPileup;                 //! multiplicity distribution
195
196
197         TH1F    *fHistPVx;                                              //! multiplicity distribution
198         TH1F    *fHistPVy;                                              //! multiplicity distribution
199         TH1F    *fHistPVz;                                              //! multiplicity distribution
200         TH1F    *fHistPVxAnalysis;                                              //! multiplicity distribution
201         TH1F    *fHistPVyAnalysis;                                              //! multiplicity distribution
202         TH1F    *fHistPVzAnalysis;                                              //! multiplicity distribution
203         TH1F    *fHistSwappedV0Counter;                                                 //! Swapped V0 Counter
204
205    AliAnalysisTaskExtractV0(const AliAnalysisTaskExtractV0&);            // not implemented
206    AliAnalysisTaskExtractV0& operator=(const AliAnalysisTaskExtractV0&); // not implemented
207   
208    ClassDef(AliAnalysisTaskExtractV0, 11);
209 };
210
211 #endif