00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef DATASVC_ISIMDATASVC_H
00010 #define DATASVC_ISIMDATASVC_H
00011
00012 #include "GaudiKernel/IInterface.h"
00013 #include "Conventions/Detectors.h"
00014 #include "Conventions/Electronics.h"
00015 #include "Context/ServiceMode.h"
00016 #include <vector>
00017
00018 namespace DayaBay {
00019
00020
00021 class PmtSimData {
00022 public:
00023 PmtSimData(){m_gain=0.; m_sigmaGain=0.; m_timeOffset=0.; m_timeSpread=0.;
00024 m_efficiency=0.; m_prePulseProb=0.; m_afterPulseProb=0.; m_darkRate=0.;}
00025 ~PmtSimData(){;}
00026 public:
00027 DayaBay::DetectorSensor m_pmtId;
00028 double m_gain;
00029 double m_sigmaGain;
00030 double m_timeOffset;
00031 double m_timeSpread;
00032 double m_efficiency;
00033 double m_prePulseProb;
00034 double m_afterPulseProb;
00035 double m_darkRate;
00036 };
00037
00038
00039 class RpcSimData {
00040 public:
00041 RpcSimData(){m_gain=0.; m_sigmaGain=0.; m_timeOffset=0.; m_timeSpread=0.;
00042 m_efficiency=0.; m_noiseRate=0.;}
00043 ~RpcSimData(){;}
00044 public:
00045 DayaBay::RpcSensor m_rpcId;
00046 double m_gain;
00047 double m_sigmaGain;
00048 double m_timeOffset;
00049 double m_timeSpread;
00050 double m_efficiency;
00051 double m_noiseRate;
00052 };
00053
00054
00055 class FeeSimData {
00056 public:
00057 FeeSimData(){m_channelThreshold=0.; m_adcRangeHigh=0.; m_adcRangeLow=0.;
00058 m_adcBaselineHigh=0.; m_adcBaselineLow=0.;}
00059 ~FeeSimData(){;}
00060 public:
00061 DayaBay::FeeChannelId m_channelId;
00062 double m_channelThreshold;
00063 double m_adcRangeHigh;
00064 double m_adcRangeLow;
00065 double m_adcBaselineHigh;
00066 double m_adcBaselineLow;
00067 };
00068
00069
00070 class FecSimData {
00071 public:
00072 FecSimData(){m_channelThreshold=0.; m_adcRangeHigh=0.; m_adcRangeLow=0.;
00073 m_adcBaselineHigh=0.; m_adcBaselineLow=0.;}
00074 ~FecSimData(){;}
00075 public:
00076 DayaBay::FecChannelId m_channelId;
00077 double m_channelThreshold;
00078 double m_adcRangeHigh;
00079 double m_adcRangeLow;
00080 double m_adcBaselineHigh;
00081 double m_adcBaselineLow;
00082 };
00083
00084 }
00085
00086
00087 static const InterfaceID IID_ISimDataSvc("ISimDataSvc",1,0);
00088
00089 class ISimDataSvc : virtual public IInterface
00090 {
00091 public:
00092
00093 static const InterfaceID& interfaceID(){
00094 return IID_ISimDataSvc;
00095 }
00096
00097
00098 virtual const DayaBay::PmtSimData* pmtSimData(
00099 const DayaBay::DetectorSensor& pmtId,
00100 const ServiceMode& svcMode)= 0;
00101
00102
00103 virtual const DayaBay::RpcSimData* rpcSimData(const DayaBay::RpcSensor& rpcId,
00104 const ServiceMode& svcMode)= 0;
00105
00106
00107 virtual const DayaBay::FeeSimData* feeSimData(
00108 const DayaBay::FeeChannelId& channelId,
00109 const ServiceMode& svcMode)= 0;
00110
00111
00112 virtual const DayaBay::FecSimData* fecSimData(
00113 const DayaBay::FecChannelId& channelId,
00114 const ServiceMode& svcMode)= 0;
00115
00116
00117 virtual const std::vector<DayaBay::PmtSimData>& pmtSimList(
00118 const DayaBay::Detector& detectorId,
00119 const ServiceMode& svcMode)= 0;
00120
00121
00122 virtual const std::vector<DayaBay::RpcSimData>& rpcSimList(
00123 const DayaBay::Detector& detectorId,
00124 const ServiceMode& svcMode)= 0;
00125
00126
00127 virtual const std::vector<DayaBay::FeeSimData>& feeSimList(
00128 const DayaBay::Detector& detectorId,
00129 const ServiceMode& svcMode)= 0;
00130
00131
00132 virtual const std::vector<DayaBay::FecSimData>& fecSimList(
00133 const DayaBay::Detector& detectorId,
00134 const ServiceMode& svcMode)= 0;
00135 };
00136
00137 #endif // DATASVC_ISIMDATASVC_H