00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040 #ifndef FASTSHOWER_CONFIGURERBASE_H
00041 #define FASTSHOWER_CONFIGURERBASE_H
00042
00044
00045
00046 #ifndef FASTSHOWER_ICONFIGURER_H
00047 #include "FastShowerUtils/IConfigurer.h"
00048 #endif
00049
00050 #ifndef STD_STRING_H
00051 #define STD_STRING_H
00052 #include <string>
00053 #endif
00054
00055 #ifndef FASTSHOWER_HALODEPOSITOR_H
00056 #include "FastShowerUtils/HaloDepositor.h"
00057 #endif
00058
00059 #ifndef FASTSHOWER_SP_H
00060 #include "FastShowerUtils/SP.h"
00061 #endif
00062
00063 #ifndef FASTSHOWER_IPTRADAPTER_H
00064 #include "FastShowerUtils/IPtrAdapter.h"
00065 #endif
00066
00067 #ifndef STD_MAP_H
00068 #define STD_MAP_H
00069 #include <map>
00070 #endif
00071
00072 namespace FastShower{
00073
00074 class IUpdatingGaussian;
00075 class IProcessedDist;
00076 class IInTail;
00077 class IFn;
00078 class IFnPtr;
00079 class ISampler;
00080 class INormaliser;
00081 class Showerer;
00082 class FnOfParticleParametersPtr;
00083 class FnOfParticleParameters2Ptr;
00084 class UpGnPtr;
00085 class DepositorPtr;
00086 class SamplerPtr;
00087 class IProcessedDistPtr;
00088 class IInTailPtr;
00089 class NormaliserPtr;
00090 class ShowererPtr;
00092 class Moni{};
00093 class NoMoni{};
00094
00095 class ConfigurerBase: virtual public IConfigurer{
00096 public:
00097 ConfigurerBase(Moni);
00098 ConfigurerBase(NoMoni);
00099 virtual ~ConfigurerBase(){};
00102 virtual IFn* findFn(const std::string& ) const;
00103 virtual IFnOfParticleParameters* findFnPP(const std::string& ) const;
00104 virtual IFnOfParticleParameters2* findFnPP2(const std::string& ) const;
00105 virtual IUpdatingGaussian* findIUG(const std::string& ) const;
00106 virtual ISampler* findSampler(const std::string& ) const;
00107 virtual INormaliser* findNormaliser(const std::string&) const;
00108 virtual void eDepositors(std::vector<IDepositor*>&) const;
00109 virtual void hDepositors(std::vector<IDepositor*>&) const;
00110 virtual EnergyLimiter* energyLimiter() const;
00111 virtual IUpdatingGaussian* makeGaussian(const std::string&) const;
00112 virtual IUpdatingGaussian*
00113 makeUpdatingGaussian0LP(const std::string&)const;
00114 virtual IUpdatingGaussian*
00115 makeUpdatingGaussian01P(const std::string&)const;
00116 virtual IUpdatingGaussian*
00117 makeUpdatingGaussian02P(const std::string&)const;
00118 virtual IProcessedDist* makeProcessedNormal(const std::string&) const;
00119 virtual IProcessedDist* makeProcessedFlat(const std::string&) const;
00120 virtual IInTail* makeIInTail(const std::string&) const;
00121
00122
00123
00124
00125 virtual IShowerer* makeShowerer(const std::string&) const;
00126
00127 void addFn (const std::string&, IFn*);
00128 void addFnPP (const std::string&, IFnOfParticleParameters*);
00129 void addFnPP2 (const std::string&, IFnOfParticleParameters2*);
00130 void addIUG (const std::string&, IUpdatingGaussian*);
00131 void addSampler (const std::string&, ISampler*);
00132 void addEdepositor(const std::string&, IDepositor*);
00133 void addHdepositor(const std::string&, IDepositor*);
00134 void addNormaliser(const std::string&, INormaliser*);
00135 private:
00136
00137 ConfigurerBase operator=(const ConfigurerBase&);
00139 std::string m_root;
00141 std::map<std::string, IFn*> m_ifn;
00142 std::map<std::string, IFnOfParticleParameters*> m_ifnPP;
00143 std::map<std::string, IFnOfParticleParameters2*> m_ifnPP2;
00144 std::map<std::string, IUpdatingGaussian*> m_iug;
00145 std::map<std::string, ISampler*> m_isamplers;
00146 std::map<std::string, INormaliser*> m_inormalisers;
00147 std::vector<IDepositor*> m_eDepositors;
00148 std::vector<IDepositor*> m_hDepositors;
00151 IPtrAdapter<IFn>* m_fnPtrAdapter;
00152 IPtrAdapter<IFnOfParticleParameters>* m_fnOfPPPtrAdapter;
00153 IPtrAdapter<IFnOfParticleParameters2>* m_fnOfPP2PtrAdapter;
00154 IPtrAdapter<IUpdatingGaussian>* m_UpGnPtrAdapter;
00155 IPtrAdapter<IDepositor>* m_depositorPtrAdapter;
00156 IPtrAdapter<ISampler>* m_samplerPtrAdapter;
00157 IPtrAdapter<IProcessedDist>* m_procDistPtrAdapter;
00158 IPtrAdapter<IInTail>* m_iinTailPtrAdapter;
00159 IPtrAdapter<INormaliser>* m_normaliserPtrAdapter;
00160 IPtrAdapter<IShowerer>* m_showererPtrAdapter;
00161 };
00162 }
00163 #endif
00164
00165
00166
00167
00168
00169
00170
00171
00172
00173
00174
00175
00176