#include "AliLog.h"
+#include "AliVParticle.h"
#include "AliAnalysisTaskSE.h"
#include "AliESDtrackCuts.h"
class TClonesArray;
class AliOADBContainer;
class AliTOFPIDParams;
-class AliVParticle;
class AliVTrack;
class AliPIDResponse;
class AliEventPoolManager;
class AliEventPool;
class AliEventplane;
+class TSpline;
class AliAnalysisTaskJetProtonCorr :
public AliAnalysisTaskSE
Float_t GetPtMinAss() const { return fAssPartPtMin; }
Float_t GetPtMaxAss() const { return fAssPartPtMax; }
+ void SetTwoTrackCut(Float_t cut) { fCutsTwoTrackEff = cut; }
+ Float_t GetTwoTrackCut() const { return fCutsTwoTrackEff; }
+
void SetTrackCutsAss(const AliESDtrackCuts &cuts) { *fCutsPrimAss = cuts; }
void SetTrackCutsTrg(const AliESDtrackCuts &cuts) { *fCutsPrimTrg = cuts; }
void SetTrackCutsTrgConstrain(const AliESDtrackCuts &cuts) { *fCutsPrimTrgConstrain = cuts; }
+ void SetTrgJetEtaMax(Float_t etamax) { fTrgJetEtaMax = etamax; }
+ Float_t GetTrgJetEtaMax() const { return fTrgJetEtaMax; }
+ void SetHadEtaMax(Float_t etamax) { fHadEtaMax = etamax; }
+ Float_t GetHadEtaMax() const { return fHadEtaMax; }
+
void SetUseEvplaneV0(Bool_t usev0 = kTRUE) { fUseEvplaneV0 = usev0; }
Bool_t GetUseEvplaneV0() const { return fUseEvplaneV0; }
void SetErrorCount(Int_t cnt) { fErrorMsg = cnt; }
Int_t GetErrorCount() const { return fErrorMsg; }
+ void SetTrgAngleToEvPlane(Float_t angle) { fTrgAngleToEvPlane = angle; }
+ Float_t GetTrgAngleToEvPlane() const { return fTrgAngleToEvPlane; }
+
+ void SetToyMeanNoPart(Float_t mean) { fToyMeanNoPart = mean; }
+ Float_t GetToyMeanNoPart() const { return fToyMeanNoPart; }
+ void SetToyRadius(Float_t radius) { fToyRadius = radius; }
+ Float_t GetToyRadius() const { return fToyRadius; }
+ void SetToySmearPhi(Float_t sigma) { fToySmearPhi = sigma; }
+ Float_t GetToySmearPhi() const { return fToySmearPhi; }
+
+ void SetEventPlaneResSpline(TSpline *spline) { fSplineEventPlaneRes = spline; }
+ const TSpline *GetEventPlaneResSpline() const { return fSplineEventPlaneRes; }
+
void PrintTask(Option_t *option, Int_t indent) const;
static Double_t TOFsignal(Double_t *x, Double_t *par)
kHistNsigmaTPCTOFUsedPtCentral,
kHistNsigmaTPCTOFUsedPtSemiCentral,
+ kHistNsigmaTPCTOFUsedCentralMCe,
+ kHistNsigmaTPCTOFUsedCentralMCmu,
+ kHistNsigmaTPCTOFUsedCentralMCpi,
+ kHistNsigmaTPCTOFUsedCentralMCk,
+ kHistNsigmaTPCTOFUsedCentralMCp,
+ kHistNsigmaTPCTOFUsedCentralMCd,
+
+ kHistNsigmaTPCTOFUsedSemiCentralMCe,
+ kHistNsigmaTPCTOFUsedSemiCentralMCmu,
+ kHistNsigmaTPCTOFUsedSemiCentralMCpi,
+ kHistNsigmaTPCTOFUsedSemiCentralMCk,
+ kHistNsigmaTPCTOFUsedSemiCentralMCp,
+ kHistNsigmaTPCTOFUsedSemiCentralMCd,
+
+ kHistNevMix,
+
kHistEvPlane,
+ kHistEvPlaneRes,
kHistEvPlaneUsed,
kHistEvPlaneCheck,
kHistEvPlaneCheckUsed,
kHistEvPlane3,
kHistEvPlaneCorr,
+ kHistEvPlaneCross,
kHistEvPlaneCorrNoTrgJets,
kHistEvPlaneCorrNoTrgJetsTrgd,
kHistJetPtCentral,
kCorrJetHad,
kCorrJetProt,
- kCorrRndJetHad,
- kCorrRndJetProt,
kCorrRndHadHad,
kCorrRndHadProt,
+ kCorrRndJetHad,
+ kCorrRndJetProt,
- kCorrRndJetExcHad,
- kCorrRndJetExcProt,
kCorrRndHadExcHad,
kCorrRndHadExcProt,
+ kCorrRndJetExcHad,
+ kCorrRndJetExcProt,
kCorrLast
};
kEvLast
};
+ class AliPartCorr : public AliVParticle {
+ public:
+ AliPartCorr(Float_t eta = 0., Float_t phi = 0., Float_t pt = 0., Float_t charge = 0) :
+ fPt(pt), fEta(eta), fPhi(phi), fCharge(charge) {}
+ AliPartCorr(const AliVParticle &rhs) :
+ fPt(rhs.Pt()), fEta(rhs.Eta()), fPhi(rhs.Phi()), fCharge(rhs.Charge()) {}
+ virtual ~AliPartCorr() {}
+
+ // kinematics
+ virtual Double_t Px() const { AliFatal("not implemented"); return 0; }
+ virtual Double_t Py() const { AliFatal("not implemented"); return 0; }
+ virtual Double_t Pz() const { AliFatal("not implemented"); return 0; }
+ virtual Double_t Pt() const { return fPt; }
+ virtual Double_t P() const { AliFatal("not implemented"); return 0; }
+ virtual Bool_t PxPyPz(Double_t[3]) const { AliFatal("not implemented"); return 0; }
+
+ virtual Double_t Xv() const { AliFatal("not implemented"); return 0; }
+ virtual Double_t Yv() const { AliFatal("not implemented"); return 0; }
+ virtual Double_t Zv() const { AliFatal("not implemented"); return 0; }
+ virtual Bool_t XvYvZv(Double_t[3]) const { AliFatal("not implemented"); return 0; }
+
+ virtual Double_t OneOverPt() const { AliFatal("not implemented"); return 0; }
+ virtual Double_t Phi() const { return fPhi; }
+ virtual Double_t Theta() const { AliFatal("not implemented"); return 0; }
+
+ virtual Double_t E() const { AliFatal("not implemented"); return 0; }
+ virtual Double_t M() const { AliFatal("not implemented"); return 0; }
+
+ virtual Double_t Eta() const { return fEta; }
+ virtual Double_t Y() const { AliFatal("not implemented"); return 0; }
+
+ virtual Short_t Charge() const { return fCharge; }
+ virtual Int_t GetLabel() const { AliFatal("not implemented"); return 0; }
+
+ virtual Int_t PdgCode() const { AliFatal("not implemented"); return 0; }
+ virtual const Double_t *PID() const { AliFatal("not implemented"); return 0; }
+
+ protected:
+ Float_t fPt;
+ Float_t fEta;
+ Float_t fPhi;
+ Short_t fCharge;
+
+ ClassDef(AliPartCorr, 1);
+ };
+
class AliHistCorr : public TNamed {
public:
AliHistCorr(TString name, TList *outputList = 0x0);
~AliHistCorr();
- void Trigger(Float_t phi, Float_t eta, Float_t weight = 1.) { fHistStat->Fill(1., weight); fHistCorrTrgEtaPhi->Fill(phi, eta, weight); }
- void Ass(Float_t phi, Float_t eta, Float_t weight = 1.) { fHistCorrAssEtaPhi->Fill(phi, eta, weight); }
+ void Trigger(Float_t phi, Float_t eta, Float_t qpt, Float_t weight) {
+ fHistStat->Fill(1., weight);
+ if (fHistCorrTrgEtaPhi)
+ fHistCorrTrgEtaPhi->Fill(phi, eta, weight);
+ if (fHistCorrTrgEtaPhiQpt)
+ fHistCorrTrgEtaPhiQpt->Fill(phi, eta, qpt, weight);
+ }
+ void Ass(Float_t phi, Float_t eta, Float_t qpt, Float_t weight) {
+ if (fHistCorrAssEtaPhi)
+ fHistCorrAssEtaPhi->Fill(phi, eta, weight);
+ if (fHistCorrAssEtaPhiQpt)
+ fHistCorrAssEtaPhiQpt->Fill(phi, eta, qpt, weight);
+ }
void Fill(AliVParticle *trgPart, AliVParticle *assPart, Float_t weight = 1.);
void Fill(TLorentzVector *trgPart, AliVParticle *assPart, Float_t weight = 1.);
void Fill(TLorentzVector *trgPart, TLorentzVector *assPart, Float_t weight = 1.);
TH2F *fHistCorrAvgEtaPhi;
TH2F *fHistCorrTrgEtaPhi;
TH2F *fHistCorrAssEtaPhi;
+ TH3F *fHistCorrTrgEtaPhiQpt;
+ TH3F *fHistCorrAssEtaPhiQpt;
+
+ const Float_t fHistDphiLo;
+ const Int_t fHistDphiNbins;
+ const Int_t fHistDetaNbins;
AliHistCorr(const AliHistCorr &rhs);
AliHistCorr& operator=(const AliHistCorr &rhs);
Float_t fZvtx; //!
AliPIDResponse *fPIDResponse; //!
Float_t fEventPlaneAngle; //!
+ Float_t fEventPlaneRes; //!
Float_t fEventPlaneAngleCheck; //!
Float_t fEventPlaneAngle3; //!
Float_t phi2, Float_t pt2, Float_t charge2,
Float_t radius, Float_t bSign) const;
- Bool_t AcceptTrigger(const AliVTrack *trg);
- Bool_t AcceptTrigger(const AliAODJet *trg);
+ Bool_t AcceptTrigger(AliVTrack *trg);
+ Bool_t AcceptTrigger(AliAODJet *trg);
Bool_t AcceptAssoc(const AliVTrack *trk) const;
Bool_t IsProton(const AliVTrack *trk) const;
Bool_t AcceptAngleToEvPlane(Float_t phi, Float_t psi) const;
Bool_t AcceptTwoTracks(const AliVParticle *trgPart, const AliVParticle *assPart) const;
+ Float_t GetPhiRel2(AliVParticle *part) const;
+
TObjArray* CloneTracks(TObjArray *tracks) const;
Bool_t GenerateRandom(TCollection *trgJetArray, TCollection *trgHadArray,
static const Int_t fgkStringLength = 100; // max length for the jet branch name
char fJetBranchName[fgkStringLength]; // jet branch name
- Bool_t fUseStandardCuts;
+ const Bool_t fUseStandardCuts;
Bool_t fUseEvplaneV0;
AliESDtrackCuts *fCutsPrimTrg; // track cuts for primary particles (trigger)
TF1 *fTrgHadPhiModCent;
TF1 *fTrgHadPhiModSemi;
+ Float_t fTrgJetV2Cent;
+ Float_t fTrgJetV2Semi;
+ Float_t fTrgHadV2Cent;
+ Float_t fTrgHadV2Semi;
+
+ TSpline *fSplineEventPlaneRes;
+
// not implemented
AliAnalysisTaskJetProtonCorr(const AliAnalysisTaskJetProtonCorr &rhs);
AliAnalysisTaskJetProtonCorr& operator=(const AliAnalysisTaskJetProtonCorr &rhs);