CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Protected Member Functions | Protected Attributes
EcalDigiProducer Class Reference

#include <EcalDigiProducer.h>

Inheritance diagram for EcalDigiProducer:
edm::EDProducer edm::ProducerBase edm::ProductRegistryHelper EcalTBDigiProducer

Public Member Functions

virtual void cacheEBDigis (const EBDigiCollection *ebDigiPtr) const
 
virtual void cacheEEDigis (const EEDigiCollection *eeDigiPtr) const
 
 EcalDigiProducer (const edm::ParameterSet &params)
 
virtual void produce (edm::Event &event, const edm::EventSetup &eventSetup)
 
virtual ~EcalDigiProducer ()
 
- Public Member Functions inherited from edm::EDProducer
 EDProducer ()
 
virtual ~EDProducer ()
 
- Public Member Functions inherited from edm::ProducerBase
 ProducerBase ()
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
boost::function< void(const
BranchDescription &)> 
registrationCallback () const
 used by the fwk to register list of products More...
 
virtual ~ProducerBase ()
 

Protected Member Functions

void checkCalibrations (const edm::Event &event, const edm::EventSetup &eventSetup)
 
void checkGeometry (const edm::EventSetup &eventSetup)
 
void updateGeometry ()
 
- Protected Member Functions inherited from edm::EDProducer
CurrentProcessingContext const * currentContext () const
 
- Protected Member Functions inherited from edm::ProducerBase
template<class TProducer , class TMethod >
void callWhenNewProductsRegistered (TProducer *iProd, TMethod iMethod)
 

Protected Attributes

const bool m_addESNoise
 
EcalCoderm_APDCoder
 
const std::string m_apdDigiTag
 
EBDigitizerm_APDDigitizer
 
EcalElectronicsSimm_APDElectronicsSim
 
const APDSimParametersm_apdParameters
 
EBHitResponsem_APDResponse
 
const bool m_apdSeparateDigi
 
const APDShape m_APDShape
 
EBDigitizerm_BarrelDigitizer
 
EcalCoderm_Coder
 
const bool m_doFastES
 
CorrelatedNoisifier
< EcalCorrMatrix > * 
m_EBCorrNoise [3]
 
const std::string m_EBdigiCollection
 
EBHitResponsem_EBResponse
 
const double m_EBs25notCont
 
const EBShape m_EBShape
 
CorrelatedNoisifier
< EcalCorrMatrix > * 
m_EECorrNoise [3]
 
const std::string m_EEdigiCollection
 
EEHitResponsem_EEResponse
 
const double m_EEs25notCont
 
const EEShape m_EEShape
 
EcalElectronicsSimm_ElectronicsSim
 
EEDigitizerm_EndcapDigitizer
 
const std::string m_ESdigiCollection
 
ESDigitizerm_ESDigitizer
 
ESElectronicsSimm_ESElectronicsSim
 
ESElectronicsSimFastm_ESElectronicsSimFast
 
ESOldDigitizerm_ESOldDigitizer
 
CaloHitResponsem_ESOldResponse
 
ESHitResponsem_ESResponse
 
ESShape m_ESShape
 
const CaloGeometrym_Geometry
 
const std::string m_hitsProducerTag
 
const EcalSimParameterMapm_ParameterMap
 
const unsigned int m_readoutFrameSize
 
bool m_useLCcorrection
 

Additional Inherited Members

- Public Types inherited from edm::EDProducer
typedef EDProducer ModuleType
 
typedef WorkerT< EDProducerWorkerType
 
- Public Types inherited from edm::ProducerBase
typedef
ProductRegistryHelper::TypeLabelList 
TypeLabelList
 
- Static Public Member Functions inherited from edm::EDProducer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 

Detailed Description

Definition at line 43 of file EcalDigiProducer.h.

Constructor & Destructor Documentation

EcalDigiProducer::EcalDigiProducer ( const edm::ParameterSet params)

Definition at line 46 of file EcalDigiProducer.cc.

References alignCSCRings::e, edm::ParameterSet::getParameter(), getHLTprescales::index, m_APDCoder, m_apdDigiTag, m_APDDigitizer, m_APDElectronicsSim, m_APDResponse, m_apdSeparateDigi, m_BarrelDigitizer, m_Coder, m_EBCorrNoise, m_EBdigiCollection, m_EBResponse, m_EECorrNoise, m_EEdigiCollection, m_EEResponse, m_ElectronicsSim, m_EndcapDigitizer, m_ESdigiCollection, m_ParameterMap, m_readoutFrameSize, and EcalHitResponse::setPhaseShift().

