#ifndef ALIDNDPTEVENTCUTS_H
#define ALIDNDPTEVENTCUTS_H
#include "AliAnalysisCuts.h"
class AliESDEvent;
class AliESDVertex;
class AliMCEvent;
class AliHeader;
class AliGenEventHeader;
#include "AliPWG0Helper.h"
#include "AlidNdPtHelper.h"
class AlidNdPtEventCuts : public AliAnalysisCuts
{
public:
AlidNdPtEventCuts(const Char_t* name ="AlidNdPtEventCuts", const Char_t *title ="");
virtual ~AlidNdPtEventCuts();
void SetTriggerRequired(const Bool_t bFlag=kTRUE) {fTriggerRequired=bFlag;}
void SetRecVertexRequired(const Bool_t bFlag=kTRUE) {fRecVertexRequired=bFlag;}
void SetEventProcessType(AliPWG0Helper::MCProcessType type=AliPWG0Helper::kInvalidProcess) {fEventProcessType=type;}
void SetNContributorsRange(const Float_t min=0.,const Float_t max=1e99) {fMinNContributors=min; fMaxNContributors=max;}
void SetMaxR(const Float_t max=1e99) {fMaxR=max;}
void SetZvRange(const Float_t min=-1e99, const Float_t max=1e99) {fMinZv=min; fMaxZv=max;}
void SetMeanXYZv(const Float_t xv=0.0, const Float_t yv=0.0, const Float_t zv=0.0) {
fMeanXv = xv; fMeanYv = yv; fMeanZv = zv;
}
void SetSigmaMeanXYZv(const Float_t sxv=1.0, const Float_t syv=1.0, const Float_t szv=10.0) {
fSigmaMeanXv = sxv; fSigmaMeanYv = syv; fSigmaMeanZv = szv;
}
void SetRedoTPCVertex(const Bool_t redo = kTRUE) {fRedoTPCVertex = redo;}
void SetUseBeamSpotConstraint(const Bool_t useConstr = kTRUE) {fUseBeamSpotConstraint = useConstr;}
void SetEventSelectedRequired(const Bool_t evtSel = kTRUE) {fEventSelectedRequired = evtSel;}
Bool_t IsEventSelectedRequired() const {return fEventSelectedRequired;}
Bool_t IsTriggerRequired() const {return fTriggerRequired;}
Bool_t IsRecVertexRequired() const {return fRecVertexRequired;}
Int_t GetEventProcessType() const {return fEventProcessType;}
Float_t GetMinNContributors() const {return fMinNContributors;}
Float_t GetMaxNContributors() const {return fMaxNContributors;}
Float_t GetMaxR() const {return fMaxR;}
Float_t GetMinZv() const {return fMinZv;}
Float_t GetMaxZv() const {return fMaxZv;}
Float_t GetMeanXv() const {return fMeanXv;}
Float_t GetMeanYv() const {return fMeanYv;}
Float_t GetMeanZv() const {return fMeanZv;}
Float_t GetSigmaMeanXv() const {return fSigmaMeanXv;}
Float_t GetSigmaMeanYv() const {return fSigmaMeanYv;}
Float_t GetSigmaMeanZv() const {return fSigmaMeanZv;}
Bool_t IsRedoTPCVertex() const {return fRedoTPCVertex;}
Bool_t IsUseBeamSpotConstraint() const {return fUseBeamSpotConstraint;}
void Init();
Bool_t IsSelected(TObject *) {return kTRUE;}
Bool_t IsSelected(TList *) {return kTRUE;}
Bool_t AcceptEvent(AliESDEvent *event=0, AliMCEvent *mcEvent=0, const AliESDVertex *vtx=0);
Bool_t AcceptMCEvent(AliMCEvent *mcEvent=0);
virtual Long64_t Merge(TCollection* list);
private:
Bool_t fTriggerRequired;
Bool_t fRecVertexRequired;
Int_t fEventProcessType;
Float_t fMinNContributors;
Float_t fMaxNContributors;
Float_t fMaxR;
Float_t fMinZv;
Float_t fMaxZv;
Float_t fMeanXv;
Float_t fMeanYv;
Float_t fMeanZv;
Float_t fSigmaMeanXv;
Float_t fSigmaMeanYv;
Float_t fSigmaMeanZv;
Bool_t fRedoTPCVertex;
Bool_t fUseBeamSpotConstraint;
Bool_t fEventSelectedRequired;
AlidNdPtEventCuts(const AlidNdPtEventCuts&);
AlidNdPtEventCuts& operator=(const AlidNdPtEventCuts&);
ClassDef(AlidNdPtEventCuts, 2)
};
#endif // ALIDNDPTEVENTCUTS_H