29 : theParam(myParam), theGrid(myGrid), theHcalHitMaker(myHcalHitMaker), onEcal(onECAL),
e(epart), random(engine) {
75 for (
int itheta = 0; itheta <
nthetaStep; itheta++) {
83 for (
int j = 0;
j < maxLoops;
j++) {
97 float rshower =
getR();
113 LogWarning(
"FastCalorimetry") <<
" setHit in HCAL failed d=" << d <<
" maxDepth=" <<
maxDepth <<
" onEcal'"
132 r = (float(i) + (p - rpdf[i - 1]) / dr) /
lambdaHD;
144 float amean, asig, lambda1, lambda1sig, lam21, lam21sig;
169 pdf.erase(pdf.begin(), pdf.end());
175 float p = a *
exp(L1 * theta) +
exp(L2 * theta);
182 float fn = ntot * pdf[it] / sum;
193 float en = esum /
EsCut;
195 en = esum - n *
EsCut;
197 for (
int ie = 0; ie <=
n; ie++) {
199 if (k < 0 || k > nthetaStep - 1)
219 float _EgridTable[
NEnergyScan] = {10, 20, 30, 50, 100, 300, 500};
220 float _Theta1amp[
NEnergyScan] = {1.57, 2.05, 2.27, 2.52, 2.66, 2.76, 2.76};
221 float _Theta1ampSig[
NEnergyScan] = {2.40, 1.50, 1.25, 1.0, 0.8, 0.52, 0.52};
223 float _Theta1Lambda[
NEnergyScan] = {0.086, 0.092, 0.88, 0.80, 0.0713, 0.0536, 0.0536};
224 float _Theta1LambdaSig[
NEnergyScan] = {0.038, 0.037, 0.027, 0.03, 0.023, 0.018, 0.018};
226 float _ThetaLam21[
NEnergyScan] = {2.8, 2.44, 2.6, 2.77, 3.16, 3.56, 3.56};
227 float _ThetaLam21Sig[
NEnergyScan] = {1.8, 0.97, 0.87, 0.77, 0.7, 0.49, 0.49};
239 #define lambdafit 15.05
240 float R_alfa = -0.0993 + 0.1114 *
log(
e);
241 float R_p = 0.589191 + 0.0463392 *
log(
e);
242 float R_beta_lam = (0.54134 - 0.00011148 *
e) / 4.0 *
lambdafit;
250 float r =
pow(x, R_alfa) * (R_p *
exp(-R_beta_lam * x) + (1 - R_p) *
exp(-LamOverX0 * R_beta_lam * x));
bool addHit(double r, double phi, unsigned layer=0) override
static std::vector< std::string > checklist log
const edm::EventSetup & c
double radLenIncm() const override
Radiation length in cm.
double flatShoot(double xmin=0.0, double xmax=1.0) const
Sin< T >::type sin(const T &t)
Geom::Theta< T > theta() const
HcalHitMaker * theHcalHitMaker
Exp< T >::type exp(const T &t)
double interactionLength() const override
Interaction length in cm.
bool addHit(double r, double phi, unsigned layer=0) override
add the hit in the HCAL in local coordinates
std::vector< int > thetaSpots
void thetaFunction(int nthetaStep)
Cos< T >::type cos(const T &t)
bool setHit(float espot, float theta)
void setSpotEnergy(double e) override
Set the spot energy.
HDShowerParametrization * theParam
HDRShower(const RandomEngineAndDistribution *engine, HDShowerParametrization *myParam, EcalHitMaker *myGrid, HcalHitMaker *myHcalHitMaker, int onECAL, double epart)
std::vector< float > elastspot
bool getPads(double depth, bool inCm=false)
const HCALProperties * hcalProperties() const
const ECALProperties * ecalProperties() const
double gaussShoot(double mean=0.0, double sigma=1.0) const
Log< level::Warning, false > LogWarning
const RandomEngineAndDistribution * random
double ecalTotalL0() const
in the ECAL
double interactionLength() const override
Interaction length in cm: 18.5 for Standard ECAL.
Power< A, B >::type pow(const A &a, const B &b)
bool setDepth(double, bool inCm=false)
set the depth in X0 or Lambda0 units depending on showerType
void setSpotEnergy(double e) override
double ecalHcalGapTotalL0() const
ECAL-HCAL transition.
double hcalTotalL0() const
in the HCAL