46  :
47  m_APDShape ( params.getParameter<double>( "apdShapeTstart" ) ,
48  params.getParameter<double>( "apdShapeTau" ) ) ,
49  m_EBShape ( ) ,
50  m_EEShape ( ) ,
51  m_ESShape ( ) ,
52  m_EBdigiCollection ( params.getParameter<std::string>("EBdigiCollection") ) ,
53  m_EEdigiCollection ( params.getParameter<std::string>("EEdigiCollection") ) ,
54  m_ESdigiCollection ( params.getParameter<std::string>("ESdigiCollection") ) ,
55  m_hitsProducerTag ( params.getParameter<std::string>("hitsProducer" ) ) ,
56  m_useLCcorrection ( params.getParameter<bool> ("UseLCcorrection") ) ,
57  m_apdSeparateDigi ( params.getParameter<bool> ("apdSeparateDigi") ) ,
58 
59  m_EBs25notCont ( params.getParameter<double> ("EBs25notContainment") ) ,
60  m_EEs25notCont ( params.getParameter<double> ("EEs25notContainment") ) ,
61 
62  m_readoutFrameSize ( params.getParameter<int> ("readoutFrameSize") ) ,
64  params.getParameter<double> ("simHitToPhotoelectronsBarrel") ,
65  params.getParameter<double> ("simHitToPhotoelectronsEndcap") ,
66  params.getParameter<double> ("photoelectronsToAnalogBarrel") ,
67  params.getParameter<double> ("photoelectronsToAnalogEndcap") ,
68  params.getParameter<double> ("samplingFactor") ,
69  params.getParameter<double> ("timePhase") ,
71  params.getParameter<int> ("binOfMaximum") ,
72  params.getParameter<bool> ("doPhotostatistics") ,
73  params.getParameter<bool> ("syncPhase") ) ) ,
74 
75  m_apdDigiTag ( params.getParameter<std::string> ("apdDigiTag" ) ) ,
77  params.getParameter<bool> ("apdAddToBarrel" ) ,
79  params.getParameter<double> ("apdSimToPELow" ) ,
80  params.getParameter<double> ("apdSimToPEHigh" ) ,
81  params.getParameter<double> ("apdTimeOffset" ) ,
82  params.getParameter<double> ("apdTimeOffWidth" ) ,
83  params.getParameter<bool> ("apdDoPEStats" ) ,
84  m_apdDigiTag ,
85  params.getParameter<std::vector<double> > ( "apdNonlParms" ) ) ) ,
86 
89  &m_EBShape ,
90  true ,
92  &m_APDShape ) ) ,
93 
95  &m_EBShape ,
96  false , // barrel
98  &m_APDShape ) ) ,
99 
101  &m_EEShape ) ) ,
104 
105  m_addESNoise ( params.getParameter<bool> ("doESNoise") ) ,
106  m_doFastES ( params.getParameter<bool> ("doFast" ) ) ,
107 
109  new ESElectronicsSim( m_addESNoise ) ) ,
110 
114  m_addESNoise ) ) ,
115 
118 
119  m_ESDigitizer ( !m_doFastES ? 0 :
122  m_addESNoise ) ) ,
123 
124  m_APDDigitizer ( 0 ) ,
125  m_BarrelDigitizer ( 0 ) ,
126  m_EndcapDigitizer ( 0 ) ,
127  m_ElectronicsSim ( 0 ) ,
128  m_Coder ( 0 ) ,
129  m_APDElectronicsSim ( 0 ) ,
130  m_APDCoder ( 0 ) ,
131  m_Geometry ( 0 ) ,
132  m_EBCorrNoise ( ) ,
133  m_EECorrNoise ( )
134 {
135  const std::vector<double> ebCorMatG12 = params.getParameter< std::vector<double> >("EBCorrNoiseMatrixG12");
136  const std::vector<double> eeCorMatG12 = params.getParameter< std::vector<double> >("EECorrNoiseMatrixG12");
137  const std::vector<double> ebCorMatG06 = params.getParameter< std::vector<double> >("EBCorrNoiseMatrixG06");
138  const std::vector<double> eeCorMatG06 = params.getParameter< std::vector<double> >("EECorrNoiseMatrixG06");
139  const std::vector<double> ebCorMatG01 = params.getParameter< std::vector<double> >("EBCorrNoiseMatrixG01");
140  const std::vector<double> eeCorMatG01 = params.getParameter< std::vector<double> >("EECorrNoiseMatrixG01");
141 
142 
143  const bool applyConstantTerm = params.getParameter<bool> ("applyConstantTerm");
144  const double rmsConstantTerm = params.getParameter<double> ("ConstantTerm");
145 
146  const bool addNoise = params.getParameter<bool> ("doNoise");
147  const bool cosmicsPhase = params.getParameter<bool> ("cosmicsPhase");
148  const double cosmicsShift = params.getParameter<double> ("cosmicsShift");
149 
150 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
151 
152  if( m_apdSeparateDigi ) produces<EBDigiCollection>( m_apdDigiTag ) ;
153  produces<EBDigiCollection>( m_EBdigiCollection ) ;
154  produces<EEDigiCollection>( m_EEdigiCollection ) ;
155  produces<ESDigiCollection>( m_ESdigiCollection ) ;
156 
157  // further phase for cosmics studies
158  if( cosmicsPhase )
159  {
160  m_EBResponse->setPhaseShift( 1. + cosmicsShift ) ;
161  m_EEResponse->setPhaseShift( 1. + cosmicsShift ) ;
162  }
163 
164  EcalCorrMatrix ebMatrix[ 3 ] ;
165  EcalCorrMatrix eeMatrix[ 3 ] ;
166 
167  assert( ebCorMatG12.size() == m_readoutFrameSize ) ;
168  assert( eeCorMatG12.size() == m_readoutFrameSize ) ;
169  assert( ebCorMatG06.size() == m_readoutFrameSize ) ;
170  assert( eeCorMatG06.size() == m_readoutFrameSize ) ;
171  assert( ebCorMatG01.size() == m_readoutFrameSize ) ;
172  assert( eeCorMatG01.size() == m_readoutFrameSize ) ;
173 
174  assert( 1.e-7 > fabs( ebCorMatG12[0] - 1.0 ) ) ;
175  assert( 1.e-7 > fabs( ebCorMatG06[0] - 1.0 ) ) ;
176  assert( 1.e-7 > fabs( ebCorMatG01[0] - 1.0 ) ) ;
177  assert( 1.e-7 > fabs( eeCorMatG12[0] - 1.0 ) ) ;
178  assert( 1.e-7 > fabs( eeCorMatG06[0] - 1.0 ) ) ;
179  assert( 1.e-7 > fabs( eeCorMatG01[0] - 1.0 ) ) ;
180 
181  for ( unsigned int row ( 0 ) ; row != m_readoutFrameSize ; ++row )
182  {
183  assert( 0 == row || 1. >= ebCorMatG12[row] ) ;
184  assert( 0 == row || 1. >= ebCorMatG06[row] ) ;
185  assert( 0 == row || 1. >= ebCorMatG01[row] ) ;
186  assert( 0 == row || 1. >= eeCorMatG12[row] ) ;
187  assert( 0 == row || 1. >= eeCorMatG06[row] ) ;
188  assert( 0 == row || 1. >= eeCorMatG01[row] ) ;
189  for ( unsigned int column ( 0 ) ; column <= row ; ++column )
190  {
191  const unsigned int index ( row - column ) ;
192  ebMatrix[0]( row, column ) = ebCorMatG12[ index ] ;
193  eeMatrix[0]( row, column ) = eeCorMatG12[ index ] ;
194  ebMatrix[1]( row, column ) = ebCorMatG06[ index ] ;
195  eeMatrix[1]( row, column ) = eeCorMatG06[ index ] ;
196  ebMatrix[2]( row, column ) = ebCorMatG01[ index ] ;
197  eeMatrix[2]( row, column ) = eeCorMatG01[ index ] ;
198  }
199  }
200 
201  m_EBCorrNoise[0] = new CorrelatedNoisifier<EcalCorrMatrix>( ebMatrix[0] ) ;
202  m_EECorrNoise[0] = new CorrelatedNoisifier<EcalCorrMatrix>( eeMatrix[0] ) ;
203  m_EBCorrNoise[1] = new CorrelatedNoisifier<EcalCorrMatrix>( ebMatrix[1] ) ;
204  m_EECorrNoise[1] = new CorrelatedNoisifier<EcalCorrMatrix>( eeMatrix[1] ) ;
205  m_EBCorrNoise[2] = new CorrelatedNoisifier<EcalCorrMatrix>( ebMatrix[2] ) ;
206  m_EECorrNoise[2] = new CorrelatedNoisifier<EcalCorrMatrix>( eeMatrix[2] ) ;
207 
208  m_Coder = new EcalCoder( addNoise ,
209  m_EBCorrNoise[0] ,
210  m_EECorrNoise[0] ,
211  m_EBCorrNoise[1] ,
212  m_EECorrNoise[1] ,
213  m_EBCorrNoise[2] ,
214  m_EECorrNoise[2] ) ;
215 
217  m_Coder ,
218  applyConstantTerm ,
219  rmsConstantTerm ) ;
220 
221  if( m_apdSeparateDigi )
222  {
223  m_APDCoder = new EcalCoder( false ,
224  m_EBCorrNoise[0] ,
225  m_EECorrNoise[0] ,
226  m_EBCorrNoise[1] ,
227  m_EECorrNoise[1] ,
228  m_EBCorrNoise[2] ,
229  m_EECorrNoise[2] ) ;
230 
232  m_APDCoder ,
233  applyConstantTerm ,
234  rmsConstantTerm ) ;
235 
238  false ) ;
239  }
240 
243  addNoise ) ;
244 
247  addNoise ) ;
248 }
EEDigitizer * m_EndcapDigitizer
T getParameter(std::string const &) const
CaloHitResponse * m_ESOldResponse
CaloTDigitizer< ESOldDigitizerTraits > ESOldDigitizer
EcalTDigitizer< EEDigitizerTraits > EEDigitizer
CorrelatedNoisifier< EcalCorrMatrix > * m_EBCorrNoise[3]
const APDShape m_APDShape
const std::string m_ESdigiCollection
const EcalSimParameterMap * m_ParameterMap
const std::string m_hitsProducerTag
ESOldDigitizer * m_ESOldDigitizer
const std::string m_EEdigiCollection
ESElectronicsSimFast * m_ESElectronicsSimFast
ESDigitizer * m_ESDigitizer
const APDSimParameters * m_apdParameters
const bool m_addESNoise
CorrelatedNoisifier< EcalCorrMatrix > * m_EECorrNoise[3]
const unsigned int m_readoutFrameSize
EcalElectronicsSim * m_ElectronicsSim
EBHitResponse * m_APDResponse
Creates electronics signals from hits.
const double m_EBs25notCont
EBHitResponse * m_EBResponse
void setPhaseShift(double phaseShift)
ESElectronicsSim * m_ESElectronicsSim
EBDigitizer * m_BarrelDigitizer
math::ErrorD< CaloSamples::MAXSAMPLES >::type EcalCorrMatrix
const CaloGeometry * m_Geometry
EcalCoder * m_APDCoder
ESHitResponse * m_ESResponse
const bool m_doFastES
EcalTDigitizer< EBDigitizerTraits > EBDigitizer
EBDigitizer * m_APDDigitizer
const bool m_apdSeparateDigi
const std::string m_apdDigiTag
const EEShape m_EEShape
const EBShape m_EBShape
const std::string m_EBdigiCollection
EcalElectronicsSim * m_APDElectronicsSim
const double m_EEs25notCont
EEHitResponse * m_EEResponse
EcalDigiProducer::~EcalDigiProducer ( )
virtual

