#ifndef ALIANACONVCORRBASE_CXX
#define ALIANACONVCORRBASE_CXX
#include "Rtypes.h"
#include "TMath.h"
#include "TList.h"
#include "TH1.h"
#include <THnSparse.h>
class AliAODConversionParticle;
class TClonesArray;
class TString;
class AliAnaConvCorrBase : public TNamed {
public:
AliAnaConvCorrBase(TString name, TString title);
virtual ~AliAnaConvCorrBase();
void CreateBaseHistograms();
virtual void CreateHistograms();
TList * GetHistograms() const { return fHistograms;}
void AddHistogram(TH1 * histogram) { fHistograms->Add(dynamic_cast<TObject*>(histogram));}
void AddAxis(TAxis * axis) { fAxesList.Add(axis); }
Float_t GetDPhi(Float_t dPhi) {
if ( dPhi < 3*TMath::PiOver2() && dPhi > - TMath::PiOver2() ) return dPhi;
else return ( (dPhi>0)? dPhi - TMath::TwoPi() : dPhi + TMath::TwoPi() );
}
void CorrelateWithTracks(AliAODConversionParticle * particle, TObjArray * tracks, const Int_t tIDs[4], Float_t cent, Float_t vtxz);
void FillCounters(TObjArray * particles, TObjArray * tracks, Float_t cent, Float_t vtxz);
TAxis& GetAxistPt() { return fAxistPt; }
TAxis& GetAxiscPt() { return fAxiscPt; }
TAxis& GetAxisdEta() { return fAxisdEta; }
TAxis& GetAxisdPhi() { return fAxisdPhi; }
TAxis& GetAxisIso() { return fAxisIso; }
TAxis& GetAxisCent() { return fAxisCent; }
TAxis& GetAxisZ() { return fAxisZ; }
TAxis& GetAxisTrigEta() { return fAxisTrigEta; }
TAxis& GetAxisAssEta() { return fAxisAssEta; }
TAxis& GetAxisMEPhi() { return fAxisMEPhi; }
TList& GetAxisList() { return fAxesList; }
TList& GetTrackAxisList() { return fTrackAxisList; }
TList& GetTrigAxisList() { return fTrigAxisList; }
protected:
THnSparseF * CreateSparse(TString name, TString title, TList * axes);
private:
void SetUpDefaultBins();
TList * fHistograms;
TList fAxesList;
TList fTrigAxisList;
TList fTrackAxisList;
TAxis fAxistPt;
TAxis fAxiscPt;
TAxis fAxisdEta;
TAxis fAxisdPhi;
TAxis fAxisIso;
TAxis fAxisCent;
TAxis fAxisZ;
TAxis fAxisTrigEta ;
TAxis fAxisAssEta ;
TAxis fAxisMEPhi ;
THnSparseF * fCorrSparse;
THnSparseF * fTrigSparse;
THnSparseF * fTrackSparse;
AliAnaConvCorrBase();
AliAnaConvCorrBase(const AliAnaConvCorrBase&);
AliAnaConvCorrBase& operator=(const AliAnaConvCorrBase&);
ClassDef(AliAnaConvCorrBase, 7);
};
#endif