00001
00002
00003
00004
00005 #include "FastShowerUtils/Samplers/S0HadEarlyHcalBar2.h"
00006
00007 #include "FastShowerUtils/PolyArgs.h"
00008 #include "FastShowerUtils/IFn.h"
00009 #include "FastShowerUtils/CoreSamples.h"
00010 #include "FastShowerUtils/IProcessedDist.h"
00011 #include "FastShowerUtils/IConfigurer.h"
00012 #include "FastShowerUtils/LinearProcessor.h"
00013 #include "FastShowerUtils/ProcessedNormal.h"
00014 #include "FastShowerUtils/IInTail.h"
00015 #include "CLHEP/Random/RandFlat.h"
00016 #include <cmath>
00017 #include <iostream>
00018
00019 namespace FastShower{
00020
00021 using std::pair;
00022
00023 S0HadEarlyHcalBar2::S0HadEarlyHcalBar2(IUpdatingGaussian* g,
00024 IProcessedDist* tail,
00025 IInTail* it):
00026 ISampler(), ISlice0(), DebugBase("S0HadEarlyHcalBar2"),
00027 m_peak(g), m_tail(tail), m_inTail(it){}
00029 S0HadEarlyHcalBar2::S0HadEarlyHcalBar2(const IConfigurer* c,
00030 const std::string& s):
00031 DebugBase(s), m_peak(0), m_tail(0), m_inTail(0){
00032 m_peak = c->findIUG( text()+"Peak" ) ;
00033 m_tail = c->makeProcessedFlat( text() );
00034 m_inTail = c->makeIInTail( text() );
00035 cout<<text()<<" finishing construction"<<endl;
00036 }
00038 ISampler* S0HadEarlyHcalBar2::clone() const {return new S0HadEarlyHcalBar2(*this);}
00040 void S0HadEarlyHcalBar2::sample(const PolyArgs& pa, CoreSamples& cs)const{
00041
00042 if( m_inTail->operator()(pa) ){
00043 cs.fill(this, evalTail(pa) );
00044 }else{
00045 cs.fill(this, evalPeak(pa) );
00046 }
00047 }
00049 double S0HadEarlyHcalBar2::evalTail(const PolyArgs&) const {
00050 LinearProcessor lp(0.1, 0.0);
00051 return m_tail->sample(&lp);
00052 }
00054 double S0HadEarlyHcalBar2::evalPeak(const PolyArgs& pa)const{
00055 return m_peak->sample(0.1, 100, 1.0, 100, pa);
00056 }
00058 double S0HadEarlyHcalBar2::lastValue(const CoreSamples& cs) const {
00059 return cs.give(this);
00060 }
00062 void S0HadEarlyHcalBar2::components(IDebug::Cpts& v) const{
00063 v.push_back(m_peak);
00064 v.push_back(m_tail);
00065 v.push_back(m_inTail);
00066 }
00067
00068 }
00069
00070
00071
00072
00073
00074
00075