Definition at line 250 of file EcalDigiProducer.cc.

References m_APDCoder, m_APDDigitizer, m_APDElectronicsSim, m_apdParameters, m_APDResponse, m_BarrelDigitizer, m_Coder, m_EBCorrNoise, m_EBResponse, m_EECorrNoise, m_EEResponse, m_ElectronicsSim, m_EndcapDigitizer, m_ESDigitizer, m_ESElectronicsSim, m_ESElectronicsSimFast, m_ESOldDigitizer, m_ESOldResponse, m_ESResponse, and m_ParameterMap.

251 {
252  delete m_EndcapDigitizer ;
253  delete m_BarrelDigitizer ;
254  delete m_APDDigitizer ;
255  delete m_APDElectronicsSim ;
256  delete m_APDCoder ;
257  delete m_ElectronicsSim ;
258  delete m_Coder ;
259  delete m_EBCorrNoise[0] ;
260  delete m_EECorrNoise[0] ;
261  delete m_EBCorrNoise[1] ;
262  delete m_EECorrNoise[1] ;
263  delete m_EBCorrNoise[2] ;
264  delete m_EECorrNoise[2] ;
265 
266  delete m_ESDigitizer ;
267  delete m_ESElectronicsSimFast ;
268  delete m_ESOldDigitizer ;
269  delete m_ESElectronicsSim ;
270 
271  delete m_ESOldResponse ;
272  delete m_ESResponse ;
273  delete m_EEResponse ;
274  delete m_EBResponse ;
275  delete m_APDResponse ;
276 
277  delete m_apdParameters ;
278  delete m_ParameterMap ;
279 }
EEDigitizer * m_EndcapDigitizer
CaloHitResponse * m_ESOldResponse
CorrelatedNoisifier< EcalCorrMatrix > * m_EBCorrNoise[3]
const EcalSimParameterMap * m_ParameterMap
ESOldDigitizer * m_ESOldDigitizer
ESElectronicsSimFast * m_ESElectronicsSimFast
ESDigitizer * m_ESDigitizer
const APDSimParameters * m_apdParameters
CorrelatedNoisifier< EcalCorrMatrix > * m_EECorrNoise[3]
EcalElectronicsSim * m_ElectronicsSim
EBHitResponse * m_APDResponse
EBHitResponse * m_EBResponse
ESElectronicsSim * m_ESElectronicsSim
EBDigitizer * m_BarrelDigitizer
EcalCoder * m_APDCoder
ESHitResponse * m_ESResponse
EBDigitizer * m_APDDigitizer
EcalElectronicsSim * m_APDElectronicsSim
EEHitResponse * m_EEResponse

