CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Private Types | Private Member Functions | Private Attributes
EcalSignalGenerator< ECALDIGITIZERTRAITS > Class Template Reference

#include <EcalSignalGenerator.h>

Inheritance diagram for EcalSignalGenerator< ECALDIGITIZERTRAITS >:
EcalBaseSignalGenerator CaloVNoiseSignalGenerator

Public Types

typedef ECALDIGITIZERTRAITS::DigiCollection COLLECTION
 
typedef ECALDIGITIZERTRAITS::Digi DIGI
 

Public Member Functions

 EcalSignalGenerator ()
 
 EcalSignalGenerator (const edm::InputTag &inputTag, const edm::EDGetTokenT< COLLECTION > &t, const double EBs25notCont, const double EEs25notCont, const double peToABarrel, const double peToAEndcap)
 
virtual void fill (edm::ModuleCallingContext const *mcc)
 
void initializeEvent (const edm::Event *event, const edm::EventSetup *eventSetup)
 
void initializeEvent (const edm::EventPrincipal *eventPrincipal, const edm::EventSetup *eventSetup)
 some users use EventPrincipals, not Events. We support both More...
 
 ~EcalSignalGenerator () override
 
- Public Member Functions inherited from EcalBaseSignalGenerator
 EcalBaseSignalGenerator ()
 
 ~EcalBaseSignalGenerator () override
 
- Public Member Functions inherited from CaloVNoiseSignalGenerator
 CaloVNoiseSignalGenerator ()
 
bool contains (const DetId &detId) const
 
void fillEvent (CLHEP::HepRandomEngine *)
 fill theNoiseSignals with one event's worth of noise, in units of pe More...
 
void fillEvent ()
 
void getNoiseSignals (std::vector< CaloSamples > &noiseSignals)
 
void setNoiseSignals (const std::vector< CaloSamples > &noiseSignals)
 
virtual ~CaloVNoiseSignalGenerator ()
 

Private Types

enum  { NBITS = 12, MAXADC = 4095, ADCGAINSWITCH = 4079, NGAINS = 3 }
 

Private Member Functions

void fillNoiseSignals () override
 
void fillNoiseSignals (CLHEP::HepRandomEngine *) override
 
double fullScaleEnergy (const DetId &detId) const
 
const std::vector< float > GetGainRatios (const DetId &detid)
 
double peToAConversion (const DetId &detId) const
 
CaloSamples samplesInPE (const DIGI &digi)
 
bool validDigi (const DIGI &digi)
 

Private Attributes

const EcalADCToGeVConstantagc
 
const ESGainesgain
 
int ESgain
 
const ESIntercalibConstantsesmips
 
const ESMIPToGeVConstantesMipToGeV
 
double ESMIPToGeV
 
edm::ESHandle< EcalGainRatiosgrHandle
 
edm::ESHandle< ESGainhesgain
 
edm::ESHandle< ESIntercalibConstantshesMIPs
 
edm::ESHandle< ESMIPToGeVConstanthesMIPToGeV
 
const EcalIntercalibConstantsMCical
 
double m_EBs25notCont
 
double m_EEs25notCont
 
double m_maxEneEB
 
double m_maxEneEE
 
double m_peToABarrel
 
double m_peToAEndcap
 
edm::ESHandle< EcalADCToGeVConstantpAgc
 
edm::ESHandle< EcalIntercalibConstantsMCpIcal
 
double theDefaultGains [NGAINS]
 
const edm::EventtheEvent
 these fields are set in initializeEvent() More...
 
const edm::EventPrincipaltheEventPrincipal
 
edm::InputTag theInputTag
 these come from the ParameterSet More...
 
edm::EDGetTokenT< COLLECTIONtok_
 

Additional Inherited Members

- Protected Attributes inherited from CaloVNoiseSignalGenerator
std::vector< CaloSamplestheNoiseSignals
 

Detailed Description

template<class ECALDIGITIZERTRAITS>
class EcalSignalGenerator< ECALDIGITIZERTRAITS >

Definition at line 46 of file EcalSignalGenerator.h.

Member Typedef Documentation

template<class ECALDIGITIZERTRAITS>
typedef ECALDIGITIZERTRAITS::DigiCollection EcalSignalGenerator< ECALDIGITIZERTRAITS >::COLLECTION

Definition at line 49 of file EcalSignalGenerator.h.

template<class ECALDIGITIZERTRAITS>
typedef ECALDIGITIZERTRAITS::Digi EcalSignalGenerator< ECALDIGITIZERTRAITS >::DIGI

