]>
Commit | Line | Data |
---|---|---|
eaf380ae | 1 | #ifndef ALIANALYSISTASKPIDPIDCORRELATION_H |
2 | #define ALIANALYSISTASKPIDPIDCORRELATION_H | |
3 | ||
4 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
5 | * See cxx source for full Copyright notice */ | |
6 | ||
7 | #include "TROOT.h" | |
8 | #include "TSystem.h" | |
9 | #include "TFile.h" | |
10 | #include "TString.h" | |
11 | #include "TAxis.h" | |
12 | #include "TClonesArray.h" | |
13 | #include "TList.h" | |
14 | #include "TObjArray.h" | |
15 | ||
16 | #ifndef ALIANALYSISTASKSE_H | |
17 | #include "AliAnalysisTaskSE.h" | |
18 | #endif | |
19 | ||
20 | #include "AliAODEvent.h" | |
21 | #include "AliVTrack.h" | |
22 | #include "AliAODTrack.h" | |
23 | #include "AliAODMCHeader.h" | |
24 | #include "AliAODMCParticle.h" | |
25 | #include "AliMCEvent.h" | |
26 | #include "AliMCEventHandler.h" | |
27 | #include "AliAODVertex.h" | |
28 | #include "AliCentrality.h" | |
29 | #include "AliAODHeader.h" | |
30 | #include "AliVParticle.h" | |
31 | #include "AliVVertex.h" | |
32 | #include "AliPID.h" | |
33 | #include "AliPIDResponse.h" | |
34 | #include "AliPIDCombined.h" | |
35 | #include "AliInputEventHandler.h" // event mixing | |
36 | #include "AliEventPoolManager.h" // event mixing | |
37 | #include "AliLog.h" | |
38 | #include "AliPIDResponse.h" | |
39 | #include "AliPIDCombined.h" | |
40 | ||
41 | #include "AliCFContainer.h" | |
42 | // #include "AliCFGridSparse.h" | |
43 | // #include "AliCFEffGrid.h" | |
44 | // #include "AliCFManager.h" | |
45 | // #include "AliCFCutBase.h" | |
46 | ||
47 | #include "TH1F.h" | |
48 | #include "TH2F.h" | |
49 | ||
50 | #include "THnSparse.h" | |
51 | // #include "AliTHn.h" | |
52 | ||
53 | class TList; | |
54 | class TH1F; | |
55 | class TH2F; | |
56 | // class AliTHn; | |
57 | class AliCFContainer; | |
58 | // class AliCFGridSparse; | |
59 | // class AliCFEffGrid; | |
60 | // class AliCFCutBase; | |
61 | // class AliCFManager; | |
62 | class AliPIDResponse; | |
63 | ||
64 | #include <vector> | |
65 | using std::vector; | |
66 | ||
67 | // const Int_t kTrackVariablesSingle = 4+1; // track variables in histogram (particle type, pTtrig, vertexZ, centrality) | |
68 | const Int_t kTrackVariablesPair = 5; // track variables in histogram (particle type trig, particle type assoc, pTtrig, ptAssociated, dPhi, dEta, vertexZ, centrality) | |
69 | ||
70 | namespace myAliPID { | |
71 | ||
acb677e4 | 72 | //enum PIDType { kMyNSigmaITS=0, kMyNSigmaTPC, kMyNSigmaTOF, kMyNSigmaHMP, kMyNSigmaTPCTOF, kMyNSigmaPIDType = kMyNSigmaTPCTOF }; |
73 | enum PIDType { kMyNSigmaITS=0, kMyNSigmaTPC, kMyNSigmaTOF, kMyNSigmaHMP, kMyNSigmaPIDType }; | |
eaf380ae | 74 | enum AliParticleSpeciesQA { fPartElectronQA=0, fPartMuonQA, fPartPionQA, fPartKaonQA, fPartProtonQA, fPartNSpeciesQA, fPartUndefinedQA = 999 }; |
75 | enum AliParticleSpecies { fPartPionMinus=1, fPartPionPlus, fPartKaonMinus, fPartKaonPlus, fPartProtonMinus, fPartProtonPlus, fPartHadronMinus, fPartHadronPlus, fPartNSpecies, fPartUndefined = 999 }; | |
76 | } | |
77 | ||
78 | using namespace myAliPID; | |
79 | ||
80 | class AliAnalysisTaskPidPidCorrelations : public AliAnalysisTaskSE { // | |
81 | ||
82 | public: | |
83 | ||
84 | AliAnalysisTaskPidPidCorrelations(); | |
85 | AliAnalysisTaskPidPidCorrelations(const Char_t* name/* = "AliAnalysisTaskPidPidCorrelations"*/); | |
86 | virtual ~AliAnalysisTaskPidPidCorrelations(); | |
87 | ||
88 | //___ Implementation of interface methods | |
89 | virtual void UserCreateOutputObjects(); | |
90 | virtual void UserExec(Option_t* option); | |
91 | virtual void Terminate(Option_t* option); | |
92 | ||
93 | // Setters/Getters | |
94 | void SetMaxVertexZ(Double_t maxVertexZ) { fVzMax = maxVertexZ; } | |
95 | void SetTriggerMask(Int_t triggerType) { fTriggerType = triggerType; } | |
96 | // void SetFilterBit(Int_t fbit) { fFilterBit = fbit; } | |
97 | void SetCentralityEstimator(const Char_t* centralityestimator) { fCentralityEstimator = centralityestimator; } | |
98 | void SetCentralityRange(Float_t min, Float_t max) { fCentralityPercentileMin = min; fCentralityPercentileMax = max; } | |
99 | // void SetEtaRange(Double_t etaMin, Double_t etaMax) { fTrackEtaMin = etaMin; fTrackEtaMax = etaMax; } | |
100 | void SetVertexDiamond(Double_t vx, Double_t vy, Double_t vz) { fVxMax = vx; fVyMax = vy; fVzMax = vz;} | |
101 | void SetKinematicsCutsAOD(Double_t ptmin, Double_t ptmax, Double_t etamin, Double_t etamax) { fTrackPtMin = ptmin; fTrackPtMax = ptmax; fTrackEtaMin = etamin; fTrackEtaMax = etamax; } | |
102 | //void SetFilterMask(UInt_t i,Int_t iType = 0){fFilterMask = i;fFilterType = iType;} | |
103 | ||
104 | void SetMixingTracks(Int_t tracks, Int_t poolsize) { fMinNumTrack = tracks; fPoolSize = poolsize;} | |
105 | void SetFillpT(Bool_t flag) { fFillpT = flag; } | |
106 | void SetTwoTrackEfficiencyCut(Float_t value = 0.02, Float_t min = 0.8) { twoTrackEfficiencyCutValue = value; fTwoTrackCutMinRadius = min; } | |
107 | void SetPairCuts(Bool_t conversions, Bool_t resonances) { fCutConversions = conversions; fCutResonances = resonances; } | |
108 | void SetWeightPerEvent(Bool_t flag = kTRUE) { fWeightPerEvent = flag; } | |
109 | void SetPtOrder(Bool_t flag) { fPtOrder = flag; } | |
110 | void SetEtaOrdering(Bool_t flag) { fEtaOrdering = flag; } | |
111 | void SetEventMixing(Bool_t flag) { fFillMixed = flag; } | |
112 | void SetRejectResonanceDaughters(Int_t value) { fRejectResonanceDaughters = value; } | |
113 | void SetSelectCharge(Int_t selectCharge) { fSelectCharge = selectCharge; } | |
114 | void SetSelectTriggerCharge(Int_t selectCharge) { fTriggerSelectCharge = selectCharge; } | |
115 | void SetSelectAssociatedCharge(Int_t selectCharge) { fAssociatedSelectCharge = selectCharge; } | |
116 | void SetTriggerRestrictEta(Float_t eta) { fTriggerRestrictEta = eta; } | |
117 | void SetOnlyOneEtaSide(Int_t flag) { fOnlyOneEtaSide = flag; } | |
118 | ||
119 | void SetPIDsToCorrelate(Int_t triggerPID, Int_t assocPID) { fPIDtrigType = triggerPID; fPIDassocType = assocPID; } | |
120 | ||
121 | void SetMC(Bool_t isMC) {fUseMC = isMC;} | |
122 | Bool_t GetMC() const {return fUseMC;} | |
123 | ||
124 | void SetCentBinning(Int_t nBins, Double_t* limits); | |
125 | Int_t GetCentBin(Double_t centrality); | |
126 | void SetZvtxBinning(Int_t nBins, Double_t* limits); | |
127 | Int_t GetZvtxBin(Double_t zvtx); | |
128 | void SetPtBinning(Int_t nBins, Double_t* limits); | |
129 | Int_t GetPtBin(Double_t valPt); | |
130 | void SetEtaBinning(Int_t nBins, Double_t *limits); | |
131 | Int_t GetEtaBin(Double_t valEta); | |
132 | ||
133 | TString GetCentralityEstimator() const { return fCentralityEstimator; } | |
134 | Double_t GetMaxVertexZ() const { return fVzMax; } | |
135 | // Int_t GetMyFilterBit() { return fFilterBit; } | |
136 | // Double_t* GetNSigmas(AliParticleSpecies species) { return fnsigmas[species]; } // get nsigma[ipart][idet], calculated in CalculateNSigmas(trk) | |
137 | /* | |
138 | //_______ AliTHn | |
139 | AliTHn* GetHistCorrSingle() {return fHistCorrSingle;} | |
140 | void SetHistCorrSingle(AliTHn *gHist) { fHistCorrSingle = gHist; }//fHistP->FillParent(); fHistP->DeleteContainers();} | |
141 | AliTHn* GetHistCorrPairSame() {return fHistCorrPairSame;} | |
142 | void SetHistCorrPairSame(AliTHn *gHist) { fHistCorrPairSame = gHist; }//fHistN->FillParent(); fHistN->DeleteContainers();} | |
143 | AliTHn* GetHistCorrPairMixed() {return fHistCorrPairMixed;} | |
144 | void SetHistCorrPairMixed(AliTHn *gHist) { fHistCorrPairMixed = gHist; }//fHistN->FillParent(); fHistN->DeleteContainers();} | |
145 | */ | |
146 | //AliTHn* MakeHistCorr(const Char_t* name) const; | |
147 | ||
148 | void UseMomentumDifferenceCut(Bool_t fqcut = kFALSE,Double_t gDeltaPtCutMin = 0.01) { fQCut = fqcut; fDeltaPtMin = fqcut ? gDeltaPtCutMin : 0.; } | |
149 | void SetupForMixing(); | |
150 | void AddSettingsTree(); | |
151 | void Analyse(); | |
152 | ||
acb677e4 | 153 | void FillCorrelations(TObjArray* particles, TObjArray* particlesMixed, Double_t centrality, Double_t zVtx, Double_t bSign, Bool_t twoTrackEfficiencyCut, Double_t twoTrackEfficiencyCutValue, /*Int_t step,*/ Double_t weight); |
eaf380ae | 154 | Bool_t CheckMcDistributions(TClonesArray* arrayMC, AliAODMCHeader* mcHeader); |
155 | TString GetGenerator(Int_t label, AliAODMCHeader* MCheader); | |
156 | Bool_t IsFromHijingBg(Int_t mcTrackLabel); | |
157 | void FillMcGeneratorHistos(TString genLabel); | |
158 | Bool_t VertexSelection(TObject* obj, Int_t ntracks, Int_t centBin, Double_t gVxMax, Double_t gVyMax, Double_t gVzMax); | |
159 | void CleanUp(TObjArray* tracks, TObject* mcObj); | |
acb677e4 | 160 | TObjArray* AcceptTracks(Int_t centBin, TObject* arrayMC, /*Bool_t onlyprimaries,*/ Bool_t useCuts); |
eaf380ae | 161 | TObjArray* AcceptMcTracks(Int_t centBin, Bool_t onlyprimaries, Bool_t useCuts); |
162 | TObjArray* AcceptMcRecoMachedTracks(Int_t centBin, Bool_t onlyprimaries, Bool_t useCuts); | |
163 | Double_t* GetBinning(const Char_t* configuration, const Char_t* tag, Int_t& nBins); | |
164 | Bool_t CheckTrack(AliAODTrack* track); | |
165 | void CalculateNSigmas(AliAODTrack* track, Int_t centBin, Bool_t* pidFlag, Bool_t fillQA); | |
166 | Int_t FindNSigma(AliAODTrack* track); | |
167 | Int_t GetParticleID(AliVTrack* trk, Int_t centbin, Bool_t fillQA); // DATA and MC-reco | |
168 | Int_t GetParticleIDMC(AliVTrack* trk, Int_t centbin, Bool_t fillQA); // MC-truth | |
169 | Double_t MakeTPCPID(AliAODTrack* track, Double_t* nSigma); | |
170 | Double_t MakeTOFPID(AliAODTrack* track, Double_t* nSigma); | |
171 | Bool_t HasTPCPID(AliAODTrack* track) const; | |
172 | Bool_t HasTOFPID(AliAODTrack* track) const; | |
173 | Double_t GetBeta(AliAODTrack* track); | |
174 | void RemoveDuplicates(TObjArray* tracks); | |
175 | void RemoveWeakDecays(TObjArray* tracks, TObject* mcObj); | |
176 | Double_t DeltaPhi(Double_t Dphi) const; | |
177 | TH2F* GetHisto2D(const Char_t* name); | |
178 | Double_t GetDPhiStar(Double_t phi1, Double_t pt1, Double_t charge1, Double_t phi2, Double_t pt2, Double_t charge2, Double_t radius, Double_t bSign); | |
179 | Float_t GetInvMassSquared(Float_t pt1, Float_t eta1, Float_t phi1, Float_t pt2, Float_t eta2, Float_t phi2, Float_t m0_1, Float_t m0_2); | |
180 | Float_t GetInvMassSquaredCheap(Float_t pt1, Float_t eta1, Float_t phi1, Float_t pt2, Float_t eta2, Float_t phi2, Float_t m0_1, Float_t m0_2); | |
181 | void PrintPoolManagerContents(); | |
182 | TObjArray* CloneAndReduceTrackList(TObjArray* tracks); | |
183 | TString GetOutputListName() const; | |
184 | ||
185 | //___________ Correction | |
186 | enum ECorrStep { kStepGen = 0, kStepRec, kStepRecMatch, kNsteps }; | |
187 | // enum ECorrVars { kVarEta, kVarPhi, kVarPt, kVarPID, kVarCent, kVarZvtx, kNvars }; | |
188 | // enum ECorrVars { kVarEta, kVarPhi, kVarPt, kVarZvtx, kNvars }; | |
189 | enum ECorrVars { kVarEta, kVarPt, kVarPID, kVarCent, kVarZvtx, kNvars }; | |
190 | void FillCFcontainers(TObjArray* mca, TObjArray* rec, TObjArray* recmatch, Double_t cent/*, Double_t zvtx*/); | |
191 | ||
192 | private: | |
193 | ||
194 | AliAnalysisTaskPidPidCorrelations(const AliAnalysisTaskPidPidCorrelations&); // not implemented | |
195 | AliAnalysisTaskPidPidCorrelations& operator=(const AliAnalysisTaskPidPidCorrelations&); // not implemented | |
196 | ||
197 | Bool_t fUseMC; | |
198 | ||
199 | AliAODEvent* fMyAODEvent; //! | |
200 | AliAODHeader* fMyAODHeader; //! | |
201 | AliAODTrack* fMyAODTrack; //! | |
202 | AliPIDResponse* fPIDResponse; //! PID response object | |
203 | AliAODVertex* fMyPrimVtx; //! | |
204 | TClonesArray* fMyMcArray; //! | |
205 | AliAODMCHeader* fMyMcHeader; //! | |
206 | AliMCEventHandler* fMyMcHandler; //! | |
207 | AliEventPoolManager* fPoolMgr; //! | |
208 | AliCFContainer* fMyCFCont; //! | |
209 | ||
210 | TObjArray* fMyprimRecoTracksPID; //! | |
211 | TObjArray* fMyprimMCParticlesPID; //! | |
212 | TObjArray* fMyprimRecoTracksMatchedPID; //! | |
213 | ||
214 | ||
215 | // Bool_t fWriteCorrTree; | |
216 | // TTree* fVariablesTreeCorr; | |
217 | // Float_t* fCorrVariables; | |
218 | ||
219 | Int_t fTriggerType; // sets trigger -> AliVEvent::kMB, AliVEvent::kHighMult | |
220 | Int_t fMyMcType ;// | |
221 | // Int_t fFilterBit; // track selection cuts | |
222 | UInt_t fFilterType; // filter type 0 = all, 1 = ITSTPC, 2 = TPC | |
223 | Double_t fCentrality;// | |
224 | Double_t fCentralityPercentileMin; | |
225 | Double_t fCentralityPercentileMax; | |
226 | Int_t fNbinsCent; | |
227 | TAxis* fCentAxis; // | |
228 | Int_t fNbinsZvtx; | |
229 | TAxis* fZvtxAxis; // | |
230 | Int_t fNbinsPt; | |
231 | TAxis* fPtAxis; // | |
232 | Int_t fNbinsEta; | |
233 | TAxis* fEtaAxis; // | |
234 | TString fCentralityEstimator; // Method to determine the centrality, e.g. "V0M","TRK","TKL","ZDC","FMD", "CL0", "CL1" | |
235 | Double_t fTrackEtaMin; | |
236 | Double_t fTrackEtaMax; | |
237 | Double_t fTrackPtMin; | |
238 | Double_t fTrackPtMax; | |
239 | UInt_t fTrackStatus; // if non-0, the bits set in this variable are required for each track | |
240 | Int_t fnTracksVertex; // QA tracks pointing to principal vertex | |
241 | Bool_t fRejectZeroTrackEvents; // reject events which have no tracks (using the eta, pT cuts defined) | |
242 | Double_t fEtaCut; | |
243 | Double_t fVxMax; | |
244 | Double_t fVyMax; | |
245 | Double_t fVzMax; | |
246 | Bool_t fRemoveWeakDecays; // remove secondaries from weak decays from tracks and particles | |
247 | Bool_t fRemoveDuplicates; // remove particles with the same label (double reconstruction) | |
248 | ||
249 | Double_t fDeltaEtaMax; // maximum delta eta for output THnSparse | |
250 | ||
251 | Int_t fSelectCharge; // (un)like sign selection when building correlations: 0: no selection; 1: unlike sign; 2: like sign | |
252 | Int_t fTriggerSelectCharge; // select charge of trigger particle: 1: positive; -1 negative | |
253 | Int_t fAssociatedSelectCharge; // select charge of associated particle: 1: positive; -1 negative | |
254 | Float_t fTriggerRestrictEta; // restrict eta range for trigger particle (default: -1 [off]) | |
255 | Bool_t fCutConversions; // cut on conversions (inv mass) | |
256 | Bool_t fCutResonances; // cut on resonances (inv mass) | |
257 | Int_t fRejectResonanceDaughters; // reject all daughters of all resonance candidates (1: test method (cut at m_inv=0.9); 2: k0; 3: lambda) | |
258 | Int_t fOnlyOneEtaSide; // decides that only trigger particle from one eta side are considered (0 = all; -1 = negative, 1 = positive) | |
259 | Bool_t fWeightPerEvent; // weight with the number of trigger particles per event | |
260 | Bool_t fPtOrder; // apply pT,a < pt,t condition; default: kTRUE | |
261 | Bool_t fQCut; //cut on momentum difference to suppress femtoscopic effect correlations | |
262 | Double_t fDeltaPtMin; //delta pt cut: minimum value | |
263 | ||
264 | Int_t fPIDtrigType; // PID trigger type to correlate | |
265 | Int_t fPIDassocType; // PID assoc type to correlate | |
266 | ||
267 | TString fCustomBinning;//for setting customized binning | |
268 | TString fBinningString;//final binning string | |
269 | ||
270 | Int_t fMinNumTrack; // AliEventPoolManager(), Size of track buffer for event mixing (number of tracks to fill the pool) | |
271 | Int_t fPoolSize; // AliEventPoolManager(), max number of event to mix | |
272 | Int_t fMinNEventsToMix; // | |
273 | ||
274 | Bool_t fFillpT; | |
275 | Float_t fTwoTrackEfficiencyCut; // enable two-track efficiency cut | |
276 | Float_t twoTrackEfficiencyCutValue; // set it 0.02 as default in dphicorrelations | |
277 | Float_t fTwoTrackCutMinRadius; // minimum radius for two-track efficiency cut | |
278 | Bool_t fEtaOrdering; // eta ordering, see AliUEHistograms.h for documentation | |
279 | Bool_t fFillMixed; // enable event mixing (default: ON) | |
280 | ||
281 | static const Int_t fNMaxBinsCentrality = 1; | |
282 | static const Int_t fNMaxBinsZvtx = 15; | |
283 | static const Int_t fNMaxBinsPt = 9; | |
284 | static const Int_t fNMaxBinsEta = 25; | |
285 | ||
286 | TList* fList; // | |
287 | ||
288 | TH1F* fHistQA[fNMaxBinsCentrality][14]; //! | |
289 | TH1I* fHistNev;//! | |
290 | TH1F* fHistTriggerStats; //! | |
291 | TH1F* fHistTriggerRun; //! | |
292 | TH1F* fHistEventStat; //! | |
293 | TH2F* fHistRefTracks; //! | |
294 | TH2F* fHistRefTracksCent[fNMaxBinsCentrality][6];//! | |
295 | TH2F* fHistCentStats; //! | |
296 | TH1F* fHistCentralityPercentile; //! centrality class | |
297 | TH1F* fHistCentralityClass10; //! centrality class by 10 | |
298 | TH1F* fHistCentralityClass5; //! centrality class by 5 | |
299 | TH2F* fHistV0M; //! | |
300 | ||
301 | // TH1F* fHistDeltaPhi[fNMaxBinsCentrality][fNMaxBinsPt][fNMaxBinsPt]; //! | |
302 | // TH1F* fHistDeltaPhiMix[fNMaxBinsCentrality][fNMaxBinsPt][fNMaxBinsPt]; //! | |
303 | // TH2F* fHistDphiDeta[fNMaxBinsCentrality][fNMaxBinsPt][fNMaxBinsPt]; //! | |
304 | // TH2F* fHistDphiDetaMix[fNMaxBinsCentrality][fNMaxBinsPt][fNMaxBinsPt]; //! | |
305 | TH2F* fHistTracksEtaTrigVsEtaAssoc[fNMaxBinsCentrality]; //! | |
306 | TH2F* fHistTracksEtaTrigVsEtaAssocMixed[fNMaxBinsCentrality]; //! | |
307 | TH1F* fHistSingleHadronsPt[fNMaxBinsCentrality]; //! | |
308 | // TH1F* fHistSingleHadronsPt_Mixed[fNMaxBinsCentrality]; //! | |
309 | TH2F* fHistSingleHadronsEtaPt[fNMaxBinsCentrality]; //! | |
310 | // TH2F* fHistSingleHadronsEtaPt_Mixed[fNMaxBinsCentrality]; //! | |
311 | ||
312 | //____ MC | |
313 | TH1F* fHistMcGenerator; //! | |
314 | TH1F* fHist_HijingBg; //! | |
315 | TH1F* fHistNumOfPartPerEvt; //! | |
316 | TH1F* fHistMcStats; //! | |
317 | TH1F* fHistMcAllPt; //! | |
318 | TH1F* fHistMcAllPt_Hijing; //! | |
319 | TH1F* fHistMcAllPt_Dec; //! | |
320 | TH1F* fHistMcAllPt_Inj; //! | |
321 | TH1F* fHistMcAllEta_NotHijing; //! | |
322 | TH1F* fHistMcAllEta_Hijing; //! | |
323 | TH1F* fHistMcAllEta; //! | |
324 | ||
325 | //____ Correlation | |
326 | // AliTHn* fHistCorrSingle; | |
327 | // AliTHn* fHistCorrPairSame; | |
328 | // AliTHn* fHistCorrPairMixed; | |
329 | // THnSparseD* fHistCorrSingle; | |
330 | THnSparseD* fHistCorrPair[2]; //! | |
331 | ||
332 | // THnSparseD* fHistPoolMgrQA; | |
333 | ||
334 | ||
335 | TH2F* fHistControlConvResoncances; //! | |
336 | ||
337 | TH1D* fHistTriggerWeighting; //! | |
338 | TAxis* fTriggerWeighting; | |
339 | ||
340 | TH2F* fHistTwoTrackDistancePt[fNMaxBinsPt][2]; | |
341 | ||
342 | TH2F* fHistHBTbefore; //! Delta Eta vs. Delta Phi before HBT inspired cuts | |
343 | TH2F* fHistHBTafter; //! Delta Eta vs. Delta Phi after HBT inspired cuts | |
344 | // TH2F* fHistConversionbefore; //! Delta Eta vs. Delta Phi before Conversion cuts | |
345 | // TH2F* fHistConversionafter; //! Delta Eta vs. Delta Phi before Conversion cuts | |
346 | // TH2F* fHistPsiMinusPhi;//! psi - phi QA histogram | |
347 | // TH3D* fHistResonancesBefore; //! 3D histogram (Deta,Dphi,Invmass) before resonance cuts | |
348 | // TH3D* fHistResonancesRho; //! 3D histogram (Deta,Dphi,Invmass) after removing rho | |
349 | // TH3D* fHistResonancesK0; //! 3D histogram (Deta,Dphi,Invmass) after removing rho, K0 | |
350 | // TH3D* fHistResonancesLambda; //! 3D histogram (Deta,Dphi,Invmass) after removing rho, K0, and Lambda | |
351 | // TH3D* fHistQbefore; //! Delta Eta vs. Delta Phi before cut on momentum difference | |
352 | // TH3D* fHistQafter; //! Delta Eta vs. Delta Phi after cut on momentum difference | |
353 | ||
354 | ||
355 | TH2F* fHistoNSigma[fNMaxBinsCentrality]; //! | |
356 | Double_t nsigmaITS[fPartNSpeciesQA]; | |
357 | Double_t nsigmaTPC[fPartNSpeciesQA]; | |
358 | Double_t nsigmaTOF[fPartNSpeciesQA]; | |
359 | Double_t nsigmaHMPID[fPartNSpeciesQA]; | |
360 | ||
acb677e4 | 361 | Double_t fnsigmas[fPartNSpeciesQA][kMyNSigmaPIDType]; // nsigma values |
eaf380ae | 362 | |
363 | TH2F* fHistTPCdEdx[fNMaxBinsCentrality]; //! TPC dEdx | |
364 | TH2F* fHistTOFbeta[fNMaxBinsCentrality]; //! TOF beta | |
365 | TH2F* fHistTPCdEdx_selected[fNMaxBinsCentrality]; //! TPC dEdx | |
366 | TH2F* fHistTOFbeta_selected[fNMaxBinsCentrality]; //! TOF beta | |
367 | ||
368 | TH2F* fHistNSigmaTPC[fNMaxBinsCentrality][AliPID::kSPECIES]; //! nsigma TPC | |
369 | TH2F* fHistNSigmaTOF[fNMaxBinsCentrality][AliPID::kSPECIES]; //! nsigma TOF | |
370 | ||
371 | ClassDef(AliAnalysisTaskPidPidCorrelations, 1); | |
372 | }; | |
373 | ||
374 | //_____ Reduced Tracks -- contains only quantities requires for this analysis to reduce memory consumption for event mixing | |
375 | class AliPidPidCorrelationReducedTrack : public AliVParticle // TObject | |
376 | { | |
377 | public: | |
378 | AliPidPidCorrelationReducedTrack(Int_t partID, Double_t eta, Double_t phi, Double_t pt, Short_t charge) | |
379 | : fParticleIDReduced(partID), fEtaReduced(eta), fPhiReduced(phi), fPtReduced(pt), fChargeReduced(charge) | |
380 | { | |
381 | } | |
382 | ~AliPidPidCorrelationReducedTrack() {} | |
383 | ||
384 | // AliVParticle functions | |
385 | virtual Double_t Px() const { AliFatal("Not implemented"); return 0; } | |
386 | virtual Double_t Py() const { AliFatal("Not implemented"); return 0; } | |
387 | virtual Double_t Pz() const { AliFatal("Not implemented"); return 0; } | |
388 | virtual Double_t Pt() const { return fPtReduced; } | |
389 | virtual Double_t P() const { AliFatal("Not implemented"); return 0; } | |
390 | virtual Bool_t PxPyPz(Double_t[3]) const { AliFatal("Not implemented"); return 0; } | |
391 | virtual Double_t Xv() const { AliFatal("Not implemented"); return 0; } | |
392 | virtual Double_t Yv() const { AliFatal("Not implemented"); return 0; } | |
393 | virtual Double_t Zv() const { AliFatal("Not implemented"); return 0; } | |
394 | virtual Bool_t XvYvZv(Double_t[3]) const { AliFatal("Not implemented"); return 0; } | |
395 | virtual Double_t OneOverPt() const { AliFatal("Not implemented"); return 0; } | |
396 | virtual Double_t Phi() const { return fPhiReduced; } | |
397 | virtual Double_t Theta() const { AliFatal("Not implemented"); return 0; } | |
398 | virtual Double_t E() const { AliFatal("Not implemented"); return 0; } | |
399 | virtual Double_t M() const { AliFatal("Not implemented"); return 0; } | |
400 | virtual Double_t Eta() const { return fEtaReduced; } | |
401 | virtual Double_t Y() const { AliFatal("Not implemented"); return 0; } | |
402 | virtual Short_t Charge() const { return fChargeReduced; } | |
403 | ||
404 | // void Print() { Printf(Form("Reduced track, eta: %lf phi: %lf pt: %lf p: %lf", fEtaReduced, fPhiReduced, fPtReduced, fPReduced)); } | |
405 | ||
406 | //________ PID | |
407 | Int_t GetMyPartID() const { return fParticleIDReduced; } | |
408 | virtual Bool_t IsEqual(const TObject* obj) const { return (obj->GetUniqueID() == GetUniqueID()); } | |
409 | virtual Int_t GetLabel() const { AliFatal("Not implemented"); return 0; } | |
410 | virtual Int_t PdgCode() const { AliFatal("Not implemented"); return 0; } | |
411 | virtual const Double_t* PID() const { AliFatal("Not implemented"); return 0; } | |
412 | ||
413 | private: | |
414 | ||
415 | Int_t fParticleIDReduced; // particle ID | |
416 | Double_t fEtaReduced; // eta | |
417 | Double_t fPhiReduced; // phi | |
418 | Double_t fPtReduced; // pT | |
419 | Short_t fChargeReduced; // charge | |
420 | ||
421 | ClassDef(AliPidPidCorrelationReducedTrack, 1); // reduced track class which contains only quantities requires for this analysis to reduce memory consumption for event mixing | |
422 | }; | |
423 | ||
424 | #endif |