Member Function Documentation

virtual void EcalDigiProducer::cacheEBDigis ( const EBDigiCollection ebDigiPtr) const
inlinevirtual

Reimplemented in EcalTBDigiProducer.

Definition at line 55 of file EcalDigiProducer.h.

Referenced by produce().

55 { }
virtual void EcalDigiProducer::cacheEEDigis ( const EEDigiCollection eeDigiPtr) const
inlinevirtual

Reimplemented in EcalTBDigiProducer.

Definition at line 56 of file EcalDigiProducer.h.

Referenced by produce().

56 { }
void EcalDigiProducer::checkCalibrations ( const edm::Event event,
const edm::EventSetup eventSetup 
)
protected

Definition at line 408 of file EcalDigiProducer.cc.

References EcalMGPAGainRatio::gain12Over6(), EcalMGPAGainRatio::gain6Over1(), edm::EventSetup::get(), EcalADCToGeVConstant::getEBValue(), EcalADCToGeVConstant::getEEValue(), LogDebug, m_APDCoder, m_APDResponse, m_Coder, m_doFastES, m_EBResponse, m_EBs25notCont, m_EEResponse, m_EEs25notCont, m_ESDigitizer, m_ESElectronicsSim, m_ESElectronicsSimFast, m_ESOldDigitizer, m_ESShape, m_useLCcorrection, EcalCoder::MAXADC, EcalCoder::NGAINS, edm::ESHandle< class >::product(), EcalHitResponse::setEventTime(), EcalCoder::setFullScaleEnergy(), ESElectronicsSim::setGain(), ESShape::setGain(), ESDigitizer::setGain(), EcalCoder::setGainRatios(), EBHitResponse::setIntercal(), EcalCoder::setIntercalibConstants(), EcalHitResponse::setLaserConstants(), ESElectronicsSim::setMIPs(), ESElectronicsSimFast::setMIPs(), ESElectronicsSim::setMIPToGeV(), ESElectronicsSimFast::setMIPToGeV(), ESElectronicsSim::setPedestals(), ESElectronicsSimFast::setPedestals(), and EcalCoder::setPedestals().

Referenced by produce().

