00001 #ifndef ATLFAST_DEPOSITS_CXX
00002 #define ATLFAST_DEPOSITS_CXX
00003
00004 template<class T, int hDimension>
00005 const int Deposits<T, hDimension>::s_dimension((2*hDimension)+1);
00006
00007 template<class T, int hDimension>
00008 const int Deposits<T, hDimension>::s_center(2*hDimension*(hDimension+1));
00009
00010 template<class T, int hDimension>
00011 const int Deposits<T, hDimension>::s_nElements(s_dimension*s_dimension);
00012
00013 template<class T, int hDimension>
00014 inline
00015 Deposits<T, hDimension>::Deposits():m_elements(s_nElements, 0.){}
00016
00017 template<class T, int hDimension>
00018 inline
00019 void Deposits<T, hDimension>::accept(int eta,
00020 int phi,
00021 double energy){
00022 int index = this->index(eta, phi);
00023 assert(index>= 0 && index<s_nElements );
00024 m_elements[index]+=energy;
00025 }
00026
00027 template<class T, int hDimension>
00028 inline
00029 void Deposits<T, hDimension>::normalise(double scaleFactor){
00030 transform(m_elements.begin(), m_elements.end(), m_elements.begin(),
00031 Scale(scaleFactor));
00032 }
00033
00034 template<class T, int hDimension>
00035 inline
00036 int Deposits<T, hDimension>::index(int eta, int phi){
00037
00038 return s_center+eta+(s_dimension*phi);
00039 }
00040
00041 template<class T, int hDimension>
00042 inline
00043 void Deposits<T, hDimension>::reset() {
00044 m_elements=(std::vector<T>(s_nElements, 0.));
00045 }
00046
00047 template<class T, int hDimension>
00048 inline
00049 Deposits<T, hDimension>::ConstIter Deposits<T, hDimension>::begin() const {
00050 return m_elements.begin();
00051 }
00052
00053 template<class T, int hDimension>
00054 inline
00055 Deposits<T, hDimension>::ConstIter Deposits<T, hDimension>::end() const{
00056 return m_elements.end();
00057 }
00058
00059 template<class T, int hDimension>
00060 inline
00061 std::size_t Deposits<T, hDimension>::dimension() const{
00062 return s_dimension;
00063 }
00064
00065 #endif
00066
00067
00068
00069
00070
00071
00072
00073