#ifndef ALICFEVENTRECCUTS_H
#define ALICFEVENTRECCUTS_H
#include "AliCFCutBase.h"
class TH1F;
class TBits;
class AliCFEventRecCuts: public AliCFCutBase
{
public :
AliCFEventRecCuts() ;
AliCFEventRecCuts(Char_t* name, Char_t* title) ;
AliCFEventRecCuts(const AliCFEventRecCuts& c) ;
AliCFEventRecCuts& operator=(const AliCFEventRecCuts& c) ;
~AliCFEventRecCuts();
Bool_t IsSelected(TObject* obj);
Bool_t IsSelected(TList* ) {return kTRUE;}
void SetNTracksCut(Int_t xMin=-1, Int_t xMax=1000000) {fNTracksMin=xMin; fNTracksMax=xMax;}
void SetRequireVtxCuts(Bool_t vtx=kFALSE) {fRequireVtxCuts=vtx;}
void SetVertexXCut(Double_t xMin=-1.e99, Double_t xMax=1.e99) { fVtxXMin=xMin; fVtxXMax=xMax;}
void SetVertexYCut(Double_t yMin=-1.e99, Double_t yMax=1.e99) { fVtxYMin=yMin; fVtxYMax=yMax;}
void SetVertexZCut(Double_t zMin=-1.e99, Double_t zMax=1.e99) { fVtxZMin=zMin; fVtxZMax=zMax;}
void SetVertexXResCut(Double_t xMax=1.e99) {fVtxXResMax=xMax;}
void SetVertexYResCut(Double_t yMax=1.e99){fVtxYResMax=yMax;}
void SetVertexZResCut(Double_t zMax=1.e99){fVtxZResMax=zMax;}
void SetVertexNContributors(Int_t min, Int_t max) {fVtxNCtrbMin=min; fVtxNCtrbMax=max;}
void SetUseTPCVertex() {fVtxTPC=kTRUE ; fVtxSPD=kFALSE;}
void SetUseSPDVertex() {fVtxTPC=kFALSE; fVtxSPD=kTRUE ;}
Int_t GetNTracksMin() const {return fNTracksMin;}
Int_t GetNTracksMax() const {return fNTracksMax;}
Bool_t GetRequireVtxCuts() const {return fRequireVtxCuts;}
Double_t GetVertexXMax() const {return fVtxXMax;}
Double_t GetVertexYMax() const {return fVtxYMax;}
Double_t GetVertexZMax() const {return fVtxZMax;}
Double_t GetVertexXMin() const {return fVtxXMin;}
Double_t GetVertexYMin() const {return fVtxYMin;}
Double_t GetVertexZMin() const {return fVtxZMin;}
Double_t GetVertexXResMax() const {return fVtxXResMax;}
Double_t GetVertexYResMax() const {return fVtxYResMax;}
Double_t GetVertexZResMax() const {return fVtxZResMax;}
void SetHistogramBins(Int_t index, Int_t nbins, Double_t *bins);
void SetHistogramBins(Int_t index, Int_t nbins, Double_t xmin, Double_t xmax);
enum{kNTracks=0,
kVtxPosX,
kVtxPosY,
kVtxPosZ,
kVtxResX,
kVtxResY,
kVtxResZ,
kVtxNCtrb,
kNCuts,
kNStepQA=2
};
protected:
void SelectionBitMap(TObject* obj);
void AddQAHistograms(TList *qaList) ;
void DefineHistograms();
void Initialise();
void FillHistograms(TObject* obj, Bool_t b);
Int_t fNTracksMin;
Int_t fNTracksMax;
Bool_t fRequireVtxCuts ;
Double_t fVtxXMax ;
Double_t fVtxYMax ;
Double_t fVtxZMax ;
Double_t fVtxXMin ;
Double_t fVtxYMin ;
Double_t fVtxZMin ;
Double_t fVtxXResMax ;
Double_t fVtxYResMax ;
Double_t fVtxZResMax ;
Int_t fVtxNCtrbMin;
Int_t fVtxNCtrbMax;
Bool_t fVtxTPC;
Bool_t fVtxSPD;
TBits *fBitMap ;
TH1F* fhQA[kNCuts][kNStepQA];
ClassDef(AliCFEventRecCuts,3);
};
#endif