|
|
Go to the documentation of this file.
17 double nFactorial(
int n);
18 double aScalingConstant(
int N,
int i);
21 double nFactorial(
int n) {
return std::tgamma(
n + 1); }
22 double aScalingConstant(
int N,
int i) {
23 return std::pow(-1, (
double)
i) * nFactorial(
N) * nFactorial(
N + 2) /
24 (nFactorial(
N -
i) * nFactorial(
N + 2 -
i) * nFactorial(
i));
29 if (use_LorentzAngle_DB_) {
30 siPhase2OTLorentzAngle_ = &es.
getData(siPhase2OTLorentzAngleToken_);
33 geom_ = &es.
getData(geomToken_);
40 hitDetectionMode_(conf.getParameter<
ParameterSet>(
"SSDigitizerAlgorithm").getParameter<
int>(
"HitDetectionMode")),
41 pulseShapeParameters_(conf.getParameter<
ParameterSet>(
"SSDigitizerAlgorithm")
42 .getParameter<
std::
vector<double> >(
"PulseShapeParameters")),
43 deadTime_(conf.getParameter<
ParameterSet>(
"SSDigitizerAlgorithm").getParameter<double>(
"CBCDeadTime")),
48 LogDebug(
"SSDigitizerAlgorithm ") <<
"SSDigitizerAlgorithm constructed "
49 <<
"Configuration parameters:"
50 <<
"Threshold/Gain = "
68 double toa =
hit.tof() - tCorr;
77 double toa =
hit.tof() - tCorr;
81 float theThresholdInE =
91 float toa =
hit.tof() - tCorr;
92 toa -=
hit.eventId().bunchCrossing() *
bx_time;
94 float sampling_time = (-1) * (
hit.eventId().bunchCrossing() + 1) *
bx_time;
97 float theThresholdInE =
100 bool lastPulse =
true;
101 bool aboveThr =
false;
106 if (!lastPulse && aboveThr)
109 lastPulse = aboveThr;
114 constexpr
size_t max_par = 6;
128 for (
int i = 0;
i < nTerms;
i++) {
129 double angularTerm = 0;
130 double temporalTerm = 0;
132 for (
int j = 0;
j <=
i;
j++) {
136 double fi = rTerm * angularTerm * temporalTerm;
161 if (xval < 0.0 || xval * interpolationStep >= len)
const float theThresholdInE_Barrel_
SSDigitizerAlgorithm(const edm::ParameterSet &conf, edm::ConsumesCollector iC)
const float theTofUpperCut_
static constexpr int interpolationStep
std::vector< double > pulseShapeVec_
bool isAboveThreshold(const DigitizerUtility::SimHitInfo *hitInfo, float charge, float thr) const override
static constexpr size_t interpolationPoints
static constexpr float bx_time
const bool use_LorentzAngle_DB_
~SSDigitizerAlgorithm() override
Sin< T >::type sin(const T &t)
edm::ESGetToken< SiPhase2OuterTrackerLorentzAngle, SiPhase2OuterTrackerLorentzAngleSimRcd > siPhase2OTLorentzAngleToken_
const float theTofLowerCut_
Cos< T >::type cos(const T &t)
constexpr int32_t ceil(float num)
const int theAdcFullScale_
double signalShape(double x) const
std::vector< double > pulseShapeParameters_
Geom::Theta< T > theta() const
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum)
double cbc3PulsePolarExpansion(double x) const
bool select_hit_sampledMode(const PSimHit &hit, double tCorr, double &sigScale) const
constexpr int16_t xOffset
bool select_hit(const PSimHit &hit, double tCorr, double &sigScale) const override
const float theElectronPerADC_
const float GeVperElectron_
const float theThresholdInE_Endcap_
bool getData(T &iHolder) const
bool select_hit_latchedMode(const PSimHit &hit, double tCorr, double &sigScale) const
void init(const edm::EventSetup &es) override
static constexpr auto TOB
double getSignalScale(double xval) const
Power< A, B >::type pow(const A &a, const B &b)
const bool addPixelInefficiency_