Definition at line 48 of file EcalSignalGenerator.h.

Member Enumeration Documentation

template<class ECALDIGITIZERTRAITS>
anonymous enum
private
Enumerator
NBITS 
MAXADC 
ADCGAINSWITCH 
NGAINS 

Definition at line 181 of file EcalSignalGenerator.h.

181  {
182  NBITS = 12, // number of available bits
183  MAXADC = 4095, // 2^12 -1, adc max range
184  ADCGAINSWITCH = 4079, // adc gain switch
185  NGAINS = 3
186  }; // number of electronic gains

Constructor & Destructor Documentation

template<class ECALDIGITIZERTRAITS>
EcalSignalGenerator< ECALDIGITIZERTRAITS >::EcalSignalGenerator ( )
inline
template<class ECALDIGITIZERTRAITS>
EcalSignalGenerator< ECALDIGITIZERTRAITS >::EcalSignalGenerator ( const edm::InputTag inputTag,
const edm::EDGetTokenT< COLLECTION > &  t,
const double  EBs25notCont,
const double  EEs25notCont,
const double  peToABarrel,
const double  peToAEndcap 
)
inline

Definition at line 53 of file EcalSignalGenerator.h.

59  : EcalBaseSignalGenerator(), theEvent(nullptr), theEventPrincipal(nullptr), theInputTag(inputTag), tok_(t) {
60  EcalMGPAGainRatio* defaultRatios = new EcalMGPAGainRatio();
61  theDefaultGains[2] = defaultRatios->gain6Over1();
62  theDefaultGains[1] = theDefaultGains[2] * (defaultRatios->gain12Over6());
63  m_EBs25notCont = EBs25notCont;
64  m_EEs25notCont = EEs25notCont;
65  m_peToABarrel = peToABarrel;
66  m_peToAEndcap = peToAEndcap;
67  }
const edm::Event * theEvent
these fields are set in initializeEvent()
double theDefaultGains[NGAINS]
edm::EDGetTokenT< COLLECTION > tok_
float gain6Over1() const
const edm::EventPrincipal * theEventPrincipal
edm::InputTag theInputTag
these come from the ParameterSet
float gain12Over6() const
template<class ECALDIGITIZERTRAITS>
EcalSignalGenerator< ECALDIGITIZERTRAITS >::~EcalSignalGenerator ( )
inlineoverride

Definition at line 69 of file EcalSignalGenerator.h.

69 {}

Member Function Documentation

template<class ECALDIGITIZERTRAITS>
virtual void EcalSignalGenerator< ECALDIGITIZERTRAITS >::fill ( edm::ModuleCallingContext const *  mcc)
inlinevirtual

Definition at line 133 of file EcalSignalGenerator.h.

Referenced by PreMixingEcalWorker::addPileups().

133  {
134  theNoiseSignals.clear();
136  const COLLECTION* digis = nullptr;
137  // try accessing by whatever is set, Event or EventPrincipal
138  if (theEvent) {
139  if (theEvent->getByToken(tok_, pDigis)) {
140  digis = pDigis.product(); // get a ptr to the product
141  } else {
142  throw cms::Exception("EcalSignalGenerator") << "Cannot find input data " << theInputTag;
143  }
144  } else if (theEventPrincipal) {
145  std::shared_ptr<edm::Wrapper<COLLECTION> const> digisPTR =
146  edm::getProductByTag<COLLECTION>(*theEventPrincipal, theInputTag, mcc);
147  if (digisPTR) {
148  digis = digisPTR->product();
149  }
150  } else {
151  throw cms::Exception("EcalSignalGenerator") << "No Event or EventPrincipal was set";
152  }
153 
154  if (digis) {
155  // loop over digis, adding these to the existing maps
156  for (typename COLLECTION::const_iterator it = digis->begin(); it != digis->end(); ++it) {
157  // need to convert to something useful
158  if (validDigi(*it)) {
159  theNoiseSignals.push_back(samplesInPE(*it));
160  }
161  }
162  }
163  //else { std::cout << " NO digis for this input: " << theInputTag << std::endl;}
164  }
const edm::Event * theEvent
these fields are set in initializeEvent()
ECALDIGITIZERTRAITS::DigiCollection COLLECTION
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:517
edm::EDGetTokenT< COLLECTION > tok_
std::vector< CaloSamples > theNoiseSignals
bool validDigi(const DIGI &digi)
const edm::EventPrincipal * theEventPrincipal
T const * product() const
Definition: Handle.h:74
CaloSamples samplesInPE(const DIGI &digi)
edm::InputTag theInputTag
these come from the ParameterSet
template<class ECALDIGITIZERTRAITS>
void EcalSignalGenerator< ECALDIGITIZERTRAITS >::fillNoiseSignals ( )
inlineoverrideprivatevirtual

