Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef RecoJets_FFTJetAlgorithms_gridConverters_h
00012 #define RecoJets_FFTJetAlgorithms_gridConverters_h
00013
00014 #include <cassert>
00015 #include "fftjet/Grid2d.hh"
00016
00017 namespace fftjetcms {
00018 template<typename Numeric>
00019 fftjet::Grid2d<float>* convert_Grid2d_to_float(
00020 const fftjet::Grid2d<Numeric>& grid);
00021
00022 template<typename Numeric>
00023 fftjet::Grid2d<double>* convert_Grid2d_to_double(
00024 const fftjet::Grid2d<Numeric>& grid);
00025
00026 template<typename F1, typename F2>
00027 void copy_Grid2d_data(
00028 fftjet::Grid2d<F2>* to, const fftjet::Grid2d<F1>& from);
00029
00030 template<typename F1, typename F2>
00031 void add_Grid2d_data(
00032 fftjet::Grid2d<F2>* to, const fftjet::Grid2d<F1>& from);
00033 }
00034
00036
00037
00038
00040
00041 namespace fftjetcms {
00042 template<typename F1, typename F2>
00043 void copy_Grid2d_data(
00044 fftjet::Grid2d<F2>* to, const fftjet::Grid2d<F1>& from)
00045 {
00046 assert(to);
00047 assert(from.nEta() == to->nEta());
00048 assert(from.nPhi() == to->nPhi());
00049 const unsigned len = from.nEta()*from.nPhi();
00050 const F1* fromData = from.data();
00051 F2* toData = const_cast<F2*>(to->data());
00052 for (unsigned i=0; i<len; ++i)
00053 toData[i] = fromData[i];
00054 }
00055
00056 template<typename F1, typename F2>
00057 void add_Grid2d_data(
00058 fftjet::Grid2d<F2>* to, const fftjet::Grid2d<F1>& from)
00059 {
00060 assert(to);
00061 assert(from.nEta() == to->nEta());
00062 assert(from.nPhi() == to->nPhi());
00063 const unsigned len = from.nEta()*from.nPhi();
00064 const F1* fromData = from.data();
00065 F2* toData = const_cast<F2*>(to->data());
00066 for (unsigned i=0; i<len; ++i)
00067 toData[i] += fromData[i];
00068 }
00069
00070 template<typename Numeric>
00071 fftjet::Grid2d<float>* convert_Grid2d_to_float(
00072 const fftjet::Grid2d<Numeric>& grid)
00073 {
00074 fftjet::Grid2d<float>* to = new fftjet::Grid2d<float>(
00075 grid.nEta(), grid.etaMin(), grid.etaMax(),
00076 grid.nPhi(), grid.phiBin0Edge(), grid.title());
00077 copy_Grid2d_data(to, grid);
00078 return to;
00079 }
00080
00081 template<typename Numeric>
00082 fftjet::Grid2d<double>* convert_Grid2d_to_double(
00083 const fftjet::Grid2d<Numeric>& grid)
00084 {
00085 fftjet::Grid2d<double>* to = new fftjet::Grid2d<double>(
00086 grid.nEta(), grid.etaMin(), grid.etaMax(),
00087 grid.nPhi(), grid.phiBin0Edge(), grid.title());
00088 copy_Grid2d_data(to, grid);
00089 return to;
00090 }
00091 }
00092
00093 #endif // RecoJets_FFTJetAlgorithms_gridConverters_h