00001 #include "FastShowerUtils/Normalisers/EmHcalLeakageBar.h"
00002
00003 #include "FastShowerUtils/ParticleParameters.h"
00004
00005 #include "CLHEP/Random/RandFlat.h"
00006
00007 #include <cmath>
00008
00009 namespace FastShower{
00010
00011 std::pair<double, double>
00012 EmHcalLeakageBar::value(const ParticleParameters& pp) const{
00013
00014 double energy = pp.energy();
00015
00016
00017 double p1 = 0.1932*std::exp(0.01054*energy) - 0.2260;
00018 double p2 = (energy>55.0) ? 0.0400 : 0.03234 - 0.00001126*energy;
00019 double p3 = 0.5564 - 0.003748*energy;
00020
00021 double base = p1 - p2*std::log(1.0/RandFlat::shoot() - 1.0);
00022 double leakage = (base>0.) ? std::pow(base,(1.0/p3)) : 0.;
00023
00024 std::pair<double, double> ehFracs;
00025 ehFracs.first = 1.0 - leakage;
00026 ehFracs.second = leakage;
00027
00028 return ehFracs;
00029 }
00030
00031 IFnOfParticleParameters2* EmHcalLeakageBar::clone() const {
00032 return new EmHcalLeakageBar(*this);
00033 }
00034 }
00035
00036
00037