46 #ifndef StiDetectorContainer_HH
47 #define StiDetectorContainer_HH
54 #include "Sti/Base/Named.h"
55 #include "Sti/Base/Described.h"
56 #include "Sti/Base/Factory.h"
57 #include "Sti/StiDetector.h"
58 #include "Sti/StiDetectorBuilder.h"
59 #include "Sti/StiMasterDetectorBuilder.h"
60 #include "Sti/StiCompositeLeafIterator.h"
61 #include "Sti/StiMapUtilities.h"
62 #include "Sti/StiCompositeTreeNode.h"
67 template <
class FILTERED>
class Filter;
89 bool moveIn(
double phiCut=-1.0,
double zCut=-1.0,
double rMin=-1.0);
92 vector<StiDetector*> & getDetectors();
93 vector<StiDetector*> & getDetectors(Filter<StiDetector> & filter);
95 vector<StiDetector*>::const_iterator begin()
const;
96 vector<StiDetector*>::const_iterator end()
const;
97 vector<StiDetector*>::iterator begin();
98 vector<StiDetector*>::iterator end();
100 vector<StiDetectorNode*>::const_iterator beginRadial(
const StiDetector * detector)
102 setToDetector(detector);
106 vector<StiDetectorNode*>::const_iterator endRadial()
108 return (*mregion)->end();
111 vector<StiDetectorNode*>::reverse_iterator rbeginRadial(
const StiDetector * detector)
113 setToDetector(detector);
114 vector<StiDetectorNode*>::reverse_iterator it;
115 for (it =(*mregion)->rbegin();
116 it != (*mregion)->rend();
120 if (*it==*mradial_it)
break;
125 StiDetectorNodeVector::const_reverse_iterator rendRadial()
127 return (*mregion)->rend();
130 StiDetectorNodeVector::const_iterator beginPhi(StiDetectorNodeVector::const_iterator &radialIterator)
133 return (*radialIterator)->begin();
135 StiDetectorNodeVector::const_iterator endPhi(StiDetectorNodeVector::const_iterator &radialIterator)
137 return (*radialIterator)->end();
139 StiDetectorNodeVector::const_iterator beginPhi(StiDetectorNodeVector::const_reverse_iterator &radialIterator)
142 return (*radialIterator)->begin();
144 StiDetectorNodeVector::const_iterator endPhi(StiDetectorNodeVector::const_reverse_iterator &radialIterator)
146 return (*radialIterator)->end();
154 bool setPhiIterator(
double oldOrder,
unsigned int oldNDaughters,
155 StiDetectorNodeVector::difference_type oldDistance);
165 StiDetectorNodeVector::const_iterator mregion;
168 StiDetectorNodeVector::const_iterator mradial_it;
170 StiDetectorNodeVector::const_iterator mphi_it;
173 vector<StiDetector *> _sortedDetectors;
174 vector<StiDetector *> _selectedDetectors;
192 return _masterDetectorBuilder;
const StiDetectorNode * root() const
Get the root detector node of this tree.