|
|
#include <HGCDigitizerBase.h>
|
void | GenerateGaussianNoise (CLHEP::HepRandomEngine *engine, const double NoiseMean, const double NoiseStd) |
| Gaussian Noise Generation Member Function. More...
|
|
| HGCDigitizerBase (const edm::ParameterSet &ps) |
| CTOR. More...
|
|
float | keV2fC () const |
| getters More...
|
|
void | run (std::unique_ptr< DColl > &digiColl, hgc::HGCSimHitDataAccumulator &simData, const CaloSubdetectorGeometry *theGeom, const std::unordered_set< DetId > &validIds, uint32_t digitizationType, CLHEP::HepRandomEngine *engine) |
| steer digitization mode More...
|
|
virtual void | runDigitizer (std::unique_ptr< DColl > &coll, hgc::HGCSimHitDataAccumulator &simData, const CaloSubdetectorGeometry *theGeom, const std::unordered_set< DetId > &validIds, uint32_t digitizerType, CLHEP::HepRandomEngine *engine) |
| to be specialized by top class More...
|
|
void | runSimple (std::unique_ptr< DColl > &coll, hgc::HGCSimHitDataAccumulator &simData, const CaloSubdetectorGeometry *theGeom, const std::unordered_set< DetId > &validIds, CLHEP::HepRandomEngine *engine) |
| a trivial digitization: sum energies and digitize without noise More...
|
|
std::array< float, 3 > | tdcForToAOnset () const |
|
float | tdcOnset () const |
|
bool | toaModeByEnergy () const |
|
void | updateOutput (std::unique_ptr< DColl > &coll, const DFr &rawDataFrame) |
| prepares the output according to the number of time samples to produce More...
|
|
virtual | ~HGCDigitizerBase () |
| DTOR. More...
|
|
template<class DFr>
class HGCDigitizerBase< DFr >
Definition at line 61 of file HGCDigitizerBase.h.
◆ DColl
◆ DigiType
◆ HGCDigitizerBase()
CTOR.
Definition at line 9 of file HGCDigitizerBase.cc.
23 .
template getParameter<std::vector<double>>(
"values");
◆ ~HGCDigitizerBase()
◆ GenerateGaussianNoise()
template<class DFr >
void HGCDigitizerBase< DFr >::GenerateGaussianNoise |
( |
CLHEP::HepRandomEngine * |
engine, |
|
|
const double |
NoiseMean, |
|
|
const double |
NoiseStd |
|
) |
| |
◆ keV2fC()
◆ run()
◆ runDigitizer()
◆ runSimple()
a trivial digitization: sum energies and digitize without noise
Definition at line 111 of file HGCDigitizerBase.cc.
123 std::array<double, samplesize_> cellNoiseArray;
125 cellNoiseArray[
i] = 0.0;
127 for (
const auto&
id : validIds) {
128 chargeColl.fill(0.
f);
130 HGCSimHitDataAccumulator::iterator it = simData.find(
id);
131 HGCCellInfo& cell = (simData.end() == it ? zeroData : it->second);
140 float cce(1.
f), noiseWidth(0.
f), lsbADC(-1.
f), maxADC(-1.
f);
143 uint32_t gainIdx = 0;
150 noiseWidth = siop.noise;
157 thrADC = siop.thrADC;
161 noiseWidth = siop.noise;
168 thrADC = siop.thrADC;
183 for (
size_t i = 0;
i < cell.
hit_info[0].size();
i++) {
196 noise = CLHEP::RandGaussQ::shoot(engine, cellNoiseArray[
i], noiseWidth);
197 float totalCharge(rawCharge * cce +
noise);
198 if (totalCharge < 0.
f)
200 chargeColl[
i] = totalCharge;
204 DFr rawDataFrame(
id);
207 rawDataFrame, chargeColl, toa,
adcPulse, engine, thrADC, lsbADC, gainIdx, maxADC,
thickness);
◆ tdcForToAOnset()
◆ tdcOnset()
◆ toaModeByEnergy()
◆ updateOutput()
prepares the output according to the number of time samples to produce
Definition at line 215 of file HGCDigitizerBase.cc.
218 if (rawDataFrame.size() <= itIdx + 2)
221 DFr dataFrame(rawDataFrame.id());
226 if ((!rawDataFrame[itIdx].
threshold())) {
230 for (
int it = 0; it < 5; it++) {
231 dataFrame.setSample(it, rawDataFrame[itIdx - 2 + it]);
234 coll->push_back(dataFrame);
◆ bxTime_
◆ cce_
◆ doseMapFile_
◆ doTimeSamples_
◆ GaussianNoiseArray_
◆ keV2fC_
◆ myCfg_
◆ myFEelectronics_
◆ noise_fC_
◆ NoiseArrayLength_
◆ NoiseGeneration_Method_
◆ NoiseMean_
◆ NoiseStd_
◆ RandNoiseGenerationFlag_
◆ samplesize_
◆ scal_
◆ scaleByDose_
◆ scaleByDoseFactor_
◆ scalHFNose_
◆ thresholdFollowsMIP_
void setIleakParam(const std::vector< double > &pars)
set the ileak parameters to use
std::vector< double > & getLSBPerGain()
const SiCellOpCharacteristicsCore getSiCellOpCharacteristicsCore(const T &did, GainRange_t gain, int aimMIPtoADC)
returns the charge collection efficiency and noise if gain range is set to auto, it will find the mos...
std::array< std::array< double, samplesize_ >, NoiseArrayLength_ > GaussianNoiseArray_
void setDefaultADCPulseShape(const hgc_digi::FEADCPulseShape &adcPulse)
bool RandNoiseGenerationFlag_
bool NoiseGeneration_Method_
void setDoseMap(const std::string &, const unsigned int &)
overrides base class method with specifics for the configuration of the algo
bool existsAs(std::string const ¶meterName, bool trackiness=true) const
checks if a parameter exists as a given type
void GenerateGaussianNoise(CLHEP::HepRandomEngine *engine, const double NoiseMean, const double NoiseStd)
Gaussian Noise Generation Member Function.
virtual void runDigitizer(std::unique_ptr< DColl > &coll, hgc::HGCSimHitDataAccumulator &simData, const CaloSubdetectorGeometry *theGeom, const std::unordered_set< DetId > &validIds, uint32_t digitizerType, CLHEP::HepRandomEngine *engine)
to be specialized by top class
void setGeometry(const CaloSubdetectorGeometry *, GainRange_t gain=GainRange_t::AUTO, int aimMIPtoADC=10)
specialization of the base class method which sets the geometry so that it can instantiate an operati...
void addCellMetadata(HGCCellInfo &info, const HcalGeometry *geom, const DetId &detid)
std::array< HGCSimData_t, nSamples > HGCSimHitData
const hgc_digi::FEADCPulseShape & adcPulseForGain(GainRange_t gain)
void updateOutput(std::unique_ptr< DColl > &coll, const DFr &rawDataFrame)
prepares the output according to the number of time samples to produce
void runSimple(std::unique_ptr< DColl > &coll, hgc::HGCSimHitDataAccumulator &simData, const CaloSubdetectorGeometry *theGeom, const std::unordered_set< DetId > &validIds, CLHEP::HepRandomEngine *engine)
a trivial digitization: sum energies and digitize without noise
std::vector< float > noise_fC_
models the behavior of the front-end electronics
static const size_t NoiseArrayLength_
HGCalSiNoiseMap< HGCSiliconDetId > scal_
bool exists(std::string const ¶meterName) const
checks if a parameter exists
derives from HGCalRadiation map to parse fluence parameters, provides Si-specific functions; see DN-1...
static const size_t samplesize_
std::array< HGCSimHitData, 2 > hit_info
void setFluenceScaleFactor(double val)
bool thresholdFollowsMIP_
T getParameter(std::string const &) const
HGCalSiNoiseMap< HFNoseDetId > scalHFNose_
std::vector< double > & getMaxADCPerGain()
double scaleByDoseFactor_
void setCceParam(const std::vector< double > &parsFine, const std::vector< double > &parsThin, const std::vector< double > &parsThick)
set the cce parameters to use
std::vector< double > cce_
std::unique_ptr< HGCFEElectronics< DFr > > myFEelectronics_