1 #ifndef __JDETECTOR__JDETECTORSUBSET__
2 #define __JDETECTOR__JDETECTORSUBSET__
56 const double Rmax = std::numeric_limits<double>::max(),
63 for (JDetector::const_iterator i = detector.begin(); i != detector.end(); ++i) {
69 if (Z(pos.
getZ()) && pos.
getX() <= Rmax) {
75 this->push_back(module);
94 const double Dmax = std::numeric_limits<double>::max())
96 for (JDetector::const_iterator i = detector.begin(); i != detector.end(); ++i) {
106 module.
sub(position);
108 this->push_back(module);
118 template<
class JComparator_t>
134 const_iterator
end) :
140 inline const_iterator
end()
const {
return __end; }
164 const JComparator_t& comparator,
165 const double Rmax = std::numeric_limits<double>::max(),
170 std::sort(this->begin(), this->end(),
compare);
187 const double Rmax = std::numeric_limits<double>::max(),
192 std::sort(this->begin(), this->end(),
compare);
209 const JComparator_t& comparator,
210 const double Dmax = std::numeric_limits<double>::max()) :
214 std::sort(this->begin(), this->end(),
compare);
230 const double Dmax = std::numeric_limits<double>::max()) :
234 std::sort(this->begin(), this->end(),
compare);
257 return std::lower_bound(this->begin(), this->end(), value,
compare);
269 const double xmax)
const
Data structure for detector geometry and calibration.
Auxiliary classes to compare modules.
Auxiliary class to define a range between two values.
Detector subset without binary search functionality.
JDetectorSubset_t(const JDetector &detector, const JVector3D &position, const double Dmax=std::numeric_limits< double >::max())
Constructor.
JDetectorSubset_t(const JDetector &detector, const JAxis3D &track, const double Rmax=std::numeric_limits< double >::max(), const JRange< double > &Z=JRange< double >())
Constructor.
Detector subset with binary search functionality.
const JComparator_t compare
const JComparator_t & getComparator() const
Get comparator.
const_iterator lower_bound(const double value) const
Find first module after given value according specified comparator.
JDetectorSubset(const JDetector &detector, const JAxis3D &track, const double Rmax=std::numeric_limits< double >::max(), const JRange< double > &Z=JRange< double >())
Constructor.
range_type getRange(const double xmin, const double xmax) const
Get range of modules between given values according specified comparator.
JDetectorSubset(const JDetector &detector, const JVector3D &position, const JComparator_t &comparator, const double Dmax=std::numeric_limits< double >::max())
Constructor.
JDetectorSubset(const JDetector &detector, const JVector3D &position, const double Dmax=std::numeric_limits< double >::max())
Constructor.
JDetectorSubset(const JDetector &detector, const JAxis3D &track, const JComparator_t &comparator, const double Rmax=std::numeric_limits< double >::max(), const JRange< double > &Z=JRange< double >())
Constructor.
Data structure for a composite optical module.
void transform(const JRotation3D &R, const JVector3D &pos)
Transformation of geometry (see method JGEOMETRY3D::JPosition3D::transform(const JRotation3D&,...
JModule & sub(const JVector3D &pos)
Subtract position.
Data structure for direction in three dimensions.
const JDirection3D & getDirection() const
Get direction.
Data structure for position in three dimensions.
const JPosition3D & getPosition() const
Get position.
void transform(const JRotation3D &R, const JVector3D &pos)
Transform position.
const JRotation3D & getRotation() const
Get rotation.
Data structure for vector in three dimensions.
double getLength() const
Get length.
double getZ() const
Get z position.
JVector3D & sub(const JVector3D &vector)
Subtract vector.
double getX() const
Get x position.
file Auxiliary data structures and methods for detector calibration.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Auxiliary class for range of iterators.
bool empty() const
check emptyness
const_iterator begin() const
begin of iteration
range_type(const_iterator begin, const_iterator end)
Constructor.
const_iterator end() const
end of iteration