/search.css" rel="stylesheet" type="text/css"/> /search.js">
00001 /* 00002 * ISimDataSvc.h 00003 * 00004 * Interface for Simulation input data 00005 * 00006 * Created by Dan Dwyer on 2008/09/26 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 // Simulation input data for one PMT 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; // PMT Sensor ID number 00028 double m_gain; // Relative gain for pmt, mean = 1 00029 double m_sigmaGain; // 1-sigma spread of single P.E. response 00030 double m_timeOffset; // Relative transit time offset 00031 double m_timeSpread; // Transit time spread 00032 double m_efficiency; // Absolute efficiency 00033 double m_prePulseProb; // Probability of prepulsing 00034 double m_afterPulseProb; // Probability of afterpulsing 00035 double m_darkRate; // Dark Rate 00036 }; 00037 00038 // Simulation input for one RPC strip 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; // RPC Sensor ID number 00046 double m_gain; // Relative gain of rpc strip 00047 double m_sigmaGain; // 1-sigma spread of pulse sizes. 00048 double m_timeOffset; // Relative time offset 00049 double m_timeSpread; // Time spread 00050 double m_efficiency; // Relative efficiency 00051 double m_noiseRate; // Single pulse noise rate 00052 }; 00053 00054 // Simulation input data for one PMT Front-end electronics channel 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; // Electronics channel ID number 00062 double m_channelThreshold; // FEE discriminator threshold 00063 double m_adcRangeHigh; // Full voltage range of high-gain ADC 00064 double m_adcRangeLow; // Full voltage range of low-gain ADC 00065 double m_adcBaselineHigh; // High-gain baseline ADC value 00066 double m_adcBaselineLow; // Low-gain baseline ADC value 00067 }; 00068 00069 // Simulation input data for one RPC Front-end electronics channel 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; // Electronics channel ID number 00077 double m_channelThreshold; // FEC discriminator threshold 00078 double m_adcRangeHigh; // Full voltage range of high-gain ADC 00079 double m_adcRangeLow; // Full voltage range of low-gain ADC 00080 double m_adcBaselineHigh; // High-gain baseline ADC value 00081 double m_adcBaselineLow; // Low-gain baseline ADC value 00082 }; 00083 00084 } 00085 00086 // Declaration of the interface ID 00087 static const InterfaceID IID_ISimDataSvc("ISimDataSvc",1,0); 00088 00089 class ISimDataSvc : virtual public IInterface 00090 { 00091 public: 00092 // Retrieve interface ID 00093 static const InterfaceID& interfaceID(){ 00094 return IID_ISimDataSvc; 00095 } 00096 00097 // Return the PMT simulation input data 00098 virtual const DayaBay::PmtSimData* pmtSimData( 00099 const DayaBay::DetectorSensor& pmtId, 00100 const ServiceMode& svcMode)= 0; 00101 00102 // Return the RPC simulation input data 00103 virtual const DayaBay::RpcSimData* rpcSimData(const DayaBay::RpcSensor& rpcId, 00104 const ServiceMode& svcMode)= 0; 00105 00106 // Return the FEE simulation input data 00107 virtual const DayaBay::FeeSimData* feeSimData( 00108 const DayaBay::FeeChannelId& channelId, 00109 const ServiceMode& svcMode)= 0; 00110 00111 // Return the FEC simulation input data 00112 virtual const DayaBay::FecSimData* fecSimData( 00113 const DayaBay::FecChannelId& channelId, 00114 const ServiceMode& svcMode)= 0; 00115 00116 // Return the array of PMT simulation input data by detector 00117 virtual const std::vector<DayaBay::PmtSimData>& pmtSimList( 00118 const DayaBay::Detector& detectorId, 00119 const ServiceMode& svcMode)= 0; 00120 00121 // Return the array of RPC simulation input data by detector 00122 virtual const std::vector<DayaBay::RpcSimData>& rpcSimList( 00123 const DayaBay::Detector& detectorId, 00124 const ServiceMode& svcMode)= 0; 00125 00126 // Return the array of FEE simulation input data by detector 00127 virtual const std::vector<DayaBay::FeeSimData>& feeSimList( 00128 const DayaBay::Detector& detectorId, 00129 const ServiceMode& svcMode)= 0; 00130 00131 // Return the array of FEC simulation input data by detector 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