Implements CaloVNoiseSignalGenerator.

Definition at line 176 of file EcalSignalGenerator.h.

176 {}
template<class ECALDIGITIZERTRAITS>
void EcalSignalGenerator< ECALDIGITIZERTRAITS >::fillNoiseSignals ( CLHEP::HepRandomEngine *  )
inlineoverrideprivatevirtual

if you want to fill signals on demand, override this subclass is responsible for clearing theNoiseSignals before adding

Implements CaloVNoiseSignalGenerator.

Definition at line 177 of file EcalSignalGenerator.h.

177 {}
template<class ECALDIGITIZERTRAITS>
double EcalSignalGenerator< ECALDIGITIZERTRAITS >::fullScaleEnergy ( const DetId detId) const
inlineprivate

Definition at line 203 of file EcalSignalGenerator.h.

Referenced by EcalSignalGenerator< EBDigitizerTraits >::samplesInPE(), and EcalSignalGenerator< EEDigitizerTraits >::samplesInPE().

203 { return detId.subdetId() == EcalBarrel ? m_maxEneEB : m_maxEneEE; }
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:41
template<class ECALDIGITIZERTRAITS>
const std::vector<float> EcalSignalGenerator< ECALDIGITIZERTRAITS >::GetGainRatios ( const DetId detid)
inlineprivate

Definition at line 190 of file EcalSignalGenerator.h.

Referenced by EcalSignalGenerator< EBDigitizerTraits >::samplesInPE(), and EcalSignalGenerator< EEDigitizerTraits >::samplesInPE().

190  {
191  std::vector<float> gainRatios(4);
192  // get gain ratios
193  EcalMGPAGainRatio theRatio = (*grHandle)[detid];
194 
195  gainRatios[0] = 0.;
196  gainRatios[3] = 1.;
197  gainRatios[2] = theRatio.gain6Over1();
198  gainRatios[1] = theRatio.gain6Over1() * theRatio.gain12Over6();
199 
200  return gainRatios;
201  }
float gain6Over1() const
float gain12Over6() const
template<class ECALDIGITIZERTRAITS>
void EcalSignalGenerator< ECALDIGITIZERTRAITS >::initializeEvent ( const edm::Event event,
const edm::EventSetup eventSetup 
)
inline

Definition at line 71 of file EcalSignalGenerator.h.

Referenced by PreMixingEcalWorker::addPileups().

71  {
72  theEvent = event;
73  eventSetup->get<EcalGainRatiosRcd>().get(grHandle); // find the gains
74  // Ecal Intercalibration Constants
75  eventSetup->get<EcalIntercalibConstantsMCRcd>().get(pIcal);
76  ical = pIcal.product();
77  // adc to GeV
78  eventSetup->get<EcalADCToGeVConstantRcd>().get(pAgc);
79  agc = pAgc.product();
80 
83 
84  //ES
85  eventSetup->get<ESGainRcd>().get(hesgain);
86  eventSetup->get<ESMIPToGeVConstantRcd>().get(hesMIPToGeV);
87  eventSetup->get<ESIntercalibConstantsRcd>().get(hesMIPs);
88 
90  esmips = hesMIPs.product();
92  if (1.1 > esgain->getESGain())
93  ESgain = 1;
94  else
95  ESgain = 2;
96  if (ESgain == 1)
98  else
100  }
const edm::Event * theEvent
these fields are set in initializeEvent()
double theDefaultGains[NGAINS]
edm::ESHandle< ESMIPToGeVConstant > hesMIPToGeV
float getESValueLow() const
edm::ESHandle< ESIntercalibConstants > hesMIPs
edm::ESHandle< ESGain > hesgain
const EcalIntercalibConstantsMC * ical
edm::ESHandle< EcalADCToGeVConstant > pAgc
const EcalADCToGeVConstant * agc
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
edm::ESHandle< EcalGainRatios > grHandle
float getESGain() const
Definition: ESGain.h:13
T get() const
Definition: EventSetup.h:71
edm::ESHandle< EcalIntercalibConstantsMC > pIcal
float getESValueHigh() const
const ESIntercalibConstants * esmips
T const * product() const
Definition: ESHandle.h:86
const ESMIPToGeVConstant * esMipToGeV
template<class ECALDIGITIZERTRAITS>
void EcalSignalGenerator< ECALDIGITIZERTRAITS >::initializeEvent ( const edm::EventPrincipal eventPrincipal,
const edm::EventSetup eventSetup 
)
inline