409 {
410  // Pedestals from event setup
411 
413  eventSetup.get<EcalPedestalsRcd>().get( dbPed ) ;
414  const EcalPedestals* pedestals ( dbPed.product() ) ;
415 
416  m_Coder->setPedestals( pedestals ) ;
417  if( 0 != m_APDCoder ) m_APDCoder->setPedestals( pedestals ) ;
418 
419  // Ecal Intercalibration Constants
421  eventSetup.get<EcalIntercalibConstantsMCRcd>().get( pIcal ) ;
422  const EcalIntercalibConstantsMC* ical ( pIcal.product() ) ;
423 
425  if( 0 != m_APDCoder) m_APDCoder->setIntercalibConstants( ical ) ;
426 
427  m_EBResponse->setIntercal( ical ) ;
428  if( 0 != m_APDResponse ) m_APDResponse->setIntercal( ical ) ;
429 
430  // Ecal LaserCorrection Constants
432  eventSetup.get<EcalLaserDbRecord>().get(laser);
433  const edm::TimeValue_t eventTimeValue = event.time().value();
434 
435  m_EBResponse->setEventTime(eventTimeValue);
437 
438  m_EEResponse->setEventTime(eventTimeValue);
440 
441  // ADC -> GeV Scale
443  eventSetup.get<EcalADCToGeVConstantRcd>().get(pAgc);
444  const EcalADCToGeVConstant* agc = pAgc.product();
445 
446  // Gain Ratios
448  eventSetup.get<EcalGainRatiosRcd>().get(pRatio);
449  const EcalGainRatios* gr = pRatio.product();
450 
451  m_Coder->setGainRatios( gr );
452  if( 0 != m_APDCoder) m_APDCoder->setGainRatios( gr );
453 
454  EcalMGPAGainRatio * defaultRatios = new EcalMGPAGainRatio();
455 
456  double theGains[m_Coder->NGAINS+1];
457  theGains[0] = 0.;
458  theGains[3] = 1.;
459  theGains[2] = defaultRatios->gain6Over1() ;
460  theGains[1] = theGains[2]*(defaultRatios->gain12Over6()) ;
461 
462  LogDebug("EcalDigi") << " Gains: " << "\n" << " g1 = " << theGains[1]
463  << "\n" << " g2 = " << theGains[2]
464  << "\n" << " g3 = " << theGains[3] ;
465 
466  delete defaultRatios;
467 
468  const double EBscale (
469  ( agc->getEBValue())*theGains[1]*(m_Coder->MAXADC)*m_EBs25notCont ) ;
470 
471  LogDebug("EcalDigi") << " GeV/ADC = " << agc->getEBValue()
472  << "\n" << " notCont = " << m_EBs25notCont
473  << "\n" << " saturation for EB = " << EBscale
474  << ", " << m_EBs25notCont ;
475 
476  const double EEscale (
477  (agc->getEEValue())*theGains[1]*(m_Coder->MAXADC)*m_EEs25notCont ) ;
478 
479  LogDebug("EcalDigi") << " GeV/ADC = " << agc->getEEValue()
480  << "\n" << " notCont = " << m_EEs25notCont
481  << "\n" << " saturation for EB = " << EEscale
482  << ", " << m_EEs25notCont ;
483 
484  m_Coder->setFullScaleEnergy( EBscale ,
485  EEscale ) ;
486  if( 0 != m_APDCoder ) m_APDCoder->setFullScaleEnergy( EBscale ,
487  EEscale ) ;
488 
489  if( 0 != m_ESOldDigitizer ||
490  0 != m_ESDigitizer )
491  {
492  // ES condition objects
493  edm::ESHandle<ESGain> hesgain ;
495  edm::ESHandle<ESPedestals> hesPedestals ;
497 
498  eventSetup.get<ESGainRcd>(). get( hesgain ) ;
499  eventSetup.get<ESMIPToGeVConstantRcd>(). get( hesMIPToGeV ) ;
500  eventSetup.get<ESPedestalsRcd>(). get( hesPedestals ) ;
501  eventSetup.get<ESIntercalibConstantsRcd>().get( hesMIPs ) ;
502 
503  const ESGain* esgain ( hesgain.product() ) ;
504  const ESPedestals* espeds ( hesPedestals.product() ) ;
505  const ESIntercalibConstants* esmips ( hesMIPs.product() ) ;
506  const ESMIPToGeVConstant* esMipToGeV ( hesMIPToGeV.product() ) ;
507  const int ESGain ( 1.1 > esgain->getESGain() ? 1 : 2 ) ;
508  const double ESMIPToGeV ( ( 1 == ESGain ) ?
509  esMipToGeV->getESValueLow() :
510  esMipToGeV->getESValueHigh() ) ;
511 
513 
514  if( !m_doFastES )
515  {
517  m_ESElectronicsSim->setPedestals( espeds ) ;
518  m_ESElectronicsSim->setMIPs( esmips ) ;
519  m_ESElectronicsSim->setMIPToGeV( ESMIPToGeV ) ;
520  }
521  else
522  {
525  m_ESElectronicsSimFast->setMIPs( esmips ) ;
526  m_ESElectronicsSimFast->setMIPToGeV( ESMIPToGeV ) ;
527  }
528  }
529 }
#define LogDebug(id)
void setMIPToGeV(double MIPToGeV)
void setGain(const int gain)
Definition: ESGain.h:5
void setGain(const int gain)
Definition: ESShape.h:26
void setEventTime(const edm::TimeValue_t &iTime)
void setMIPs(const ESIntercalibConstants *mips)
void setMIPToGeV(const double MIPToGeV)
void setIntercalibConstants(const EcalIntercalibConstantsMC *ical)
Definition: EcalCoder.cc:61
ESOldDigitizer * m_ESOldDigitizer
ESElectronicsSimFast * m_ESElectronicsSimFast
ESDigitizer * m_ESDigitizer
void setPedestals(const ESPedestals *peds)
void setPedestals(const ESPedestals *peds)
void setLaserConstants(const EcalLaserDbService *laser, bool &useLCcorrection)
void setIntercal(const EcalIntercalibConstantsMC *ical)
EBHitResponse * m_APDResponse
const double m_EBs25notCont
void setPedestals(const EcalPedestals *pedestals)
can be fetched every event from the EventSetup
Definition: EcalCoder.cc:49
EBHitResponse * m_EBResponse
void setGain(const int gain)
Definition: ESDigitizer.cc:61
ESElectronicsSim * m_ESElectronicsSim
float gain6Over1() const
unsigned long long TimeValue_t
Definition: Timestamp.h:27
EcalCoder * m_APDCoder
void setGainRatios(const EcalGainRatios *gainRatios)
Definition: EcalCoder.cc:55
const bool m_doFastES
void setFullScaleEnergy(double EBscale, double EEscale)
Definition: EcalCoder.cc:40
const T & get() const
Definition: EventSetup.h:55
T const * product() const
Definition: ESHandle.h:62
float gain12Over6() const
void setMIPs(const ESIntercalibConstants *mips)
const double m_EEs25notCont
EEHitResponse * m_EEResponse
void EcalDigiProducer::checkGeometry ( const edm::EventSetup eventSetup)
protected

