00001
00002
00003
00004
00005 #include "FastShowerUtils/Samplers/C0HadEarlyHcalBar2.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 C0HadEarlyHcalBar2::C0HadEarlyHcalBar2(IUpdatingGaussian* g,
00024 IProcessedDist* tail,
00025 IInTail* it):
00026 ISampler(), ICell0(), DebugBase("C0HadEarlyHcalBar2"),
00027 m_peak(g), m_tail(tail), m_inTail(it){}
00029 C0HadEarlyHcalBar2::C0HadEarlyHcalBar2(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* C0HadEarlyHcalBar2::clone() const {
00039 return new C0HadEarlyHcalBar2(*this);
00040 }
00042 void C0HadEarlyHcalBar2::sample(const PolyArgs& pa,
00043 CoreSamples& cs)const{
00044
00045 if( m_inTail->operator()(pa) ){
00046 cs.fill(this, evalTail(pa) );
00047 }else{
00048 cs.fill(this, evalPeak(pa) );
00049 }
00050 }
00052 double C0HadEarlyHcalBar2::evalTail(const PolyArgs&) const {
00053 LinearProcessor lp(0.1, 0.0);
00054 return m_tail->sample(&lp);
00055 }
00057 double C0HadEarlyHcalBar2::evalPeak(const PolyArgs& pa)const{
00058 return m_peak->sample(0.1, 100, 1.0, 100, pa);
00059 }
00061 double C0HadEarlyHcalBar2::lastValue(const CoreSamples& cs) const {
00062 return cs.give(this);
00063 }
00065 void C0HadEarlyHcalBar2::components(IDebug::Cpts& v) const{
00066 v.push_back(m_peak);
00067 v.push_back(m_tail);
00068 v.push_back(m_inTail);
00069 }
00070
00071 }
00072
00073
00074
00075
00076
00077
00078