]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/STRANGENESS/Cascades/AliAnalysisTaskExtractCascade.h
5fc33f094f560a52dcd618e0ae4bd97392e15bcb
[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 //Setters for the V0 Vertexer Parameters
68   void SetV0VertexerMaxChisquare   ( Double_t lParameter ){ fV0VertexerSels[0] = lParameter; }
69   void SetV0VertexerDCAFirstToPV   ( Double_t lParameter ){ fV0VertexerSels[1] = lParameter; }
70   void SetV0VertexerDCASecondtoPV  ( Double_t lParameter ){ fV0VertexerSels[2] = lParameter; }
71   void SetV0VertexerDCAV0Daughters ( Double_t lParameter ){ fV0VertexerSels[3] = lParameter; }
72   void SetV0VertexerCosinePA       ( Double_t lParameter ){ fV0VertexerSels[4] = lParameter; }
73   void SetV0VertexerMinRadius      ( Double_t lParameter ){ fV0VertexerSels[5] = lParameter; }
74   void SetV0VertexerMaxRadius      ( Double_t lParameter ){ fV0VertexerSels[6] = lParameter; }
75 //---------------------------------------------------------------------------------------
76 //Setters for the Cascade Vertexer Parameters
77   void SetCascVertexerMaxChisquare         ( Double_t lParameter ){ fCascadeVertexerSels[0] = lParameter; } 
78   void SetCascVertexerMinV0ImpactParameter ( Double_t lParameter ){ fCascadeVertexerSels[1] = lParameter; } 
79   void SetCascVertexerV0MassWindow         ( Double_t lParameter ){ fCascadeVertexerSels[2] = lParameter; } 
80   void SetCascVertexerDCABachToPV          ( Double_t lParameter ){ fCascadeVertexerSels[3] = lParameter; } 
81   void SetCascVertexerDCACascadeDaughters  ( Double_t lParameter ){ fCascadeVertexerSels[4] = lParameter; }
82   void SetCascVertexerCascadeCosinePA      ( Double_t lParameter ){ fCascadeVertexerSels[5] = lParameter; }  
83   void SetCascVertexerCascadeMinRadius     ( Double_t lParameter ){ fCascadeVertexerSels[6] = lParameter; }  
84   void SetCascVertexerCascadeMaxRadius     ( Double_t lParameter ){ fCascadeVertexerSels[7] = lParameter; }  
85 //---------------------------------------------------------------------------------------
86   
87  private:
88         // Note : In ROOT, "//!" means "do not stream the data from Master node to Worker node" ...
89         // your data member object is created on the worker nodes and streaming is not needed.
90         // http://root.cern.ch/download/doc/11InputOutput.pdf, page 14
91   TList  *fListHist;  //! List of Cascade histograms
92   TTree  *fTreeCascade;              //! Output Tree, Cascades
93
94   //Objects that have to be streamed:
95   AliPIDResponse *fPIDResponse;     // PID response object
96   AliESDtrackCuts *fESDtrackCuts;   // ESD track cuts used for primary track definition
97   AliAnalysisUtils *fUtils;         // analysis utils (for pA vertex selection)
98
99   //Objects Controlling Task Behaviour 
100   // (have to be streamed too or configuration is lost)
101   Bool_t fkIsNuclear;   //if true, replace multiplicity est. by centrality (default FALSE) 
102   Bool_t fkSwitchINT7;  //if true, skip FASTOnly (default FALSE)
103   TString fCentralityEstimator; //Centrality Estimator String value (default V0M)
104   Bool_t fkpAVertexSelection; //if true, select vertex with pPb Methods
105   Double_t fEtaRefMult; //Reference multiplicity eta
106   //Objects Controlling Task Behaviour: has to be streamed! 
107   Bool_t    fkRunVertexers;           // if true, re-run vertexer with loose cuts. CARE MUST BE TAKEN in PbPb!
108   Double_t  fV0VertexerSels[7];        // Array to store the 7 values for the different selections V0 related
109   Double_t  fCascadeVertexerSels[8];   // Array to store the 8 values for the different selections Casc. related
110
111         //Double_t        fV0Sels[7];                     // Array to store the 7 values for the different selections V0 related
112         //Double_t        fCascSels[8];                   // Array to store the 8 values for the different selections Casc. related
113
114 //===========================================================================================
115 //   Variables for tree, cascades
116 //===========================================================================================
117
118   Int_t fTreeCascVarCharge;         //! 
119   Float_t fTreeCascVarMassAsXi;     //! 
120   Float_t fTreeCascVarMassAsOmega;  //! 
121   Float_t fTreeCascVarPt;           //!
122   Float_t fTreeCascVarPtMC;         //!
123   Float_t fTreeCascVarRapMC;        //!
124   Float_t fTreeCascVarRapXi;        //!
125   Float_t fTreeCascVarRapOmega;     //!
126   Float_t fTreeCascVarNegEta;       //!
127   Float_t fTreeCascVarPosEta;       //!
128   Float_t fTreeCascVarBachEta;      //!
129   Float_t fTreeCascVarDCACascDaughters; //!
130   Float_t fTreeCascVarDCABachToPrimVtx; //!
131   Float_t fTreeCascVarDCAV0Daughters;   //!
132   Float_t fTreeCascVarDCAV0ToPrimVtx;   //!
133   Float_t fTreeCascVarDCAPosToPrimVtx;  //!
134   Float_t fTreeCascVarDCANegToPrimVtx;  //!
135   Float_t fTreeCascVarCascCosPointingAngle; //!
136   Float_t fTreeCascVarCascRadius;           //!
137   Float_t fTreeCascVarV0Mass;               //!
138   Float_t fTreeCascVarV0CosPointingAngle;   //!
139   Float_t fTreeCascVarV0CosPointingAngleSpecial;   //!
140   Float_t fTreeCascVarV0Radius;             //!
141   Int_t   fTreeCascVarLeastNbrClusters;     //!
142   Int_t   fTreeCascVarMultiplicity;         //!
143   Int_t   fTreeCascVarMultiplicityV0A;         //!
144   Int_t   fTreeCascVarMultiplicityZNA;         //!
145   Int_t   fTreeCascVarMultiplicityTRK;         //!
146   Int_t   fTreeCascVarMultiplicitySPD;         //!
147   Float_t fTreeCascVarDistOverTotMom;       //!
148   Int_t   fTreeCascVarPID;         //!
149   Int_t   fTreeCascVarPIDBachelor; //!  
150   Int_t   fTreeCascVarPIDNegative; //!
151   Int_t   fTreeCascVarPIDPositive; //!
152   Float_t fTreeCascVarPosTransMom;   //!
153   Float_t fTreeCascVarNegTransMom;   //!
154   Float_t fTreeCascVarPosTransMomMC; //!
155   Float_t fTreeCascVarNegTransMomMC; //!
156
157   Float_t fTreeCascVarNegNSigmaPion;   //!
158   Float_t fTreeCascVarNegNSigmaProton; //!
159   Float_t fTreeCascVarPosNSigmaPion;   //! 
160   Float_t fTreeCascVarPosNSigmaProton; //! 
161   Float_t fTreeCascVarBachNSigmaPion;  //! 
162   Float_t fTreeCascVarBachNSigmaKaon;  //! 
163
164 //===========================================================================================
165 //   Histograms
166 //===========================================================================================
167
168    TH1F      *fHistV0MultiplicityBeforeTrigSel;              //! V0 multiplicity distribution
169    TH1F      *fHistV0MultiplicityForTrigEvt;                 //! V0 multiplicity distribution
170    TH1F      *fHistV0MultiplicityForSelEvt;                  //! V0 multiplicity distribution
171    TH1F      *fHistV0MultiplicityForSelEvtNoTPCOnly;         //! V0 multiplicity distribution
172    TH1F      *fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup; //! V0 multiplicity distribution
173
174   //V0M Centrality (default)
175    TH1F      *fHistMultiplicityBeforeTrigSel;     //! multiplicity distribution      
176    TH1F      *fHistMultiplicityForTrigEvt;        //! multiplicity distribution
177    TH1F      *fHistMultiplicity;                  //! multiplicity distribution
178    TH1F      *fHistMultiplicityNoTPCOnly;         //! multiplicity distribution
179    TH1F      *fHistMultiplicityNoTPCOnlyNoPileup; //! multiplicity distribution
180   
181   //V0A Centrality
182   TH1F    *fHistMultiplicityV0ABeforeTrigSel;           //! multiplicity distribution
183         TH1F    *fHistMultiplicityV0AForTrigEvt;                        //! multiplicity distribution
184         TH1F    *fHistMultiplicityV0A;                                                  //! multiplicity distribution
185         TH1F    *fHistMultiplicityV0ANoTPCOnly;                         //! multiplicity distribution
186         TH1F    *fHistMultiplicityV0ANoTPCOnlyNoPileup;                 //! multiplicity distribution
187   
188   //ZNA Centrality
189   TH1F    *fHistMultiplicityZNABeforeTrigSel;           //! multiplicity distribution
190         TH1F    *fHistMultiplicityZNAForTrigEvt;                        //! multiplicity distribution
191         TH1F    *fHistMultiplicityZNA;                                                  //! multiplicity distribution
192         TH1F    *fHistMultiplicityZNANoTPCOnly;                         //! multiplicity distribution
193         TH1F    *fHistMultiplicityZNANoTPCOnlyNoPileup;                 //! multiplicity distribution
194   
195   //TRK Centrality
196   TH1F    *fHistMultiplicityTRKBeforeTrigSel;           //! multiplicity distribution
197         TH1F    *fHistMultiplicityTRKForTrigEvt;                        //! multiplicity distribution
198         TH1F    *fHistMultiplicityTRK;                                                  //! multiplicity distribution
199         TH1F    *fHistMultiplicityTRKNoTPCOnly;                         //! multiplicity distribution
200         TH1F    *fHistMultiplicityTRKNoTPCOnlyNoPileup;                 //! multiplicity distribution
201   
202   //SPD Centrality
203   TH1F    *fHistMultiplicitySPDBeforeTrigSel;           //! multiplicity distribution
204         TH1F    *fHistMultiplicitySPDForTrigEvt;                        //! multiplicity distribution
205         TH1F    *fHistMultiplicitySPD;                                                  //! multiplicity distribution
206         TH1F    *fHistMultiplicitySPDNoTPCOnly;                         //! multiplicity distribution
207         TH1F    *fHistMultiplicitySPDNoTPCOnlyNoPileup;                 //! multiplicity distribution
208
209 //---> Generated Histograms
210
211    TH1F      *fHistPVx;                      //! PVx distrib
212    TH1F      *fHistPVy;                      //! PVy distrib
213    TH1F      *fHistPVz;                      //! PVz distrib
214    TH1F      *fHistPVxAnalysis;                      //! PVx distrib
215    TH1F      *fHistPVyAnalysis;                      //! PVy distrib
216    TH1F      *fHistPVzAnalysis;                      //! PVz distrib
217
218    AliAnalysisTaskExtractCascade(const AliAnalysisTaskExtractCascade&);            // not implemented
219    AliAnalysisTaskExtractCascade& operator=(const AliAnalysisTaskExtractCascade&); // not implemented
220    
221    ClassDef(AliAnalysisTaskExtractCascade, 11);
222 };
223
224 #endif