#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;
class TObjArray;
class AliEventPoolManager;
class AliESDEvent;
+class AliHelperPID;
+
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; }
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; }
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);
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
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
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])
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