CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
EcalDigiProducer.cc
Go to the documentation of this file.
14 //#include "SimCalorimetry/EcalSimAlgos/interface/ESFastTDigitizer.h"
39 
49 
52  m_APDShape ( params.getParameter<double>( "apdShapeTstart" ) ,
53  params.getParameter<double>( "apdShapeTau" ) ) ,
54  m_EBShape ( ) ,
55  m_EEShape ( ) ,
56  m_ESShape ( ) ,
57  m_EBdigiCollection ( params.getParameter<std::string>("EBdigiCollection") ) ,
58  m_EEdigiCollection ( params.getParameter<std::string>("EEdigiCollection") ) ,
59  m_ESdigiCollection ( params.getParameter<std::string>("ESdigiCollection") ) ,
60  m_hitsProducerTag ( params.getParameter<std::string>("hitsProducer" ) ) ,
61  m_useLCcorrection ( params.getUntrackedParameter<bool>("UseLCcorrection") ) ,
62  m_apdSeparateDigi ( params.getParameter<bool> ("apdSeparateDigi") ) ,
63 
64  m_EBs25notCont ( params.getParameter<double> ("EBs25notContainment") ) ,
65  m_EEs25notCont ( params.getParameter<double> ("EEs25notContainment") ) ,
66 
67  m_readoutFrameSize ( params.getParameter<int> ("readoutFrameSize") ) ,
68  m_ParameterMap ( new EcalSimParameterMap(
69  params.getParameter<double> ("simHitToPhotoelectronsBarrel") ,
70  params.getParameter<double> ("simHitToPhotoelectronsEndcap") ,
71  params.getParameter<double> ("photoelectronsToAnalogBarrel") ,
72  params.getParameter<double> ("photoelectronsToAnalogEndcap") ,
73  params.getParameter<double> ("samplingFactor") ,
74  params.getParameter<double> ("timePhase") ,
75  m_readoutFrameSize ,
76  params.getParameter<int> ("binOfMaximum") ,
77  params.getParameter<bool> ("doPhotostatistics") ,
78  params.getParameter<bool> ("syncPhase") ) ) ,
79 
80  m_apdDigiTag ( params.getParameter<std::string> ("apdDigiTag" ) ) ,
81  m_apdParameters ( new APDSimParameters(
82  params.getParameter<bool> ("apdAddToBarrel" ) ,
83  m_apdSeparateDigi ,
84  params.getParameter<double> ("apdSimToPELow" ) ,
85  params.getParameter<double> ("apdSimToPEHigh" ) ,
86  params.getParameter<double> ("apdTimeOffset" ) ,
87  params.getParameter<double> ("apdTimeOffWidth" ) ,
88  params.getParameter<bool> ("apdDoPEStats" ) ,
89  m_apdDigiTag ,
90  params.getParameter<std::vector<double> > ( "apdNonlParms" ) ) ) ,
91 
92  m_APDResponse ( !m_apdSeparateDigi ? 0 :
93  new EBHitResponse( m_ParameterMap ,
94  &m_EBShape ,
95  true ,
96  m_apdParameters ,
97  &m_APDShape ) ) ,
98 
99  m_EBResponse ( new EBHitResponse( m_ParameterMap ,
100  &m_EBShape ,
101  false , // barrel
102  m_apdParameters ,
103  &m_APDShape ) ) ,
104 
105  m_EEResponse ( new EEHitResponse( m_ParameterMap,
106  &m_EEShape ) ) ,
107  m_ESResponse ( new ESHitResponse( m_ParameterMap, &m_ESShape ) ) ,
108  m_ESOldResponse ( new CaloHitResponse( m_ParameterMap, &m_ESShape ) ) ,
109 
110  m_addESNoise ( params.getParameter<bool> ("doESNoise") ) ,
111  m_doFastES ( params.getParameter<bool> ("doFast" ) ) ,
112 
113  m_ESElectronicsSim ( m_doFastES ? 0 :
114  new ESElectronicsSim( m_addESNoise ) ) ,
115 
116  m_ESOldDigitizer ( m_doFastES ? 0 :
117  new ESOldDigitizer( m_ESOldResponse ,
118  m_ESElectronicsSim ,
119  m_addESNoise ) ) ,
120 
121  m_ESElectronicsSimFast ( !m_doFastES ? 0 :
122  new ESElectronicsSimFast( m_addESNoise ) ) ,
123 
124  m_ESDigitizer ( !m_doFastES ? 0 :
125  new ESDigitizer( m_ESResponse ,
126  m_ESElectronicsSimFast ,
127  m_addESNoise ) ) ,
128 
129  m_APDDigitizer ( 0 ) ,
130  m_BarrelDigitizer ( 0 ) ,
131  m_EndcapDigitizer ( 0 ) ,
132  m_ElectronicsSim ( 0 ) ,
133  m_Coder ( 0 ) ,
134  m_APDElectronicsSim ( 0 ) ,
135  m_APDCoder ( 0 ) ,
136  m_Geometry ( 0 ) ,
137  m_EBCorrNoise ( ) ,
138  m_EECorrNoise ( )
139 {
140  if(m_apdSeparateDigi) mixMod.produces<EBDigiCollection>(m_apdDigiTag);
141  mixMod.produces<EBDigiCollection>(m_EBdigiCollection);
142  mixMod.produces<EEDigiCollection>(m_EEdigiCollection);
143  mixMod.produces<ESDigiCollection>(m_ESdigiCollection);
144 
145  const std::vector<double> ebCorMatG12 = params.getParameter< std::vector<double> >("EBCorrNoiseMatrixG12");
146  const std::vector<double> eeCorMatG12 = params.getParameter< std::vector<double> >("EECorrNoiseMatrixG12");
147  const std::vector<double> ebCorMatG06 = params.getParameter< std::vector<double> >("EBCorrNoiseMatrixG06");
148  const std::vector<double> eeCorMatG06 = params.getParameter< std::vector<double> >("EECorrNoiseMatrixG06");
149  const std::vector<double> ebCorMatG01 = params.getParameter< std::vector<double> >("EBCorrNoiseMatrixG01");
150  const std::vector<double> eeCorMatG01 = params.getParameter< std::vector<double> >("EECorrNoiseMatrixG01");
151 
152  const bool applyConstantTerm = params.getParameter<bool> ("applyConstantTerm");
153  const double rmsConstantTerm = params.getParameter<double> ("ConstantTerm");
154 
155  const bool addNoise = params.getParameter<bool> ("doNoise");
156  const bool cosmicsPhase = params.getParameter<bool> ("cosmicsPhase");
157  const double cosmicsShift = params.getParameter<double> ("cosmicsShift");
158 
159 //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
160 
161  // further phase for cosmics studies
162  if( cosmicsPhase )
163  {
164  m_EBResponse->setPhaseShift( 1. + cosmicsShift ) ;
165  m_EEResponse->setPhaseShift( 1. + cosmicsShift ) ;
166  }
167 
168  EcalCorrMatrix ebMatrix[ 3 ] ;
169  EcalCorrMatrix eeMatrix[ 3 ] ;
170 
171  assert( ebCorMatG12.size() == m_readoutFrameSize ) ;
172  assert( eeCorMatG12.size() == m_readoutFrameSize ) ;
173  assert( ebCorMatG06.size() == m_readoutFrameSize ) ;
174  assert( eeCorMatG06.size() == m_readoutFrameSize ) ;
175  assert( ebCorMatG01.size() == m_readoutFrameSize ) ;
176  assert( eeCorMatG01.size() == m_readoutFrameSize ) ;
177 
178  assert( 1.e-7 > fabs( ebCorMatG12[0] - 1.0 ) ) ;
179  assert( 1.e-7 > fabs( ebCorMatG06[0] - 1.0 ) ) ;
180  assert( 1.e-7 > fabs( ebCorMatG01[0] - 1.0 ) ) ;
181  assert( 1.e-7 > fabs( eeCorMatG12[0] - 1.0 ) ) ;
182  assert( 1.e-7 > fabs( eeCorMatG06[0] - 1.0 ) ) ;
183  assert( 1.e-7 > fabs( eeCorMatG01[0] - 1.0 ) ) ;
184 
185  for ( unsigned int row ( 0 ) ; row != m_readoutFrameSize ; ++row )
186  {
187  assert( 0 == row || 1. >= ebCorMatG12[row] ) ;
188  assert( 0 == row || 1. >= ebCorMatG06[row] ) ;
189  assert( 0 == row || 1. >= ebCorMatG01[row] ) ;
190  assert( 0 == row || 1. >= eeCorMatG12[row] ) ;
191  assert( 0 == row || 1. >= eeCorMatG06[row] ) ;
192  assert( 0 == row || 1. >= eeCorMatG01[row] ) ;
193  for ( unsigned int column ( 0 ) ; column <= row ; ++column )
194  {
195  const unsigned int index ( row - column ) ;
196  ebMatrix[0]( row, column ) = ebCorMatG12[ index ] ;
197  eeMatrix[0]( row, column ) = eeCorMatG12[ index ] ;
198  ebMatrix[1]( row, column ) = ebCorMatG06[ index ] ;
199  eeMatrix[1]( row, column ) = eeCorMatG06[ index ] ;
200  ebMatrix[2]( row, column ) = ebCorMatG01[ index ] ;
201  eeMatrix[2]( row, column ) = eeCorMatG01[ index ] ;
202  }
203  }
204 
205  m_EBCorrNoise[0] = new CorrelatedNoisifier<EcalCorrMatrix>( ebMatrix[0] ) ;
206  m_EECorrNoise[0] = new CorrelatedNoisifier<EcalCorrMatrix>( eeMatrix[0] ) ;
207  m_EBCorrNoise[1] = new CorrelatedNoisifier<EcalCorrMatrix>( ebMatrix[1] ) ;
208  m_EECorrNoise[1] = new CorrelatedNoisifier<EcalCorrMatrix>( eeMatrix[1] ) ;
209  m_EBCorrNoise[2] = new CorrelatedNoisifier<EcalCorrMatrix>( ebMatrix[2] ) ;
210  m_EECorrNoise[2] = new CorrelatedNoisifier<EcalCorrMatrix>( eeMatrix[2] ) ;
211 
212  m_Coder = new EcalCoder( addNoise ,
213  m_EBCorrNoise[0] ,
214  m_EECorrNoise[0] ,
215  m_EBCorrNoise[1] ,
216  m_EECorrNoise[1] ,
217  m_EBCorrNoise[2] ,
218  m_EECorrNoise[2] ) ;
219 
221  m_Coder ,
222  applyConstantTerm ,
223  rmsConstantTerm ) ;
224 
225  if( m_apdSeparateDigi )
226  {
227  m_APDCoder = new EcalCoder( false ,
228  m_EBCorrNoise[0] ,
229  m_EECorrNoise[0] ,
230  m_EBCorrNoise[1] ,
231  m_EECorrNoise[1] ,
232  m_EBCorrNoise[2] ,
233  m_EECorrNoise[2] ) ;
234 
236  m_APDCoder ,
237  applyConstantTerm ,
238  rmsConstantTerm ) ;
239 
242  false ) ;
243  }
244 
247  addNoise ) ;
248 
251  addNoise ) ;
252 }
253 
255 {
256  delete m_EndcapDigitizer ;
257  delete m_BarrelDigitizer ;
258  delete m_APDDigitizer ;
259  delete m_APDElectronicsSim ;
260  delete m_APDCoder ;
261  delete m_ElectronicsSim ;
262  delete m_Coder ;
263  delete m_EBCorrNoise[0] ;
264  delete m_EECorrNoise[0] ;
265  delete m_EBCorrNoise[1] ;
266  delete m_EECorrNoise[1] ;
267  delete m_EBCorrNoise[2] ;
268  delete m_EECorrNoise[2] ;
269 
270  delete m_ESDigitizer ;
271  delete m_ESElectronicsSimFast ;
272  delete m_ESOldDigitizer ;
273  delete m_ESElectronicsSim ;
274 
275  delete m_ESOldResponse ;
276  delete m_ESResponse ;
277  delete m_EEResponse ;
278  delete m_EBResponse ;
279  delete m_APDResponse ;
280 
281  delete m_apdParameters ;
282  delete m_ParameterMap ;
283 }
284 
285 void
287  checkGeometry( eventSetup );
288  checkCalibrations( event, eventSetup );
290  if(m_apdSeparateDigi) {
292  }
294  if(m_doFastES) {
296  } else {
298  }
299 }
300 
301 void
302 EcalDigiProducer::accumulateCaloHits(HitsHandle const& ebHandle, HitsHandle const& eeHandle, HitsHandle const& esHandle, int bunchCrossing) {
303  if(ebHandle.isValid()) {
304  m_BarrelDigitizer->add(*ebHandle.product(), bunchCrossing);
305 
306  if(m_apdSeparateDigi) {
307  m_APDDigitizer->add(*ebHandle.product(), bunchCrossing);
308  }
309  }
310 
311  if(eeHandle.isValid()) {
312  m_EndcapDigitizer->add(*eeHandle.product(), bunchCrossing);
313  }
314 
315  if(esHandle.isValid()) {
316  if(m_doFastES) {
317  m_ESDigitizer->add(*esHandle.product(), bunchCrossing);
318  } else {
319  m_ESOldDigitizer->add(*esHandle.product(), bunchCrossing);
320  }
321  }
322 }
323 
324 void
326  // Step A: Get Inputs
327  edm::InputTag ebTag(m_hitsProducerTag, "EcalHitsEB");
329  e.getByLabel(ebTag, ebHandle);
330 
331  edm::InputTag eeTag(m_hitsProducerTag, "EcalHitsEE");
333  e.getByLabel(eeTag, eeHandle);
334 
335  edm::InputTag esTag(m_hitsProducerTag, "EcalHitsES");
337  e.getByLabel(esTag, esHandle);
338 
339  accumulateCaloHits(ebHandle, eeHandle, esHandle, 0);
340 }
341 
342 void
344  // Step A: Get Inputs
345  edm::InputTag ebTag(m_hitsProducerTag, "EcalHitsEB");
347  e.getByLabel(ebTag, ebHandle);
348 
349  edm::InputTag eeTag(m_hitsProducerTag, "EcalHitsEE");
351  e.getByLabel(eeTag, eeHandle);
352 
353  edm::InputTag esTag(m_hitsProducerTag, "EcalHitsES");
355  e.getByLabel(esTag, esHandle);
356 
357  accumulateCaloHits(ebHandle, eeHandle, esHandle, e.bunchCrossing());
358 }
359 
360 void
362  // Step B: Create empty output
363  std::auto_ptr<EBDigiCollection> apdResult ( !m_apdSeparateDigi ? 0 :
364  new EBDigiCollection() ) ;
365  std::auto_ptr<EBDigiCollection> barrelResult ( new EBDigiCollection() ) ;
366  std::auto_ptr<EEDigiCollection> endcapResult ( new EEDigiCollection() ) ;
367  std::auto_ptr<ESDigiCollection> preshowerResult( new ESDigiCollection() ) ;
368 
369  // run the algorithm
370 
371  m_BarrelDigitizer->run( *barrelResult ) ;
372  cacheEBDigis( &*barrelResult ) ;
373 
374  edm::LogInfo("DigiInfo") << "EB Digis: " << barrelResult->size() ;
375 
376  if( m_apdSeparateDigi ) {
377  m_APDDigitizer->run( *apdResult ) ;
378  edm::LogInfo("DigiInfo") << "APD Digis: " << apdResult->size() ;
379  }
380 
381  m_EndcapDigitizer->run( *endcapResult ) ;
382  edm::LogInfo("EcalDigi") << "EE Digis: " << endcapResult->size() ;
383  cacheEEDigis( &*endcapResult ) ;
384 
385  if(m_doFastES) {
386  m_ESDigitizer->run( *preshowerResult ) ;
387  } else {
388  m_ESOldDigitizer->run( *preshowerResult ) ;
389  }
390  edm::LogInfo("EcalDigi") << "ES Digis: " << preshowerResult->size();
391 
392 
393  // Step D: Put outputs into event
394  if( m_apdSeparateDigi ) {
395  event.put( apdResult, m_apdDigiTag ) ;
396  }
397 
398  event.put( barrelResult, m_EBdigiCollection ) ;
399  event.put( endcapResult, m_EEdigiCollection ) ;
400  event.put( preshowerResult, m_ESdigiCollection ) ;
401 }
402 
403 void
405 {
406  // Pedestals from event setup
407 
409  eventSetup.get<EcalPedestalsRcd>().get( dbPed ) ;
410  const EcalPedestals* pedestals ( dbPed.product() ) ;
411 
412  m_Coder->setPedestals( pedestals ) ;
413  if( 0 != m_APDCoder ) m_APDCoder->setPedestals( pedestals ) ;
414 
415  // Ecal Intercalibration Constants
417  eventSetup.get<EcalIntercalibConstantsMCRcd>().get( pIcal ) ;
418  const EcalIntercalibConstantsMC* ical ( pIcal.product() ) ;
419 
421  if( 0 != m_APDCoder) m_APDCoder->setIntercalibConstants( ical ) ;
422 
423  m_EBResponse->setIntercal( ical ) ;
424  if( 0 != m_APDResponse ) m_APDResponse->setIntercal( ical ) ;
425 
426  // Ecal LaserCorrection Constants
428  eventSetup.get<EcalLaserDbRecord>().get(laser);
429  const edm::TimeValue_t eventTimeValue = event.time().value();
430 
431  m_EBResponse->setEventTime(eventTimeValue);
433 
434  m_EEResponse->setEventTime(eventTimeValue);
436 
437  // ADC -> GeV Scale
439  eventSetup.get<EcalADCToGeVConstantRcd>().get(pAgc);
440  const EcalADCToGeVConstant* agc = pAgc.product();
441 
442  // Gain Ratios
444  eventSetup.get<EcalGainRatiosRcd>().get(pRatio);
445  const EcalGainRatios* gr = pRatio.product();
446 
447  m_Coder->setGainRatios( gr );
448  if( 0 != m_APDCoder) m_APDCoder->setGainRatios( gr );
449 
450  EcalMGPAGainRatio * defaultRatios = new EcalMGPAGainRatio();
451 
452  double theGains[m_Coder->NGAINS+1];
453  theGains[0] = 0.;
454  theGains[3] = 1.;
455  theGains[2] = defaultRatios->gain6Over1() ;
456  theGains[1] = theGains[2]*(defaultRatios->gain12Over6()) ;
457 
458  LogDebug("EcalDigi") << " Gains: " << "\n" << " g1 = " << theGains[1]
459  << "\n" << " g2 = " << theGains[2]
460  << "\n" << " g3 = " << theGains[3] ;
461 
462  delete defaultRatios;
463 
464  const double EBscale (
465  ( agc->getEBValue())*theGains[1]*(m_Coder->MAXADC)*m_EBs25notCont ) ;
466 
467  LogDebug("EcalDigi") << " GeV/ADC = " << agc->getEBValue()
468  << "\n" << " notCont = " << m_EBs25notCont
469  << "\n" << " saturation for EB = " << EBscale
470  << ", " << m_EBs25notCont ;
471 
472  const double EEscale (
473  (agc->getEEValue())*theGains[1]*(m_Coder->MAXADC)*m_EEs25notCont ) ;
474 
475  LogDebug("EcalDigi") << " GeV/ADC = " << agc->getEEValue()
476  << "\n" << " notCont = " << m_EEs25notCont
477  << "\n" << " saturation for EB = " << EEscale
478  << ", " << m_EEs25notCont ;
479 
480  m_Coder->setFullScaleEnergy( EBscale ,
481  EEscale ) ;
482  if( 0 != m_APDCoder ) m_APDCoder->setFullScaleEnergy( EBscale ,
483  EEscale ) ;
484 
485  if( 0 != m_ESOldDigitizer ||
486  0 != m_ESDigitizer )
487  {
488  // ES condition objects
489  edm::ESHandle<ESGain> hesgain ;
491  edm::ESHandle<ESPedestals> hesPedestals ;
493 
494  eventSetup.get<ESGainRcd>(). get( hesgain ) ;
495  eventSetup.get<ESMIPToGeVConstantRcd>(). get( hesMIPToGeV ) ;
496  eventSetup.get<ESPedestalsRcd>(). get( hesPedestals ) ;
497  eventSetup.get<ESIntercalibConstantsRcd>().get( hesMIPs ) ;
498 
499  const ESGain* esgain ( hesgain.product() ) ;
500  const ESPedestals* espeds ( hesPedestals.product() ) ;
501  const ESIntercalibConstants* esmips ( hesMIPs.product() ) ;
502  const ESMIPToGeVConstant* esMipToGeV ( hesMIPToGeV.product() ) ;
503  const int ESGain ( 1.1 > esgain->getESGain() ? 1 : 2 ) ;
504  const double ESMIPToGeV ( ( 1 == ESGain ) ?
505  esMipToGeV->getESValueLow() :
506  esMipToGeV->getESValueHigh() ) ;
507 
509 
510  if( !m_doFastES )
511  {
513  m_ESElectronicsSim->setPedestals( espeds ) ;
514  m_ESElectronicsSim->setMIPs( esmips ) ;
515  m_ESElectronicsSim->setMIPToGeV( ESMIPToGeV ) ;
516  }
517  else
518  {
521  m_ESElectronicsSimFast->setMIPs( esmips ) ;
522  m_ESElectronicsSimFast->setMIPToGeV( ESMIPToGeV ) ;
523  }
524  }
525 }
526 
527 void
529 {
530  // TODO find a way to avoid doing this every event
531  edm::ESHandle<CaloGeometry> hGeometry ;
532  eventSetup.get<CaloGeometryRecord>().get( hGeometry ) ;
533 
534  const CaloGeometry* pGeometry = &*hGeometry;
535 
536  if( pGeometry != m_Geometry )
537  {
538  m_Geometry = pGeometry;
539  updateGeometry();
540  }
541 }
542 
543 void
545 {
555 
556  const std::vector<DetId>* theESDets (
559 
560  if( !m_doFastES )
561  {
562  if( 0 != m_ESOldDigitizer &&
563  0 != theESDets )
564  m_ESOldDigitizer->setDetIds( *theESDets ) ;
565  }
566  else
567  {
568  if( 0 != m_ESDigitizer &&
569  0 != theESDets )
570  m_ESDigitizer->setDetIds( *theESDets ) ;
571  }
572 }
#define LogDebug(id)
EEDigitizer * m_EndcapDigitizer
virtual void accumulate(edm::Event const &e, edm::EventSetup const &c)
T getParameter(std::string const &) const
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
void setMIPToGeV(double MIPToGeV)
CaloHitResponse * m_ESOldResponse
void setGain(const int gain)
virtual ~EcalDigiProducer()
EcalTDigitizer< EEDigitizerTraits > EEDigitizer
CorrelatedNoisifier< EcalCorrMatrix > * m_EBCorrNoise[3]
void initializeHits()
const std::string m_ESdigiCollection
const EcalSimParameterMap * m_ParameterMap
Definition: ESGain.h:5
void setGain(const int gain)
Definition: ESShape.h:26
void setDetIds(const std::vector< DetId > &detIds)
tell the digitizer which cells exist; cannot change during a run
Definition: ESDigitizer.cc:53
void setEventTime(const edm::TimeValue_t &iTime)
void add(const std::vector< PCaloHit > &hits, int bunchCrossing)
const std::string m_hitsProducerTag
void add(const std::vector< PCaloHit > &hits, int bunchCrossing)
void setMIPs(const ESIntercalibConstants *mips)
void setMIPToGeV(const double MIPToGeV)
void setIntercalibConstants(const EcalIntercalibConstantsMC *ical)
Definition: EcalCoder.cc:61
virtual void initializeEvent(edm::Event const &e, edm::EventSetup const &c)
ESOldDigitizer * m_ESOldDigitizer
const std::string m_EEdigiCollection
ESElectronicsSimFast * m_ESElectronicsSimFast
virtual void initializeHits()
ESDigitizer * m_ESDigitizer
const APDSimParameters * m_apdParameters
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 setPedestals(const ESPedestals *peds)
void setPedestals(const ESPedestals *peds)
CorrelatedNoisifier< EcalCorrMatrix > * m_EECorrNoise[3]
const unsigned int m_readoutFrameSize
void setLaserConstants(const EcalLaserDbService *laser, bool &useLCcorrection)
EcalElectronicsSim * m_ElectronicsSim
void accumulateCaloHits(HitsHandle const &ebHandle, HitsHandle const &eeHandle, HitsHandle const &esHandle, int bunchCrossing)
void setIntercal(const EcalIntercalibConstantsMC *ical)
EBHitResponse * m_APDResponse
Creates electronics signals from hits.
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 setPhaseShift(double phaseShift)
void setGain(const int gain)
Definition: ESDigitizer.cc:61
ESElectronicsSim * m_ESElectronicsSim
EBDigitizer * m_BarrelDigitizer
float gain6Over1() const
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
math::ErrorD< CaloSamples::MAXSAMPLES >::type EcalCorrMatrix
bool isValid() const
Definition: HandleBase.h:76
unsigned long long TimeValue_t
Definition: Timestamp.h:27
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:361
const CaloGeometry * m_Geometry
void checkCalibrations(const edm::Event &event, const edm::EventSetup &eventSetup)
EcalCoder * m_APDCoder
void checkGeometry(const edm::EventSetup &eventSetup)
ESHitResponse * m_ESResponse
void setGeometry(const CaloSubdetectorGeometry *geometry)
void setGainRatios(const EcalGainRatios *gainRatios)
Definition: EcalCoder.cc:55
void run(MixCollection< PCaloHit > &, DigiCollection &)
turns hits into digis
virtual void cacheEBDigis(const EBDigiCollection *ebDigiPtr) const
void setFullScaleEnergy(double EBscale, double EEscale)
Definition: EcalCoder.cc:40
EcalTDigitizer< EBDigitizerTraits > EBDigitizer
const T & get() const
Definition: EventSetup.h:55
T const * product() const
Definition: ESHandle.h:62
float gain12Over6() const
T const * product() const
Definition: Handle.h:74
EBDigitizer * m_APDDigitizer
const bool m_apdSeparateDigi
virtual void finalizeEvent(edm::Event &e, edm::EventSetup const &c)
bool getByLabel(edm::InputTag const &tag, edm::Handle< T > &result) const
const std::string m_apdDigiTag
void setDetIds(const std::vector< DetId > &detIds)
EcalDigiProducer(const edm::ParameterSet &params, edm::EDProducer &mixMod)
virtual void run(DigiCollection &output)
void setMIPs(const ESIntercalibConstants *mips)
virtual void cacheEEDigis(const EEDigiCollection *eeDigiPtr) const
const std::string m_EBdigiCollection
virtual void run(ESDigiCollection &output)
turns hits into digis
Definition: ESDigitizer.cc:189
EcalElectronicsSim * m_APDElectronicsSim
const double m_EEs25notCont
EEHitResponse * m_EEResponse