#ifndef StntupleFilter_hh #define StntupleFilter_hh #include "TObject.h" #include "TString.h" #include "TObjArray.h" #include "Experiment/Experiment.hh" #include "Stntuple/mod/StntupleCut.hh" class TModule; class TStnEvent; class AbsEvent; //_____________________________________________________________________________ class StntupleFilter: public TObject { protected: TString fName; // name of the filter TModule* fModule; // ! bool fPassed; // ! passed for given event Int_t fNInput; Int_t fNPassed; bool (*fFun)(TModule*, AbsEvent*); // ! Double_t* fPar; // ! Int_t fPrintLevel; // ! TObjArray* fListOfObjectCuts; // object-level cuts TObjArray* fListOfEventCuts; // event-level cuts public: StntupleFilter(); StntupleFilter(const char* Name, TModule* Module = NULL, bool (*fFun)(TModule*, AbsEvent*) = NULL); virtual ~StntupleFilter(); // ****** accessors int Passed () const { return fPassed; } Int_t PrintLevel() const { return fPrintLevel; } Int_t NInput () const { return fNInput; } Int_t NPassed() const { return fNPassed; } const char* GetName() const { return fName.Data(); } Int_t NObjectCuts() const { return fListOfObjectCuts->GetEntriesFast(); } Int_t NEventCuts () const { return fListOfEventCuts->GetEntriesFast(); } Double_t* Par () { return fPar; } StntupleCut* ObjectCut(Int_t I) { return (StntupleCut*) fListOfObjectCuts->UncheckedAt(I); } StntupleCut* EventCut(Int_t I) { return (StntupleCut*) fListOfEventCuts->UncheckedAt(I); } virtual StntupleCut* ObjectCut(const char* Name); virtual StntupleCut* EventCut (const char* Name); virtual StntupleCut* Cut (const char* Name); //----------------------------------------------------------------------------- // modifiers //----------------------------------------------------------------------------- void SetPassed (Int_t Passed ) { fPassed = Passed; } void SetPrintLevel(Int_t PrintLevel) { fPrintLevel = PrintLevel; } //----------------------------------------------------------------------------- // other methods //----------------------------------------------------------------------------- virtual Int_t Command(const char* CutName, Int_t Argc, char** Argv); virtual Int_t ProcessEvent(AbsEvent* Event); // apply cuts of a given type (level) // 0: object level, 1: event level virtual int ApplyObjectCuts(); virtual int ApplyEventCuts (); virtual int Init (TStnEvent* Event); virtual Bool_t IsFolder() const { return kTRUE; } virtual void Browse (TBrowser* b); virtual void Clear(const char* Opt = ""); virtual void Print(const char* Opt = "") const; // *MENU* //----------------------------------------------------------------------------- // schema evolution : read V1 //----------------------------------------------------------------------------- void ReadV1(TBuffer &R__b); ClassDef(StntupleFilter,1) }; #endif