00001 #ifndef BEST_DTAG_SVC_H 00002 #define BEST_DTAG_SVC_H 00003 00004 #include "GaudiKernel/Service.h" 00005 #include "EvtRecEvent/EvtRecTrack.h" 00006 #include "VertexFit/IVertexDbSvc.h" 00007 #include "BestDTagSvc/IBestDTagSvc.h" 00008 00009 class IDataProviderSvc; 00010 template <class TYPE> class CnvFactory; 00011 00012 class BestDTagSvc : public Service, virtual public IBestDTagSvc 00013 { 00014 friend class CnvFactory<BestDTagSvc>; 00015 00016 public : 00017 00018 BestDTagSvc(const std::string& name, ISvcLocator* svcLoc); 00019 virtual ~BestDTagSvc(); 00020 00021 virtual StatusCode initialize(); 00022 virtual StatusCode finalize(); 00023 virtual StatusCode queryInterface(const InterfaceID& riid, void** ppvIF); 00024 00025 EvtRecDTag* getSingleTag(int modeid, int charm = 0); 00026 EvtRecDTag** getDoubleTag(int modeid1, int modeid2, int charm = 0); 00027 00028 bool isCosmicOrLepton(); 00029 00030 00031 private : 00032 bool m_isPidTight; 00033 bool isGoodTrack(EvtRecTrack* atrk); 00034 bool isElectron(EvtRecTrack* atrk); 00035 bool isMuon(EvtRecTrack* atrk); 00036 00037 00038 private : 00039 00040 IDataProviderSvc* eventSvc_; 00041 IVertexDbSvc* vtxSvc_; 00042 }; 00043 00044 #endif