82 m_EBs25notCont(params.getParameter<double>(
"EBs25notContainment")),
83 m_EEs25notCont(params.getParameter<double>(
"EEs25notContainment")),
87 params.getParameter<double>(
"simHitToPhotoelectronsEndcap"),
88 params.getParameter<double>(
"photoelectronsToAnalogBarrel"),
89 params.getParameter<double>(
"photoelectronsToAnalogEndcap"),
90 params.getParameter<double>(
"samplingFactor"),
91 params.getParameter<double>(
"timePhase"),
93 params.getParameter<
int>(
"binOfMaximum"),
94 params.getParameter<
bool>(
"doPhotostatistics"),
95 params.getParameter<
bool>(
"syncPhase"))),
100 params.getParameter<double>(
"apdSimToPELow"),
101 params.getParameter<double>(
"apdSimToPEHigh"),
102 params.getParameter<double>(
"apdTimeOffset"),
103 params.getParameter<double>(
"apdTimeOffWidth"),
104 params.getParameter<
bool>(
"apdDoPEStats"),
106 params.getParameter<
std::vector<double>>(
"apdNonlParms"))),
165 const std::vector<double> ebCorMatG12 = params.getParameter<std::vector<double>>(
"EBCorrNoiseMatrixG12");
166 const std::vector<double> eeCorMatG12 = params.getParameter<std::vector<double>>(
"EECorrNoiseMatrixG12");
167 const std::vector<double> ebCorMatG06 = params.getParameter<std::vector<double>>(
"EBCorrNoiseMatrixG06");
168 const std::vector<double> eeCorMatG06 = params.getParameter<std::vector<double>>(
"EECorrNoiseMatrixG06");
169 const std::vector<double> ebCorMatG01 = params.getParameter<std::vector<double>>(
"EBCorrNoiseMatrixG01");
170 const std::vector<double> eeCorMatG01 = params.getParameter<std::vector<double>>(
"EECorrNoiseMatrixG01");
173 const double rmsConstantTerm = params.getParameter<
double>(
"ConstantTerm");
175 const bool addNoise = params.getParameter<
bool>(
"doENoise");
176 const bool cosmicsPhase = params.getParameter<
bool>(
"cosmicsPhase");
177 const double cosmicsShift = params.getParameter<
double>(
"cosmicsShift");
199 assert(1.
e-7 > fabs(ebCorMatG12[0] - 1.0));
200 assert(1.
e-7 > fabs(ebCorMatG06[0] - 1.0));
201 assert(1.
e-7 > fabs(ebCorMatG01[0] - 1.0));
202 assert(1.
e-7 > fabs(eeCorMatG12[0] - 1.0));
203 assert(1.
e-7 > fabs(eeCorMatG06[0] - 1.0));
204 assert(1.
e-7 > fabs(eeCorMatG01[0] - 1.0));
207 assert(0 == row || 1. >= ebCorMatG12[row]);
208 assert(0 == row || 1. >= ebCorMatG06[row]);
209 assert(0 == row || 1. >= ebCorMatG01[row]);
210 assert(0 == row || 1. >= eeCorMatG12[row]);
211 assert(0 == row || 1. >= eeCorMatG06[row]);
212 assert(0 == row || 1. >= eeCorMatG01[row]);
213 for (
unsigned int column(0); column <= row; ++column) {
214 const unsigned int index(row - column);
215 ebMatrix[0](row, column) = ebCorMatG12[index];
216 eeMatrix[0](row, column) = eeCorMatG12[index];
217 ebMatrix[1](row, column) = ebCorMatG06[index];
218 eeMatrix[1](row, column) = eeCorMatG06[index];
219 ebMatrix[2](row, column) = ebCorMatG01[index];
220 eeMatrix[2](row, column) = eeCorMatG01[index];
385 edm::LogInfo(
"DigiInfo") <<
"EB Digis: " << barrelResult->size();
389 edm::LogInfo(
"DigiInfo") <<
"APD Digis: " << apdResult->size();
395 edm::LogInfo(
"EcalDigi") <<
"EE Digis: " << endcapResult->size();
404 edm::LogInfo(
"EcalDigi") <<
"ES Digis: " << preshowerResult->size();
422 throw cms::Exception(
"Configuration") <<
"RandomNumberGenerator service is not available.\n" 423 "You must add the service in the configuration file\n" 424 "or remove the module that requires it.";
442 m_Coder->setPedestals(pedestals);
451 m_Coder->setIntercalibConstants(ical);
486 double theGains[
m_Coder->NGAINS + 1];
490 theGains[1] = theGains[2] * (defaultRatios->
gain12Over6());
494 <<
" g1 = " << theGains[1] <<
"\n" 495 <<
" g2 = " << theGains[2] <<
"\n" 496 <<
" g3 = " << theGains[3];
498 delete defaultRatios;
512 m_Coder->setFullScaleEnergy(EBscale, EEscale);
514 m_APDCoder->setFullScaleEnergy(EBscale, EEscale);
532 const int ESGain(1.1 > esgain->getESGain() ? 1 : 2);
533 const double ESMIPToGeV((1 ==
ESGain) ? esMipToGeV->getESValueLow() : esMipToGeV->getESValueHigh());
578 const std::vector<DetId> *theESDets(
void beginRun(edm::Run const &run, edm::EventSetup const &setup) override
BranchAliasSetterT< ProductType > produces()
declare what type of product will make and with which optional label
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
EcalDigiProducer(const edm::ParameterSet ¶ms, edm::ProducerBase &mixMod, edm::ConsumesCollector &iC)
EcalTDigitizer< EEDigitizerTraits > EEDigitizer
std::unique_ptr< ESDigitizer > m_ESDigitizer
LuminosityBlockIndex index() const
const std::string m_ESdigiCollection
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
def setup(process, global_tag, zero_tesla=False)
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
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
T get(const Candidate &c)
const double m_EEs25notCont
std::unique_ptr< const EcalSimParameterMap > m_ParameterMap
std::unique_ptr< const APDSimParameters > m_apdParameters