00001 #ifndef FASTSHOWER_DOUBLESHOWERERSELECTOR_H 00002 #define FASTSHOWER_DOUBLESHOWERERSELECTOR_H 00003 00004 #ifndef FASTSHOWER_ISHOWERERSELECTOR_H 00005 #include "FastShowerUtils/IShowererSelector.h" 00006 #endif 00007 00008 #ifndef FASTSHOWER_DEBUGBASE_H 00009 #include "FastShowerUtils/DebugBase.h" 00010 #endif 00011 00012 #ifndef FASTSHOWER_SP_H 00013 #include "FastShowerUtils/SP.h" 00014 #endif 00015 00016 00017 #ifndef FASTSHOWER_IACCEPTOR_H 00018 #include "FastShowerUtils/IAcceptor.h" 00019 #endif 00020 00021 #ifndef FASTSHOWER_ISHOWERER_H 00022 #include "FastShowerUtils/IShowerer.h" 00023 #endif 00024 00025 #ifndef FASTSHOWER_IFNOFPARTICLEPARAMETERS2_H 00026 #include "FastShowerUtils/IFnOfParticleParameters2.h" 00027 #endif 00028 00029 #include <iostream> 00030 namespace FastShower{ 00038 class Gridlet; 00039 class IConfigurer; 00040 class IDoubleShowererSelectorConfig; 00041 00042 class DoubleShowererSelector: 00043 virtual public IShowererSelector, private DebugBase{ 00044 public: 00045 DoubleShowererSelector(const IDoubleShowererSelectorConfig&); 00046 ~DoubleShowererSelector(){}; 00047 00049 virtual bool accept(ParticleParameters&, Gridlet*) const; 00050 00052 virtual void components(IDebug::Cpts&) const; 00053 00054 private: 00055 SP<IAcceptor> m_acceptor; 00056 SP<IFnOfParticleParameters2> m_ehSharer; 00057 SP<IShowerer> m_lateShowerer; 00058 SP<IShowerer> m_earlyShowerer; 00059 }; 00060 }//namespace 00061 #endif 00062 00063 00064