#ifndef ALIEVENTPOOLOTF_H
#define ALIEVENTPOOLOTF_H
#include <AliVEventPool.h>
class AliRunTagCuts;
class AliLHCTagCuts;
class AliDetectorTagCuts;
class AliEventTagCuts;
class AliTagAnalysis;
class TGridResult;
typedef enum {kMultiplicity, kZVertex, kEventPlane, kLeadingParticleEta, kLeadingParticlePhi, kUser1, kUser2} EventPoolAxis_t;
class AliEventPoolOTF : public AliVEventPool
{
public:
AliEventPoolOTF();
AliEventPoolOTF(const char* name, const char* title = "AOD");
virtual ~AliEventPoolOTF();
virtual TChain* GetNextChain();
virtual void GetCurrentBin(Float_t* );
virtual Int_t GetDimension();
virtual void Init();
virtual void SetMultiplicityBin(Int_t min, Int_t max, Int_t step)
{fValueMin[kMultiplicity] = Float_t(min); fValueMax[kMultiplicity] = Float_t(max); fValueStep[kMultiplicity] = Float_t(step);}
virtual void SetMultiplicityBinning(Float_t min, Float_t max, Float_t step)
{fValueMin[kMultiplicity] = min; fValueMax[kMultiplicity] = max; fValueStep[kMultiplicity] = step;}
virtual void SetZVertexBinning(Float_t min, Float_t max, Float_t step)
{fValueMin[kZVertex] = min; fValueMax[kZVertex] = max; fValueStep[kZVertex] = step;}
virtual void SetEventPlaneBinning(Float_t min, Float_t max, Float_t step)
{fValueMin[kEventPlane] = min; fValueMax[kEventPlane] = max; fValueStep[kEventPlane] = step;}
virtual void SetLeadingParticleEtaBinning(Float_t min, Float_t max, Float_t step)
{fValueMin[kLeadingParticleEta] = min; fValueMax[kLeadingParticleEta] = max; fValueStep[kLeadingParticleEta] = step;}
virtual void SetLeadingParticlePhiBinning(Float_t min, Float_t max, Float_t step)
{fValueMin[kLeadingParticlePhi] = min; fValueMax[kLeadingParticlePhi] = max; fValueStep[kLeadingParticlePhi] = step;}
void SetTagDirectory(const char* dirname) {fTagDirectory = dirname;};
void SetGridResult(TGridResult* gridTag) {fGridTags = gridTag;};
virtual Int_t BinNumber() const {return fBinNumber;}
private:
AliEventPoolOTF(const AliEventPoolOTF& obj);
AliEventPoolOTF& operator=(const AliEventPoolOTF& other);
void InitArrays();
protected:
AliTagAnalysis* fTagAnalysis;
AliRunTagCuts* fRunCuts;
AliLHCTagCuts* fLHCCuts;
AliDetectorTagCuts* fDetectorCuts;
AliEventTagCuts* fEventCuts;
TGridResult* fGridTags;
TChain* fChain;
const char* fTagDirectory;
Float_t fValueMin[10];
Float_t fValueMax[10];
Float_t fValueStep[10];
Float_t fValue[10];
Int_t fBinNumber;
Bool_t fNoMore;
ClassDef(AliEventPoolOTF, 0);
};
#endif