Main Page   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members   File Members  

S0HadEarlyHcalBar1.cxx

Go to the documentation of this file.
00001 // ================================================
00002 // Implementation of S0HadEarlyHcalBar1
00003 // ================================================
00004 
00005 #include "FastShowerUtils/Samplers/S0HadEarlyHcalBar1.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 "FastShowerUtils/SplitDecision.h"
00016 #include "CLHEP/Random/RandFlat.h"
00017 #include <cmath>
00018 #include <iostream>
00019 
00020 namespace FastShower{
00021 
00022   using std::pair;
00023 
00024   S0HadEarlyHcalBar1::S0HadEarlyHcalBar1(IProcessedDist* peak, 
00025                                          IProcessedDist* tail,
00026                                          IInTail* it):
00027     ISampler(), ISlice0(), DebugBase("S0HadEarlyHcalBar1"), 
00028     m_peak(peak), m_tail(tail), m_inTail(it){}
00030   S0HadEarlyHcalBar1::S0HadEarlyHcalBar1(const IConfigurer* c,
00031                                          const std::string& s):
00032     DebugBase(s), m_peak(0), m_tail(0), m_inTail(0){
00033     m_peak           = c->makeProcessedFlat( text() ) ;
00034     m_tail           = c->makeProcessedFlat( text() );
00035     m_inTail         = c->makeIInTail( text() );
00036     cout<<text()<<" finishing construction"<<endl;
00037   }
00039   ISampler* S0HadEarlyHcalBar1::clone() const {
00040     return new S0HadEarlyHcalBar1(*this);
00041   }
00043   void S0HadEarlyHcalBar1::sample(const PolyArgs& pa, 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 S0HadEarlyHcalBar1::evalTail(const PolyArgs&) const {
00053     
00054     double lLimit, uLimit;
00055 
00056     //SplitDecision whichTail(0.17);    
00057     SplitDecision whichTail(0.30);    
00058     if (whichTail.lower()) {
00059       lLimit = 0.0;
00060       uLimit = 0.1;
00061     }else {
00062       lLimit = 0.9;
00063       uLimit = 1.0;
00064     } 
00065     LinearProcessor lp((uLimit-lLimit), lLimit);
00066     return  m_tail->sample(&lp);
00067   }
00069   double S0HadEarlyHcalBar1::evalPeak(const PolyArgs&)const{
00070     LinearProcessor lp(0.8, 0.1);
00071     return m_peak->sample(&lp);
00072   }
00074   double S0HadEarlyHcalBar1::lastValue(const CoreSamples& cs) const {
00075     return cs.give(this);
00076   }
00078   void S0HadEarlyHcalBar1::components(IDebug::Cpts& v) const{
00079     v.push_back(m_peak);
00080     v.push_back(m_tail);
00081     v.push_back(m_inTail);
00082   }
00083   
00084 }//namespace
00085 
00086 
00087 
00088 
00089 
00090 
00091 

Generated on Tue Mar 18 11:50:04 2003 for FastShowerUtils by doxygen1.3-rc1