00001 #include "FastShowerUtils/Samplers/PeakMeanC0HadEarlyEcalBar11.h"
00002 #include "FastShowerUtils/PolyArgs.h"
00003
00004 #include <cmath>
00005 namespace FastShower{
00006
00007 double PeakMeanC0HadEarlyEcalBar11::value(const PolyArgs& pa) const {
00008
00009 double energy = pa.pp()->energy();
00010 double aDelPhi = fabs(pa.pp()->delPhi());
00011
00012 if ((energy<30.) && (aDelPhi>0.035)) {
00013 double p1 = 22.34*std::exp(-0.1359*energy) - 0.01427;
00014 double p2 = -735.0*std::exp(-0.1920*energy) + 0.02461;
00015
00016 return p1 + p2*aDelPhi;
00017 }else {
00018 double p1 = 0.03375 + 0.00006192*energy;
00019 double p2 = -0.01677*std::exp(-0.02865*energy) + 0.01834;
00020 double p3 = -0.001289*std::exp(-0.04497*energy) + 1.601;
00021
00022 return 1. - p3/(1. + std::exp((aDelPhi-p1)/p2));
00023 }
00024 }
00025
00026 IFn* PeakMeanC0HadEarlyEcalBar11::clone() const {
00027 return new PeakMeanC0HadEarlyEcalBar11();
00028 }
00029 }
00030
00031