#ifndef AliDhcTask_cxx
#define AliDhcTask_cxx
+#include "AliAnalysisTaskSE.h"
+#include "AliPool.h"
+#include "THn.h"
+
class TFormula;
class TH1;
class TH2;
+class TH3;
class TAxis;
class TObjArray;
class TObject;
class AliAODEvent;
class AliESDEvent;
class AliESDtrackCuts;
+class AliESDMuonTrack;
class AliEvtPoolManager;
-#include "AliAnalysisTaskSE.h"
-#include "AliPool.h"
class AliDhcTask : public AliAnalysisTaskSE {
public:
- AliDhcTask() :
- AliAnalysisTaskSE(), fVerbosity(0), fEtaMax(1), fZVtxMax(10), fPtMin(0.25), fPtMax(15),
- fTrackDepth(0), fPoolSize(0), fTracksName(), fDoWeights(0),
- fESD(0), fAOD(0), fOutputList(0), fHEvt(0), fHTrk(0), fHPtAss(0),
- fHPtTrg(0), fHPtTrg_Evt(0), fHCent(0), fHZvtx(0), fNbins(0), fHSs(0), fHMs(0),
- fHPts(0), fIndex(0),
- fCentrality(99), fZVertex(99), fEsdTPCOnly(0), fPoolMgr(0),
- fCentMethod("V0M"), fNBdeta(20), fNBdphi(36),
- fBPtT(0x0), fBPtA(0x0), fBCent(0x0), fBZvtx(0x0),
- fMixBCent(0x0), fMixBZvtx(0x0) {}
-
+ AliDhcTask();
AliDhcTask(const char *name);
virtual ~AliDhcTask() {}
void SetCentMixBins(TAxis *bins) { fMixBCent=bins; }
void SetDEtaDPhiBins(Int_t nbe, Int_t nbp) { fNBdeta=nbe; fNBdphi=nbp; }
void SetDoWeights(Bool_t b) { fDoWeights = b; }
+ void SetFillMuons(Bool_t b) { fFillMuons = b; }
void SetEtaMax(Double_t eta) { fEtaMax = eta; }
void SetPoolSize(Int_t p) { fPoolSize = p; }
void SetPtABins(TAxis *bins) { fBPtA=bins; }
void SetZVtxBins(TAxis *bins) { fBZvtx=bins; }
void SetZVtxMixBins(TAxis *bins) { fMixBZvtx=bins; }
void SetZvtx(Double_t zvtx) { fZVtxMax = zvtx; }
+ void SetHEffT(THnF *h) { fHEffT=h; }
+ void SetHEffA(THnF *h) { fHEffA=h; }
+ void SetAnaMode(Int_t iAna);
+ enum eAnaMode {kHH, kMuH, kHMu, kMuMu, kPSide, kASide};
protected:
enum ePairingScheme {kSameEvt, kDiffEvt};
void GetESDTracks(MiniEvent*);
void GetAODTracks(MiniEvent*);
Bool_t VertexOk(TObject* obj) const;
- Double_t DeltaPhi(Double_t phia, Double_t phib,
+ Bool_t IsGoodMUONtrack(AliESDMuonTrack &track);
+ 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);
private:
Int_t fVerbosity; // 0 = silence
- Double_t fEtaMax; // Max |eta| cut (cm)
+ 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 fDoWeights; // if true weight with 1/N per event
+ Bool_t fFillMuons; // fill the muon tracks into the mini event
+ Double_t fEtaTLo; // Min eta for triggers
+ Double_t fEtaTHi; // Max eta for triggers
+ Double_t fEtaALo; // Min eta for associated
+ Double_t fEtaAHi; // Max eta for associated
AliESDEvent *fESD; //! ESD object
AliAODEvent *fAOD; //! AOD object
TList *fOutputList; //! Output list
TH2 *fHTrk; //! Phi vs Eta
TH1 *fHPtAss; //! Pt ass
TH1 *fHPtTrg; //! Pt trg
- TH1 *fHPtTrg_Evt; //! Pt trg per event for weighting
+ TH1 *fHPtTrgEvt; //! Pt trg per event for weighting
+ TH3 *fHPtTrgNorm1S; //! Pt trg same events in cent. and zvtx bins, method 1
+ TH3 *fHPtTrgNorm1M; //! Pt trg mixed events in cent. and zvtx bins, method 1
+ TH3 *fHPtTrgNorm2S; //! Pt trg same events in cent. and zvtx bins, method 2
+ TH3 *fHPtTrgNorm2M; //! Pt trg mixed events in cent. and zvtx bins, method 2
TH1 *fHCent; //! Centrality
TH1 *fHZvtx; //! Zvertex
Int_t fNbins; //! Number of histogram bins
TAxis *fBZvtx; // zvtx binning
TAxis *fMixBCent; // centrality binning for mixing
TAxis *fMixBZvtx; // zvtx binning for mixing
+ THnF *fHEffT; // efficiency for trigger particles
+ THnF *fHEffA; // efficiency for associate particles
AliDhcTask(const AliDhcTask&); // not implemented
AliDhcTask &operator=(const AliDhcTask&); // not implemented