1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
16 // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
18 // Modified version of AliAnalysisTaskCheckCascade.h
19 // Used bits of code from AliAnalysisTaskCheckPerformanceStrange
21 // --- David Dobrigkeit Chinellato
23 // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
25 #ifndef AliAnalysisTaskStrangenessVsMultiplicityMC_H
26 #define AliAnalysisTaskStrangenessVsMultiplicityMC_H
36 class AliESDtrackCuts;
37 class AliAnalysisUtils;
38 class AliPPVsMultUtils;
40 class AliPhysicsSelection;
43 //#include "TString.h"
44 //#include "AliESDtrackCuts.h"
45 //#include "AliAnalysisTaskSE.h"
47 class AliAnalysisTaskStrangenessVsMultiplicityMC : public AliAnalysisTaskSE {
49 AliAnalysisTaskStrangenessVsMultiplicityMC();
50 AliAnalysisTaskStrangenessVsMultiplicityMC(const char *name);
51 virtual ~AliAnalysisTaskStrangenessVsMultiplicityMC();
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;
58 void SetSaveV0s (Bool_t lSaveV0s = kTRUE ) { fkSaveV0Tree = lSaveV0s; }
59 void SetSaveCascades (Bool_t lSaveCascades = kTRUE ) { fkSaveCascadeTree = lSaveCascades; }
61 //---------------------------------------------------------------------------------------
62 //Task Configuration: Meant to enable quick re-execution of vertexer if needed
63 void SetRunVertexers ( Bool_t lRunVertexers = kTRUE) { fkRunVertexers = lRunVertexers; }
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 //---------------------------------------------------------------------------------------
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
98 AliPIDResponse *fPIDResponse; // PID response object
99 AliESDtrackCuts *fESDtrackCuts; // ESD track cuts used for primary track definition
100 AliPPVsMultUtils *fPPVsMultUtils; //
101 AliAnalysisUtils *fUtils; //
103 //Objects Controlling Task Behaviour
104 Bool_t fkSaveV0Tree; //if true, save TTree
105 Bool_t fkSaveCascadeTree; //if true, save TTree
107 //Objects Controlling Task Behaviour: has to be streamed!
108 Bool_t fkRunVertexers; // if true, re-run vertexer with loose cuts *** only for CASCADES! ***
109 Bool_t fkSkipEventSelection; // if true, will only perform TRIGGER selection (currently kMB, to change)
110 Bool_t fkApplyTrackletsVsClustersCut; //if true, applies Tracklet vs clusters cut together with PS
112 Double_t fV0VertexerSels[7]; // Array to store the 7 values for the different selections V0 related
113 Double_t fCascadeVertexerSels[8]; // Array to store the 8 values for the different selections Casc. related
115 //===========================================================================================
116 // Variables for Event Tree
117 //===========================================================================================
118 Float_t fAmplitude_V0A; //!
119 Float_t fAmplitude_V0C; //!
120 Float_t fAmplitude_V0AEq; //!
121 Float_t fAmplitude_V0CEq; //!
122 Float_t fCentrality_V0A; //!
123 Float_t fCentrality_V0C; //!
124 Float_t fCentrality_V0M; //!
125 Float_t fCentrality_V0AEq; //!
126 Float_t fCentrality_V0CEq; //!
127 Float_t fCentrality_V0MEq; //!
128 Float_t fCustomCentrality_V0M; //!
129 Float_t fCustomCentrality_V0MEq; //!
130 Int_t fRefMultEta5; //!
131 Int_t fRefMultEta8; //!
132 Int_t fTrueMultEta5; //!
133 Int_t fTrueMultEta8; //!
134 Int_t fTrueMultVZEROA; //!
135 Int_t fTrueMultVZEROC; //!
136 Int_t fRunNumber; //!
138 //Event Characterization Variables - optional
139 Bool_t fEvSel_HasAtLeastSPDVertex; //!
140 Bool_t fEvSel_VtxZCut; //!
141 Bool_t fEvSel_IsNotPileup; //!
142 Bool_t fEvSel_IsNotPileupMV; //!
143 Bool_t fEvSel_IsNotPileupInMultBins; //!
144 Bool_t fEvSel_HasVtxContributor; //!
145 Bool_t fEvSel_Triggered; //!
147 Float_t fEvSel_VtxZ; //! pv z position (cm)
148 Int_t fEvSel_MCType; //! type of event (to be used in PYTHIA, specifically)
150 //===========================================================================================
151 // Variables for V0 Tree
152 //===========================================================================================
153 Float_t fTreeVariableChi2V0; //!
154 Float_t fTreeVariableDcaV0Daughters; //!
155 Float_t fTreeVariableDcaV0ToPrimVertex; //!
156 Float_t fTreeVariableDcaPosToPrimVertex; //!
157 Float_t fTreeVariableDcaNegToPrimVertex; //!
158 Float_t fTreeVariableV0CosineOfPointingAngle; //!
159 Float_t fTreeVariableV0Radius; //!
160 Float_t fTreeVariablePt; //!
161 Float_t fTreeVariablePtMC; //!
162 Float_t fTreeVariableRapK0Short; //!
163 Float_t fTreeVariableRapLambda; //!
164 Float_t fTreeVariableRapMC; //!
165 Float_t fTreeVariableInvMassK0s; //!
166 Float_t fTreeVariableInvMassLambda; //!
167 Float_t fTreeVariableInvMassAntiLambda; //!
168 Float_t fTreeVariableAlphaV0; //!
169 Float_t fTreeVariablePtArmV0;//!
170 Float_t fTreeVariableNegEta; //!
171 Float_t fTreeVariablePosEta; //!
173 Float_t fTreeVariableNSigmasPosProton; //!
174 Float_t fTreeVariableNSigmasPosPion; //!
175 Float_t fTreeVariableNSigmasNegProton; //!
176 Float_t fTreeVariableNSigmasNegPion; //!
178 Float_t fTreeVariableDistOverTotMom;//!
179 Int_t fTreeVariableLeastNbrCrossedRows;//!
180 Float_t fTreeVariableLeastRatioCrossedRowsOverFindable;//!
182 //Event Multiplicity Variables
183 Float_t fTreeVariableCentV0A; //!
184 Float_t fTreeVariableCentV0C; //!
185 Float_t fTreeVariableCentV0M; //!
186 Float_t fTreeVariableCentV0AEq; //!
187 Float_t fTreeVariableCentV0CEq; //!
188 Float_t fTreeVariableCentV0MEq; //!
189 Float_t fTreeVariableCustomCentV0M; //!
190 Float_t fTreeVariableAmpV0A; //!
191 Float_t fTreeVariableAmpV0C; //!
192 Float_t fTreeVariableAmpV0AEq; //!
193 Float_t fTreeVariableAmpV0CEq; //!
194 Int_t fTreeVariableRefMultEta8; //!
195 Int_t fTreeVariableRefMultEta5; //!
196 Int_t fTreeVariableRunNumber; //! //want to re-quantile per run? here's your ticket
198 //MC exclusive Characteristics: 7, also required for feeddown tests
199 Float_t fTreeVariablePtMother; //!
200 Int_t fTreeVariablePID; //!
201 Int_t fTreeVariablePIDPositive; //!
202 Int_t fTreeVariablePIDNegative; //!
203 Int_t fTreeVariablePIDMother; //!
204 Int_t fTreeVariablePrimaryStatus; //!
205 Int_t fTreeVariablePrimaryStatusMother; //!
208 //===========================================================================================
209 // Variables for Cascade Candidate Tree
210 //===========================================================================================
211 Int_t fTreeCascVarCharge; //!
212 Float_t fTreeCascVarMassAsXi; //!
213 Float_t fTreeCascVarMassAsOmega; //!
214 Float_t fTreeCascVarPt; //!
215 Float_t fTreeCascVarPtMC; //!
216 Float_t fTreeCascVarRapXi; //!
217 Float_t fTreeCascVarRapOmega; //!
218 Float_t fTreeCascVarRapMC; //!
219 Float_t fTreeCascVarNegEta; //!
220 Float_t fTreeCascVarPosEta; //!
221 Float_t fTreeCascVarBachEta; //!
222 Float_t fTreeCascVarDCACascDaughters; //!
223 Float_t fTreeCascVarDCABachToPrimVtx; //!
224 Float_t fTreeCascVarDCAV0Daughters; //!
225 Float_t fTreeCascVarDCAV0ToPrimVtx; //!
226 Float_t fTreeCascVarDCAPosToPrimVtx; //!
227 Float_t fTreeCascVarDCANegToPrimVtx; //!
228 Float_t fTreeCascVarCascCosPointingAngle; //!
229 Float_t fTreeCascVarCascRadius; //!
230 Float_t fTreeCascVarV0Mass; //!
231 Float_t fTreeCascVarV0CosPointingAngle; //!
232 Float_t fTreeCascVarV0CosPointingAngleSpecial; //!
233 Float_t fTreeCascVarV0Radius; //!
234 Int_t fTreeCascVarLeastNbrClusters; //!
235 Float_t fTreeCascVarDistOverTotMom; //!
238 Float_t fTreeCascVarNegNSigmaPion; //!
239 Float_t fTreeCascVarNegNSigmaProton; //!
240 Float_t fTreeCascVarPosNSigmaPion; //!
241 Float_t fTreeCascVarPosNSigmaProton; //!
242 Float_t fTreeCascVarBachNSigmaPion; //!
243 Float_t fTreeCascVarBachNSigmaKaon; //!
245 //Event Multiplicity Variables
246 Float_t fTreeCascVarCentV0A; //!
247 Float_t fTreeCascVarCentV0C; //!
248 Float_t fTreeCascVarCentV0M; //!
249 Float_t fTreeCascVarCentV0AEq; //!
250 Float_t fTreeCascVarCentV0CEq; //!
251 Float_t fTreeCascVarCentV0MEq; //!
252 Float_t fTreeCascVarCustomCentV0M; //!
253 Float_t fTreeCascVarAmpV0A; //!
254 Float_t fTreeCascVarAmpV0C; //!
255 Float_t fTreeCascVarAmpV0AEq; //!
256 Float_t fTreeCascVarAmpV0CEq; //!
257 Int_t fTreeCascVarRefMultEta8; //!
258 Int_t fTreeCascVarRefMultEta5; //!
259 Int_t fTreeCascVarTrueMultEta5; //!
260 Int_t fTreeCascVarTrueMultEta8; //!
261 Int_t fTreeCascVarTrueMultVZEROA; //!
262 Int_t fTreeCascVarTrueMultVZEROC; //!
265 Int_t fTreeCascVarIsPhysicalPrimary; //!
266 Int_t fTreeCascVarPID; //!
268 Int_t fTreeCascVarRunNumber; //!
270 //===========================================================================================
272 //===========================================================================================
274 TH1D *fHistEventCounter; //!
276 //===========================================================================================
277 // Histos needed for efficiency computation || Xis
278 //===========================================================================================
280 //These are all analysis-level
282 //Let's not care too much about rapidity at the moment!
283 TH1D *fHistPt_GenK0Short; //!
284 TH1D *fHistPt_GenLambda; //!
285 TH1D *fHistPt_GenAntiLambda; //!
287 TH1D *fHistPt_GenXiMinus; //!
288 TH1D *fHistPt_GenXiPlus; //!
289 TH1D *fHistPt_GenOmegaMinus; //!
290 TH1D *fHistPt_GenOmegaPlus; //!
293 TH2D *fHistPtVsRefMultEta5_GenXiMinus; //!
294 TH2D *fHistPtVsRefMultEta5_GenXiPlus; //!
295 TH2D *fHistPtVsRefMultEta5_GenOmegaMinus; //!
296 TH2D *fHistPtVsRefMultEta5_GenOmegaPlus; //!
297 TH2D *fHistPtVsRefMultEta8_GenXiMinus; //!
298 TH2D *fHistPtVsRefMultEta8_GenXiPlus; //!
299 TH2D *fHistPtVsRefMultEta8_GenOmegaMinus; //!
300 TH2D *fHistPtVsRefMultEta8_GenOmegaPlus; //!
303 TH2D *fHistPtVsCentV0A_GenXiMinus; //!
304 TH2D *fHistPtVsCentV0A_GenXiPlus; //!
305 TH2D *fHistPtVsCentV0A_GenOmegaMinus; //!
306 TH2D *fHistPtVsCentV0A_GenOmegaPlus; //!
307 TH2D *fHistPtVsCentV0C_GenXiMinus; //!
308 TH2D *fHistPtVsCentV0C_GenXiPlus; //!
309 TH2D *fHistPtVsCentV0C_GenOmegaMinus; //!
310 TH2D *fHistPtVsCentV0C_GenOmegaPlus; //!
311 TH2D *fHistPtVsCentV0M_GenXiMinus; //!
312 TH2D *fHistPtVsCentV0M_GenXiPlus; //!
313 TH2D *fHistPtVsCentV0M_GenOmegaMinus; //!
314 TH2D *fHistPtVsCentV0M_GenOmegaPlus; //!
317 TH2D *fHistPtVsCentV0AEq_GenXiMinus; //!
318 TH2D *fHistPtVsCentV0AEq_GenXiPlus; //!
319 TH2D *fHistPtVsCentV0AEq_GenOmegaMinus; //!
320 TH2D *fHistPtVsCentV0AEq_GenOmegaPlus; //!
321 TH2D *fHistPtVsCentV0CEq_GenXiMinus; //!
322 TH2D *fHistPtVsCentV0CEq_GenXiPlus; //!
323 TH2D *fHistPtVsCentV0CEq_GenOmegaMinus; //!
324 TH2D *fHistPtVsCentV0CEq_GenOmegaPlus; //!
325 TH2D *fHistPtVsCentV0MEq_GenXiMinus; //!
326 TH2D *fHistPtVsCentV0MEq_GenXiPlus; //!
327 TH2D *fHistPtVsCentV0MEq_GenOmegaMinus; //!
328 TH2D *fHistPtVsCentV0MEq_GenOmegaPlus; //!
331 TH2D *fHistPtVsAmpV0A_GenXiMinus; //!
332 TH2D *fHistPtVsAmpV0A_GenXiPlus; //!
333 TH2D *fHistPtVsAmpV0A_GenOmegaMinus; //!
334 TH2D *fHistPtVsAmpV0A_GenOmegaPlus; //!
335 TH2D *fHistPtVsAmpV0C_GenXiMinus; //!
336 TH2D *fHistPtVsAmpV0C_GenXiPlus; //!
337 TH2D *fHistPtVsAmpV0C_GenOmegaMinus; //!
338 TH2D *fHistPtVsAmpV0C_GenOmegaPlus; //!
339 TH2D *fHistPtVsAmpV0M_GenXiMinus; //!
340 TH2D *fHistPtVsAmpV0M_GenXiPlus; //!
341 TH2D *fHistPtVsAmpV0M_GenOmegaMinus; //!
342 TH2D *fHistPtVsAmpV0M_GenOmegaPlus; //!
344 TH2D *fHistPtVsAmpV0AEq_GenXiMinus; //!
345 TH2D *fHistPtVsAmpV0AEq_GenXiPlus; //!
346 TH2D *fHistPtVsAmpV0AEq_GenOmegaMinus; //!
347 TH2D *fHistPtVsAmpV0AEq_GenOmegaPlus; //!
348 TH2D *fHistPtVsAmpV0CEq_GenXiMinus; //!
349 TH2D *fHistPtVsAmpV0CEq_GenXiPlus; //!
350 TH2D *fHistPtVsAmpV0CEq_GenOmegaMinus; //!
351 TH2D *fHistPtVsAmpV0CEq_GenOmegaPlus; //!
352 TH2D *fHistPtVsAmpV0MEq_GenXiMinus; //!
353 TH2D *fHistPtVsAmpV0MEq_GenXiPlus; //!
354 TH2D *fHistPtVsAmpV0MEq_GenOmegaMinus; //!
355 TH2D *fHistPtVsAmpV0MEq_GenOmegaPlus; //!
357 TH2D *fHistVZEROResponseStudy; //!
358 TH2D *fHistVZEROResponseStudyTotal; //!
361 AliAnalysisTaskStrangenessVsMultiplicityMC(const AliAnalysisTaskStrangenessVsMultiplicityMC&); // not implemented
362 AliAnalysisTaskStrangenessVsMultiplicityMC& operator=(const AliAnalysisTaskStrangenessVsMultiplicityMC&); // not implemented
364 ClassDef(AliAnalysisTaskStrangenessVsMultiplicityMC, 11);