00001 #ifndef HcalSimAlgos_HcalElectronicsSim_h 00002 #define HcalSimAlgos_HcalElectronicsSim_h 00003 00008 #include "CalibFormats/CaloObjects/interface/CaloSamples.h" 00009 #include "CLHEP/Random/RandFlat.h" 00010 00011 class HBHEDataFrame; 00012 class HODataFrame; 00013 class HFDataFrame; 00014 class ZDCDataFrame; 00015 00016 class HcalAmplifier; 00017 class HcalCoderFactory; 00018 00019 class HcalElectronicsSim { 00020 public: 00021 HcalElectronicsSim(HcalAmplifier * amplifier, 00022 const HcalCoderFactory * coderFactory); 00023 ~HcalElectronicsSim(); 00024 00025 void setRandomEngine(CLHEP::HepRandomEngine & engine); 00026 00027 void analogToDigital(CaloSamples & linearFrame, HBHEDataFrame & result); 00028 void analogToDigital(CaloSamples & linearFrame, HODataFrame & result); 00029 void analogToDigital(CaloSamples & linearFrame, HFDataFrame & result); 00030 void analogToDigital(CaloSamples & linearFrame, ZDCDataFrame & result); 00031 00033 void newEvent(); 00034 00035 private: 00036 template<class Digi> void convert(CaloSamples & frame, Digi & result); 00037 00038 HcalAmplifier * theAmplifier; 00039 const HcalCoderFactory * theCoderFactory; 00040 CLHEP::RandFlat * theRandFlat; 00041 00042 int theStartingCapId; 00043 }; 00044 00045 00046 #endif 00047