CMS 3D CMS Logo

ESElectronicsSim.cc
Go to the documentation of this file.
4 
7 #include "CLHEP/Random/RandGaussQ.h"
9 #include <iostream>
10 
11 ESElectronicsSim::ESElectronicsSim(bool addNoise) : addNoise_(addNoise), peds_(nullptr), mips_(nullptr) {
12  // Preshower Electronics Simulation
13  // gain = 1 : low gain for data taking
14  // gain = 2 : high gain for calibration and low energy runs
15  // For 300(310/320) um Si, the MIP is 78.47(81.08/83.7) keV
16 }
17 
19 
20 void ESElectronicsSim::analogToDigital(CLHEP::HepRandomEngine* engine, const CaloSamples& cs, ESDataFrame& df) const {
21  std::vector<ESSample> essamples = encode(cs, engine);
22 
23  df.setSize(cs.size());
24  for (int i = 0; i < df.size(); i++) {
25  df.setSample(i, essamples[i]);
26  }
27 }
28 
30  for (int i = 0; i < df.size(); i++) {
31  cs[i] = decode(df[i], df.id());
32  }
33 }
34 
35 std::vector<ESSample> ESElectronicsSim::encode(const CaloSamples& timeframe, CLHEP::HepRandomEngine* engine) const {
37  if (!rng.isAvailable()) {
38  throw cms::Exception("Configuration")
39  << "ESElectroncSim requires the RandomNumberGeneratorService\n"
40  "which is not present in the configuration file. You must add the service\n"
41  "in the configuration file or remove the modules that require it.";
42  }
43 
44  std::vector<ESSample> results;
45  results.reserve(timeframe.size());
46 
47  ESPedestals::const_iterator it_ped = peds_->find(timeframe.id());
49  int baseline_ = (int)it_ped->getMean();
50  double sigma_ = (double)it_ped->getRms();
51  double MIPADC_ = (double)(*it_mip);
52 
53  int adc = 0;
54  double ADCGeV = MIPADC_ / MIPToGeV_;
55 
56  for (int i = 0; i < timeframe.size(); i++) {
57  double noi = 0;
58  double signal = 0;
59 
60  if (addNoise_) {
61  noi = CLHEP::RandGaussQ::shoot(engine, 0., sigma_);
62  }
63 
64  signal = timeframe[i] * ADCGeV + noi + baseline_;
65 
66  if (signal > 0)
67  signal += 0.5;
68  else if (signal < 0)
69  signal -= 0.5;
70 
71  adc = int(signal);
72 
73  if (adc > MAXADC)
74  adc = MAXADC;
75  if (adc < MINADC)
76  adc = MINADC;
77 
78  results.emplace_back(adc);
79  }
80 
81  return results;
82 }
83 
84 double ESElectronicsSim::decode(const ESSample& sample, const DetId& id) const { return 0.; }
mps_fire.i
i
Definition: mps_fire.py:428
simplePhotonAnalyzer_cfi.sample
sample
Definition: simplePhotonAnalyzer_cfi.py:12
ESElectronicsSim::MIPToGeV_
double MIPToGeV_
Definition: ESElectronicsSim.h:40
fwrapper::cs
unique_ptr< ClusterSequence > cs
Definition: fastjetfortran_madfks.cc:47
CaloSamples::size
int size() const
get the size
Definition: CaloSamples.h:24
RandomNumberGenerator.h
gpuClustering::adc
uint16_t *__restrict__ uint16_t const *__restrict__ adc
Definition: gpuClusterChargeCut.h:20
ESElectronicsSim::encode
std::vector< ESSample > encode(const CaloSamples &timeframe, CLHEP::HepRandomEngine *) const
Definition: ESElectronicsSim.cc:35
ESCondObjectContainer::find
const_iterator find(uint32_t rawId) const
Definition: ESCondObjectContainer.h:33
bookConverter.results
results
Definition: bookConverter.py:144
ESDetId.h
ESElectronicsSim::peds_
const ESPedestals * peds_
Definition: ESElectronicsSim.h:38
edm::Service::isAvailable
bool isAvailable() const
Definition: Service.h:40
ESDataFrame
Definition: ESDataFrame.h:10
DetId
Definition: DetId.h:17
Service.h
ESCondObjectContainer< ESPedestal >::const_iterator
std::vector< Item >::const_iterator const_iterator
Definition: ESCondObjectContainer.h:17
ESElectronicsSim::mips_
const ESIntercalibConstants * mips_
Definition: ESElectronicsSim.h:39
ESElectronicsSim::~ESElectronicsSim
virtual ~ESElectronicsSim()
Definition: ESElectronicsSim.cc:18
ESSample
Definition: ESSample.h:7
ESElectronicsSim::digitalToAnalog
virtual void digitalToAnalog(const ESDataFrame &df, CaloSamples &cs) const
Definition: ESElectronicsSim.cc:29
ESSample.h
ESElectronicsSim::MAXADC
Definition: ESElectronicsSim.h:18
ESElectronicsSim::addNoise_
bool addNoise_
Definition: ESElectronicsSim.h:36
CaloSamples::id
DetId id() const
get the (generic) id
Definition: CaloSamples.h:21
edm::Service< edm::RandomNumberGenerator >
createfilelist.int
int
Definition: createfilelist.py:10
CaloSamples
Definition: CaloSamples.h:14
ESElectronicsSim::decode
double decode(const ESSample &sample, const DetId &detId) const
Definition: ESElectronicsSim.cc:84
ESCondObjectContainer::getMap
const self & getMap() const
Definition: ESCondObjectContainer.h:41
hgcalPerformanceValidation.df
df
Definition: hgcalPerformanceValidation.py:733
ESElectronicsSim::MINADC
Definition: ESElectronicsSim.h:19
Exception
Definition: hltDiff.cc:245
Exception.h
ESElectronicsSim::ESElectronicsSim
ESElectronicsSim(bool addNoise)
Definition: ESElectronicsSim.cc:11
ESElectronicsSim.h
ESElectronicsSim::analogToDigital
virtual void analogToDigital(CLHEP::HepRandomEngine *, const CaloSamples &cs, ESDataFrame &df) const
Definition: ESElectronicsSim.cc:20