#ifndef TBadChannels_hxx_seen #define TBadChannels_hxx_seen #include "IChannelId.hxx" /* #include "IP0DBadChannels.hxx" #include "IFGDBadChannels.hxx" #include "IECALBadChannels.hxx" #include "ISMRDBadChannels.hxx" #include "ITPCBadChannels.hxx" #include "IIngridBadChannels.hxx" */ #include "IBaseBadChannels.hxx" namespace COMET { class IBadChannels; }; /// A singleton class that creates, and provides access too, instances of /// separate, 'singleton like' classes containing bad channel /// utility functions specific to each sub-detector. class COMET::IBadChannels : public COMET::IBaseBadChannels { public: virtual ~IBadChannels(); static IBadChannels& Get(void); /* /// P0D bad channel information static IP0DBadChannels& P0D(); /// FGD bad channel information static IFGDBadChannels& FGD(); /// ECAL bad channel information static IECALBadChannels& ECAL(); /// SRMD bad channel information static ISMRDBadChannels& SMRD(); /// TPC bad channel information static ITPCBadChannels& TPC(); /// INGRID bad channel information static IIngridBadChannels& Ingrid(); */ /// Is channel bad in any way? /// The method is meant to identify any channels that are bad in /// any different ways (ie dead, bad gain, bad time calibration, etc). /// Return value = true means channel is bad. bool IsChannelBad(COMET::IChannelId id); /// Should channel be excluded completely? /// The method is meant to be used for channels that should be excluded from /// any analysis. It is this method that would be used in either CalibGlobal or /// SimDetectorResponse to completely exclude a particular set of hits. The ExcludeChannel /// method would therefore identify a subset of the channels identified /// by the IsChannelBad method. /// Return value = true means channel should be excluded. bool ExcludeChannel(COMET::IChannelId id); private: IBadChannels(); /// The static pointer to the singleton instance. static IBadChannels* fBadChannels; /* /// P0D bad channel information class IP0DBadChannels* fP0DBadChannels; /// FGD bad channel information class IFGDBadChannels* fFGDBadChannels; /// ECAL bad channel information class IECALBadChannels* fECALBadChannels; /// SMRD bad channel information class ISMRDBadChannels* fSMRDBadChannels; /// TPC bad channel information class ITPCBadChannels* fTPCBadChannels; /// INGRID bad channel information class IIngridBadChannels* fIngridBadChannels; */ }; #endif