81 m_EBs25notCont(params.getParameter<double>(
"EBs25notContainment")),
82 m_EEs25notCont(params.getParameter<double>(
"EEs25notContainment")),
86 params.getParameter<double>(
"simHitToPhotoelectronsEndcap"),
87 params.getParameter<double>(
"photoelectronsToAnalogBarrel"),
88 params.getParameter<double>(
"photoelectronsToAnalogEndcap"),
89 params.getParameter<double>(
"samplingFactor"),
90 params.getParameter<double>(
"timePhase"),
92 params.getParameter<
int>(
"binOfMaximum"),
93 params.getParameter<
bool>(
"doPhotostatistics"),
94 params.getParameter<
bool>(
"syncPhase"))),
99 params.getParameter<double>(
"apdSimToPELow"),
100 params.getParameter<double>(
"apdSimToPEHigh"),
101 params.getParameter<double>(
"apdTimeOffset"),
102 params.getParameter<double>(
"apdTimeOffWidth"),
103 params.getParameter<
bool>(
"apdDoPEStats"),
105 params.getParameter<
std::vector<double>>(
"apdNonlParms"))),
164 const std::vector<double> ebCorMatG12 =
params.getParameter<std::vector<double>>(
"EBCorrNoiseMatrixG12");
165 const std::vector<double> eeCorMatG12 =
params.getParameter<std::vector<double>>(
"EECorrNoiseMatrixG12");
166 const std::vector<double> ebCorMatG06 =
params.getParameter<std::vector<double>>(
"EBCorrNoiseMatrixG06");
167 const std::vector<double> eeCorMatG06 =
params.getParameter<std::vector<double>>(
"EECorrNoiseMatrixG06");
168 const std::vector<double> ebCorMatG01 =
params.getParameter<std::vector<double>>(
"EBCorrNoiseMatrixG01");
169 const std::vector<double> eeCorMatG01 =
params.getParameter<std::vector<double>>(
"EECorrNoiseMatrixG01");
172 const double rmsConstantTerm =
params.getParameter<
double>(
"ConstantTerm");
174 const bool addNoise =
params.getParameter<
bool>(
"doENoise");
198 assert(1.
e-7 > fabs(ebCorMatG12[0] - 1.0));
199 assert(1.
e-7 > fabs(ebCorMatG06[0] - 1.0));
200 assert(1.
e-7 > fabs(ebCorMatG01[0] - 1.0));
201 assert(1.
e-7 > fabs(eeCorMatG12[0] - 1.0));
202 assert(1.
e-7 > fabs(eeCorMatG06[0] - 1.0));
203 assert(1.
e-7 > fabs(eeCorMatG01[0] - 1.0));
206 assert(0 == row || 1. >= ebCorMatG12[row]);
207 assert(0 == row || 1. >= ebCorMatG06[row]);
208 assert(0 == row || 1. >= ebCorMatG01[row]);
209 assert(0 == row || 1. >= eeCorMatG12[row]);
210 assert(0 == row || 1. >= eeCorMatG06[row]);
211 assert(0 == row || 1. >= eeCorMatG01[row]);
212 for (
unsigned int column(0); column <= row; ++column) {
213 const unsigned int index(row - column);
214 ebMatrix[0](row, column) = ebCorMatG12[index];
215 eeMatrix[0](row, column) = eeCorMatG12[index];
216 ebMatrix[1](row, column) = ebCorMatG06[index];
217 eeMatrix[1](row, column) = eeCorMatG06[index];
218 ebMatrix[2](row, column) = ebCorMatG01[index];
219 eeMatrix[2](row, column) = eeCorMatG01[index];
384 edm::LogInfo(
"DigiInfo") <<
"EB Digis: " << barrelResult->size();
388 edm::LogInfo(
"DigiInfo") <<
"APD Digis: " << apdResult->size();
394 edm::LogInfo(
"EcalDigi") <<
"EE Digis: " << endcapResult->size();
403 edm::LogInfo(
"EcalDigi") <<
"ES Digis: " << preshowerResult->size();
421 throw cms::Exception(
"Configuration") <<
"RandomNumberGenerator service is not available.\n" 422 "You must add the service in the configuration file\n" 423 "or remove the module that requires it.";
441 m_Coder->setPedestals(pedestals);
450 m_Coder->setIntercalibConstants(ical);
485 double theGains[
m_Coder->NGAINS + 1];
489 theGains[1] = theGains[2] * (defaultRatios->
gain12Over6());
493 <<
" g1 = " << theGains[1] <<
"\n" 494 <<
" g2 = " << theGains[2] <<
"\n" 495 <<
" g3 = " << theGains[3];
497 delete defaultRatios;
511 m_Coder->setFullScaleEnergy(EBscale, EEscale);
513 m_APDCoder->setFullScaleEnergy(EBscale, EEscale);
531 const int ESGain(1.1 > esgain->getESGain() ? 1 : 2);
532 const double ESMIPToGeV((1 ==
ESGain) ? esMipToGeV->getESValueLow() : esMipToGeV->getESValueHigh());
577 const std::vector<DetId> *theESDets(
void beginRun(edm::Run const &run, edm::EventSetup const &setup) override
std::unique_ptr< EcalCoder > m_APDCoder
int bunchCrossing() const
const CaloSubdetectorGeometry * getSubdetectorGeometry(const DetId &id) const
access the subdetector geometry for the given subdetector directly
std::unique_ptr< EcalElectronicsSim > m_ElectronicsSim
EcalTDigitizer< EEDigitizerTraits > EEDigitizer
std::unique_ptr< ESDigitizer > m_ESDigitizer
LuminosityBlockIndex index() const
const std::string m_ESdigiCollection
ProductRegistryHelper::BranchAliasSetterT< ProductType > produces()
std::unique_ptr< EEDigitizer > m_EndcapDigitizer
void setGain(const int gain)
std::unique_ptr< EBHitResponse > m_APDResponse
const std::string m_hitsProducerTag
std::unique_ptr< EcalCoder > m_Coder
virtual CLHEP::HepRandomEngine & getEngine(StreamID const &)=0
Use this engine in event methods.
const std::string m_EEdigiCollection
std::unique_ptr< ESHitResponse > m_ESResponse
virtual const std::vector< DetId > & getValidDetIds(DetId::Detector det=DetId::Detector(0), int subdet=0) const
Get a list of valid detector ids (for the given subdetector)
void setEENoiseSignalGenerator(EcalBaseSignalGenerator *noiseGenerator)
void initializeEvent(edm::Event const &e, edm::EventSetup const &c) override
const unsigned int m_readoutFrameSize
void setEBNoiseSignalGenerator(EcalBaseSignalGenerator *noiseGenerator)
void setESNoiseSignalGenerator(EcalBaseSignalGenerator *noiseGenerator)
void accumulateCaloHits(HitsHandle const &ebHandle, HitsHandle const &eeHandle, HitsHandle const &esHandle, int bunchCrossing)
std::array< std::unique_ptr< CorrelatedNoisifier< EcalCorrMatrix > >, 3 > m_EECorrNoise
void accumulate(edm::Event const &e, edm::EventSetup const &c) override
Creates electronics signals from hits.
const double m_EBs25notCont
std::unique_ptr< CaloHitResponse > m_ESOldResponse
std::array< std::unique_ptr< CorrelatedNoisifier< EcalCorrMatrix > >, 3 > m_EBCorrNoise
void beginLuminosityBlock(edm::LuminosityBlock const &lumi, edm::EventSetup const &setup) override
unsigned long long TimeValue_t
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
const CaloGeometry * m_Geometry
void checkCalibrations(const edm::Event &event, const edm::EventSetup &eventSetup)
void checkGeometry(const edm::EventSetup &eventSetup)
std::unique_ptr< EBDigitizer > m_BarrelDigitizer
std::unique_ptr< ESElectronicsSimFast > m_ESElectronicsSimFast
CLHEP::HepRandomEngine * randomEngine_
T const * product() const
virtual void cacheEBDigis(const EBDigiCollection *ebDigiPtr) const
std::unique_ptr< EEHitResponse > m_EEResponse
EcalTDigitizer< EBDigitizerTraits > EBDigitizer
float gain12Over6() const
const bool m_apdSeparateDigi
std::unique_ptr< ESElectronicsSim > m_ESElectronicsSim
bool getByLabel(edm::InputTag const &tag, edm::Handle< T > &result) const
StreamID streamID() const
const std::string m_apdDigiTag
void setEventSetup(const edm::EventSetup &evtSetup)
std::unique_ptr< EBHitResponse > m_EBResponse
std::unique_ptr< ESOldDigitizer > m_ESOldDigitizer
std::unique_ptr< EcalElectronicsSim > m_APDElectronicsSim
~EcalDigiProducer() override
EcalDigiProducer(const edm::ParameterSet ¶ms, edm::ProducesCollector, edm::ConsumesCollector &iC)
virtual void cacheEEDigis(const EEDigiCollection *eeDigiPtr) const
const std::string m_EBdigiCollection
T const * product() const
std::unique_ptr< EBDigitizer > m_APDDigitizer
void finalizeEvent(edm::Event &e, edm::EventSetup const &c) override
const double m_EEs25notCont
std::unique_ptr< const EcalSimParameterMap > m_ParameterMap
std::unique_ptr< const APDSimParameters > m_apdParameters