#ifndef TMBBCTagger_H #define TMBBCTagger_H ////////////////////////////////////////////////////////////////////////// // // // TMBTree class for BCJet taggers // // // // Created: 18-JUL-2002 A. Naumann (axel@fnal.gov) // // // ////////////////////////////////////////////////////////////////////////// #ifndef ROOT_TObject #include "TObject.h" #endif #ifndef ROOT_TRefArray #include "TRefArray.h" #endif #ifndef ROOT_TRef #include "TRef.h" #endif #ifndef TMBBCJET_H #include "tmb_tree/TMBBCJet.hpp" #endif class TMBBCTagger: public TObject { public: static const Float_t InvalidValue; inline TMBBCTagger(UInt_t numparams=0, UInt_t numtags=1); virtual ~TMBBCTagger(); virtual TMBBCTagger* Get(const TMBBCJet* jet); virtual Float_t GetParameterOutput(UInt_t param, UInt_t tag); virtual Float_t GetParameterError(UInt_t param, UInt_t tag); virtual Float_t GetParameterOutput(UInt_t param); virtual Float_t GetParameterError(UInt_t param); virtual Float_t GetTagOutput(UInt_t tag); virtual Float_t GetTagError(UInt_t tag); virtual Float_t GetOutput(); virtual Float_t GetError(); virtual inline UInt_t GetNumTags() const; virtual inline UInt_t GetNumParameters() const; virtual inline TObject* GetTagObject(UInt_t tag) const; // setters TMBBCTagger& SetSize(UInt_t numparams, UInt_t numtags); virtual TMBBCTagger& SetTagObject(UInt_t tag, TObject* objref); virtual TMBBCTagger& SetParameterOutput(UInt_t param, UInt_t tag, Float_t value); virtual TMBBCTagger& SetParameterError(UInt_t param, UInt_t tag, Float_t value); protected: virtual TMBBCTagger* Get(const TMBBCJet* jet, const TClass* cl); private: UInt_t fNumEntries; // array size of fParameters UInt_t fNumTags; // number of tags for this tagger Float_t *fParameters; //[fNumEntries] Parameter output values Float_t *fErrors; //[fNumEntries] Parameter error values TRefArray *fTagObjects; // objects used for tagging, can be empty ClassDef(TMBBCTagger,1) // ABC BID tagger }; TMBBCTagger::TMBBCTagger(UInt_t numparams, UInt_t numtags): fNumEntries(0), fNumTags(0), fParameters(0), fErrors(0), fTagObjects(0) { if ((numparams) && (numtags)) SetSize(numparams, numtags); }; UInt_t TMBBCTagger::GetNumTags() const { return fNumTags; } UInt_t TMBBCTagger::GetNumParameters() const { if (GetNumTags()) return fNumEntries/GetNumTags(); else return 0; } TObject* TMBBCTagger::GetTagObject(UInt_t tag) const { if (fTagObjects) return fTagObjects->At(tag); else return NULL; } #endif // ifndef TMBBCTagger_H