]>
Commit | Line | Data |
---|---|---|
684aef2e | 1 | #ifndef ALIANALYSISTASKCHECKCASCADE_H |
2 | #define ALIANALYSISTASKCHECKCASCADE_H | |
eed7ee51 | 3 | |
4 | /* See cxx source for full Copyright notice */ | |
5 | ||
6 | //----------------------------------------------------------------- | |
45ee0bcc | 7 | // AliAnalysisTaskCheckCascade class |
8 | // (AliAnalysisTaskCheckCascade) | |
32599cd4 | 9 | // This task has four roles : |
3873f6ee | 10 | // 1. QAing the Cascades from ESD and AOD |
11 | // Origin: AliAnalysisTaskESDCheckV0 by B.H. Nov2007, hippolyt@in2p3.fr | |
32599cd4 | 12 | // 2. Prepare the plots which stand as raw material for yield extraction (wi/wo PID) |
13 | // 3. Supply an AliCFContainer meant to define the optimised topological selections | |
14 | // 4. Rough azimuthal correlation study (Eta, Phi) | |
e9c3f0b6 | 15 | // Adapted to Cascade : A.Maire Mar2008, antonin.maire@ires.in2p3.fr |
9d670198 | 16 | // Modified : A.Maire Mar2010, antonin.maire@ires.in2p3.fr |
eed7ee51 | 17 | //----------------------------------------------------------------- |
18 | ||
19 | class TList; | |
20 | class TH1F; | |
6dc8b253 | 21 | class TH2F; |
ff0753e1 | 22 | class TH3F; |
3873f6ee | 23 | class TVector3; |
24 | class THnSparse; | |
45ee0bcc | 25 | |
10d100d4 | 26 | class AliESDpid; |
7e504402 | 27 | class AliESDEvent; |
c525f360 | 28 | class AliESDtrackCuts; |
32599cd4 | 29 | class AliCFContainer; |
30 | ||
45ee0bcc | 31 | |
32 | #include "TString.h" | |
eed7ee51 | 33 | |
45ee0bcc | 34 | #include "AliAnalysisTaskSE.h" |
eed7ee51 | 35 | |
45ee0bcc | 36 | class AliAnalysisTaskCheckCascade : public AliAnalysisTaskSE { |
eed7ee51 | 37 | public: |
45ee0bcc | 38 | AliAnalysisTaskCheckCascade(); |
39 | AliAnalysisTaskCheckCascade(const char *name); | |
9d670198 | 40 | virtual ~AliAnalysisTaskCheckCascade(); |
eed7ee51 | 41 | |
45ee0bcc | 42 | virtual void UserCreateOutputObjects(); |
43 | virtual void UserExec(Option_t *option); | |
3873f6ee | 44 | void DoAngularCorrelation(const Char_t *lCascType, |
45 | Double_t lInvMassCascade, | |
46 | const Int_t *lArrTrackID, | |
47 | TVector3 &lTVect3MomXi, | |
c525f360 | 48 | Double_t lEtaXi, |
49 | Double_t lRapCascade); | |
7e504402 | 50 | virtual Int_t DoESDTrackWithTPCrefitMultiplicity(const AliESDEvent *lESDevent); |
51 | ||
eed7ee51 | 52 | virtual void Terminate(Option_t *); |
53 | ||
9d670198 | 54 | void SetCollidingSystems (Short_t collidingSystems = 0 ) { fCollidingSystems = collidingSystems;} |
55 | void SetAnalysisType (const char* analysisType = "ESD") { fAnalysisType = analysisType;} | |
c525f360 | 56 | void SetTriggerMaskType (const char* triggerMaskType = "kMB") { fTriggerMaskType = triggerMaskType;} |
57 | void SetRelaunchV0CascVertexers (Bool_t rerunV0CascVertexers = 0 ) { fkRerunV0CascVertexers = rerunV0CascVertexers; } | |
58 | void SetQualityCutZprimVtxPos (Bool_t qualityCutZprimVtxPos = kTRUE) { fkQualityCutZprimVtxPos = qualityCutZprimVtxPos; } | |
59 | void SetRejectEventPileUp (Bool_t rejectPileUp = kTRUE) { fkRejectEventPileUp = rejectPileUp; } | |
60 | void SetQualityCutNoTPConlyPrimVtx (Bool_t qualityCutNoTPConlyPrimVtx = kTRUE) { fkQualityCutNoTPConlyPrimVtx = qualityCutNoTPConlyPrimVtx;} | |
61 | void SetQualityCutTPCrefit (Bool_t qualityCutTPCrefit = kTRUE) { fkQualityCutTPCrefit = qualityCutTPCrefit; } | |
62 | void SetQualityCut80TPCcls (Bool_t qualityCut80TPCcls = kTRUE) { fkQualityCut80TPCcls = qualityCut80TPCcls; } | |
63 | void SetAlephParamFor1PadTPCCluster(Bool_t onePadTPCCluster = kTRUE) { fkIsDataRecoWith1PadTPCCluster = onePadTPCCluster ; } | |
64 | void SetExtraSelections (Bool_t extraSelections = 0 ) { fkExtraSelections = extraSelections; } | |
65 | void SetAngularCorrelationType (const char* correlationType = "TrigLeadingTrck-AssoCasc") {fAngularCorrelationType = correlationType; } | |
9d670198 | 66 | |
67 | ||
45ee0bcc | 68 | private: |
7e504402 | 69 | // Note : In ROOT, "//!" means "do not stream the data from Master node to Worker node" ... |
70 | // your data member object is created on the worker nodes and streaming is not needed. | |
71 | // http://root.cern.ch/download/doc/11InputOutput.pdf, page 14 | |
eed7ee51 | 72 | |
73 | ||
c525f360 | 74 | TString fAnalysisType; // "ESD" or "AOD" analysis type |
75 | TString fTriggerMaskType; // type of trigger to use in UserExec : AliVEvent::kMB or kHighMult ? | |
9d670198 | 76 | Short_t fCollidingSystems; // 0 = pp collisions or 1 = AA collisions |
eed7ee51 | 77 | |
9d670198 | 78 | AliESDpid *fESDpid; // Tool data member to manage the TPC Bethe-Bloch info |
c525f360 | 79 | AliESDtrackCuts *fESDtrackCuts; // ESD track cuts used for primary track definition |
9d670198 | 80 | //TPaveText *fPaveTextBookKeeping; // TString to store all the relevant info necessary for book keeping (v0 cuts, cascade cuts, quality cuts, ...) |
f42573c1 | 81 | |
9d670198 | 82 | Bool_t fkRerunV0CascVertexers; // Boolean : kTRUE = relaunch both V0 + Cascade vertexers |
83 | Bool_t fkQualityCutZprimVtxPos; // Boolean : kTRUE = cut on the prim.vtx z-position | |
c525f360 | 84 | Bool_t fkRejectEventPileUp; // Boolean : kTRUE = enable the rejection of events tagged as pile-up by SPD (AliESDEvent::IsPileupFromSPD) |
9d670198 | 85 | Bool_t fkQualityCutNoTPConlyPrimVtx; // Boolean : kTRUE = prim vtx should be SPD or Tracking vertex |
86 | Bool_t fkQualityCutTPCrefit; // Boolean : kTRUE = ask for TPCrefit for the 3 daughter tracks | |
87 | Bool_t fkQualityCut80TPCcls; // Boolean : kTRUE = ask for 80 TPC clusters for each daughter track | |
c525f360 | 88 | Bool_t fkIsDataRecoWith1PadTPCCluster; // Boolean : kTRUE = data reconstructed with the "one pad cluster" algo in TPC (important for the ALEPH param for TPC PID) |
9d670198 | 89 | Bool_t fkExtraSelections; // Boolean : kTRUE = apply tighter selections, before starting the analysis |
c525f360 | 90 | TString fAngularCorrelationType; // type of correlation to compute : "TrigAnyCasc-AssoAnyPrim", "TrigCascLeading-AssoAnyPrim", "TrigLeadingTrck-AssoCasc" |
9d670198 | 91 | |
92 | Double_t fAlephParameters[5]; // Array to store the 5 param values for the TPC Bethe-Bloch parametrisation | |
93 | Double_t fV0Sels[7]; // Array to store the 7 values for the different selections V0 related (if fkRerunV0CascVertexers) | |
94 | Double_t fCascSels[8]; // Array to store the 8 values for the different selections Casc. related (if fkRerunV0CascVertexers) | |
7e504402 | 95 | |
96 | ||
97 | TList *fListHistCascade; //! List of Cascade histograms | |
9d670198 | 98 | |
99 | // - General histos (filled before the trigger selection) | |
100 | TH1F *fHistCascadeMultiplicityBeforeTrigSel; //! Cascade multiplicity distribution | |
101 | ||
102 | // - General histos (filled for any triggered event) | |
103 | TH1F *fHistCascadeMultiplicityForTrigEvt; //! Cascade multiplicity distribution | |
104 | TH1F *fHistTrackMultiplicityForTrigEvt; //! Track multiplicity distribution (without any cut = include ITS stand-alone + global tracks) | |
105 | TH1F *fHistTPCrefitTrackMultiplicityForTrigEvt; //! Track multiplicity distribution for tracks with TPCrefit | |
c525f360 | 106 | TH1F *fHistPrimaryTrackMultiplicityForTrigEvt; //! Track multiplicity distribution for the primary tracks (See fESDtrackCuts) |
a786bd57 | 107 | TH1F *fHistEstimateITSTPCMultiplicityForTrigEvt; //! (ITS+TPC tracks + SPD tracklets) multiplicity estimation from Ruben's work |
9d670198 | 108 | |
e8fd19de | 109 | // - General histos (filled for any triggered event + (|z(prim. vtx)| < 10 cm ) ) |
110 | TH1F *fHistCascadeMultiplicityForTrigEvtAndZprimVtx; //! Cascade multiplicity distribution | |
c525f360 | 111 | |
112 | // - General histos (filled for any triggered event + (|z(prim. vtx)| < 10 cm ) + after pile-up rejection from SPD ) | |
113 | TH1F *fHistCascadeMultiplicityForTrigEvtNonPiledUpAndZprimVtx; //! Cascade multiplicity distribution | |
9d670198 | 114 | |
115 | // - General histos (filled for events selected in this analysis (|z(prim. vtx)| < 10 cm + prim vtx = SPD or Tracking) ) | |
116 | TH1F *fHistCascadeMultiplicityForSelEvt; //! Cascade multiplicity distribution | |
117 | TH1F *fHistPosBestPrimaryVtxXForSelEvt; //! (best) primary vertex position distribution in x | |
118 | TH1F *fHistPosBestPrimaryVtxYForSelEvt; //! (best) primary vertex position distribution in y | |
119 | TH1F *fHistPosBestPrimaryVtxZForSelEvt; //! (best) primary vertex position distribution in z | |
120 | ||
121 | ||
122 | ||
7e504402 | 123 | |
124 | // - Characteristics for event with >1 cascade : Track Multiplicity, TPC clusters + Prim. vertex positions | |
125 | TH1F *fHistTPCrefitTrackMultiplicityForCascadeEvt; //! TPCrefit Track multiplicity distribution for event with >1 cascade candidate (NB: after quality sel. within the task) | |
c525f360 | 126 | TH1F *fHistPrimaryTrackMultiplicityForCascadeEvt; //! Track multiplicity distribution for the primary tracks for event with >1 cascade candidate (See fESDtrackCuts) |
7e504402 | 127 | |
128 | TH1F *fHistPosV0TPCClusters; //! TPC clusters distribution for Positive V0 daughter track | |
129 | TH1F *fHistNegV0TPCClusters; //! TPC clusters distribution for Negative V0 daughter track | |
130 | TH1F *fHistBachTPCClusters; //! TPC clusters distribution for Bachelor track | |
131 | ||
132 | TH1F *fHistVtxStatus; //! Is there a tracking vertex in the cascade event ? | |
133 | ||
9d670198 | 134 | // Vtx coming from the full tracking, for events containing at least a cascade |
135 | TH1F *fHistPosTrkgPrimaryVtxXForCascadeEvt; //! primary vertex position distribution in x | |
136 | TH1F *fHistPosTrkgPrimaryVtxYForCascadeEvt; //! primary vertex position distribution in y | |
137 | TH1F *fHistPosTrkgPrimaryVtxZForCascadeEvt; //! primary vertex position distribution in z | |
7e504402 | 138 | TH1F *fHistTrkgPrimaryVtxRadius; //! primary vertex (3D) radius distribution |
139 | ||
9d670198 | 140 | // Best primary Vtx available, for events containing at least a cascade |
141 | TH1F *fHistPosBestPrimaryVtxXForCascadeEvt; //! (best) primary vertex position distribution in x | |
142 | TH1F *fHistPosBestPrimaryVtxYForCascadeEvt; //! (best) primary vertex position distribution in y | |
143 | TH1F *fHistPosBestPrimaryVtxZForCascadeEvt; //! (best) primary vertex position distribution in z | |
7e504402 | 144 | TH1F *fHistBestPrimaryVtxRadius; //! (best) primary vertex radius distribution |
145 | ||
146 | // Correlation Best Vtx / Full Tracking Vtx | |
147 | TH2F *f2dHistTrkgPrimVtxVsBestPrimVtx; //! Radius of prim. Vtx from tracks Vs Radius of best Prim. Vtx | |
148 | ||
149 | ||
150 | // PART 1 : Adavanced QA | |
151 | // - Typical histos on the variables used for the selection of cascades | |
152 | TH1F *fHistEffMassXi; //! reconstructed cascade effective mass | |
153 | TH1F *fHistChi2Xi; //! chi2 value | |
154 | TH1F *fHistDcaXiDaughters; //! dca between Xi's daughters | |
155 | TH1F *fHistDcaBachToPrimVertex; //! dca of the bachelor track to primary vertex | |
156 | TH1F *fHistXiCosineOfPointingAngle; //! cosine of Xi pointing angle in a cascade | |
157 | TH1F *fHistXiRadius; //! (transverse) radius of the cascade vertex | |
eed7ee51 | 158 | |
f42573c1 | 159 | // - Histos about ~ the "V0 selection part" of the cascade, coming by inheritance from AliESDv0 |
eed7ee51 | 160 | TH1F *fHistMassLambdaAsCascDghter; //! Test Invariant Mass of Lambda coming from Cascade |
f42573c1 | 161 | TH1F *fHistV0Chi2Xi; //! V0 chi2 distribution, for the V0 associated to a cascade |
162 | TH1F *fHistDcaV0DaughtersXi; //! Dca between V0 daughters, for the V0 associated to a cascade | |
db166251 | 163 | TH1F *fHistDcaV0ToPrimVertexXi; //! Dca of V0 to primary vertex, for the V0 associated to a cascade |
164 | TH1F *fHistV0CosineOfPointingAngleXi; //! Cosine of V0 pointing angle, for the V0 associated to a cascade | |
165 | TH1F *fHistV0RadiusXi; //! V0 (transverse) distance distribution, for the V0 associated to a cascade | |
eed7ee51 | 166 | |
db166251 | 167 | TH1F *fHistDcaPosToPrimVertexXi; //! Dca of V0 positive daughter to primary vertex, for the V0 associated to a cascade |
168 | TH1F *fHistDcaNegToPrimVertexXi; //! Dca of V0 negative daughter to primary vertex, for the V0 associated to a cascade | |
eed7ee51 | 169 | |
170 | ||
171 | // - Effective mass histos for cascades. | |
172 | TH1F *fHistMassXiMinus; //! reconstructed cascade effective mass, under Xi- hyp. | |
173 | TH1F *fHistMassXiPlus; //! reconstructed cascade effective mass, under Xi+ hyp. | |
174 | TH1F *fHistMassOmegaMinus; //! reconstructed cascade effective mass, under Omega- hyp. | |
175 | TH1F *fHistMassOmegaPlus; //! reconstructed cascade effective mass, under Omega+ hyp. | |
f87cd3db | 176 | |
177 | TH1F *fHistMassWithCombPIDXiMinus; //! reconstructed Xi- effective mass, with bach. comb PID | |
178 | TH1F *fHistMassWithCombPIDXiPlus; //! reconstructed Xi+ effective mass, with bach. comb PID | |
179 | TH1F *fHistMassWithCombPIDOmegaMinus; //! reconstructed Omega- effective mass, with bach. comb PID | |
180 | TH1F *fHistMassWithCombPIDOmegaPlus; //! reconstructed Omega+ effective mass, with bach. comb PID | |
f42573c1 | 181 | |
182 | // - Complements for QA | |
90926f02 | 183 | TH1F *fHistXiTransvMom; //! Xi transverse momentum, around the mass peak of Xi-/+ |
184 | TH1F *fHistXiTotMom; //! Xi momentum norm, around the mass peak of Xi-/+ | |
f42573c1 | 185 | |
90926f02 | 186 | TH1F *fHistBachTransvMomXi; //! bachelor transverse momentum, for cand. around the mass peak of Xi-/+ |
187 | TH1F *fHistBachTotMomXi; //! bachelor momentum norm, for cand. around the mass peak of Xi-/+ | |
188 | ||
f42573c1 | 189 | TH1F *fHistChargeXi; //! Charge sign of the cascade candidate |
190 | TH1F *fHistV0toXiCosineOfPointingAngle; //! Cos. of Pointing angle between the V0 mom and the Xi-V0 vtx line | |
eed7ee51 | 191 | |
90926f02 | 192 | TH1F *fHistRapXi; //! rapidity of Xi candidates, around the mass peak of Xi-/+ |
193 | TH1F *fHistRapOmega; //! rapidity of Omega candidates, around the mass peak of Omega-/+ | |
194 | TH1F *fHistEtaXi; //! eta distrib. of all the cascade candidates, around the mass peak of Xi-/+ | |
195 | TH1F *fHistThetaXi; //! theta distrib. of all the cascade candidates, around the mass peak of Xi-/+ | |
196 | TH1F *fHistPhiXi; //! phi distrib. of all the cascade candidates, around the mass peak of Xi-/+ | |
c525f360 | 197 | |
198 | TH1F *fHistcTauXiMinus; //! lifetime c.Tau, around the mass peak of Xi- | |
199 | TH1F *fHistcTauXiPlus; //! lifetime c.Tau, around the mass peak of Xi+ | |
200 | TH1F *fHistcTauOmegaMinus; //! lifetime c.Tau, around the mass peak of Omega- | |
201 | TH1F *fHistcTauOmegaPlus; //! lifetime c.Tau, around the mass peak of Omega+ | |
f42573c1 | 202 | |
203 | TH2F *f2dHistArmenteros; //! alpha(casc. cand.) Vs PtArm(casc. cand.) | |
45ee0bcc | 204 | |
205 | TH2F *f2dHistEffMassLambdaVsEffMassXiMinus; //! Xi- Eff mass Vs V0 Eff mass, under Xi- hyp. | |
206 | TH2F *f2dHistEffMassXiVsEffMassOmegaMinus; //! Xi- Eff mass Vs Omega- Eff mass, for negative cascades | |
207 | TH2F *f2dHistEffMassLambdaVsEffMassXiPlus; //! Xi+ Eff mass Vs V0 Eff mass, under Xi+ hyp. | |
208 | TH2F *f2dHistEffMassXiVsEffMassOmegaPlus; //! Xi+ Eff mass Vs Omega+ Eff mass, for positive cascades | |
209 | ||
210 | TH2F *f2dHistXiRadiusVsEffMassXiMinus; //! transv. casc. decay radius Vs Xi- Eff mass, under Xi- hyp. | |
211 | TH2F *f2dHistXiRadiusVsEffMassXiPlus; //! transv. casc. decay radius Vs Xi+ Eff mass, under Xi+ hyp. | |
e9c3f0b6 | 212 | TH2F *f2dHistXiRadiusVsEffMassOmegaMinus; //! transv. casc. decay radius Vs Omega- Eff mass, under Omega- hyp. |
213 | TH2F *f2dHistXiRadiusVsEffMassOmegaPlus; //! transv. casc. decay radius Vs Omega+ Eff mass, under Omega+ hyp. | |
e8fd19de | 214 | |
215 | TH2F *f2dHistTPCdEdxOfCascDghters; //! TPC Bethe-Bloch curve, populated with the cascade daughters | |
e9c3f0b6 | 216 | |
3873f6ee | 217 | |
218 | // PART 2 : TH3F needed for pt spectrum and yield extraction | |
3aedd4a5 | 219 | // Without any PID |
220 | TH3F *f3dHistXiPtVsEffMassVsYXiMinus; //! casc. transv. momemtum Vs Xi- Eff mass Vs Y | |
221 | TH3F *f3dHistXiPtVsEffMassVsYXiPlus; //! casc. transv. momemtum Vs Xi+ Eff mass Vs Y | |
222 | TH3F *f3dHistXiPtVsEffMassVsYOmegaMinus; //! casc. transv. momemtum Vs Omega- Eff mass Vs Y | |
223 | TH3F *f3dHistXiPtVsEffMassVsYOmegaPlus; //! casc. transv. momemtum Vs Omega+ Eff mass Vs Y | |
224 | ||
32599cd4 | 225 | // Compilation of all PID plots (3D = casc. transv. momemtum Vs Casc Eff mass Vs Y), stored into an AliCFContainer |
226 | AliCFContainer *fCFContCascadePIDXiMinus; //! for Xi- : Container to store any 3D histos with the different PID flavours | |
227 | AliCFContainer *fCFContCascadePIDXiPlus; //! for Xi+ : Container to store any 3D histos with the different PID flavours | |
228 | AliCFContainer *fCFContCascadePIDOmegaMinus; //! for Omega-: Container to store any 3D histos with the different PID flavours | |
229 | AliCFContainer *fCFContCascadePIDOmegaPlus; //! for Omega+: Container to store any 3D histos with the different PID flavours | |
230 | ||
231 | ||
232 | ||
9d670198 | 233 | // PART 3 : Towards the optimisation of topological selections / systematics |
234 | AliCFContainer *fCFContCascadeCuts; //! Container meant to store all the relevant distributions corresponding to the cut variables | |
3873f6ee | 235 | |
236 | ||
32599cd4 | 237 | // PART 4 : Azimuthal correlation study |
3873f6ee | 238 | THnSparseF *fHnSpAngularCorrXiMinus; //! Delta Phi(Casc,any trck) Vs Delta Eta(Casc,any trck) Vs Casc Pt Vs Pt of the tracks Vs Eff Mass |
239 | THnSparseF *fHnSpAngularCorrXiPlus; //! Delta Phi(Casc,any trck) Vs Delta Eta(Casc,any trck) Vs Casc Pt Vs Pt of the tracks Vs Eff Mass | |
240 | THnSparseF *fHnSpAngularCorrOmegaMinus; //! Delta Phi(Casc,any trck) Vs Delta Eta(Casc,any trck) Vs Casc Pt Vs Pt of the tracks Vs Eff Mass | |
241 | THnSparseF *fHnSpAngularCorrOmegaPlus; //! Delta Phi(Casc,any trck) Vs Delta Eta(Casc,any trck) Vs Casc Pt Vs Pt of the tracks Vs Eff Mass | |
242 | ||
eed7ee51 | 243 | |
45ee0bcc | 244 | AliAnalysisTaskCheckCascade(const AliAnalysisTaskCheckCascade&); // not implemented |
245 | AliAnalysisTaskCheckCascade& operator=(const AliAnalysisTaskCheckCascade&); // not implemented | |
eed7ee51 | 246 | |
a786bd57 | 247 | ClassDef(AliAnalysisTaskCheckCascade, 13); |
eed7ee51 | 248 | }; |
249 | ||
250 | #endif |