CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Private Attributes
ESElectronicsSimFast Class Reference

#include <ESElectronicsSimFast.h>

Public Types

enum  { MAXADC = 4095, MINADC = 0 }
 
typedef CaloTSamples< float, 3 > ESSamples
 

Public Member Functions

void analogToDigital (CLHEP::HepRandomEngine *, ESSamples &cs, ESDataFrame &df, bool isNoise=false) const
 
 ESElectronicsSimFast (bool addNoise, bool PreMix1)
 
void newEvent ()
 
void setMIPs (const ESIntercalibConstants *mips)
 
void setMIPToGeV (double MIPToGeV)
 
void setPedestals (const ESPedestals *peds)
 
 ~ESElectronicsSimFast ()
 

Private Attributes

bool m_addNoise
 
const ESIntercalibConstantsm_mips
 
double m_MIPToGeV
 
const ESPedestalsm_peds
 
bool m_PreMix1
 

Detailed Description

Definition at line 16 of file ESElectronicsSimFast.h.

Member Typedef Documentation

Definition at line 18 of file ESElectronicsSimFast.h.

Member Enumeration Documentation

anonymous enum
Enumerator
MAXADC 
MINADC 

Definition at line 20 of file ESElectronicsSimFast.h.

Constructor & Destructor Documentation

ESElectronicsSimFast::ESElectronicsSimFast ( bool  addNoise,
bool  PreMix1 
)

Definition at line 8 of file ESElectronicsSimFast.cc.

9  : m_addNoise(addNoise), m_PreMix1(PreMix1), m_MIPToGeV(0), m_peds(nullptr), m_mips(nullptr) {
10  // Preshower "Fast" Electronics Simulation
11  // gain = 1 : low gain for data taking
12  // gain = 2 : high gain for calibration and low energy runs
13  // For 300(310/320) um Si, the MIP is 78.47(81.08/83.7) keV
14 }
const ESIntercalibConstants * m_mips
const ESPedestals * m_peds
ESElectronicsSimFast::~ESElectronicsSimFast ( )

Definition at line 16 of file ESElectronicsSimFast.cc.

16 {}

Member Function Documentation

void ESElectronicsSimFast::analogToDigital ( CLHEP::HepRandomEngine *  engine,
ESSamples cs,
ESDataFrame df,
bool  isNoise = false 
) const

Definition at line 24 of file ESElectronicsSimFast.cc.

References ecalMGPA::adc(), ESCondObjectContainer< T >::end(), ESCondObjectContainer< T >::find(), ESCondObjectContainer< T >::getMap(), mps_fire::i, CaloTSamplesBase< Ttype >::id(), triggerObjects_cff::id, createfilelist::int, m_addNoise, m_mips, m_MIPToGeV, m_peds, m_PreMix1, MAXADC, MINADC, ESDataFrame::setSample(), ESDataFrame::setSize(), and CaloTSamplesBase< Ttype >::size().

27  {
28  assert(nullptr != m_peds && nullptr != m_mips && 0 < m_MIPToGeV); // sanity check
29 
30  df.setSize(cs.size());
31 
32  const DetId id(cs.id());
35 
36  const double baseline((double)it_ped->getMean());
37  const double sigma(isNoise ? 0. : (double)it_ped->getRms());
38  const double MIPADC(isNoise ? 0. : (double)(*it_mip));
39  const double ADCGeV(isNoise ? 1. : MIPADC / m_MIPToGeV);
40 
41  int adc = 0;
42  // std::cout<<" **Id="<<ESDetId(df.id())<<", size="<<df.size();
43  for (unsigned int i(0); i != cs.size(); ++i) {
44  const double noi(isNoise || (!m_addNoise) ? 0 : sigma * CLHEP::RandGaussQ::shoot(engine, 0, 1));
45  double signal;
46 
47  if (!m_PreMix1)
48  signal = cs[i] * ADCGeV + noi + baseline;
49  else
50  signal = cs[i] * ADCGeV;
51 
52  if (0 <= signal) {
53  signal += 0.5;
54  } else {
55  signal -= 0.5;
56  }
57 
58  adc = int(signal);
59 
60  if (!m_PreMix1)
61  assert(0 < adc);
62 
63  if (0.5 < signal - adc)
64  ++adc;
65 
66  if (MAXADC < adc) {
67  adc = MAXADC;
68  } else {
69  if (MINADC > adc)
70  adc = MINADC;
71  }
72 
73  df.setSample(i, ESSample(adc));
74  // std::cout<<", "<<df[i];
75  }
76  // std::cout<<std::endl ;
77 }
const ESIntercalibConstants * m_mips
const_iterator end() const
unique_ptr< ClusterSequence > cs
const self & getMap() const
void setSize(int size)
Definition: ESDataFrame.cc:17
const_iterator find(uint32_t rawId) const
constexpr int adc(sample_type sample)
get the ADC sample (12 bits)
void setSample(int i, const ESSample &sam)
Definition: ESDataFrame.h:28
Definition: DetId.h:17
const ESPedestals * m_peds
std::vector< Item >::const_iterator const_iterator
void ESElectronicsSimFast::newEvent ( )
inline

Definition at line 33 of file ESElectronicsSimFast.h.

33 {}
void ESElectronicsSimFast::setMIPs ( const ESIntercalibConstants mips)

Definition at line 20 of file ESElectronicsSimFast.cc.

References m_mips.

20 { m_mips = mips; }
const ESIntercalibConstants * m_mips
void ESElectronicsSimFast::setMIPToGeV ( double  MIPToGeV)

Definition at line 22 of file ESElectronicsSimFast.cc.

References m_MIPToGeV.

22 { m_MIPToGeV = MIPToGeV; }
void ESElectronicsSimFast::setPedestals ( const ESPedestals peds)

Definition at line 18 of file ESElectronicsSimFast.cc.

References m_peds.

18 { m_peds = peds; }
const ESPedestals * m_peds

Member Data Documentation

bool ESElectronicsSimFast::m_addNoise
private

Definition at line 36 of file ESElectronicsSimFast.h.

Referenced by analogToDigital().

const ESIntercalibConstants* ESElectronicsSimFast::m_mips
private

Definition at line 44 of file ESElectronicsSimFast.h.

Referenced by analogToDigital(), and setMIPs().

double ESElectronicsSimFast::m_MIPToGeV
private

Definition at line 40 of file ESElectronicsSimFast.h.

Referenced by analogToDigital(), and setMIPToGeV().

const ESPedestals* ESElectronicsSimFast::m_peds
private

Definition at line 42 of file ESElectronicsSimFast.h.

Referenced by analogToDigital(), and setPedestals().

bool ESElectronicsSimFast::m_PreMix1
private

Definition at line 38 of file ESElectronicsSimFast.h.

Referenced by analogToDigital().