#ifndef TMBBCLikeTagger_H #define TMBBCLikeTagger_H ////////////////////////////////////////////////////////////////////////// // // // TMBTree class for the BCJet muon tagger // // // // Created: 18-JUL-2002 A. Naumann (axel@fnal.gov) // // // ////////////////////////////////////////////////////////////////////////// #ifndef TMBBCJet_H #include "tmb_tree/TMBBCJet.hpp" #endif #ifndef TMBBCTagger_H #include "tmb_tree/TMBBCTagger.hpp" #endif class TMBVrts; class TMBBCVertexTagger; class TMBBCMuTagger; class TMBBCImpTagger; class TMBBCETagger; class TMBBCLikeTagger : public TMBBCTagger { public: typedef enum _ELikeParameter { // 2ndary vertex parameters param2ndVtxDecayLength, param2ndVtxInvMassPtCorrected, param2ndVtxInvMass, param2ndVtxTrackPt, param2ndVtxChargedEFraction, param2ndVtxTrackRapidity, num2ndVtxParameters, // these params are forwarded paramMuonPtRel, paramElecPtRel, paramIPDiscr, numParameters } ELikeParameter; inline TMBBCLikeTagger(UInt_t iVertices=0); inline virtual ~TMBBCLikeTagger(); // Accessors inline Float_t GetBJetLikelihood() const; inline Float_t GetCJetLikelihood() const; inline Float_t GetQJetLikelihood() const; inline Float_t GetGJetLikelihood() const; inline virtual Float_t GetOutput(); virtual Float_t GetTagOutput(UInt_t tag); Float_t GetSVtxDecayLength(UInt_t iVtx); Float_t GetSVtxInvMassPtCorrected(UInt_t iVtx); Float_t GetSVtxInvMass(UInt_t iVtx); Float_t GetSVtxTrackPt(UInt_t iVtx); Float_t GetSVtxChargedEFraction(UInt_t iVtx); Float_t GetSVtxTrackRapidity(UInt_t iVtx); inline Float_t GetSVtxDecayLength(); inline Float_t GetSVtxInvMassPtCorrected(); inline Float_t GetSVtxInvMass(); inline Float_t GetSVtxTrackPt(); inline Float_t GetSVtxChargedEFraction(); inline Float_t GetSVtxTrackRapidity(); inline TMBVrts* GetSecondaryVertex(UInt_t iVtx) const; inline Int_t GetNumSecondaryVertices() const; inline Int_t GetTrackCategory() const; inline Int_t GetLeptonCategory() const; // forwarded Float_t GetMuonPtRel() const; Float_t GetElecPtRel() const; Float_t GetIPDiscr() const; // other taggers (utility methods) TMBBCVertexTagger* GetVertexTagger() const; TMBBCMuTagger* GetMuTagger() const; TMBBCETagger* GetETagger() const; TMBBCImpTagger* GetImpTagger() const; // Setters void SetTagOutput(ELikeParameter param, Float_t val); inline void SetJet(TMBBCJet* jet); inline void SetBJetLikelihood(Float_t val); inline void SetCJetLikelihood(Float_t val); inline void SetQJetLikelihood(Float_t val); inline void SetGJetLikelihood(Float_t val); inline void SetTrackCategory(Int_t val); inline void SetLeptonCategory(Int_t val); private: Float_t fBLike; // b jet likelihood Float_t fCLike; // c jet likelihood Float_t fQLike; // light quark jet likelihood Float_t fGLike; // gluon jet likelihood Float_t fDL; // combined decay length Float_t fInvMPt; // combined inv mass, Pt corrected Float_t fInvMass; // combined inv mass Float_t fPt; // combined tracks' Pt Float_t fXch; // combined charged E fraction Float_t fRtr; // combined track rapidity wrt jet TRef fJetRef; // ref back to jet Int_t fTrackCategory; // category ID for tracks Int_t fLeptonCategory; // category ID for lepton ClassDef(TMBBCLikeTagger, 0) // thumbnail data of muon bc jet id tagger }; TMBBCLikeTagger::TMBBCLikeTagger(UInt_t iVertices): TMBBCTagger(num2ndVtxParameters, iVertices){} TMBBCLikeTagger::~TMBBCLikeTagger(){} Float_t TMBBCLikeTagger::GetBJetLikelihood() const { return fBLike; } Float_t TMBBCLikeTagger::GetCJetLikelihood() const { return fCLike; } Float_t TMBBCLikeTagger::GetQJetLikelihood() const { return fQLike; } Float_t TMBBCLikeTagger::GetGJetLikelihood() const { return fGLike; } Float_t TMBBCLikeTagger::GetOutput() { return GetBJetLikelihood(); } TMBVrts* TMBBCLikeTagger::GetSecondaryVertex(UInt_t iVtx) const { return (TMBVrts*) GetTagObject(iVtx); } Int_t TMBBCLikeTagger::GetNumSecondaryVertices() const{ return GetNumTags(); } Float_t TMBBCLikeTagger::GetSVtxDecayLength(){ return fDL; } Float_t TMBBCLikeTagger::GetSVtxInvMassPtCorrected(){ return fInvMPt; } Float_t TMBBCLikeTagger::GetSVtxInvMass(){ return fInvMass; } Float_t TMBBCLikeTagger::GetSVtxTrackPt(){ return fPt; } Float_t TMBBCLikeTagger::GetSVtxChargedEFraction(){ return fXch; } Float_t TMBBCLikeTagger::GetSVtxTrackRapidity(){ return fRtr; } Int_t TMBBCLikeTagger::GetTrackCategory() const { return fTrackCategory; } Int_t TMBBCLikeTagger::GetLeptonCategory() const{ return fLeptonCategory; } void TMBBCLikeTagger::SetJet(TMBBCJet* jet) { fJetRef.SetObject(jet); } void TMBBCLikeTagger::SetBJetLikelihood(Float_t val) { fBLike=val; } void TMBBCLikeTagger::SetCJetLikelihood(Float_t val) { fCLike=val; } void TMBBCLikeTagger::SetQJetLikelihood(Float_t val) { fQLike=val; } void TMBBCLikeTagger::SetGJetLikelihood(Float_t val) { fGLike=val; } void TMBBCLikeTagger::SetTrackCategory(Int_t val) { fTrackCategory=val; } void TMBBCLikeTagger::SetLeptonCategory(Int_t val) { fLeptonCategory=val; } #endif // ifndef TMBBCLikeTagger_H