]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGJE/UserTasks/AliAnalysisTaskJetProtonCorr.h
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGJE / UserTasks / AliAnalysisTaskJetProtonCorr.h
index 410e0de2f440e122879b09e73b0e6b4a003c0c8d..9a246b6969ff6ba244ca838b00dfab933e42c71e 100644 (file)
@@ -5,6 +5,7 @@
 
 #include "AliLog.h"
 
+#include "AliVParticle.h"
 #include "AliAnalysisTaskSE.h"
 #include "AliESDtrackCuts.h"
 
@@ -15,12 +16,12 @@ class TList;
 class TClonesArray;
 class AliOADBContainer;
 class AliTOFPIDParams;
-class AliVParticle;
 class AliVTrack;
 class AliPIDResponse;
 class AliEventPoolManager;
 class AliEventPool;
 class AliEventplane;
+class TSpline;
 
 class AliAnalysisTaskJetProtonCorr :
   public AliAnalysisTaskSE
@@ -51,10 +52,18 @@ public:
   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; }
 
@@ -82,6 +91,19 @@ public:
   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)
@@ -189,12 +211,30 @@ public:
       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,
@@ -246,15 +286,15 @@ public:
     kCorrJetHad,
     kCorrJetProt,
 
-    kCorrRndJetHad,
-    kCorrRndJetProt,
     kCorrRndHadHad,
     kCorrRndHadProt,
+    kCorrRndJetHad,
+    kCorrRndJetProt,
 
-    kCorrRndJetExcHad,
-    kCorrRndJetExcProt,
     kCorrRndHadExcHad,
     kCorrRndHadExcProt,
+    kCorrRndJetExcHad,
+    kCorrRndJetExcProt,
 
     kCorrLast
   };
@@ -290,13 +330,70 @@ public:
     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.);
@@ -312,6 +409,12 @@ public:
     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);
@@ -341,6 +444,7 @@ protected:
   Float_t fZvtx; //!
   AliPIDResponse *fPIDResponse; //!
   Float_t fEventPlaneAngle; //!
+  Float_t fEventPlaneRes; //!
   Float_t fEventPlaneAngleCheck; //!
   Float_t fEventPlaneAngle3; //!
 
@@ -379,13 +483,15 @@ protected:
                      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,
@@ -433,7 +539,7 @@ protected:
   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)
@@ -465,6 +571,13 @@ protected:
   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);