Definition at line 532 of file EcalDigiProducer.cc.

References edm::EventSetup::get(), m_Geometry, and updateGeometry().

Referenced by produce().

533 {
534  // TODO find a way to avoid doing this every event
535  edm::ESHandle<CaloGeometry> hGeometry ;
536  eventSetup.get<CaloGeometryRecord>().get( hGeometry ) ;
537 
538  const CaloGeometry* pGeometry = &*hGeometry;
539 
540  if( pGeometry != m_Geometry )
541  {
542  m_Geometry = pGeometry;
543  updateGeometry();
544  }
545 }
const CaloGeometry * m_Geometry
const T & get() const
Definition: EventSetup.h:55
void EcalDigiProducer::produce ( edm::Event event,
const edm::EventSetup eventSetup 
)
virtual

Produces the EDM products,

Implements edm::EDProducer.

Reimplemented in EcalTBDigiProducer.

Definition at line 282 of file EcalDigiProducer.cc.

References cacheEBDigis(), cacheEEDigis(), checkCalibrations(), checkGeometry(), MixCollection< T >::inRegistry(), edm::HandleBase::isValid(), m_apdDigiTag, m_APDDigitizer, m_apdSeparateDigi, m_BarrelDigitizer, m_doFastES, m_EBdigiCollection, m_EEdigiCollection, m_EndcapDigitizer, m_ESdigiCollection, m_ESDigitizer, m_ESOldDigitizer, m_hitsProducerTag, edm::Handle< T >::product(), ESDigitizer::run(), EcalTDigitizer< Traits >::run(), and CaloTDigitizer< Traits >::run().

Referenced by EcalTBDigiProducer::produce().

284 {
285  // Step A: Get Inputs
286 
287  checkGeometry( eventSetup );
288  checkCalibrations( event, eventSetup );
289 
290  // Get input
291  edm::Handle<CrossingFrame<PCaloHit> > crossingFrame;
292 
293  // test access to SimHits
294  const std::string barrelHitsName ( m_hitsProducerTag + "EcalHitsEB" ) ;
295  const std::string endcapHitsName ( m_hitsProducerTag + "EcalHitsEE" ) ;
296  const std::string preshowerHitsName ( m_hitsProducerTag + "EcalHitsES" ) ;
297 
298  event.getByLabel( "mix",
299  barrelHitsName ,
300  crossingFrame ) ;
301 
302  MixCollection<PCaloHit>* EBHits (
303  !crossingFrame.isValid() ? 0 :
304  new MixCollection<PCaloHit>( crossingFrame.product() ) ) ;
305 
306  const bool isEB ( crossingFrame.isValid() &&
307  0 != EBHits &&
308  EBHits->inRegistry() ) ;
309 
310  if( !crossingFrame.isValid() )
311  edm::LogError("EcalDigiProducer") << "Error! can't get the product "
312  << barrelHitsName.c_str() ;
313 
314  event.getByLabel( "mix",
315  endcapHitsName ,
316  crossingFrame ) ;
317 
318  MixCollection<PCaloHit>* EEHits (
319  !crossingFrame.isValid() ? 0 :
320  new MixCollection<PCaloHit>( crossingFrame.product() ) ) ;
321 
322  const bool isEE ( crossingFrame.isValid() &&
323  0 != EEHits &&
324  EEHits->inRegistry() ) ;
325 
326  if( !crossingFrame.isValid() )
327  edm::LogError("EcalDigiProducer") << "Error! can't get the product "
328  << endcapHitsName.c_str() ;
329 
330  event.getByLabel( "mix",
331  preshowerHitsName ,
332  crossingFrame ) ;
333 
334  MixCollection<PCaloHit>* ESHits (
335  !crossingFrame.isValid() ? 0 :
336  new MixCollection<PCaloHit>( crossingFrame.product() ) ) ;
337 
338  const bool isES ( crossingFrame.isValid() &&
339  0 != ESHits &&
340  ESHits->inRegistry() ) ;
341 
342  if( !crossingFrame.isValid() )
343  edm::LogError("EcalDigiProducer") << "Error! can't get the product "
344  << preshowerHitsName.c_str() ;
345 
346  // Step B: Create empty output
347  std::auto_ptr<EBDigiCollection> apdResult ( !m_apdSeparateDigi ? 0 :
348  new EBDigiCollection() ) ;
349  std::auto_ptr<EBDigiCollection> barrelResult ( new EBDigiCollection() ) ;
350  std::auto_ptr<EEDigiCollection> endcapResult ( new EEDigiCollection() ) ;
351  std::auto_ptr<ESDigiCollection> preshowerResult( new ESDigiCollection() ) ;
352 
353  // run the algorithm
354 
355  if( isEB )
356  {
357  std::auto_ptr<MixCollection<PCaloHit> > barrelHits( EBHits ) ;
358  m_BarrelDigitizer->run( *barrelHits ,
359  *barrelResult ) ;
360  cacheEBDigis( &*barrelResult ) ;
361 
362  edm::LogInfo("DigiInfo") << "EB Digis: " << barrelResult->size() ;
363 
364  if( m_apdSeparateDigi )
365  {
366  m_APDDigitizer->run( *barrelHits ,
367  *apdResult ) ;
368 
369  edm::LogInfo("DigiInfo") << "APD Digis: " << apdResult->size() ;
370  }
371  }
372 
373  if( isEE )
374  {
375  std::auto_ptr<MixCollection<PCaloHit> > endcapHits( EEHits ) ;
376  m_EndcapDigitizer->run( *endcapHits ,
377  *endcapResult ) ;
378  edm::LogInfo("EcalDigi") << "EE Digis: " << endcapResult->size() ;
379  cacheEEDigis( &*endcapResult ) ;
380  }
381 
382  if( isES )
383  {
384  std::auto_ptr<MixCollection<PCaloHit> > preshowerHits( ESHits ) ;
385  if (!m_doFastES)
386  {
387  m_ESOldDigitizer->run( *preshowerHits ,
388  *preshowerResult ) ;
389  }
390  else
391  {
392  m_ESDigitizer->run( *preshowerHits,
393  *preshowerResult ) ;
394  }
395  edm::LogInfo("EcalDigi") << "ES Digis: " << preshowerResult->size();
396  }
397 
398  // Step D: Put outputs into event
399  if( m_apdSeparateDigi )
400  event.put( apdResult, m_apdDigiTag ) ;
401 
402  event.put( barrelResult, m_EBdigiCollection ) ;
403  event.put( endcapResult, m_EEdigiCollection ) ;
404  event.put( preshowerResult, m_ESdigiCollection ) ;
405 }
EEDigitizer * m_EndcapDigitizer
const std::string m_ESdigiCollection
const std::string m_hitsProducerTag
ESOldDigitizer * m_ESOldDigitizer
virtual void run(MixCollection< PCaloHit > &input, DigiCollection &output)
turns hits into digis
Definition: ESDigitizer.cc:189
const std::string m_EEdigiCollection
ESDigitizer * m_ESDigitizer
virtual void run(MixCollection< PCaloHit > &input, DigiCollection &output)
void run(MixCollection< PCaloHit > &input, DigiCollection &output)
turns hits into digis
EBDigitizer * m_BarrelDigitizer
bool isValid() const
Definition: HandleBase.h:76
void checkCalibrations(const edm::Event &event, const edm::EventSetup &eventSetup)
void checkGeometry(const edm::EventSetup &eventSetup)
const bool m_doFastES
virtual void cacheEBDigis(const EBDigiCollection *ebDigiPtr) const
T const * product() const
Definition: Handle.h:74
EBDigitizer * m_APDDigitizer
const bool m_apdSeparateDigi
const std::string m_apdDigiTag
virtual void cacheEEDigis(const EEDigiCollection *eeDigiPtr) const
const std::string m_EBdigiCollection
void EcalDigiProducer::updateGeometry ( )
protected

