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

◆ ESSamples

Definition at line 18 of file ESElectronicsSimFast.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
MAXADC 
MINADC 

Definition at line 20 of file ESElectronicsSimFast.h.

Constructor & Destructor Documentation

◆ ESElectronicsSimFast()

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::~ESElectronicsSimFast ( )

Definition at line 16 of file ESElectronicsSimFast.cc.

16 {}

Member Function Documentation

◆ analogToDigital()

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

Definition at line 24 of file ESElectronicsSimFast.cc.

References gpuClustering::adc, cms::cuda::assert(), callgraph::cs, hgcalPerformanceValidation::df, ESCondObjectContainer< T >::end(), ESCondObjectContainer< T >::find(), ESCondObjectContainer< T >::getMap(), mps_fire::i, l1ctLayer2EG_cff::id, createfilelist::int, m_addNoise, m_mips, m_MIPToGeV, m_peds, m_PreMix1, MAXADC, and MINADC.

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
assert(be >=bs)
const_iterator find(uint32_t rawId) const
Definition: DetId.h:17
const_iterator end() const
const ESPedestals * m_peds
std::vector< Item >::const_iterator const_iterator
const self & getMap() const
uint16_t *__restrict__ uint16_t const *__restrict__ adc

◆ newEvent()

void ESElectronicsSimFast::newEvent ( )
inline

Definition at line 33 of file ESElectronicsSimFast.h.

33 {}

◆ setMIPs()

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

◆ setMIPToGeV()

void ESElectronicsSimFast::setMIPToGeV ( double  MIPToGeV)

Definition at line 22 of file ESElectronicsSimFast.cc.

References m_MIPToGeV.

22 { m_MIPToGeV = MIPToGeV; }

◆ setPedestals()

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

◆ m_addNoise

bool ESElectronicsSimFast::m_addNoise
private

Definition at line 36 of file ESElectronicsSimFast.h.

Referenced by analogToDigital().

◆ m_mips

const ESIntercalibConstants* ESElectronicsSimFast::m_mips
private

Definition at line 44 of file ESElectronicsSimFast.h.

Referenced by analogToDigital(), and setMIPs().

◆ m_MIPToGeV

double ESElectronicsSimFast::m_MIPToGeV
private

Definition at line 40 of file ESElectronicsSimFast.h.

Referenced by analogToDigital(), and setMIPToGeV().

◆ m_peds

const ESPedestals* ESElectronicsSimFast::m_peds
private

Definition at line 42 of file ESElectronicsSimFast.h.

Referenced by analogToDigital(), and setPedestals().

◆ m_PreMix1

bool ESElectronicsSimFast::m_PreMix1
private

Definition at line 38 of file ESElectronicsSimFast.h.

Referenced by analogToDigital().