20 #ifndef __PHField3DCylindrical_H__
21 #define __PHField3DCylindrical_H__
25 #include <boost/tuple/tuple.hpp>
26 #include <boost/tuple/tuple_comparison.hpp>
34 typedef boost::tuple<float, float, float> trio;
37 PHField3DCylindrical(
const std::string& filename,
int verb = 0,
const float magfield_rescale = 1.0);
39 void GetFieldValue(
const double Point[4],
double* Bfield)
const;
40 void GetFieldCyl(
const double CylPoint[4],
double* Bfield)
const;
44 std::vector<std::vector<std::vector<float> > >
BFieldZ_;
45 std::vector<std::vector<std::vector<float> > >
BFieldR_;
46 std::vector<std::vector<std::vector<float> > >
BFieldPHI_;
56 bool bin_search(
const std::vector<float>& vec,
unsigned start,
unsigned end,
const float& key,
unsigned& index)
const;
57 void print_map(std::map<trio, trio>::iterator& it)
const;
std::vector< float > z_map_
std::vector< std::vector< std::vector< float > > > BFieldPHI_
std::vector< std::vector< std::vector< float > > > BFieldZ_
virtual ~PHField3DCylindrical()
std::vector< float > r_map_
std::vector< std::vector< std::vector< float > > > BFieldR_
void GetFieldValue(const double Point[4], double *Bfield) const
void GetFieldCyl(const double CylPoint[4], double *Bfield) const
std::vector< float > phi_map_
PHField3DCylindrical(const std::string &filename, int verb=0, const float magfield_rescale=1.0)
transient DST object for field storage and access