]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/STRANGENESS/Cascades/AliAnalysisTaskStrangenessVsMultiplicityMC.h
delta(DCA) check for V0 daughters -> MC too
[u/mrichter/AliRoot.git] / PWGLF / STRANGENESS / Cascades / AliAnalysisTaskStrangenessVsMultiplicityMC.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 AliAnalysisTaskStrangenessVsMultiplicityMC_H
26 #define AliAnalysisTaskStrangenessVsMultiplicityMC_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 AliAnalysisUtils;
38 class AliPPVsMultUtils;
39 class AliESDEvent;
40 class AliPhysicsSelection;
41 class AliCFContainer;
42
43 //#include "TString.h"
44 //#include "AliESDtrackCuts.h"
45 //#include "AliAnalysisTaskSE.h"
46
47 class AliAnalysisTaskStrangenessVsMultiplicityMC : public AliAnalysisTaskSE {
48  public:
49   AliAnalysisTaskStrangenessVsMultiplicityMC();
50   AliAnalysisTaskStrangenessVsMultiplicityMC(const char *name);
51   virtual ~AliAnalysisTaskStrangenessVsMultiplicityMC();
52   
53   virtual void   UserCreateOutputObjects();
54   virtual void   UserExec(Option_t *option);
55   virtual void   Terminate(Option_t *);
56   Double_t MyRapidity(Double_t rE, Double_t rPz) const;
57
58   void SetSaveV0s                (Bool_t lSaveV0s        = kTRUE ) { fkSaveV0Tree        = lSaveV0s;        }
59   void SetSaveCascades           (Bool_t lSaveCascades   = kTRUE ) { fkSaveCascadeTree   = lSaveCascades;   }
60   
61 //---------------------------------------------------------------------------------------
62   //Task Configuration: Meant to enable quick re-execution of vertexer if needed
63   void SetRunVertexers ( Bool_t lRunVertexers = kTRUE) { fkRunVertexers = lRunVertexers; }
64     
65 //---------------------------------------------------------------------------------------
66     //Task Configuration: Skip Event Selections after trigger (VZERO test)
67     void SetSkipEventSelection ( Bool_t lSkipEventSelection = kTRUE) { fkSkipEventSelection = lSkipEventSelection; }
68 //---------------------------------------------------------------------------------------
69 //Setters for the V0 Vertexer Parameters
70   void SetV0VertexerMaxChisquare   ( Double_t lParameter ){ fV0VertexerSels[0] = lParameter; }
71   void SetV0VertexerDCAFirstToPV   ( Double_t lParameter ){ fV0VertexerSels[1] = lParameter; }
72   void SetV0VertexerDCASecondtoPV  ( Double_t lParameter ){ fV0VertexerSels[2] = lParameter; }
73   void SetV0VertexerDCAV0Daughters ( Double_t lParameter ){ fV0VertexerSels[3] = lParameter; }
74   void SetV0VertexerCosinePA       ( Double_t lParameter ){ fV0VertexerSels[4] = lParameter; }
75   void SetV0VertexerMinRadius      ( Double_t lParameter ){ fV0VertexerSels[5] = lParameter; }
76   void SetV0VertexerMaxRadius      ( Double_t lParameter ){ fV0VertexerSels[6] = lParameter; }
77 //---------------------------------------------------------------------------------------
78 //Setters for the Cascade Vertexer Parameters
79   void SetCascVertexerMaxChisquare         ( Double_t lParameter ){ fCascadeVertexerSels[0] = lParameter; } 
80   void SetCascVertexerMinV0ImpactParameter ( Double_t lParameter ){ fCascadeVertexerSels[1] = lParameter; } 
81   void SetCascVertexerV0MassWindow         ( Double_t lParameter ){ fCascadeVertexerSels[2] = lParameter; } 
82   void SetCascVertexerDCABachToPV          ( Double_t lParameter ){ fCascadeVertexerSels[3] = lParameter; } 
83   void SetCascVertexerDCACascadeDaughters  ( Double_t lParameter ){ fCascadeVertexerSels[4] = lParameter; }
84   void SetCascVertexerCascadeCosinePA      ( Double_t lParameter ){ fCascadeVertexerSels[5] = lParameter; }  
85   void SetCascVertexerCascadeMinRadius     ( Double_t lParameter ){ fCascadeVertexerSels[6] = lParameter; }  
86   void SetCascVertexerCascadeMaxRadius     ( Double_t lParameter ){ fCascadeVertexerSels[7] = lParameter; }  
87 //---------------------------------------------------------------------------------------
88   
89  private:
90         // Note : In ROOT, "//!" means "do not stream the data from Master node to Worker node" ...
91         // your data member object is created on the worker nodes and streaming is not needed.
92         // http://root.cern.ch/download/doc/11InputOutput.pdf, page 14
93   TList  *fListHist;  //! List of Cascade histograms
94   TTree  *fTreeEvent;              //! Output Tree, Events
95   TTree  *fTreeV0;              //! Output Tree, V0s
96   TTree  *fTreeCascade;              //! Output Tree, Cascades
97
98   AliPIDResponse *fPIDResponse;     // PID response object
99   AliESDtrackCuts *fESDtrackCuts;   // ESD track cuts used for primary track definition
100   AliPPVsMultUtils *fPPVsMultUtils; //
101
102   //Objects Controlling Task Behaviour 
103   Bool_t fkSaveV0Tree;              //if true, save TTree
104   Bool_t fkSaveCascadeTree;         //if true, save TTree
105
106   //Objects Controlling Task Behaviour: has to be streamed! 
107   Bool_t    fkRunVertexers;           // if true, re-run vertexer with loose cuts *** only for CASCADES! ***
108   Bool_t    fkSkipEventSelection;     // if true, will only perform TRIGGER selection (currently kMB, to change)
109   Double_t  fV0VertexerSels[7];        // Array to store the 7 values for the different selections V0 related
110   Double_t  fCascadeVertexerSels[8];   // Array to store the 8 values for the different selections Casc. related
111
112 //===========================================================================================
113 //   Variables for Event Tree
114 //===========================================================================================
115   Float_t fAmplitude_V0A;   //!
116   Float_t fAmplitude_V0C;   //! 
117   Float_t fAmplitude_V0AEq; //!
118   Float_t fAmplitude_V0CEq; //! 
119   Float_t fCentrality_V0A;         //! 
120   Float_t fCentrality_V0C;         //! 
121   Float_t fCentrality_V0M;         //! 
122   Float_t fCentrality_V0AEq;       //! 
123   Float_t fCentrality_V0CEq;       //! 
124   Float_t fCentrality_V0MEq;       //! 
125   Float_t fCustomCentrality_V0M;   //! 
126   Float_t fCustomCentrality_V0MEq; //! 
127   Int_t fRefMultEta5;              //!
128   Int_t fRefMultEta8;              //! 
129   Int_t fTrueMultEta5;             //!   
130   Int_t fTrueMultEta8;             //!  
131   Int_t fTrueMultVZEROA;           //!
132   Int_t fTrueMultVZEROC;           //!  
133   Int_t fRunNumber;                //!
134     
135     //Event Characterization Variables - optional
136     Bool_t fEvSel_HasAtLeastSPDVertex;      //!
137     Bool_t fEvSel_VtxZCut;                  //!
138     Bool_t fEvSel_IsNotPileup;              //!
139     Bool_t fEvSel_IsNotPileupMV;            //!
140     Bool_t fEvSel_IsNotPileupInMultBins;    //!
141     Bool_t fEvSel_HasVtxContributor;        //!
142     Bool_t fEvSel_Triggered;                //!
143
144   Float_t fEvSel_VtxZ; //! pv z position (cm) 
145   Int_t fEvSel_MCType; //! type of event (to be used in PYTHIA, specifically)   
146
147 //===========================================================================================
148 //   Variables for V0 Tree
149 //===========================================================================================
150         Float_t fTreeVariableChi2V0;         //!
151         Float_t fTreeVariableDcaV0Daughters; //!
152         Float_t fTreeVariableDcaV0ToPrimVertex; //!
153         Float_t fTreeVariableDcaPosToPrimVertex; //!
154         Float_t fTreeVariableDcaNegToPrimVertex; //!
155         Float_t fTreeVariableV0CosineOfPointingAngle; //!
156         Float_t fTreeVariableV0Radius; //!
157         Float_t fTreeVariablePt; //!
158         Float_t fTreeVariablePtMC; //!
159         Float_t fTreeVariableRapK0Short; //!
160         Float_t fTreeVariableRapLambda; //!
161         Float_t fTreeVariableRapMC; //!
162         Float_t fTreeVariableInvMassK0s; //!
163         Float_t fTreeVariableInvMassLambda; //!
164         Float_t fTreeVariableInvMassAntiLambda; //!
165         Float_t fTreeVariableAlphaV0; //!
166         Float_t fTreeVariablePtArmV0;//!
167         Float_t fTreeVariableNegEta; //!
168         Float_t fTreeVariablePosEta; //!
169
170         Float_t fTreeVariableNSigmasPosProton; //!
171         Float_t fTreeVariableNSigmasPosPion; //! 
172         Float_t fTreeVariableNSigmasNegProton; //!
173         Float_t fTreeVariableNSigmasNegPion; //! 
174         
175         Float_t fTreeVariableDistOverTotMom;//!
176         Int_t   fTreeVariableLeastNbrCrossedRows;//!
177         Float_t fTreeVariableLeastRatioCrossedRowsOverFindable;//!
178
179   //Event Multiplicity Variables 
180   Float_t fTreeVariableCentV0A;    //!
181   Float_t fTreeVariableCentV0C;    //!
182   Float_t fTreeVariableCentV0M;    //!
183   Float_t fTreeVariableCentV0AEq;  //!
184   Float_t fTreeVariableCentV0CEq;  //!
185   Float_t fTreeVariableCentV0MEq;  //!
186   Float_t fTreeVariableCustomCentV0M;    //!
187   Float_t fTreeVariableAmpV0A;     //!
188   Float_t fTreeVariableAmpV0C;     //!
189   Float_t fTreeVariableAmpV0AEq;   //!
190   Float_t fTreeVariableAmpV0CEq;   //!
191   Int_t   fTreeVariableRefMultEta8;  //!
192   Int_t   fTreeVariableRefMultEta5;  //!
193   Int_t   fTreeVariableRunNumber; //! //want to re-quantile per run? here's your ticket
194
195   //MC exclusive Characteristics: 7, also required for feeddown tests
196   Float_t fTreeVariablePtMother; //!
197   Int_t fTreeVariablePID; //!
198   Int_t fTreeVariablePIDPositive; //!
199   Int_t fTreeVariablePIDNegative; //!
200   Int_t fTreeVariablePIDMother; //!
201   Int_t fTreeVariablePrimaryStatus; //!
202   Int_t fTreeVariablePrimaryStatusMother; //!
203
204
205 //===========================================================================================
206 //   Variables for Cascade Candidate Tree
207 //===========================================================================================
208   Int_t fTreeCascVarCharge;         //! 
209   Float_t fTreeCascVarMassAsXi;     //! 
210   Float_t fTreeCascVarMassAsOmega;  //! 
211   Float_t fTreeCascVarPt;           //!
212   Float_t fTreeCascVarPtMC;         //!
213   Float_t fTreeCascVarRapXi;        //!
214   Float_t fTreeCascVarRapOmega;     //!
215   Float_t fTreeCascVarRapMC;        //!
216   Float_t fTreeCascVarNegEta;       //!
217   Float_t fTreeCascVarPosEta;       //!
218   Float_t fTreeCascVarBachEta;      //!
219   Float_t fTreeCascVarDCACascDaughters; //!
220   Float_t fTreeCascVarDCABachToPrimVtx; //!
221   Float_t fTreeCascVarDCAV0Daughters;   //!
222   Float_t fTreeCascVarDCAV0ToPrimVtx;   //!
223   Float_t fTreeCascVarDCAPosToPrimVtx;  //!
224   Float_t fTreeCascVarDCANegToPrimVtx;  //!
225   Float_t fTreeCascVarCascCosPointingAngle;         //!
226   Float_t fTreeCascVarCascRadius;                   //!
227   Float_t fTreeCascVarV0Mass;                       //!
228   Float_t fTreeCascVarV0CosPointingAngle;           //!
229   Float_t fTreeCascVarV0CosPointingAngleSpecial;    //!
230   Float_t fTreeCascVarV0Radius;                     //!
231   Int_t   fTreeCascVarLeastNbrClusters;             //!
232   Float_t fTreeCascVarDistOverTotMom;               //!
233
234   //TPC dEdx 
235   Float_t fTreeCascVarNegNSigmaPion;   //!
236   Float_t fTreeCascVarNegNSigmaProton; //!
237   Float_t fTreeCascVarPosNSigmaPion;   //! 
238   Float_t fTreeCascVarPosNSigmaProton; //! 
239   Float_t fTreeCascVarBachNSigmaPion;  //! 
240   Float_t fTreeCascVarBachNSigmaKaon;  //! 
241
242   //Event Multiplicity Variables 
243   Float_t fTreeCascVarCentV0A;    //!
244   Float_t fTreeCascVarCentV0C;    //!
245   Float_t fTreeCascVarCentV0M;    //!
246   Float_t fTreeCascVarCentV0AEq;  //!
247   Float_t fTreeCascVarCentV0CEq;  //!
248   Float_t fTreeCascVarCentV0MEq;  //!
249   Float_t fTreeCascVarCustomCentV0M;    //!
250   Float_t fTreeCascVarAmpV0A;     //!
251   Float_t fTreeCascVarAmpV0C;     //!
252   Float_t fTreeCascVarAmpV0AEq;   //!
253   Float_t fTreeCascVarAmpV0CEq;   //!
254   Int_t fTreeCascVarRefMultEta8;  //!
255   Int_t fTreeCascVarRefMultEta5;  //!
256   Int_t fTreeCascVarTrueMultEta5; //!
257   Int_t fTreeCascVarTrueMultEta8; //!
258   Int_t fTreeCascVarTrueMultVZEROA; //!
259   Int_t fTreeCascVarTrueMultVZEROC; //!  
260
261   //MC-only Variables
262   Int_t   fTreeCascVarIsPhysicalPrimary; //!
263   Int_t   fTreeCascVarPID;         //!
264
265   Int_t   fTreeCascVarRunNumber;         //!
266
267 //===========================================================================================
268 //   Histograms
269 //===========================================================================================
270
271   TH1D *fHistEventCounter; //! 
272
273 //===========================================================================================
274 //  Histos needed for efficiency computation || Xis 
275 //===========================================================================================
276
277   //These are all analysis-level
278
279   //Let's not care too much about rapidity at the moment! 
280   TH1D *fHistPt_GenK0Short;      //! 
281   TH1D *fHistPt_GenLambda;       //! 
282   TH1D *fHistPt_GenAntiLambda;   //! 
283
284   TH1D *fHistPt_GenXiMinus;      //! 
285   TH1D *fHistPt_GenXiPlus;       //! 
286   TH1D *fHistPt_GenOmegaMinus;   //! 
287   TH1D *fHistPt_GenOmegaPlus;    //! 
288
289   //VsRefMult
290   TH2D *fHistPtVsRefMultEta5_GenXiMinus;      //!
291   TH2D *fHistPtVsRefMultEta5_GenXiPlus;       //! 
292   TH2D *fHistPtVsRefMultEta5_GenOmegaMinus;   //! 
293   TH2D *fHistPtVsRefMultEta5_GenOmegaPlus;    //!  
294   TH2D *fHistPtVsRefMultEta8_GenXiMinus;      //!
295   TH2D *fHistPtVsRefMultEta8_GenXiPlus;       //! 
296   TH2D *fHistPtVsRefMultEta8_GenOmegaMinus;   //! 
297   TH2D *fHistPtVsRefMultEta8_GenOmegaPlus;    //!  
298
299   //VsCentralities
300   TH2D *fHistPtVsCentV0A_GenXiMinus;      //!
301   TH2D *fHistPtVsCentV0A_GenXiPlus;       //! 
302   TH2D *fHistPtVsCentV0A_GenOmegaMinus;   //! 
303   TH2D *fHistPtVsCentV0A_GenOmegaPlus;    //!  
304   TH2D *fHistPtVsCentV0C_GenXiMinus;      //!
305   TH2D *fHistPtVsCentV0C_GenXiPlus;       //! 
306   TH2D *fHistPtVsCentV0C_GenOmegaMinus;   //! 
307   TH2D *fHistPtVsCentV0C_GenOmegaPlus;    //!  
308   TH2D *fHistPtVsCentV0M_GenXiMinus;      //!
309   TH2D *fHistPtVsCentV0M_GenXiPlus;       //! 
310   TH2D *fHistPtVsCentV0M_GenOmegaMinus;   //! 
311   TH2D *fHistPtVsCentV0M_GenOmegaPlus;    //!  
312
313   //Equalized
314   TH2D *fHistPtVsCentV0AEq_GenXiMinus;      //!
315   TH2D *fHistPtVsCentV0AEq_GenXiPlus;       //! 
316   TH2D *fHistPtVsCentV0AEq_GenOmegaMinus;   //! 
317   TH2D *fHistPtVsCentV0AEq_GenOmegaPlus;    //!  
318   TH2D *fHistPtVsCentV0CEq_GenXiMinus;      //!
319   TH2D *fHistPtVsCentV0CEq_GenXiPlus;       //! 
320   TH2D *fHistPtVsCentV0CEq_GenOmegaMinus;   //! 
321   TH2D *fHistPtVsCentV0CEq_GenOmegaPlus;    //!  
322   TH2D *fHistPtVsCentV0MEq_GenXiMinus;      //!
323   TH2D *fHistPtVsCentV0MEq_GenXiPlus;       //! 
324   TH2D *fHistPtVsCentV0MEq_GenOmegaMinus;   //! 
325   TH2D *fHistPtVsCentV0MEq_GenOmegaPlus;    //!  
326
327   //VsAmp
328   TH2D *fHistPtVsAmpV0A_GenXiMinus;      //!
329   TH2D *fHistPtVsAmpV0A_GenXiPlus;       //! 
330   TH2D *fHistPtVsAmpV0A_GenOmegaMinus;   //! 
331   TH2D *fHistPtVsAmpV0A_GenOmegaPlus;    //!  
332   TH2D *fHistPtVsAmpV0C_GenXiMinus;      //!
333   TH2D *fHistPtVsAmpV0C_GenXiPlus;       //! 
334   TH2D *fHistPtVsAmpV0C_GenOmegaMinus;   //! 
335   TH2D *fHistPtVsAmpV0C_GenOmegaPlus;    //!  
336   TH2D *fHistPtVsAmpV0M_GenXiMinus;      //!
337   TH2D *fHistPtVsAmpV0M_GenXiPlus;       //! 
338   TH2D *fHistPtVsAmpV0M_GenOmegaMinus;   //! 
339   TH2D *fHistPtVsAmpV0M_GenOmegaPlus;    //!  
340   //Equalized Amps
341   TH2D *fHistPtVsAmpV0AEq_GenXiMinus;      //!
342   TH2D *fHistPtVsAmpV0AEq_GenXiPlus;       //! 
343   TH2D *fHistPtVsAmpV0AEq_GenOmegaMinus;   //! 
344   TH2D *fHistPtVsAmpV0AEq_GenOmegaPlus;    //!  
345   TH2D *fHistPtVsAmpV0CEq_GenXiMinus;      //!
346   TH2D *fHistPtVsAmpV0CEq_GenXiPlus;       //! 
347   TH2D *fHistPtVsAmpV0CEq_GenOmegaMinus;   //! 
348   TH2D *fHistPtVsAmpV0CEq_GenOmegaPlus;    //!  
349   TH2D *fHistPtVsAmpV0MEq_GenXiMinus;      //!
350   TH2D *fHistPtVsAmpV0MEq_GenXiPlus;       //! 
351   TH2D *fHistPtVsAmpV0MEq_GenOmegaMinus;   //! 
352   TH2D *fHistPtVsAmpV0MEq_GenOmegaPlus;    //!  
353
354
355    AliAnalysisTaskStrangenessVsMultiplicityMC(const AliAnalysisTaskStrangenessVsMultiplicityMC&);            // not implemented
356    AliAnalysisTaskStrangenessVsMultiplicityMC& operator=(const AliAnalysisTaskStrangenessVsMultiplicityMC&); // not implemented
357    
358    ClassDef(AliAnalysisTaskStrangenessVsMultiplicityMC, 11);
359 };
360
361 #endif