00001 #ifndef FASTSHOWER_SHOWERER_H
00002 #define FASTSHOWER_SHOWERER_H
00003
00004 #ifndef ATLAS_ISHOWERER_H
00005 #include "FastShowerUtils/IShowerer.h"
00006 #endif
00007
00008 #ifndef ATLAS_DEBUGBASE_H
00009 #include "FastShowerUtils/DebugBase.h"
00010 #endif
00011
00012 #ifndef FASTSHOWER_SP_H
00013 #include "FastShowerUtils/SP.h"
00014 #endif
00015
00016 #ifndef STD_VECTOR_H
00017 #define STD_VECTOR_H
00018 #include <vector>
00019 #endif
00020
00021 #ifndef STD_STRING_H
00022 #define STD_STRING_H
00023 #include <string>
00024 #endif
00025
00026 namespace FastShower{
00031 using std::vector;
00032
00033 class Gridlet;
00034 class IDepositor;
00035 class INormaliser;
00036 class IConfigurer;
00037 class Normalisations;
00038 class ParticleParameters;
00039 class IFnOfParticleParameters;
00040 class EnergyLimiter;
00041
00042 class Showerer: virtual public IShowerer, private DebugBase{
00043 public:
00044 Showerer(IConfigurer*);
00045
00046 Showerer(vector<IDepositor*>,
00047 vector<IDepositor*>,
00048 INormaliser*,
00049 INormaliser*);
00050
00051 Showerer(const IConfigurer*, const std::string&);
00052 Showerer(const Showerer&);
00053 Showerer& operator=(const Showerer&);
00054 ~Showerer();
00055 virtual void shower(ParticleParameters&, Gridlet*,
00056 Normalisations&, Normalisations&) const;
00057 virtual void normalise(const ParticleParameters&,
00058 Normalisations&, Normalisations&) const;
00060 virtual void components(IDebug::Cpts&) const;
00061 private:
00064 std::vector<IDepositor*> m_eDepositors;
00066 std::vector<IDepositor*> m_hDepositors;
00068 SP<INormaliser> m_eNormaliser;
00069 SP<INormaliser> m_hNormaliser;
00071 SP<EnergyLimiter> m_eLimiter;
00072 };
00073
00074 }
00075 #endif
00076
00077
00078
00079
00080
00081