]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/STRANGENESS/Cascades/AliAnalysisTaskExtractCascade.h
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / PWGLF / STRANGENESS / Cascades / AliAnalysisTaskExtractCascade.h
1 /**************************************************************************
2  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3  *                                                                        *
4  * Author: The ALICE Off-line Project.                                    *
5  * Contributors are mentioned in the code where appropriate.              *
6  *                                                                        *
7  * Permission to use, copy, modify and distribute this software and its   *
8  * documentation strictly for non-commercial purposes is hereby granted   *
9  * without fee, provided that the above copyright notice appears in all   *
10  * copies and that both the copyright notice and this permission notice   *
11  * appear in the supporting documentation. The authors make no claims     *
12  * about the suitability of this software for any purpose. It is          *
13  * provided "as is" without express or implied warranty.                  *
14  **************************************************************************/
15
16 // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
17 //
18 // Modified version of AliAnalysisTaskCheckCascade.h
19 // Used bits of code from AliAnalysisTaskCheckPerformanceStrange
20 //
21 // --- David Dobrigkeit Chinellato
22 //
23 // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
24
25 #ifndef ALIANALYSISTASKEXTRACTCASCADE_H
26 #define ALIANALYSISTASKEXTRACTCASCADE_H
27
28 class TList;
29 class TH1F;
30 class TH2F;
31 class TH3F;
32 class TVector3;
33 class THnSparse;
34
35 class AliESDpid;
36 class AliESDtrackCuts;
37 class AliESDEvent;
38 class AliPhysicsSelection;
39 class AliCFContainer;
40 class AliAnalysisUtils;
41
42 //#include "TString.h"
43 //#include "AliESDtrackCuts.h"
44 #include "AliAnalysisTaskSE.h"
45
46 class AliAnalysisTaskExtractCascade : public AliAnalysisTaskSE {
47  public:
48   AliAnalysisTaskExtractCascade();
49   AliAnalysisTaskExtractCascade(const char *name);
50   virtual ~AliAnalysisTaskExtractCascade();
51   
52   virtual void   UserCreateOutputObjects();
53   virtual void   UserExec(Option_t *option);
54   virtual void   Terminate(Option_t *);
55   Double_t MyRapidity(Double_t rE, Double_t rPz) const;
56
57   void SetIsNuclear           (Bool_t lIsNuclear   = kTRUE ) { fkIsNuclear   = lIsNuclear;   }
58   void SetINT7Trigger         (Bool_t lSwitchINT7  = kTRUE ) { fkSwitchINT7   = lSwitchINT7; }
59   void SetCentralityEstimator (TString lCentralityEstimator = "V0M" ) { fCentralityEstimator = lCentralityEstimator; }
60   void SetpAVertexSelection   (Bool_t lpAVertexSelection = kTRUE) {fkpAVertexSelection = lpAVertexSelection;  }
61   void SetEtaRefMult ( Double_t lEtaRefMult = 0.5 ) { fEtaRefMult = lEtaRefMult; }
62
63 //---------------------------------------------------------------------------------------
64   //Task Configuration: Meant to enable quick re-execution of vertexer if needed
65   void SetRunVertexers ( Bool_t lRunVertexers = kTRUE) { fkRunVertexers = lRunVertexers; }
66 //---------------------------------------------------------------------------------------
67   //Set Debug Mode
68   void SetDebugMode ( Bool_t lDebugMode = kTRUE) { fkDebugMode = lDebugMode; }
69     //---------------------------------------------------------------------------------------
70     //Set Peripheral event debugging mode (Pb-Pb X-check)
71     void SetSelectPeripheral ( Bool_t lSelectPeripheral = kTRUE) { fkSelectPeripheral = lSelectPeripheral; }
72     //---------------------------------------------------------------------------------------
73 //Setters for the V0 Vertexer Parameters
74   void SetV0VertexerMaxChisquare   ( Double_t lParameter ){ fV0VertexerSels[0] = lParameter; }
75   void SetV0VertexerDCAFirstToPV   ( Double_t lParameter ){ fV0VertexerSels[1] = lParameter; }
76   void SetV0VertexerDCASecondtoPV  ( Double_t lParameter ){ fV0VertexerSels[2] = lParameter; }
77   void SetV0VertexerDCAV0Daughters ( Double_t lParameter ){ fV0VertexerSels[3] = lParameter; }
78   void SetV0VertexerCosinePA       ( Double_t lParameter ){ fV0VertexerSels[4] = lParameter; }
79   void SetV0VertexerMinRadius      ( Double_t lParameter ){ fV0VertexerSels[5] = lParameter; }
80   void SetV0VertexerMaxRadius      ( Double_t lParameter ){ fV0VertexerSels[6] = lParameter; }
81 //---------------------------------------------------------------------------------------
82 //Setters for the Cascade Vertexer Parameters
83   void SetCascVertexerMaxChisquare         ( Double_t lParameter ){ fCascadeVertexerSels[0] = lParameter; } 
84   void SetCascVertexerMinV0ImpactParameter ( Double_t lParameter ){ fCascadeVertexerSels[1] = lParameter; } 
85   void SetCascVertexerV0MassWindow         ( Double_t lParameter ){ fCascadeVertexerSels[2] = lParameter; } 
86   void SetCascVertexerDCABachToPV          ( Double_t lParameter ){ fCascadeVertexerSels[3] = lParameter; } 
87   void SetCascVertexerDCACascadeDaughters  ( Double_t lParameter ){ fCascadeVertexerSels[4] = lParameter; }
88   void SetCascVertexerCascadeCosinePA      ( Double_t lParameter ){ fCascadeVertexerSels[5] = lParameter; }  
89   void SetCascVertexerCascadeMinRadius     ( Double_t lParameter ){ fCascadeVertexerSels[6] = lParameter; }  
90   void SetCascVertexerCascadeMaxRadius     ( Double_t lParameter ){ fCascadeVertexerSels[7] = lParameter; }  
91 //---------------------------------------------------------------------------------------
92   
93  private:
94         // Note : In ROOT, "//!" means "do not stream the data from Master node to Worker node" ...
95         // your data member object is created on the worker nodes and streaming is not needed.
96         // http://root.cern.ch/download/doc/11InputOutput.pdf, page 14
97   TList  *fListHist;  //! List of Cascade histograms
98   TTree  *fTreeCascade;              //! Output Tree, Cascades
99
100   //Objects that have to be streamed:
101   AliPIDResponse *fPIDResponse;     // PID response object
102   AliESDtrackCuts *fESDtrackCuts;   // ESD track cuts used for primary track definition
103   AliAnalysisUtils *fUtils;         // analysis utils (for pA vertex selection)
104
105   //Objects Controlling Task Behaviour 
106   // (have to be streamed too or configuration is lost)
107   Bool_t fkIsNuclear;   //if true, replace multiplicity est. by centrality (default FALSE) 
108   Bool_t fkSwitchINT7;  //if true, skip FASTOnly (default FALSE)
109   TString fCentralityEstimator; //Centrality Estimator String value (default V0M)
110   Bool_t fkpAVertexSelection; //if true, select vertex with pPb Methods
111   Double_t fEtaRefMult; //Reference multiplicity eta
112   //Objects Controlling Task Behaviour: has to be streamed! 
113   Bool_t    fkRunVertexers;           // if true, re-run vertexer with loose cuts. CARE MUST BE TAKEN in PbPb!
114   Bool_t    fkDebugMode; //Store extra debugging information in tree
115     Bool_t    fkSelectPeripheral; //Switch to skip anything other than 60-80% V0M
116   Double_t  fV0VertexerSels[7];        // Array to store the 7 values for the different selections V0 related
117   Double_t  fCascadeVertexerSels[8];   // Array to store the 8 values for the different selections Casc. related
118
119
120         //Double_t        fV0Sels[7];                     // Array to store the 7 values for the different selections V0 related
121         //Double_t        fCascSels[8];                   // Array to store the 8 values for the different selections Casc. related
122
123 //===========================================================================================
124 //   Variables for tree, cascades
125 //===========================================================================================
126
127   Int_t fTreeCascVarCharge;         //! 
128   Float_t fTreeCascVarMassAsXi;     //! 
129   Float_t fTreeCascVarMassAsOmega;  //! 
130   Float_t fTreeCascVarPt;           //!
131   Float_t fTreeCascVarPtMC;         //!
132   Float_t fTreeCascVarRapMC;        //!
133   Float_t fTreeCascVarRapXi;        //!
134   Float_t fTreeCascVarRapOmega;     //!
135   Float_t fTreeCascVarNegEta;       //!
136   Float_t fTreeCascVarPosEta;       //!
137   Float_t fTreeCascVarBachEta;      //!
138   Float_t fTreeCascVarDCACascDaughters; //!
139   Float_t fTreeCascVarDCABachToPrimVtx; //!
140   Float_t fTreeCascVarDCAV0Daughters;   //!
141   Float_t fTreeCascVarDCAV0ToPrimVtx;   //!
142   Float_t fTreeCascVarDCAPosToPrimVtx;  //!
143   Float_t fTreeCascVarDCANegToPrimVtx;  //!
144   Float_t fTreeCascVarCascCosPointingAngle; //!
145   Float_t fTreeCascVarCascRadius;           //!
146   Float_t fTreeCascVarV0Mass;               //!
147   Float_t fTreeCascVarV0CosPointingAngle;   //!
148   Float_t fTreeCascVarV0CosPointingAngleSpecial;   //!
149   Float_t fTreeCascVarV0Radius;             //!
150   Int_t   fTreeCascVarLeastNbrClusters;     //!
151   Int_t   fTreeCascVarMultiplicity;         //!
152   Int_t   fTreeCascVarMultiplicityV0A;         //!
153   Int_t   fTreeCascVarMultiplicityZNA;         //!
154   Int_t   fTreeCascVarMultiplicityTRK;         //!
155   Int_t   fTreeCascVarMultiplicitySPD;         //!
156   Float_t fTreeCascVarDistOverTotMom;       //!
157   Int_t   fTreeCascVarPID;         //!
158   Int_t   fTreeCascVarPIDBachelor; //!  
159   Int_t   fTreeCascVarPIDNegative; //!
160   Int_t   fTreeCascVarPIDPositive; //!
161   Float_t fTreeCascVarBachTransMom;   //!
162   Float_t fTreeCascVarPosTransMom;   //!
163   Float_t fTreeCascVarNegTransMom;   //!
164   Float_t fTreeCascVarPosTransMomMC; //!
165   Float_t fTreeCascVarNegTransMomMC; //!
166
167   Float_t fTreeCascVarNegNSigmaPion;   //!
168   Float_t fTreeCascVarNegNSigmaProton; //!
169   Float_t fTreeCascVarPosNSigmaPion;   //! 
170   Float_t fTreeCascVarPosNSigmaProton; //! 
171   Float_t fTreeCascVarBachNSigmaPion;  //! 
172   Float_t fTreeCascVarBachNSigmaKaon;  //! 
173
174   Bool_t fTreeCascVarkITSRefitBachelor; //! 
175   Bool_t fTreeCascVarkITSRefitNegative; //! 
176   Bool_t fTreeCascVarkITSRefitPositive; //!
177     
178     //Debugging information, if requested
179     //Part A: EbyE info, Run number
180     Int_t     fTreeCascVarRunNumber; //!
181     ULong64_t fTreeCascVarEventNumber; //!
182     
183     //Part B: Shared Clusters
184     Int_t fTreeCascVarNegClusters; //!
185     Int_t fTreeCascVarPosClusters; //!
186     Int_t fTreeCascVarBachClusters; //!
187     Int_t fTreeCascVarNegSharedClusters; //!
188     Int_t fTreeCascVarPosSharedClusters; //!
189     Int_t fTreeCascVarBachSharedClusters; //!
190     
191     //Part C: All momenta
192     Float_t fTreeCascVarNegPx; //!
193     Float_t fTreeCascVarNegPy; //!
194     Float_t fTreeCascVarNegPz; //!
195     Float_t fTreeCascVarPosPx; //!
196     Float_t fTreeCascVarPosPy; //!
197     Float_t fTreeCascVarPosPz; //!
198     Float_t fTreeCascVarBachPx; //!
199     Float_t fTreeCascVarBachPy; //!
200     Float_t fTreeCascVarBachPz; //!
201
202     Float_t fTreeCascVarV0DecayX; //!
203     Float_t fTreeCascVarV0DecayY; //!
204     Float_t fTreeCascVarV0DecayZ; //!
205     Float_t fTreeCascVarCascadeDecayX; //!
206     Float_t fTreeCascVarCascadeDecayY; //!
207     Float_t fTreeCascVarCascadeDecayZ; //!
208     
209     Bool_t fTreeCascVarBadCascadeJai; //! 
210     Float_t fTreeCascVarDeltaDCA; //!
211     
212 //===========================================================================================
213 //   Histograms
214 //===========================================================================================
215
216    TH1F      *fHistV0MultiplicityBeforeTrigSel;              //! V0 multiplicity distribution
217    TH1F      *fHistV0MultiplicityForTrigEvt;                 //! V0 multiplicity distribution
218    TH1F      *fHistV0MultiplicityForSelEvt;                  //! V0 multiplicity distribution
219    TH1F      *fHistV0MultiplicityForSelEvtNoTPCOnly;         //! V0 multiplicity distribution
220    TH1F      *fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup; //! V0 multiplicity distribution
221
222   //V0M Centrality (default)
223    TH1F      *fHistMultiplicityBeforeTrigSel;     //! multiplicity distribution      
224    TH1F      *fHistMultiplicityForTrigEvt;        //! multiplicity distribution
225    TH1F      *fHistMultiplicity;                  //! multiplicity distribution
226    TH1F      *fHistMultiplicityNoTPCOnly;         //! multiplicity distribution
227    TH1F      *fHistMultiplicityNoTPCOnlyNoPileup; //! multiplicity distribution
228   
229   //V0A Centrality
230   TH1F    *fHistMultiplicityV0ABeforeTrigSel;           //! multiplicity distribution
231         TH1F    *fHistMultiplicityV0AForTrigEvt;                        //! multiplicity distribution
232         TH1F    *fHistMultiplicityV0A;                                                  //! multiplicity distribution
233         TH1F    *fHistMultiplicityV0ANoTPCOnly;                         //! multiplicity distribution
234         TH1F    *fHistMultiplicityV0ANoTPCOnlyNoPileup;                 //! multiplicity distribution
235   
236   //ZNA Centrality
237   TH1F    *fHistMultiplicityZNABeforeTrigSel;           //! multiplicity distribution
238         TH1F    *fHistMultiplicityZNAForTrigEvt;                        //! multiplicity distribution
239         TH1F    *fHistMultiplicityZNA;                                                  //! multiplicity distribution
240         TH1F    *fHistMultiplicityZNANoTPCOnly;                         //! multiplicity distribution
241         TH1F    *fHistMultiplicityZNANoTPCOnlyNoPileup;                 //! multiplicity distribution
242   
243   //TRK Centrality
244   TH1F    *fHistMultiplicityTRKBeforeTrigSel;           //! multiplicity distribution
245         TH1F    *fHistMultiplicityTRKForTrigEvt;                        //! multiplicity distribution
246         TH1F    *fHistMultiplicityTRK;                                                  //! multiplicity distribution
247         TH1F    *fHistMultiplicityTRKNoTPCOnly;                         //! multiplicity distribution
248         TH1F    *fHistMultiplicityTRKNoTPCOnlyNoPileup;                 //! multiplicity distribution
249   
250   //SPD Centrality
251   TH1F    *fHistMultiplicitySPDBeforeTrigSel;           //! multiplicity distribution
252         TH1F    *fHistMultiplicitySPDForTrigEvt;                        //! multiplicity distribution
253         TH1F    *fHistMultiplicitySPD;                                                  //! multiplicity distribution
254         TH1F    *fHistMultiplicitySPDNoTPCOnly;                         //! multiplicity distribution
255         TH1F    *fHistMultiplicitySPDNoTPCOnlyNoPileup;                 //! multiplicity distribution
256
257 //---> Generated Histograms
258
259    TH1F      *fHistPVx;                      //! PVx distrib
260    TH1F      *fHistPVy;                      //! PVy distrib
261    TH1F      *fHistPVz;                      //! PVz distrib
262    TH1F      *fHistPVxAnalysis;                      //! PVx distrib
263    TH1F      *fHistPVyAnalysis;                      //! PVy distrib
264    TH1F      *fHistPVzAnalysis;                      //! PVz distrib
265
266    AliAnalysisTaskExtractCascade(const AliAnalysisTaskExtractCascade&);            // not implemented
267    AliAnalysisTaskExtractCascade& operator=(const AliAnalysisTaskExtractCascade&); // not implemented
268    
269    ClassDef(AliAnalysisTaskExtractCascade, 11);
270 };
271
272 #endif