#ifndef ALIEVENTPOOLSPARSE_H
#define ALIEVENTPOOLSPARSE_H
#include <THnSparse.h>
#include <TEntryList.h>
#include "AliVEventPool.h"
class TChain;
class TTreeFormula;
class AliRunTagCuts;
class AliEventTagCuts;
class AliDetectorTagCuts;
class AliLHCTagCuts;
class AliEventPoolSparse : public AliVEventPool {
public:
AliEventPoolSparse();
AliEventPoolSparse(const char* name, const char* title, TChain * tagchain, Int_t dim,
const char ** vars, const Int_t* nbins, const Double_t* xmin = 0,
const Double_t* xmax = 0, Int_t chunksize = 1024 * 16);
virtual ~AliEventPoolSparse();
virtual TChain* GetNextChain();
virtual void GetCurrentBin(Float_t* xbin);
virtual Int_t GetDimension(){return fN;}
virtual void Init();
TEntryList * GetNextPool(Int_t i) {
return fPool>0 ? fPool[i] : 0x0;
}
TEntryList * GetEvents(const Double_t * x) {
Int_t bin = fHnSparseI.GetBin(x,kFALSE);
return fPool>0 ? fPool[bin] : 0x0;
}
void SetTagChain(TChain * chain){
fTagChain = chain;
}
TChain * GetTagChain() const {
return fTagChain;
}
void SetRunCut(const char * cut);
void SetLHCCut(const char * cut);
void SetDetCut(const char * cut);
void SetEventCut(const char * cut);
void SetRunCut(AliRunTagCuts* cut);
void SetEventCut(AliEventTagCuts* cut);
void SetDetectorCut(AliDetectorTagCuts* cut);
void SetLHCCut(AliLHCTagCuts* cut);
TTreeFormula ** GetPoolVars() const {return fVars;}
TTreeFormula * GetRunCut() const {return fRunCut;}
TTreeFormula * GetLHCCut() const {return fLHCCut;}
TTreeFormula * GetDetCut() const {return fDetCut;}
TTreeFormula * GetEventCut() const {return fEvCut;}
Int_t BinNumber() const {return fBinNumber;}
protected:
void Set(Int_t n);
private:
AliEventPoolSparse(const AliEventPoolSparse& source);
AliEventPoolSparse& operator = (const AliEventPoolSparse& source);
THnSparseI fHnSparseI;
Int_t fChunkSize;
Int_t fN;
TEntryList ** fPool;
Int_t fCurrentBin;
TChain * fTagChain;
TTreeFormula ** fVars;
TTreeFormula * fRunCut;
TTreeFormula * fLHCCut;
TTreeFormula * fDetCut;
TTreeFormula * fEvCut;
AliRunTagCuts *fRunTagCut;
AliEventTagCuts *fEventTagCut;
AliDetectorTagCuts *fDetectorTagCut;
AliLHCTagCuts *fLHCTagCut;
Int_t fBinNumber;
ClassDef(AliEventPoolSparse,2)
};
#endif