Definition at line 548 of file EcalDigiProducer.cc.

References DetId::Ecal, EcalBarrel, EcalEndcap, EcalPreshower, CaloGeometry::getSubdetectorGeometry(), CaloSubdetectorGeometry::getValidDetIds(), m_APDResponse, m_doFastES, m_EBResponse, m_EEResponse, m_ESDigitizer, m_ESOldDigitizer, m_ESOldResponse, m_ESResponse, m_Geometry, ESDigitizer::setDetIds(), CaloTDigitizer< Traits >::setDetIds(), EcalHitResponse::setGeometry(), and CaloHitResponse::setGeometry().

Referenced by checkGeometry().

549 {
559 
560  const std::vector<DetId>* theESDets (
563 
564  if( !m_doFastES )
565  {
566  if( 0 != m_ESOldDigitizer &&
567  0 != theESDets )
568  m_ESOldDigitizer->setDetIds( *theESDets ) ;
569  }
570  else
571  {
572  if( 0 != m_ESDigitizer &&
573  0 != theESDets )
574  m_ESDigitizer->setDetIds( *theESDets ) ;
575  }
576 }
const CaloSubdetectorGeometry * getSubdetectorGeometry(const DetId &id) const
access the subdetector geometry for the given subdetector directly
Definition: CaloGeometry.cc:43
void setGeometry(const CaloGeometry *geometry)
geometry needed for time-of-flight
CaloHitResponse * m_ESOldResponse
void setDetIds(const std::vector< DetId > &detIds)
tell the digitizer which cells exist; cannot change during a run
Definition: ESDigitizer.cc:53
ESOldDigitizer * m_ESOldDigitizer
ESDigitizer * m_ESDigitizer
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)
EBHitResponse * m_APDResponse
EBHitResponse * m_EBResponse
const CaloGeometry * m_Geometry
ESHitResponse * m_ESResponse
void setGeometry(const CaloSubdetectorGeometry *geometry)
const bool m_doFastES
void setDetIds(const std::vector< DetId > &detIds)
EEHitResponse * m_EEResponse

Member Data Documentation

const bool EcalDigiProducer::m_addESNoise
protected

Definition at line 94 of file EcalDigiProducer.h.

EcalCoder* EcalDigiProducer::m_APDCoder
protected

Definition at line 111 of file EcalDigiProducer.h.

Referenced by checkCalibrations(), EcalDigiProducer(), and ~EcalDigiProducer().

const std::string EcalDigiProducer::m_apdDigiTag
protected

Definition at line 85 of file EcalDigiProducer.h.

Referenced by EcalDigiProducer(), and produce().

EBDigitizer* EcalDigiProducer::m_APDDigitizer
protected

Definition at line 103 of file EcalDigiProducer.h.

Referenced by EcalDigiProducer(), produce(), and ~EcalDigiProducer().

EcalElectronicsSim* EcalDigiProducer::m_APDElectronicsSim
protected

Definition at line 110 of file EcalDigiProducer.h.

Referenced by EcalDigiProducer(), and ~EcalDigiProducer().

