00001 #ifndef FASTSHOWER_COREDEPOSITOR_H
00002 #define FASTSHOWER_COREDEPOSITOR_H
00003
00004 #ifndef FASTSHOWER_SP_H
00005 #include "FastShowerUtils/SP.h"
00006 #endif
00007
00008 #ifndef FASTSHOWER_CORESAMPLES_H
00009 #include "FastShowerUtils/CoreSamples.h"
00010 #endif
00011
00012 #ifndef FASTSHOWER_DEPOSITS_H
00013 #include "FastShowerUtils/Deposits.h"
00014 #endif
00015
00016 #ifndef FASTSHOWER_IDEPOSITOR_H
00017 #include "FastShowerUtils/IDepositor.h"
00018 #endif
00019
00020
00021 #ifndef FASTSHOWER_SP_H
00022 #include "FastShowerUtils/SP.h"
00023 #endif
00024
00025 #ifndef STD_PAIR_H
00026 #define STD_PAIR_H
00027 #include <pair.h>
00028 #endif
00029
00030 #ifndef FASTSHOWER_IDEBUG_H
00031 #include "FastShowerUtils/IDebug.h"
00032 #endif
00033
00034 #ifndef FASTSHOWER_DEBUG_BASE_H
00035 #include "FastShowerUtils/DebugBase.h"
00036 #endif
00037
00038
00039 namespace FastShower{
00048 class Pinger;
00049 class ISampler;
00050 class ParticleParameters;
00051
00052 using std::pair;
00053 using boost::array;
00054
00055 class CoreDepositor: virtual public IDepositor, private DebugBase{
00056 public:
00057
00066 enum {sf, sc, sn, af, ac, an};
00068 CoreDepositor(ISampler*, ISampler*, ISampler*, ISampler*);
00069
00073 virtual void deposit(const ParticleParameters&,
00074 const Normalisations&, IDeposits&);
00075
00077
00078
00083 virtual void components(IDebug::Cpts&)const;
00084 typedef boost::array<double, 6> ProximityDeposits;
00085 typedef ProximityDeposits::iterator ProxDepIter;
00086 private:
00090 void fillProximityDeps();
00092
00093 ProximityDeposits m_proximityDeps;
00095 boost::array<SP<ISampler>, 4> m_samplers;
00097 CoreSamples m_cs;
00102 array<array< pair<int, int>, 6>, 4> m_mappers;
00103 };
00104 }
00105 #endif
00106
00107
00108