// Dihadron correlations task - simple task to read ESD or AOD input, // calculate same- and mixed-event correlations, and fill THnSparse // output. -A. Adare, Apr 2011, updated Mar 2012 #ifndef AliDhcTask_cxx #define AliDhcTask_cxx #include "AliAnalysisTaskSE.h" #include "AliPool.h" #include "AliMuonTrackCuts.h" class TFormula; class TH1; class TH2; class TH3; class THn; class TAxis; class TObjArray; class TObject; class TProfile2D; class AliAODEvent; class AliAODTrack; class AliAnalysisUtils; class AliESDEvent; class AliESDMuonTrack; class AliESDtrackCuts; class AliEvtPoolManager; class AliDhcTask : public AliAnalysisTaskSE { public: AliDhcTask(); AliDhcTask(const char *name, Bool_t def=kFALSE); virtual ~AliDhcTask(); void SetAllTAHists(Bool_t b) { fAllTAHists = b; } void SetAnaMode(Int_t iAna); void SetCentBins(TAxis *bins) { fBCent=bins; } void SetCentMethod(const char *name) { fCentMethod = name; } void SetCentMixBins(TAxis *bins) { fMixBCent=bins; } void SetCheckVertex(Bool_t b) { fCheckVertex = b; } void SetClassName(const char *n) { fClassName = n; } void SetDEtaDPhiBins(Int_t nbe, Int_t nbp) { fNBdeta=nbe; fNBdphi=nbp; } void SetDoFillSame(Bool_t b) { fDoFillSame = b; } void SetDoMassCut(Bool_t b) { fDoMassCut = b; } void SetDoWeights(Bool_t b) { fDoWeights = b; } void SetEtaMax(Double_t eta) { fEtaMax = eta; } void SetEtaTRange(Double_t eL, Double_t eH) { fEtaTLo=eL; fEtaTHi=eH; } void SetEtaARange(Double_t eL, Double_t eH) { fEtaALo=eL; fEtaAHi=eH; } void SetFillMuons(Bool_t b) { fFillMuons = b; } void SetHEffA(THnF *h) { fHEffA=h; } void SetHEffT(THnF *h) { fHEffT=h; } void SetMixInEtaT(Bool_t b) { fMixInEtaT = b; } void SetMuonUtils(Bool_t b = kTRUE, UInt_t mask = AliMuonTrackCuts::kMuEta | AliMuonTrackCuts::kMuThetaAbs | AliMuonTrackCuts::kMuPdca | AliMuonTrackCuts::kMuMatchApt ) { fUseMuonUtils = b; fMuonCutMask = mask; } void SetOmitFirstEv(Bool_t b) { fOmitFirstEv = b; } void SetPoolSize(Int_t p) { fPoolSize = p; } void SetPtABins(TAxis *bins) { fBPtA=bins; } void SetPtRange(Double_t min, Double_t max) { fPtMin=min; fPtMax=max; } void SetPtTACrit(Bool_t b) { fPtTACrit = b; } void SetPtTBins(TAxis *bins) { fBPtT=bins; } void SetRequireMuon(Bool_t b, Double_t l=0.5, Double_t h=4.0) { fRequireMuon = b; fReqPtLo = l; fReqPtHi = h; } void SetTrackDepth(Int_t t) { fTrackDepth = t; } void SetTracksName(const char *n) { fTracksName = n; } void SetTriggerMatch(Bool_t b) { fTriggerMatch = b; } void SetVerbosity(Int_t v) { fVerbosity = v; } void SetZVtxBins(TAxis *bins) { fBZvtx=bins; } void SetZVtxMixBins(TAxis *bins) { fMixBZvtx=bins; } void SetZvtx(Double_t zvtx) { fZVtxMax = zvtx; } void PrintDhcSettings(); enum eAnaMode {kHH=1, kMuH, kHMu, kMuMu, kPSide, kASide}; protected: enum ePairingScheme {kSameEvt, kDiffEvt}; enum eDataType {kESD, kAOD}; void BookHistos(); void InitEventMixer(); void GetESDTracks(MiniEvent*); void GetAODTracks(MiniEvent*); Bool_t VertexOk() const; Bool_t HasMuonESD(); Bool_t HasMuonAOD(); Bool_t IsGoodMUONtrack(AliESDMuonTrack &track); Bool_t IsGoodMUONtrack(AliAODTrack &track); Bool_t IsTrigger(Double_t eta, Double_t pt); Bool_t IsAssociated(Double_t eta, Double_t pt); Double_t DeltaPhi(Double_t phia, Double_t phib, Double_t rangeMin = -TMath::Pi()/2, Double_t rangeMax = 3*TMath::Pi()/2) const; Int_t Correlate(const MiniEvent &arr1, const MiniEvent &arr2, Int_t pairing = kSameEvt); void UserCreateOutputObjects(); void UserExec(Option_t *option); void Terminate(Option_t *); private: Int_t fVerbosity; // 0 = silence Double_t fEtaMax; // Max |eta| cut for standard ESD or AOD analysis Double_t fZVtxMax; // Max |z| cut (cm) Double_t fPtMin; // Min pt cut Double_t fPtMax; // Max pt cut Int_t fTrackDepth; // #tracks to fill pool Int_t fPoolSize; // Maximum number of events TString fTracksName; // name of track collection Bool_t fDoWeights; // if true weight with 1/N per event Bool_t fFillMuons; // fill the muon tracks into the mini event Bool_t fRequireMuon; // only run on events with a muon track Double_t fReqPtLo; // require a muon above this pt Double_t fReqPtHi; // and below this pt Bool_t fPtTACrit; // use the pTT > pTA criterion? Bool_t fAllTAHists; // create all pTT,pTA combination hists, even t