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 AliAnalysisTaskStrangenessVsMultiplicity_H
26 #define AliAnalysisTaskStrangenessVsMultiplicity_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 AliAnalysisTaskStrangenessVsMultiplicity : public AliAnalysisTaskSE {
49 AliAnalysisTaskStrangenessVsMultiplicity();
50 AliAnalysisTaskStrangenessVsMultiplicity(const char *name);
51 virtual ~AliAnalysisTaskStrangenessVsMultiplicity();
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; }
64 //---------------------------------------------------------------------------------------
65 //Task Configuration: Skip Event Selections after trigger (VZERO test)
66 void SetSkipEventSelection ( Bool_t lSkipEventSelection = kTRUE) { fkSkipEventSelection = lSkipEventSelection; }
67 //---------------------------------------------------------------------------------------
68 //Setters for the V0 Vertexer Parameters
69 void SetV0VertexerMaxChisquare ( Double_t lParameter ){ fV0VertexerSels[0] = lParameter; }
70 void SetV0VertexerDCAFirstToPV ( Double_t lParameter ){ fV0VertexerSels[1] = lParameter; }
71 void SetV0VertexerDCASecondtoPV ( Double_t lParameter ){ fV0VertexerSels[2] = lParameter; }
72 void SetV0VertexerDCAV0Daughters ( Double_t lParameter ){ fV0VertexerSels[3] = lParameter; }
73 void SetV0VertexerCosinePA ( Double_t lParameter ){ fV0VertexerSels[4] = lParameter; }
74 void SetV0VertexerMinRadius ( Double_t lParameter ){ fV0VertexerSels[5] = lParameter; }
75 void SetV0VertexerMaxRadius ( Double_t lParameter ){ fV0VertexerSels[6] = lParameter; }
76 //---------------------------------------------------------------------------------------
77 //Setters for the Cascade Vertexer Parameters
78 void SetCascVertexerMaxChisquare ( Double_t lParameter ){ fCascadeVertexerSels[0] = lParameter; }
79 void SetCascVertexerMinV0ImpactParameter ( Double_t lParameter ){ fCascadeVertexerSels[1] = lParameter; }
80 void SetCascVertexerV0MassWindow ( Double_t lParameter ){ fCascadeVertexerSels[2] = lParameter; }
81 void SetCascVertexerDCABachToPV ( Double_t lParameter ){ fCascadeVertexerSels[3] = lParameter; }
82 void SetCascVertexerDCACascadeDaughters ( Double_t lParameter ){ fCascadeVertexerSels[4] = lParameter; }
83 void SetCascVertexerCascadeCosinePA ( Double_t lParameter ){ fCascadeVertexerSels[5] = lParameter; }
84 void SetCascVertexerCascadeMinRadius ( Double_t lParameter ){ fCascadeVertexerSels[6] = lParameter; }
85 void SetCascVertexerCascadeMaxRadius ( Double_t lParameter ){ fCascadeVertexerSels[7] = lParameter; }
86 //---------------------------------------------------------------------------------------
89 // Note : In ROOT, "//!" means "do not stream the data from Master node to Worker node" ...
90 // your data member object is created on the worker nodes and streaming is not needed.
91 // http://root.cern.ch/download/doc/11InputOutput.pdf, page 14
92 TList *fListHist; //! List of Cascade histograms
93 TTree *fTreeEvent; //! Output Tree, Events
94 TTree *fTreeV0; //! Output Tree, V0s
95 TTree *fTreeCascade; //! Output Tree, Cascades
97 AliPIDResponse *fPIDResponse; // PID response object
98 AliESDtrackCuts *fESDtrackCuts; // ESD track cuts used for primary track definition
99 AliPPVsMultUtils *fPPVsMultUtils; //
100 AliAnalysisUtils *fUtils; // analysis utils (for MV pileup selection)
102 //Objects Controlling Task Behaviour
103 Bool_t fkSaveV0Tree; //if true, save TTree
104 Bool_t fkSaveCascadeTree; //if true, save TTree
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
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 fRunNumber; //!
131 //Event Characterization Variables - optional
132 Bool_t fEvSel_HasAtLeastSPDVertex; //!
133 Bool_t fEvSel_VtxZCut; //!
134 Bool_t fEvSel_IsNotPileup; //!
135 Bool_t fEvSel_IsNotPileupMV; //!
136 Bool_t fEvSel_IsNotPileupInMultBins; //!
137 Bool_t fEvSel_HasVtxContributor; //!
138 Bool_t fEvSel_Triggered; //!
140 //Other Selections: more dedicated filtering to be studied!
141 Int_t fEvSel_nTracklets; //!
142 Int_t fEvSel_nSPDClusters; //!
143 Float_t fEvSel_VtxZ; //! the actual value
146 //===========================================================================================
147 // Variables for V0 Tree
148 //===========================================================================================
149 Float_t fTreeVariableChi2V0; //!
150 Float_t fTreeVariableDcaV0Daughters; //!
151 Float_t fTreeVariableDcaV0ToPrimVertex; //!
152 Float_t fTreeVariableDcaPosToPrimVertex; //!
153 Float_t fTreeVariableDcaNegToPrimVertex; //!
154 Float_t fTreeVariableV0CosineOfPointingAngle; //!
155 Float_t fTreeVariableV0Radius; //!
156 Float_t fTreeVariablePt; //!
157 Float_t fTreeVariableRapK0Short; //!
158 Float_t fTreeVariableRapLambda; //!
159 Float_t fTreeVariableInvMassK0s; //!
160 Float_t fTreeVariableInvMassLambda; //!
161 Float_t fTreeVariableInvMassAntiLambda; //!
162 Float_t fTreeVariableAlphaV0; //!
163 Float_t fTreeVariablePtArmV0;//!
164 Float_t fTreeVariableNegEta; //!
165 Float_t fTreeVariablePosEta; //!
167 Float_t fTreeVariableNSigmasPosProton; //!
168 Float_t fTreeVariableNSigmasPosPion; //!
169 Float_t fTreeVariableNSigmasNegProton; //!
170 Float_t fTreeVariableNSigmasNegPion; //!
172 Float_t fTreeVariableDistOverTotMom;//!
173 Int_t fTreeVariableLeastNbrCrossedRows;//!
174 Float_t fTreeVariableLeastRatioCrossedRowsOverFindable;//!
176 //Event Multiplicity Variables
177 Float_t fTreeVariableCentV0A; //!
178 Float_t fTreeVariableCentV0C; //!
179 Float_t fTreeVariableCentV0M; //!
180 Float_t fTreeVariableCentV0AEq; //!
181 Float_t fTreeVariableCentV0CEq; //!
182 Float_t fTreeVariableCentV0MEq; //!
183 Float_t fTreeVariableAmpV0A; //!
184 Float_t fTreeVariableAmpV0C; //!
185 Float_t fTreeVariableAmpV0AEq; //!
186 Float_t fTreeVariableAmpV0CEq; //!
187 Int_t fTreeVariableRefMultEta8; //!
188 Int_t fTreeVariableRefMultEta5; //!
189 Int_t fTreeVariableRunNumber; //! //want to re-quantile per run? here's your ticket
191 //===========================================================================================
192 // Variables for Cascade Candidate Tree
193 //===========================================================================================
194 Int_t fTreeCascVarCharge; //!
195 Float_t fTreeCascVarMassAsXi; //!
196 Float_t fTreeCascVarMassAsOmega; //!
197 Float_t fTreeCascVarPt; //!
198 Float_t fTreeCascVarRapXi; //!
199 Float_t fTreeCascVarRapOmega; //!
200 Float_t fTreeCascVarNegEta; //!
201 Float_t fTreeCascVarPosEta; //!
202 Float_t fTreeCascVarBachEta; //!
203 Float_t fTreeCascVarDCACascDaughters; //!
204 Float_t fTreeCascVarDCABachToPrimVtx; //!
205 Float_t fTreeCascVarDCAV0Daughters; //!
206 Float_t fTreeCascVarDCAV0ToPrimVtx; //!
207 Float_t fTreeCascVarDCAPosToPrimVtx; //!
208 Float_t fTreeCascVarDCANegToPrimVtx; //!
209 Float_t fTreeCascVarCascCosPointingAngle; //!
210 Float_t fTreeCascVarCascRadius; //!
211 Float_t fTreeCascVarV0Mass; //!
212 Float_t fTreeCascVarV0CosPointingAngle; //!
213 Float_t fTreeCascVarV0CosPointingAngleSpecial; //!
214 Float_t fTreeCascVarV0Radius; //!
215 Int_t fTreeCascVarLeastNbrClusters; //!
216 Float_t fTreeCascVarDistOverTotMom; //!
219 Float_t fTreeCascVarNegNSigmaPion; //!
220 Float_t fTreeCascVarNegNSigmaProton; //!
221 Float_t fTreeCascVarPosNSigmaPion; //!
222 Float_t fTreeCascVarPosNSigmaProton; //!
223 Float_t fTreeCascVarBachNSigmaPion; //!
224 Float_t fTreeCascVarBachNSigmaKaon; //!
226 //Event Multiplicity Variables
227 Float_t fTreeCascVarCentV0A; //!
228 Float_t fTreeCascVarCentV0C; //!
229 Float_t fTreeCascVarCentV0M; //!
230 Float_t fTreeCascVarCentV0AEq; //!
231 Float_t fTreeCascVarCentV0CEq; //!
232 Float_t fTreeCascVarCentV0MEq; //!
233 Float_t fTreeCascVarAmpV0A; //!
234 Float_t fTreeCascVarAmpV0C; //!
235 Float_t fTreeCascVarAmpV0AEq; //!
236 Float_t fTreeCascVarAmpV0CEq; //!
237 Int_t fTreeCascVarRefMultEta8; //!
238 Int_t fTreeCascVarRefMultEta5; //!
239 Int_t fTreeCascVarRunNumber; //! //want to re-quantile per run? here's your ticket
241 //===========================================================================================
243 //===========================================================================================
245 TH1D *fHistEventCounter; //!
247 AliAnalysisTaskStrangenessVsMultiplicity(const AliAnalysisTaskStrangenessVsMultiplicity&); // not implemented
248 AliAnalysisTaskStrangenessVsMultiplicity& operator=(const AliAnalysisTaskStrangenessVsMultiplicity&); // not implemented
250 ClassDef(AliAnalysisTaskStrangenessVsMultiplicity, 11);