some users use EventPrincipals, not Events. We support both

Definition at line 103 of file EcalSignalGenerator.h.

103  {
104  theEventPrincipal = eventPrincipal;
105  eventSetup->get<EcalGainRatiosRcd>().get(grHandle); // find the gains
106  // Ecal Intercalibration Constants
107  eventSetup->get<EcalIntercalibConstantsMCRcd>().get(pIcal);
108  ical = pIcal.product();
109  // adc to GeV
110  eventSetup->get<EcalADCToGeVConstantRcd>().get(pAgc);
111  agc = pAgc.product();
114 
115  //ES
116  eventSetup->get<ESGainRcd>().get(hesgain);
117  eventSetup->get<ESMIPToGeVConstantRcd>().get(hesMIPToGeV);
118  eventSetup->get<ESIntercalibConstantsRcd>().get(hesMIPs);
119 
120  esgain = hesgain.product();
121  esmips = hesMIPs.product();
123  if (1.1 > esgain->getESGain())
124  ESgain = 1;
125  else
126  ESgain = 2;
127  if (ESgain == 1)
129  else
131  }
double theDefaultGains[NGAINS]
edm::ESHandle< ESMIPToGeVConstant > hesMIPToGeV
float getESValueLow() const
edm::ESHandle< ESIntercalibConstants > hesMIPs
edm::ESHandle< ESGain > hesgain
const EcalIntercalibConstantsMC * ical
edm::ESHandle< EcalADCToGeVConstant > pAgc
const EcalADCToGeVConstant * agc
edm::ESHandle< EcalGainRatios > grHandle
const edm::EventPrincipal * theEventPrincipal
float getESGain() const
Definition: ESGain.h:13
T get() const
Definition: EventSetup.h:71
edm::ESHandle< EcalIntercalibConstantsMC > pIcal
float getESValueHigh() const
const ESIntercalibConstants * esmips
T const * product() const
Definition: ESHandle.h:86
const ESMIPToGeVConstant * esMipToGeV
template<class ECALDIGITIZERTRAITS>
double EcalSignalGenerator< ECALDIGITIZERTRAITS >::peToAConversion ( const DetId detId) const
inlineprivate

Definition at line 205 of file EcalSignalGenerator.h.

Referenced by EcalSignalGenerator< EBDigitizerTraits >::samplesInPE(), and EcalSignalGenerator< EEDigitizerTraits >::samplesInPE().

205  {
206  return detId.subdetId() == EcalBarrel ? m_peToABarrel : m_peToAEndcap;
207  }
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:41
template<class ECALDIGITIZERTRAITS>
CaloSamples EcalSignalGenerator< ECALDIGITIZERTRAITS >::samplesInPE ( const DIGI digi)
private
template<class ECALDIGITIZERTRAITS>
bool EcalSignalGenerator< ECALDIGITIZERTRAITS >::validDigi ( const DIGI digi)
inlineprivate

Definition at line 167 of file EcalSignalGenerator.h.

167  {
168  int DigiSum = 0;
169  for (int id = 0; id < digi.size(); id++) {
170  if (digi[id].adc() > 0)
171  ++DigiSum;
172  }
173  return (DigiSum > 0);
174  }
constexpr int adc(sample_type sample)
get the ADC sample (12 bits)

Member Data Documentation

template<class ECALDIGITIZERTRAITS>
const EcalADCToGeVConstant* EcalSignalGenerator< ECALDIGITIZERTRAITS >::agc
private

Definition at line 240 of file EcalSignalGenerator.h.

template<class ECALDIGITIZERTRAITS>
const ESGain* EcalSignalGenerator< ECALDIGITIZERTRAITS >::esgain
private

Definition at line 225 of file EcalSignalGenerator.h.

template<class ECALDIGITIZERTRAITS>
int EcalSignalGenerator< ECALDIGITIZERTRAITS >::ESgain
private

Definition at line 228 of file EcalSignalGenerator.h.

template<class ECALDIGITIZERTRAITS>
const ESIntercalibConstants* EcalSignalGenerator< ECALDIGITIZERTRAITS >::esmips
private
template<class ECALDIGITIZERTRAITS>
const ESMIPToGeVConstant* EcalSignalGenerator< ECALDIGITIZERTRAITS >::esMipToGeV
private

