29 : theParam(myParam), theGrid(myGrid), theHcalHitMaker(myHcalHitMaker), onEcal(onECAL),
e(epart), random(engine) {
74 for (
int itheta = 0; itheta <
nthetaStep; itheta++) {
95 float rshower =
getR();
111 LogWarning(
"FastCalorimetry") <<
" setHit in HCAL failed d=" <<
d <<
" maxDepth=" <<
maxDepth <<
" onEcal'" 142 float amean, asig, lambda1, lambda1sig, lam21, lam21sig;
167 pdf.erase(pdf.begin(), pdf.end());
180 float fn =
ntot * pdf[it] / sum;
191 float en = esum /
EsCut;
195 for (
int ie = 0; ie <=
n; ie++) {
217 float _EgridTable[
NEnergyScan] = {10, 20, 30, 50, 100, 300, 500};
218 float _Theta1amp[
NEnergyScan] = {1.57, 2.05, 2.27, 2.52, 2.66, 2.76, 2.76};
219 float _Theta1ampSig[
NEnergyScan] = {2.40, 1.50, 1.25, 1.0, 0.8, 0.52, 0.52};
221 float _Theta1Lambda[
NEnergyScan] = {0.086, 0.092, 0.88, 0.80, 0.0713, 0.0536, 0.0536};
222 float _Theta1LambdaSig[
NEnergyScan] = {0.038, 0.037, 0.027, 0.03, 0.023, 0.018, 0.018};
224 float _ThetaLam21[
NEnergyScan] = {2.8, 2.44, 2.6, 2.77, 3.16, 3.56, 3.56};
225 float _ThetaLam21Sig[
NEnergyScan] = {1.8, 0.97, 0.87, 0.77, 0.7, 0.49, 0.49};
237 #define lambdafit 15.05 238 float R_alfa = -0.0993 + 0.1114 *
log(
e);
239 float R_p = 0.589191 + 0.0463392 *
log(
e);
240 float R_beta_lam = (0.54134 - 0.00011148 *
e) / 4.0 *
lambdafit;
248 float r =
pow(
x, R_alfa) * (R_p *
exp(-R_beta_lam *
x) + (1 - R_p) *
exp(-LamOverX0 * R_beta_lam *
x));
double ecalHcalGapTotalL0() const
ECAL-HCAL transition.
bool addHit(double r, double phi, unsigned layer=0) override
double radLenIncm() const override
Radiation length in cm.
double ecalTotalL0() const
in the ECAL
Sin< T >::type sin(const T &t)
HcalHitMaker * theHcalHitMaker
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
double gaussShoot(double mean=0.0, double sigma=1.0) const
HDRShower(const RandomEngineAndDistribution *engine, HDShowerParametrization *myParam, EcalHitMaker *myGrid, HcalHitMaker *myHcalHitMaker, int onECAL, double epart)
const HCALProperties * hcalProperties() const
std::vector< float > elastspot
bool getPads(double depth, bool inCm=false)
double hcalTotalL0() const
in the HCAL
const ECALProperties * ecalProperties() const
double flatShoot(double xmin=0.0, double xmax=1.0) const
Log< level::Warning, false > LogWarning
const RandomEngineAndDistribution * random
double interactionLength() const override
Interaction length in cm: 18.5 for Standard ECAL.
Geom::Theta< T > theta() const
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