9 #ifndef WIRECELL_RAYGRID 10 #define WIRECELL_RAYGRID 15 #include <boost/multi_array.hpp> 46 typedef std::tuple<layer_index_t, layer_index_t, layer_index_t>
layer_triple_t;
50 typedef boost::multi_array<double, 3>
tensor_t;
71 int normal_axis=0,
double normal_location = 0.0);
74 Vector zero_crossing(layer_index_t one, layer_index_t two)
const;
83 return std::floor(pitch/m_pitch_mag[layer]);
87 const std::vector<double>&
pitch_mags()
const {
return m_pitch_mag; }
88 const vector_array1d_t&
pitch_dirs()
const {
return m_pitch_dir; }
89 const vector_array1d_t&
centers()
const {
return m_center; }
91 const vector_array2d_t&
ray_jumps()
const {
return m_ray_jump; }
93 const tensor_t
a()
const {
return m_a; }
94 const tensor_t
b()
const {
return m_b; }
128 os <<
"<rayaddr {L" << ra.
layer <<
",G" << ra.
grid <<
"}>";
vector_array2d_t m_ray_jump
const vector_array2d_t & ray_jumps() const
ObjectArray2d< Vector > vector_array2d_t
vector_array2d_t m_zero_crossing
vector_array1d_t m_pitch_dir
std::vector< double > m_pitch_mag
const vector_array1d_t & pitch_dirs() const
std::ostream & operator<<(std::ostream &os, const WireCell::RayGrid::coordinate_t &ra)
int pitch_index(double pitch, layer_index_t layer) const
std::pair< grid_index_t, grid_index_t > grid_range_t
const vector_array1d_t & centers() const
const std::vector< double > & pitch_mags() const
vector_array1d_t m_center
std::tuple< layer_index_t, layer_index_t, layer_index_t > layer_triple_t
std::vector< crossing_t > crossings_t
std::vector< ray_pair_t > ray_pair_vector_t
std::pair< coordinate_t, coordinate_t > crossing_t
std::pair< layer_index_t, layer_index_t > layer_pair_t
boost::multi_array< double, 3 > tensor_t
std::vector< Vector > vector_array1d_t