Definition at line 227 of file EcalSignalGenerator.h.

template<class ECALDIGITIZERTRAITS>
double EcalSignalGenerator< ECALDIGITIZERTRAITS >::ESMIPToGeV
private
template<class ECALDIGITIZERTRAITS>
edm::ESHandle<EcalGainRatios> EcalSignalGenerator< ECALDIGITIZERTRAITS >::grHandle
private

Definition at line 213 of file EcalSignalGenerator.h.

template<class ECALDIGITIZERTRAITS>
edm::ESHandle<ESGain> EcalSignalGenerator< ECALDIGITIZERTRAITS >::hesgain
private

Definition at line 221 of file EcalSignalGenerator.h.

template<class ECALDIGITIZERTRAITS>
edm::ESHandle<ESIntercalibConstants> EcalSignalGenerator< ECALDIGITIZERTRAITS >::hesMIPs
private

Definition at line 223 of file EcalSignalGenerator.h.

template<class ECALDIGITIZERTRAITS>
edm::ESHandle<ESMIPToGeVConstant> EcalSignalGenerator< ECALDIGITIZERTRAITS >::hesMIPToGeV
private

Definition at line 222 of file EcalSignalGenerator.h.

template<class ECALDIGITIZERTRAITS>
const EcalIntercalibConstantsMC* EcalSignalGenerator< ECALDIGITIZERTRAITS >::ical
private
template<class ECALDIGITIZERTRAITS>
double EcalSignalGenerator< ECALDIGITIZERTRAITS >::m_EBs25notCont
private

Definition at line 231 of file EcalSignalGenerator.h.

template<class ECALDIGITIZERTRAITS>
double EcalSignalGenerator< ECALDIGITIZERTRAITS >::m_EEs25notCont
private

Definition at line 232 of file EcalSignalGenerator.h.

template<class ECALDIGITIZERTRAITS>
double EcalSignalGenerator< ECALDIGITIZERTRAITS >::m_maxEneEB
private

Definition at line 237 of file EcalSignalGenerator.h.

template<class ECALDIGITIZERTRAITS>
double EcalSignalGenerator< ECALDIGITIZERTRAITS >::m_maxEneEE
private

Definition at line 238 of file EcalSignalGenerator.h.

template<class ECALDIGITIZERTRAITS>
double EcalSignalGenerator< ECALDIGITIZERTRAITS >::m_peToABarrel
private

Definition at line 234 of file EcalSignalGenerator.h.

template<class ECALDIGITIZERTRAITS>
double EcalSignalGenerator< ECALDIGITIZERTRAITS >::m_peToAEndcap
private

Definition at line 235 of file EcalSignalGenerator.h.

template<class ECALDIGITIZERTRAITS>
edm::ESHandle<EcalADCToGeVConstant> EcalSignalGenerator< ECALDIGITIZERTRAITS >::pAgc
private

Definition at line 215 of file EcalSignalGenerator.h.

template<class ECALDIGITIZERTRAITS>
edm::ESHandle<EcalIntercalibConstantsMC> EcalSignalGenerator< ECALDIGITIZERTRAITS >::pIcal
private

Definition at line 214 of file EcalSignalGenerator.h.

template<class ECALDIGITIZERTRAITS>
double EcalSignalGenerator< ECALDIGITIZERTRAITS >::theDefaultGains[NGAINS]
private

Definition at line 243 of file EcalSignalGenerator.h.

template<class ECALDIGITIZERTRAITS>
const edm::Event* EcalSignalGenerator< ECALDIGITIZERTRAITS >::theEvent
private

these fields are set in initializeEvent()

Definition at line 210 of file EcalSignalGenerator.h.

template<class ECALDIGITIZERTRAITS>
const edm::EventPrincipal* EcalSignalGenerator< ECALDIGITIZERTRAITS >::theEventPrincipal
private

Definition at line 211 of file EcalSignalGenerator.h.

template<class ECALDIGITIZERTRAITS>
edm::InputTag EcalSignalGenerator< ECALDIGITIZERTRAITS >::theInputTag
private

these come from the ParameterSet

Definition at line 218 of file EcalSignalGenerator.h.

template<class ECALDIGITIZERTRAITS>
edm::EDGetTokenT<COLLECTION> EcalSignalGenerator< ECALDIGITIZERTRAITS >::tok_
private

Definition at line 219 of file EcalSignalGenerator.h.