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

TripleShowererSelector.cxx

Go to the documentation of this file.
00001 #include "FastShowerUtils/TripleShowererSelector.h"
00002 
00003 #include "FastShowerUtils/Gridlet.h"
00004 #include "FastShowerUtils/IConfigurer.h"
00005 #include "FastShowerUtils/Normalisations.h"
00006 #include "FastShowerUtils/ParticleParameters.h"
00007 #include "FastShowerUtils/IFnOfParticleParameters.h"
00008 #include "FastShowerUtils/ITripleShowererSelectorConfig.h"
00009 
00010 #include <assert.h>
00011 #include <iostream>
00012 namespace FastShower{
00013   //
00014   TripleShowererSelector::TripleShowererSelector
00015   (const ITripleShowererSelectorConfig& conf):
00016     DebugBase("TripleShowererSelector"){
00017     m_acceptor      = conf.acceptor();
00018     m_ehSharer      = conf.ehSharer();
00019     m_softShowerer  = conf.softShowerer();
00020     m_earlyShowerer = conf.earlyShowerer();
00021     m_lateShowerer  = conf.lateShowerer();
00022   }
00023   //
00024   bool TripleShowererSelector::accept(ParticleParameters& pp, 
00025                                       Gridlet* g) const{
00026     if (m_acceptor->accept(pp)){
00027       std::pair<double, double> ehFracs = m_ehSharer->value(pp);
00028       double energy = pp.rawEnergy();
00029       Normalisations eNs(ehFracs.first * energy);
00030       Normalisations hNs(ehFracs.second * energy);
00031       // based on rawEnergy and/or Ecal-energy decide on shower profile
00032       if (energy < 1.5) {
00033         m_softShowerer->shower(pp,g,eNs,hNs);
00034       } else {
00035         // based on ECal fraction decide which Showerer to activate
00036         // if ECAL deposit less/greater than 700MeV  -->  late/early shower
00037         if (ehFracs.first*energy < 0.700) {
00038           m_lateShowerer->shower(pp,g,eNs,hNs);
00039         } else {
00040           m_earlyShowerer->shower(pp,g,eNs,hNs);
00041         }
00042         return true;
00043       }
00044       return true;
00045     }
00046     return false;
00047   }
00048   //
00049   void TripleShowererSelector::components(IDebug::Cpts& c) const{
00050     c.push_back(m_acceptor);
00051     c.push_back(m_ehSharer);
00052     c.push_back(m_softShowerer);
00053     c.push_back(m_lateShowerer);
00054     c.push_back(m_earlyShowerer);
00055   }
00056 
00057 }//namespace
00058 
00059 
00060 
00061 
00062 
00063 
00064 
00065 
00066 
00067 

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