#ifndef ALIANALYSISTASKPHIFLOW_H
#define ALIANALYSISTASKPHIFLOW_H
class TH1F;
class TH2F;
class TProfile;
class AliESDEvent;
class AliESDtrackCuts;
class AliFlowTrackCuts;
class AliFlowEvent;
class AliFlowCandidateTrack;
class AliFlowBayesianPID;
class AliEventPoolManager;
class AliPIDCombined;
#include "AliAnalysisTaskSE.h"
class AliPhiMesonHelperTrack : public TObject
{
public:
AliPhiMesonHelperTrack(Float_t eta, Float_t phi, Float_t p, Float_t px, Float_t py, Float_t pz, Float_t pt, Int_t charge) : fEta(eta), fPhi(phi), fp(p), fpX(px), fpY(py), fpZ(pz), fpT(pt), fCharge(charge) { }
~AliPhiMesonHelperTrack() {}
virtual Double_t P() const { return fp; }
virtual Double_t Px() const { return fpX; }
virtual Double_t Py() const { return fpY; }
virtual Double_t Pz() const { return fpZ; }
virtual Double_t Pt() const { return fpT; }
virtual Double_t Phi() const { return fPhi; }
virtual Double_t Eta() const { return fEta; }
virtual Int_t Charge() const { return fCharge; }
void InitializeHelperTrack(Float_t eta, Float_t phi, Float_t p, Float_t px, Float_t py, Float_t pz, Float_t pt, Int_t charge) { fEta = eta; fPhi = phi; fp = p; fpX = px; fpY = py; fpZ = pz; fpT = pt; fCharge = charge; }
private:
Float_t fEta;
Float_t fPhi;
Float_t fp;
Float_t fpX;
Float_t fpY;
Float_t fpZ;
Float_t fpT;
Int_t fCharge;
ClassDef(AliPhiMesonHelperTrack, 1);
};
class AliAnalysisTaskPhiFlow : public AliAnalysisTaskSE
{
public:
AliAnalysisTaskPhiFlow();
AliAnalysisTaskPhiFlow(const char *name);
virtual ~AliAnalysisTaskPhiFlow();
Int_t SetDebugLevelPhiTask(Int_t debug) {fDebug = debug; return fDebug; }
Bool_t SetIsMC(Bool_t ismc) {fIsMC = ismc; return fIsMC; }
Bool_t UseEventMixing(Bool_t mix, Bool_t type) {fEventMixing = mix; fTypeMixing = type; return mix; }
Bool_t SetVZEROSubEvents(Bool_t v0) { fV0 = v0; return v0; }
TH1F* BookHistogram(const char * name);
TH2F* BookPIDHistogram(const char * name, Bool_t TPC);
TH1F* InitPtSpectraHistograms(Float_t nmin, Float_t nmax);
TH1F* BookPtHistogram(const char* name);
void AddPhiIdentificationOutputObjects();
virtual void UserCreateOutputObjects();
AliEventPoolManager* InitializeEventMixing();
void SetPtBins(Float_t bin[19], Int_t n) { for(Int_t i = 0; i < n+1; i++) fPtBins[i] = bin[i]; fNPtBins = n; }
template <typename T> Double_t InvariantMass(const T* track1, const T* track2) const;
template <typename T> Bool_t CheckCandidateEtaPtCut(const T* track1, const T* track2) const;
void SetCentralityParameters(Double_t min, Double_t max, const char* a, const char* b, Bool_t c, Bool_t d) {
fCentralityMin = min;
fCentralityMax = max;
fkCentralityMethodA = a;
fkCentralityMethodB = b;
fCentralityCut2010 = c;
fCentralityCut2011 = d;}
void SetCurrentCentralityBin(Double_t c) {fCentrality = c; }
Double_t GetCenMin() const {return fCentralityMin; }
Double_t GetCenMax() const {return fCentralityMax; }
const char* GetCentralityMethod() const {return fkCentralityMethodA; }
void SetVertexZ(Float_t z) { fVertexRange = z; }
Float_t GetVertexZ() const { return fVertexRange; }
template <typename T> Bool_t EventCut(T* event);
template <typename T> void PlotMultiplcities(const T* event) const;
template <typename T> Bool_t CheckVertex(const T* event);
template <typename T> Bool_t CheckCentrality(T* event);
void InitializeBayesianPID(AliAODEvent* event);
template <typename T> Bool_t PassesTPCbayesianCut(T* track) const;
Bool_t PassesDCACut(AliAODTrack* track) const;
Bool_t IsKaon(AliAODTrack* track) const;
template <typename T> Double_t PhiPt(const T* track_1, const T* track_2) const;
template <typename T> void PtSelector(Int_t _track_type, const T* track_1, const T* track_2) const;
template <typename T> Bool_t PhiTrack(T* track) const;
template <typename T> void SetNullCuts(T* esd);
void PrepareFlowEvent(Int_t iMulti);
void VZEROSubEventAnalysis();
virtual void UserExec(Option_t *option);
virtual void Exec(Option_t *);
void ReconstructionWithEventMixing(TObjArray* MixingCandidates) const;
virtual void Terminate(Option_t *);
void SetPOICuts(AliFlowTrackCuts *cutsPOI) { fPOICuts = cutsPOI; }
void SetRPCuts(AliFlowTrackCuts *cutsRP) { fCutsRP = cutsRP; }
AliFlowTrackCuts* GetPOICuts() const {return fPOICuts;}
AliFlowTrackCuts* GetRPCuts() const {return fCutsRP;}
void SetPIDConfiguration(Double_t prob[7]) { for(Int_t i = 0; i < 7; i++) fPIDConfig[i] = prob[i]; }
void GetPIDConfiguration(Double_t prob[7]) const {for(Int_t i = 0; i < 7; i++) prob[i] = fPIDConfig[i]; }
void SetPOIDCAXYZ(Double_t dca[5]) { for(Int_t i = 0; i < 5; i++) fDCAConfig[i] = dca[i]; }
void GetPOIDCZXYZ(Double_t dca[5]) const { for(Int_t i = 0; i < 5; i++) dca[i] = fDCAConfig[i]; }
void SetMixingBins(Int_t c[20], Int_t v[20]) {for(Int_t i = 0; i < 20; i++) { fCentralityMixingBins[i] = c[i];
fVertexMixingBins[i] = v[i]; } }
void SetMixingParameters(Int_t p[3]) { for(Int_t i = 0; i < 3; i++) fMixingParameters[i] = p[i]; }
void GetMixingParameters(Int_t p[3]) const { for(Int_t i = 0; i < 3; i++) p[i] = fMixingParameters[i]; }
void SetCandidateEtaAndPt(Double_t mineta, Double_t maxeta, Double_t minpt, Double_t maxpt) { fCandidateMinEta = mineta;
fCandidateMaxEta = maxeta;
fCandidateMinPt = minpt;
fCandidateMaxPt = maxpt;
fCandidateEtaPtCut = kTRUE;}
void SetCandidateMinMaxY(Double_t min, Double_t max){
fCandidateMinY = min;
fCandidateMaxY = max;
fCandidateYCut = kTRUE;
}
void GetCandidateEtaAndPt(Double_t etapt[4]) const { etapt[0] = fCandidateMinEta;
etapt[1] = fCandidateMaxEta;
etapt[2] = fCandidateMinPt;
etapt[3] = fCandidateMaxPt; }
void SetCommonConstants(Int_t massBins, Double_t minMass, Double_t maxMass) { fMassBins = massBins;
fMinMass = minMass;
fMaxMass= maxMass; }
void IsMC();
Bool_t SetQA(Bool_t qa) {fQA = qa; return fQA;}
void SetSkipEventSelection(Bool_t s) {
fSkipEventSelection = s;
fUsePidResponse = kTRUE;
fCentrality = 5.;}
void SetUsePidResponse(Bool_t s) {fUsePidResponse = s;}
private:
Int_t fDebug;
Bool_t fIsMC;
Bool_t fEventMixing;
Bool_t fTypeMixing;
Bool_t fQA;
Bool_t fV0;
Int_t fMassBins;
Double_t fMinMass;
Double_t fMaxMass;
AliFlowTrackCuts *fCutsRP;
AliFlowTrackCuts *fNullCuts;
AliPIDResponse *fPIDResponse;
AliFlowEvent *fFlowEvent;
AliFlowBayesianPID *fBayesianResponse;
TObjArray *fCandidates;
Bool_t fCandidateEtaPtCut;
Double_t fCandidateMinEta;
Double_t fCandidateMaxEta;
Double_t fCandidateMinPt;
Double_t fCandidateMaxPt;
Bool_t fCandidateYCut;
Double_t fCandidateMinY;
Double_t fCandidateMaxY;
Double_t fPIDConfig[7];
Double_t fDCAConfig[5];
Int_t fMixingParameters[3];
Int_t fCentralityMixingBins[20];
Int_t fVertexMixingBins[20];
Float_t fPtBins[19];
Int_t fNPtBins;
Double_t fCentrality;
Double_t fVertex;
AliAODEvent *fAOD;
AliEventPoolManager *fPoolManager;
TList *fOutputList;
TH1F *fEventStats;
TH1F *fCentralityPass;
TH1F *fCentralityNoPass;
TH2F *fNOPID;
TH2F *fPIDk;
TH2F *fNOPIDTOF;
TH2F *fPIDTOF;
TH1F *fInvMNP[18];
TH1F *fInvMNN[18];
TH1F *fInvMPP[18];
TH1F *fPtSpectra[18];
TH1F *fPtP;
TH1F *fPtN;
TH1F *fPtKP;
TH1F *fPtKN;
TH2F *fMultCorAfterCuts;
TH2F *fMultvsCentr;
Double_t fCentralityMin;
Double_t fCentralityMax;
const char *fkCentralityMethodA;
const char *fkCentralityMethodB;
Bool_t fCentralityCut2010;
Bool_t fCentralityCut2011;
AliFlowTrackCuts *fPOICuts;
Float_t fVertexRange;
TH1F *fPhi;
TH1F *fPt;
TH1F *fEta;
TH1F *fVZEROA;
TH1F *fVZEROC;
TH1F *fTPCM;
TH2F *fDCAAll;
TH1F *fDCAXYQA;
TH1F *fDCAZQA;
TH2F *fDCAPrim;
TH2F *fDCASecondaryWeak;
TH2F *fDCAMaterial;
TProfile *fSubEventDPhiv2;
TProfile *fV0Data[18][2];
Bool_t fSkipEventSelection;
Bool_t fUsePidResponse;
AliPIDCombined* fPIDCombined;
AliAnalysisTaskPhiFlow(const AliAnalysisTaskPhiFlow&);
AliAnalysisTaskPhiFlow& operator=(const AliAnalysisTaskPhiFlow&);
void MakeTrack(Double_t, Double_t, Double_t, Double_t, Int_t , Int_t[], Double_t p = 0., Double_t pz = 0.) const;
ClassDef(AliAnalysisTaskPhiFlow, 7);
};
#endif
AliAnalysisTaskPhiFlow.h:1 AliAnalysisTaskPhiFlow.h:2 AliAnalysisTaskPhiFlow.h:3 AliAnalysisTaskPhiFlow.h:4 AliAnalysisTaskPhiFlow.h:5 AliAnalysisTaskPhiFlow.h:6 AliAnalysisTaskPhiFlow.h:7 AliAnalysisTaskPhiFlow.h:8 AliAnalysisTaskPhiFlow.h:9 AliAnalysisTaskPhiFlow.h:10 AliAnalysisTaskPhiFlow.h:11 AliAnalysisTaskPhiFlow.h:12 AliAnalysisTaskPhiFlow.h:13 AliAnalysisTaskPhiFlow.h:14 AliAnalysisTaskPhiFlow.h:15 AliAnalysisTaskPhiFlow.h:16 AliAnalysisTaskPhiFlow.h:17 AliAnalysisTaskPhiFlow.h:18 AliAnalysisTaskPhiFlow.h:19 AliAnalysisTaskPhiFlow.h:20 AliAnalysisTaskPhiFlow.h:21 AliAnalysisTaskPhiFlow.h:22 AliAnalysisTaskPhiFlow.h:23 AliAnalysisTaskPhiFlow.h:24 AliAnalysisTaskPhiFlow.h:25 AliAnalysisTaskPhiFlow.h:26 AliAnalysisTaskPhiFlow.h:27 AliAnalysisTaskPhiFlow.h:28 AliAnalysisTaskPhiFlow.h:29 AliAnalysisTaskPhiFlow.h:30 AliAnalysisTaskPhiFlow.h:31 AliAnalysisTaskPhiFlow.h:32 AliAnalysisTaskPhiFlow.h:33 AliAnalysisTaskPhiFlow.h:34 AliAnalysisTaskPhiFlow.h:35 AliAnalysisTaskPhiFlow.h:36 AliAnalysisTaskPhiFlow.h:37 AliAnalysisTaskPhiFlow.h:38 AliAnalysisTaskPhiFlow.h:39 AliAnalysisTaskPhiFlow.h:40 AliAnalysisTaskPhiFlow.h:41 AliAnalysisTaskPhiFlow.h:42 AliAnalysisTaskPhiFlow.h:43 AliAnalysisTaskPhiFlow.h:44 AliAnalysisTaskPhiFlow.h:45 AliAnalysisTaskPhiFlow.h:46 AliAnalysisTaskPhiFlow.h:47 AliAnalysisTaskPhiFlow.h:48 AliAnalysisTaskPhiFlow.h:49 AliAnalysisTaskPhiFlow.h:50 AliAnalysisTaskPhiFlow.h:51 AliAnalysisTaskPhiFlow.h:52 AliAnalysisTaskPhiFlow.h:53 AliAnalysisTaskPhiFlow.h:54 AliAnalysisTaskPhiFlow.h:55 AliAnalysisTaskPhiFlow.h:56 AliAnalysisTaskPhiFlow.h:57 AliAnalysisTaskPhiFlow.h:58 AliAnalysisTaskPhiFlow.h:59 AliAnalysisTaskPhiFlow.h:60 AliAnalysisTaskPhiFlow.h:61 AliAnalysisTaskPhiFlow.h:62 AliAnalysisTaskPhiFlow.h:63 AliAnalysisTaskPhiFlow.h:64 AliAnalysisTaskPhiFlow.h:65 AliAnalysisTaskPhiFlow.h:66 AliAnalysisTaskPhiFlow.h:67 AliAnalysisTaskPhiFlow.h:68 AliAnalysisTaskPhiFlow.h:69 AliAnalysisTaskPhiFlow.h:70 AliAnalysisTaskPhiFlow.h:71 AliAnalysisTaskPhiFlow.h:72 AliAnalysisTaskPhiFlow.h:73 AliAnalysisTaskPhiFlow.h:74 AliAnalysisTaskPhiFlow.h:75 AliAnalysisTaskPhiFlow.h:76 AliAnalysisTaskPhiFlow.h:77 AliAnalysisTaskPhiFlow.h:78 AliAnalysisTaskPhiFlow.h:79 AliAnalysisTaskPhiFlow.h:80 AliAnalysisTaskPhiFlow.h:81 AliAnalysisTaskPhiFlow.h:82 AliAnalysisTaskPhiFlow.h:83 AliAnalysisTaskPhiFlow.h:84 AliAnalysisTaskPhiFlow.h:85 AliAnalysisTaskPhiFlow.h:86 AliAnalysisTaskPhiFlow.h:87 AliAnalysisTaskPhiFlow.h:88 AliAnalysisTaskPhiFlow.h:89 AliAnalysisTaskPhiFlow.h:90 AliAnalysisTaskPhiFlow.h:91 AliAnalysisTaskPhiFlow.h:92 AliAnalysisTaskPhiFlow.h:93 AliAnalysisTaskPhiFlow.h:94 AliAnalysisTaskPhiFlow.h:95 AliAnalysisTaskPhiFlow.h:96 AliAnalysisTaskPhiFlow.h:97 AliAnalysisTaskPhiFlow.h:98 AliAnalysisTaskPhiFlow.h:99 AliAnalysisTaskPhiFlow.h:100 AliAnalysisTaskPhiFlow.h:101 AliAnalysisTaskPhiFlow.h:102 AliAnalysisTaskPhiFlow.h:103 AliAnalysisTaskPhiFlow.h:104 AliAnalysisTaskPhiFlow.h:105 AliAnalysisTaskPhiFlow.h:106 AliAnalysisTaskPhiFlow.h:107 AliAnalysisTaskPhiFlow.h:108 AliAnalysisTaskPhiFlow.h:109 AliAnalysisTaskPhiFlow.h:110 AliAnalysisTaskPhiFlow.h:111 AliAnalysisTaskPhiFlow.h:112 AliAnalysisTaskPhiFlow.h:113 AliAnalysisTaskPhiFlow.h:114 AliAnalysisTaskPhiFlow.h:115 AliAnalysisTaskPhiFlow.h:116 AliAnalysisTaskPhiFlow.h:117 AliAnalysisTaskPhiFlow.h:118 AliAnalysisTaskPhiFlow.h:119 AliAnalysisTaskPhiFlow.h:120 AliAnalysisTaskPhiFlow.h:121 AliAnalysisTaskPhiFlow.h:122 AliAnalysisTaskPhiFlow.h:123 AliAnalysisTaskPhiFlow.h:124 AliAnalysisTaskPhiFlow.h:125 AliAnalysisTaskPhiFlow.h:126 AliAnalysisTaskPhiFlow.h:127 AliAnalysisTaskPhiFlow.h:128 AliAnalysisTaskPhiFlow.h:129 AliAnalysisTaskPhiFlow.h:130 AliAnalysisTaskPhiFlow.h:131 AliAnalysisTaskPhiFlow.h:132 AliAnalysisTaskPhiFlow.h:133 AliAnalysisTaskPhiFlow.h:134 AliAnalysisTaskPhiFlow.h:135 AliAnalysisTaskPhiFlow.h:136 AliAnalysisTaskPhiFlow.h:137 AliAnalysisTaskPhiFlow.h:138 AliAnalysisTaskPhiFlow.h:139 AliAnalysisTaskPhiFlow.h:140 AliAnalysisTaskPhiFlow.h:141 AliAnalysisTaskPhiFlow.h:142 AliAnalysisTaskPhiFlow.h:143 AliAnalysisTaskPhiFlow.h:144 AliAnalysisTaskPhiFlow.h:145 AliAnalysisTaskPhiFlow.h:146 AliAnalysisTaskPhiFlow.h:147 AliAnalysisTaskPhiFlow.h:148 AliAnalysisTaskPhiFlow.h:149 AliAnalysisTaskPhiFlow.h:150 AliAnalysisTaskPhiFlow.h:151 AliAnalysisTaskPhiFlow.h:152 AliAnalysisTaskPhiFlow.h:153 AliAnalysisTaskPhiFlow.h:154 AliAnalysisTaskPhiFlow.h:155 AliAnalysisTaskPhiFlow.h:156 AliAnalysisTaskPhiFlow.h:157 AliAnalysisTaskPhiFlow.h:158 AliAnalysisTaskPhiFlow.h:159 AliAnalysisTaskPhiFlow.h:160 AliAnalysisTaskPhiFlow.h:161 AliAnalysisTaskPhiFlow.h:162 AliAnalysisTaskPhiFlow.h:163 AliAnalysisTaskPhiFlow.h:164 AliAnalysisTaskPhiFlow.h:165 AliAnalysisTaskPhiFlow.h:166 AliAnalysisTaskPhiFlow.h:167 AliAnalysisTaskPhiFlow.h:168 AliAnalysisTaskPhiFlow.h:169 AliAnalysisTaskPhiFlow.h:170 AliAnalysisTaskPhiFlow.h:171 AliAnalysisTaskPhiFlow.h:172 AliAnalysisTaskPhiFlow.h:173 AliAnalysisTaskPhiFlow.h:174 AliAnalysisTaskPhiFlow.h:175 AliAnalysisTaskPhiFlow.h:176 AliAnalysisTaskPhiFlow.h:177 AliAnalysisTaskPhiFlow.h:178 AliAnalysisTaskPhiFlow.h:179 AliAnalysisTaskPhiFlow.h:180 AliAnalysisTaskPhiFlow.h:181 AliAnalysisTaskPhiFlow.h:182 AliAnalysisTaskPhiFlow.h:183 AliAnalysisTaskPhiFlow.h:184 AliAnalysisTaskPhiFlow.h:185 AliAnalysisTaskPhiFlow.h:186 AliAnalysisTaskPhiFlow.h:187 AliAnalysisTaskPhiFlow.h:188 AliAnalysisTaskPhiFlow.h:189 AliAnalysisTaskPhiFlow.h:190 AliAnalysisTaskPhiFlow.h:191 AliAnalysisTaskPhiFlow.h:192 AliAnalysisTaskPhiFlow.h:193 AliAnalysisTaskPhiFlow.h:194 AliAnalysisTaskPhiFlow.h:195 AliAnalysisTaskPhiFlow.h:196 AliAnalysisTaskPhiFlow.h:197 AliAnalysisTaskPhiFlow.h:198 AliAnalysisTaskPhiFlow.h:199 AliAnalysisTaskPhiFlow.h:200 AliAnalysisTaskPhiFlow.h:201 AliAnalysisTaskPhiFlow.h:202 AliAnalysisTaskPhiFlow.h:203 AliAnalysisTaskPhiFlow.h:204 AliAnalysisTaskPhiFlow.h:205 AliAnalysisTaskPhiFlow.h:206 AliAnalysisTaskPhiFlow.h:207 AliAnalysisTaskPhiFlow.h:208 AliAnalysisTaskPhiFlow.h:209 AliAnalysisTaskPhiFlow.h:210 AliAnalysisTaskPhiFlow.h:211 AliAnalysisTaskPhiFlow.h:212 AliAnalysisTaskPhiFlow.h:213 AliAnalysisTaskPhiFlow.h:214 AliAnalysisTaskPhiFlow.h:215 AliAnalysisTaskPhiFlow.h:216 AliAnalysisTaskPhiFlow.h:217 AliAnalysisTaskPhiFlow.h:218 AliAnalysisTaskPhiFlow.h:219 AliAnalysisTaskPhiFlow.h:220 AliAnalysisTaskPhiFlow.h:221 AliAnalysisTaskPhiFlow.h:222 AliAnalysisTaskPhiFlow.h:223 AliAnalysisTaskPhiFlow.h:224 AliAnalysisTaskPhiFlow.h:225 AliAnalysisTaskPhiFlow.h:226 AliAnalysisTaskPhiFlow.h:227 AliAnalysisTaskPhiFlow.h:228 AliAnalysisTaskPhiFlow.h:229 AliAnalysisTaskPhiFlow.h:230 AliAnalysisTaskPhiFlow.h:231 AliAnalysisTaskPhiFlow.h:232 AliAnalysisTaskPhiFlow.h:233 AliAnalysisTaskPhiFlow.h:234 AliAnalysisTaskPhiFlow.h:235 AliAnalysisTaskPhiFlow.h:236 AliAnalysisTaskPhiFlow.h:237 AliAnalysisTaskPhiFlow.h:238 AliAnalysisTaskPhiFlow.h:239