const APDSimParameters* EcalDigiProducer::m_apdParameters
protected

Definition at line 86 of file EcalDigiProducer.h.

Referenced by ~EcalDigiProducer().

EBHitResponse* EcalDigiProducer::m_APDResponse
protected
const bool EcalDigiProducer::m_apdSeparateDigi
protected

Definition at line 78 of file EcalDigiProducer.h.

Referenced by EcalDigiProducer(), and produce().

const APDShape EcalDigiProducer::m_APDShape
protected

Definition at line 66 of file EcalDigiProducer.h.

EBDigitizer* EcalDigiProducer::m_BarrelDigitizer
protected

Definition at line 104 of file EcalDigiProducer.h.

Referenced by EcalDigiProducer(), produce(), and ~EcalDigiProducer().

EcalCoder* EcalDigiProducer::m_Coder
protected

Definition at line 108 of file EcalDigiProducer.h.

Referenced by checkCalibrations(), EcalDigiProducer(), and ~EcalDigiProducer().

const bool EcalDigiProducer::m_doFastES
protected

Definition at line 96 of file EcalDigiProducer.h.

Referenced by checkCalibrations(), produce(), and updateGeometry().

CorrelatedNoisifier<EcalCorrMatrix>* EcalDigiProducer::m_EBCorrNoise[3]
protected

Definition at line 115 of file EcalDigiProducer.h.

Referenced by EcalDigiProducer(), and ~EcalDigiProducer().

const std::string EcalDigiProducer::m_EBdigiCollection
protected

Definition at line 71 of file EcalDigiProducer.h.

Referenced by EcalDigiProducer(), and produce().

EBHitResponse* EcalDigiProducer::m_EBResponse
protected
const double EcalDigiProducer::m_EBs25notCont
protected

Definition at line 80 of file EcalDigiProducer.h.

Referenced by checkCalibrations().

const EBShape EcalDigiProducer::m_EBShape
protected

Definition at line 67 of file EcalDigiProducer.h.

CorrelatedNoisifier<EcalCorrMatrix>* EcalDigiProducer::m_EECorrNoise[3]
protected

Definition at line 116 of file EcalDigiProducer.h.

Referenced by EcalDigiProducer(), and ~EcalDigiProducer().

const std::string EcalDigiProducer::m_EEdigiCollection
protected

Definition at line 72 of file EcalDigiProducer.h.

Referenced by EcalDigiProducer(), and produce().

EEHitResponse* EcalDigiProducer::m_EEResponse
protected
const double EcalDigiProducer::m_EEs25notCont
protected

Definition at line 81 of file EcalDigiProducer.h.

Referenced by checkCalibrations().

const EEShape EcalDigiProducer::m_EEShape
protected

Definition at line 68 of file EcalDigiProducer.h.

EcalElectronicsSim* EcalDigiProducer::m_ElectronicsSim
protected

Definition at line 107 of file EcalDigiProducer.h.

Referenced by EcalDigiProducer(), and ~EcalDigiProducer().

EEDigitizer* EcalDigiProducer::m_EndcapDigitizer
protected

Definition at line 105 of file EcalDigiProducer.h.

Referenced by EcalDigiProducer(), produce(), and ~EcalDigiProducer().

const std::string EcalDigiProducer::m_ESdigiCollection
protected

Definition at line 73 of file EcalDigiProducer.h.

Referenced by EcalDigiProducer(), and produce().

ESDigitizer* EcalDigiProducer::m_ESDigitizer
protected

Definition at line 101 of file EcalDigiProducer.h.

Referenced by checkCalibrations(), produce(), updateGeometry(), and ~EcalDigiProducer().

ESElectronicsSim* EcalDigiProducer::m_ESElectronicsSim
protected

Definition at line 98 of file EcalDigiProducer.h.

Referenced by checkCalibrations(), and ~EcalDigiProducer().

ESElectronicsSimFast* EcalDigiProducer::m_ESElectronicsSimFast
protected

Definition at line 100 of file EcalDigiProducer.h.

Referenced by checkCalibrations(), and ~EcalDigiProducer().

ESOldDigitizer* EcalDigiProducer::m_ESOldDigitizer
protected

Definition at line 99 of file EcalDigiProducer.h.

Referenced by checkCalibrations(), produce(), updateGeometry(), and ~EcalDigiProducer().

CaloHitResponse* EcalDigiProducer::m_ESOldResponse
protected

Definition at line 92 of file EcalDigiProducer.h.

Referenced by updateGeometry(), and ~EcalDigiProducer().

ESHitResponse* EcalDigiProducer::m_ESResponse
protected

Definition at line 91 of file EcalDigiProducer.h.

Referenced by updateGeometry(), and ~EcalDigiProducer().

ESShape EcalDigiProducer::m_ESShape
protected

Definition at line 69 of file EcalDigiProducer.h.

Referenced by checkCalibrations().

const CaloGeometry* EcalDigiProducer::m_Geometry
protected

Definition at line 113 of file EcalDigiProducer.h.

Referenced by checkGeometry(), and updateGeometry().

const std::string EcalDigiProducer::m_hitsProducerTag
protected

Definition at line 74 of file EcalDigiProducer.h.

Referenced by produce().

const EcalSimParameterMap* EcalDigiProducer::m_ParameterMap
protected
const unsigned int EcalDigiProducer::m_readoutFrameSize
protected

Definition at line 83 of file EcalDigiProducer.h.

Referenced by EcalDigiProducer().

bool EcalDigiProducer::m_useLCcorrection
protected

Definition at line 76 of file EcalDigiProducer.h.

Referenced by checkCalibrations().