10 #include "CLHEP/Random/RandFlat.h" 17 : theParameterMap(parameterMap),
18 theAmplifier(amplifier),
19 theCoderFactory(coderFactory),
21 theStartingCapIdIsRandom(
true),
22 PreMixDigis(PreMixing) {}
41 CLHEP::HepRandomEngine* engine) {
42 theAmplifier->amplify(
frame, engine);
49 CLHEP::HepRandomEngine* engine) {
50 theAmplifier->amplify(
frame, engine);
56 for (
int isample = 0; isample !=
frame.size(); ++isample) {
57 uint16_t theADC = round(preMixFactor *
frame[isample]);
58 unsigned capId =
result[isample].capid();
60 if (theADC > preMixBits) {
61 uint16_t keepADC =
result[isample].adc();
73 unsigned preMixBits) {
74 for (
int isample = 0; isample !=
frame.size(); ++isample) {
75 uint16_t theADC = round(preMixFactor *
frame[isample]);
76 unsigned capId =
result[isample].capid();
79 if (theADC > preMixBits) {
80 theADC =
result[isample].adc();
85 isample, theADC,
result[isample].le_tdc(),
result[isample].te_tdc(), capId,
result[isample].soi(),
ok);
93 unsigned preMixBits) {
94 for (
int isample = 0; isample !=
frame.size(); ++isample) {
95 uint16_t theADC = round(preMixFactor *
frame[isample]);
98 if (theADC > preMixBits) {
99 theADC =
result[isample].adc();
103 result.setSample(isample, theADC, tdcErrorBit,
result[isample].soi());
107 template <
class Digi>
109 CLHEP::HepRandomEngine* engine,
CaloSamples& lf,
Digi&
result,
double preMixFactor,
unsigned preMixBits) {
110 convert<Digi>(lf,
result, engine);
HcalAmplifier * theAmplifier
void setStartingCapId(int startingCapId)
void setStartingCapId(int capId)
const CaloSimParameters & simParameters(const DetId &id) const override
double threshold_currentTDC() const
void setDbService(const HcalDbService *service)
void timing(const CaloSamples &lf, QIE11DataFrame &digi) const
void newEvent(CLHEP::HepRandomEngine *)
DetId id() const
get the (generic) id
void convert(CaloSamples &frame, Digi &result, CLHEP::HepRandomEngine *)
const HcalSimParameterMap * theParameterMap
const HcalCoderFactory * theCoderFactory
bool theStartingCapIdIsRandom
void analogToDigitalImpl(CLHEP::HepRandomEngine *, CaloSamples &linearFrame, Digi &result, double preMixFactor, unsigned preMixBits)
void analogToDigital(CLHEP::HepRandomEngine *, CaloSamples &linearFrame, HBHEDataFrame &result, double preMixFactor=10.0, unsigned preMixBits=126)
HcalElectronicsSim(const HcalSimParameterMap *parameterMap, HcalAmplifier *amplifier, const HcalCoderFactory *coderFactory, bool PreMix)
double threshold_currentTDC() const
void premix(CaloSamples &frame, Digi &result, double preMixFactor, unsigned preMixBits)
virtual void amplify(CaloSamples &linearFrame, CLHEP::HepRandomEngine *) const
std::unique_ptr< HcalCoder > coder(const DetId &detId) const
user gets control of the pointer
void setDbService(const HcalDbService *service)
the Producer will probably update this every event