]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGCF/Correlations/DPhi/AliAnalysisTaskPhiCorrelations.h
Update from Leonardo:
[u/mrichter/AliRoot.git] / PWGCF / Correlations / DPhi / AliAnalysisTaskPhiCorrelations.h
index a03b78a41c1883af624524e13b9d1f1003a7c452..6c23c8cee079b59b567f687f0a4a9717fefcf0a4 100644 (file)
@@ -31,6 +31,7 @@
 #include "TString.h"
 #include "AliVParticle.h"
 #include "AliLog.h"
+#include "THn.h" // in cxx file causes .../THn.h:257: error: conflicting declaration ‘typedef class THnT<float> THnF’
 
 class AliAODEvent;
 class AliAnalyseLeadingTrackUE;
@@ -43,6 +44,8 @@ class TH1D;
 class TObjArray;
 class AliEventPoolManager;
 class AliESDEvent;
+class AliHelperPID;
+
 
 class  AliAnalysisTaskPhiCorrelations : public AliAnalysisTask
   {
@@ -66,12 +69,13 @@ class  AliAnalysisTaskPhiCorrelations : public AliAnalysisTask
     virtual    void    SetCompareCentralities(Bool_t flag) { fCompareCentralities = flag; }
     virtual    void    SetTwoTrackEfficiencyStudy(Bool_t flag) { fTwoTrackEfficiencyStudy = flag; }
     virtual    void    SetTwoTrackEfficiencyCut(Float_t value = 0.02) { fTwoTrackEfficiencyCut = value; }
-    virtual    void    SetUseVtxAxis(Bool_t flag) { fUseVtxAxis = flag; }
+    virtual    void    SetUseVtxAxis(Int_t flag) { fUseVtxAxis = flag; }
+    virtual    void    SetCourseCentralityBinning(Bool_t flag) { fCourseCentralityBinning = flag; }
     virtual     void    SetSkipTrigger(Bool_t flag) { fSkipTrigger = flag; }
     virtual     void    SetInjectedSignals(Bool_t flag) { fInjectedSignals = flag; }
     
     // histogram settings
-    void SetTrackingEfficiency( const TH1D* hist) { fkTrackingEfficiency = hist; }
+    void SetEfficiencyCorrection(THnF* hist, Bool_t correctTriggers) { fEfficiencyCorrection = hist; fCorrectTriggers = correctTriggers; }
 
     // for event QA
     void   SetTracksInVertex( Int_t val ){ fnTracksVertex = val; }
@@ -85,6 +89,7 @@ class  AliAnalysisTaskPhiCorrelations : public AliAnalysisTask
     
     void   SetEventSelectionBit( UInt_t val )        { fSelectBit = val;  }
     void   SetUseChargeHadrons( Bool_t val ) { fUseChargeHadrons = val; }
+    void   SetSelectParticleSpecies( Int_t trigger, Int_t associated ) { fParticleSpeciesTrigger = trigger; fParticleSpeciesAssociated = associated; }
     void   SetSelectCharge(Int_t selectCharge) { fSelectCharge = selectCharge; }
     void   SetSelectTriggerCharge(Int_t selectCharge) { fTriggerSelectCharge = selectCharge; }
     void   SetTriggerRestrictEta(Float_t eta) { fTriggerRestrictEta = eta; }
@@ -94,6 +99,14 @@ class  AliAnalysisTaskPhiCorrelations : public AliAnalysisTask
     void   SetFillpT(Bool_t flag) { fFillpT = flag; }
     void   SetStepsFillSkip(Bool_t step0, Bool_t step6) { fFillOnlyStep0 = step0; fSkipStep6 = step6; }
     void   SetRejectCentralityOutliers(Bool_t flag = kTRUE) { fRejectCentralityOutliers = flag; }
+    void   SetRemoveWeakDecays(Bool_t flag = kTRUE) { fRemoveWeakDecays = flag; }
+    void   SetRemoveDuplicates(Bool_t flag = kTRUE) { fRemoveDuplicates = flag; }
+    void   SetSkipFastCluster(Bool_t flag = kTRUE)  { fSkipFastCluster = flag; }
+    void   SetWeightPerEvent(Bool_t flag = kTRUE)   { fWeightPerEvent = flag; }
+    void   SetCustomBinning(const char* binningStr) { fCustomBinning = binningStr; }
+    
+    AliHelperPID* GetHelperPID() { return fHelperPID; }
+    void   SetHelperPID(AliHelperPID* pid){ fHelperPID = pid; }
     
   private:
     AliAnalysisTaskPhiCorrelations(const  AliAnalysisTaskPhiCorrelations &det);
@@ -104,6 +117,8 @@ class  AliAnalysisTaskPhiCorrelations : public AliAnalysisTask
     void            AnalyseDataMode();                                  // main algorithm to get raw distributions
     void            Initialize();                                      // initialize some common pointer
     TObjArray* CloneAndReduceTrackList(TObjArray* tracks);
+    void RemoveDuplicates(TObjArray* tracks);
+    void CleanUp(TObjArray* tracks, TObject* mcObj, Int_t maxLabel);
 
     // General configuration
     Int_t               fDebug;           //  Debug flag
@@ -115,16 +130,19 @@ class  AliAnalysisTaskPhiCorrelations : public AliAnalysisTask
     Bool_t             fCompareCentralities;   // use the z vtx axis for a centrality comparison
     Bool_t             fTwoTrackEfficiencyStudy; // two-track efficiency study on
     Float_t            fTwoTrackEfficiencyCut;   // enable two-track efficiency cut
-    Bool_t             fUseVtxAxis;              // use z vtx as axis (needs 7 times more memory!)
+    Int_t              fUseVtxAxis;              // use z vtx as axis (needs 7-10 times more memory!)
+    Bool_t             fCourseCentralityBinning; // less centrality bins
     Bool_t             fSkipTrigger;             // skip trigger selection
     Bool_t             fInjectedSignals;         // check header to skip injected signals in MC
     
     // Pointers to external UE classes
+    AliHelperPID*     fHelperPID;      // points to class containing common analysis algorithms
     AliAnalyseLeadingTrackUE*     fAnalyseUE;      //! points to class containing common analysis algorithms
     AliUEHistograms*  fHistos;       //! points to class to handle histograms/containers  
     AliUEHistograms*  fHistosMixed;       //! points to class to handle mixed histograms/containers  
     
-    const TH1D* fkTrackingEfficiency;       // used for study of bias by tracking 
+    THnF* fEfficiencyCorrection;   // if non-0 this efficiency correction is applied on the fly to the filling for associated particles. The factor is multiplicative, i.e. should contain 1/efficiency. Axes: eta, pT, centrality, z-vtx
+    Bool_t fCorrectTriggers;   // if true correct also trigger particles
 
     // Handlers and events
     AliAODEvent*             fAOD;             //! AOD Event 
@@ -147,10 +165,12 @@ class  AliAnalysisTaskPhiCorrelations : public AliAnalysisTask
     Double_t           fTrackEtaCut;          // Eta cut on particles
     Int_t              fOnlyOneEtaSide;       // decides that only trigger particle from one eta side are considered (0 = all; -1 = negative, 1 = positive)
     Double_t            fPtMin;                // Min pT to start correlations
-    UInt_t             fFilterBit;            // Select tracks from an specific track cut (default 0xFF all track selected)
+    UInt_t             fFilterBit;            // Select tracks from an specific track cut 
     UInt_t             fSelectBit;            // Select events according to AliAnalysisTaskJetServices bit maps 
     Bool_t             fUseChargeHadrons;     // Only use charge hadrons
-    
+    Int_t               fParticleSpeciesTrigger; // Select which particle to use for the trigger [ -1 (all, default) 0 (pions) 1 (kaons) 2 (protons) 3 (others) particles ]
+    Int_t               fParticleSpeciesAssociated; // Select which particle to use for the associated [ -1 (all, default) 0 (pions) 1 (kaons) 2 (protons) 3 (others) particles ]
+
     Int_t fSelectCharge;           // (un)like sign selection when building correlations: 0: no selection; 1: unlike sign; 2: like sign
     Int_t fTriggerSelectCharge;    // select charge of trigger particle
     Float_t fTriggerRestrictEta;   // restrict eta range for trigger particle (default: -1 [off])
@@ -160,10 +180,15 @@ class  AliAnalysisTaskPhiCorrelations : public AliAnalysisTask
     Bool_t fFillOnlyStep0;        // fill only step 0
     Bool_t fSkipStep6;            // skip step 6 when filling
     Bool_t fRejectCentralityOutliers;  // enable rejection of outliers in centrality vs no track correlation
+    Bool_t fRemoveWeakDecays;     // remove secondaries from weak decays from tracks and particles
+    Bool_t fRemoveDuplicates;      // remove particles with the same label (double reconstruction)
+    Bool_t fSkipFastCluster;      // skip kFastOnly flagged events (only for data)
+    Bool_t fWeightPerEvent;       // weight with the number of trigger particles per event
+    TString fCustomBinning;       // supersedes default binning if set, see AliUEHist::GetBinning or AliUEHistograms::AliUEHistograms for syntax and examples
     
     Bool_t fFillpT;                // fill sum pT instead of number density
     
-    ClassDef( AliAnalysisTaskPhiCorrelations, 13); // Analysis task for delta phi correlations
+    ClassDef( AliAnalysisTaskPhiCorrelations, 26); // Analysis task for delta phi correlations
   };
 
 class AliDPhiBasicParticle : public AliVParticle