15 using namespace SurfaceOrientation;
21 handles::const_iterator
end) :
38 for (handles::const_iterator
i=first;
i!=
last; ++
i){
39 hisZ.
fill((*i)->center().z());
41 std::vector<float> zClust = hisZ.
clusterize(resolution);
44 <<
" slabs: " << std::endl;
46 handles::const_iterator slabStart =
first;
47 handles::const_iterator separ =
first;
49 for (
unsigned int i=0;
i<zClust.size() - 1; ++
i) {
50 float zSepar = (zClust[
i] + zClust[
i+1])/2.
f;
51 while ((*separ)->center().z() < zSepar) ++separ;
54 <<
" elements: " << separ-slabStart <<
" unique volumes: ";
63 std::cout <<
" Slab at: " << zClust.back() <<
" elements: " << last-separ
64 <<
" unique volumes: ";
71 std::vector<bSlab>::const_iterator
i =
slabs.begin();
74 for (++i; i!=
slabs.end(); ++
i) {
75 if(fabs(phimax - (*i).maxPhi()) > 0.001 ||
76 fabs(phimin - (*i).minPhi()) > 0.001){
86 std::vector<MagBSlab*> mSlabs;
87 for (std::vector<bSlab>::const_iterator slab = slabs.begin();
88 slab!=slabs.end(); ++slab) {
89 mSlabs.push_back((*slab).buildMagBSlab());
91 mrod =
new MagBRod(mSlabs,slabs.front().minPhi());
std::vector< bSlab > slabs
std::vector< float > clusterize(float resolution)
MagBRod * buildMagBRod() const
Construct the MagBRod upon request.
static void printUniqueNames(handles::const_iterator begin, handles::const_iterator end, bool uniq=true)
Just for debugging...
void precomputed_value_sort(RandomAccessIterator begin, RandomAccessIterator end, const Extractor &extr)
bRod(handles::const_iterator begin, handles::const_iterator end)
Constructor from list of volumes.