1 #ifndef __JDETECTOR__JDETECTORSUBSET__
2 #define __JDETECTOR__JDETECTORSUBSET__
21 namespace JDETECTOR {}
22 namespace JPP {
using namespace JDETECTOR; }
55 const double Rmax = std::numeric_limits<double>::max(),
62 for (JDetector::const_iterator i = detector.begin(); i != detector.end(); ++i) {
66 pos.
transform(transformation.getRotation(), transformation.getPosition());
68 if (Z(pos.getZ()) && pos.getX() <= Rmax) {
72 module.transform(transformation);
74 this->push_back(module);
93 const double Dmax = std::numeric_limits<double>::max())
95 for (JDetector::const_iterator i = detector.begin(); i != detector.end(); ++i) {
101 if (pos.getLength() <= Dmax) {
105 module.
sub(position);
107 this->push_back(module);
117 template<
class JComparator_t>
133 const_iterator
end) :
139 inline const_iterator
end()
const {
return __end; }
163 const JComparator_t& comparator,
164 const double Rmax = std::numeric_limits<double>::max(),
169 std::sort(this->begin(), this->end(),
compare);
186 const double Rmax = std::numeric_limits<double>::max(),
191 std::sort(this->begin(), this->end(),
compare);
208 const JComparator_t& comparator,
209 const double Dmax = std::numeric_limits<double>::max()) :
213 std::sort(this->begin(), this->end(),
compare);
229 const double Dmax = std::numeric_limits<double>::max()) :
233 std::sort(this->begin(), this->end(),
compare);
256 return std::lower_bound(this->begin(), this->end(), value,
compare);
268 const double xmax)
const
JDetectorSubset_t(const JDetector &detector, const JVector3D &position, const double Dmax=std::numeric_limits< double >::max())
Constructor.
Data structure for direction in three dimensions.
const_iterator lower_bound(const double value) const
Find first module after given value according specified comparator.
Data structure for a composite optical module.
JDetectorSubset_t(const JDetector &detector, const JAxis3D &track, const double Rmax=std::numeric_limits< double >::max(), const JRangeZ Z=JRangeZ())
Constructor.
Auxiliary classes to compare modules.
const JDirection3D & getDirection() const
Get direction.
Data structure for detector geometry and calibration.
void transform(const JRotation3D &R, const JVector3D &pos)
Transform position.
JDetectorSubset(const JDetector &detector, const JVector3D &position, const double Dmax=std::numeric_limits< double >::max())
Constructor.
Auxiliary class for range of iterators.
JModule & sub(const JVector3D &pos)
Subtract position.
JDetectorSubset(const JDetector &detector, const JAxis3D &track, const double Rmax=std::numeric_limits< double >::max(), const JRangeZ Z=JRangeZ())
Constructor.
JTOOLS::JRange< double > JRangeZ
Type definition of range along z-axis.
JVector3D & sub(const JVector3D &vector)
Subtract vector.
Data structure for vector in three dimensions.
const JComparator_t & getComparator() const
Get comparator.
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.
range_type(const_iterator begin, const_iterator end)
Constructor.
const JPosition3D & getPosition() const
Get position.
Detector subset with binary search functionality.
Detector subset without binary search functionality.
JDetectorSubset(const JDetector &detector, const JAxis3D &track, const JComparator_t &comparator, const double Rmax=std::numeric_limits< double >::max(), const JRangeZ Z=JRangeZ())
Constructor.
const JComparator_t compare
Data structure for position in three dimensions.
const_iterator begin() const
begin of iteration
const_iterator end() const
end of iteration
bool empty() const
check emptyness