#ifndef MARS_MFEventSelector2 #define MARS_MFEventSelector2 ///////////////////////////////////////////////////////////////////////////// // // // MFEventSelector2 // // // ///////////////////////////////////////////////////////////////////////////// #ifndef MARS_MFilter #include "MFilter.h" #endif #ifndef ROOT_TArrayL #include #endif #ifndef MARS_MDataChain #include "MDataChain.h" #endif class TH1; class TCanvas; class MH3; class MRead; class MFEventSelector2 : public MFilter { private: static const TString gsDefName; static const TString gsDefTitle; MH3 *fHistOrig; // original distribution of the events MH3 *fHistNom; // nominal distribution MH3 *fHistRes; // resulting distribution MDataChain fDataX; // data rule for the x-axis MDataChain fDataY; // data rule for the y-axis MDataChain fDataZ; // data rule for the z-axis Long_t fNumMax; // Maximum number of selected events TArrayL fIs; //! array storing the original distribution TArrayL fNom; //! array storing the nominal distribution TCanvas *fCanvas; //! canvas for online display TString fFilterName; // name of the MFilter object to be used when determining the original distribution Bool_t fResult; Bool_t fHistIsProbability; Bool_t fUseOrigDist; // flag indicating that in the selection the original distribution is not changed Int_t fCounter[3]; TH1 &InitHistogram(MH3* &hist); Bool_t ReadDistribution(MRead &read, MFilter *filter); void PrepareHistograms(); Bool_t PreProcessData(MParList *parlist); Bool_t Select(Int_t bin); Bool_t SelectProb(Int_t bin) const; Int_t PreProcess(MParList *parlist); Int_t Process(); Int_t PostProcess(); public: MFEventSelector2(MH3 &hist, const char *name=NULL, const char *title=NULL); ~MFEventSelector2(); MH3 *GetHistOrig() { return fHistOrig; } void SetNumMax(Long_t max=-1) { fNumMax = max; } void SetHistIsProbability(Bool_t b=kTRUE) { fHistIsProbability=b; } Bool_t IsExpressionTrue() const { return fResult; } ClassDef(MFEventSelector2, 0) // FIXME! }; #endif