4 : theNbins(utheDets.
size()),
6 isPhiOverlapping_(
false) {
7 std::vector<const Det*> theDets = utheDets;
14 LogTrace(metname) <<
"RecoMuonDetLayers::PhiBorderFinder " 15 <<
"step w: " << step <<
" # of bins: " <<
theNbins;
17 std::vector<double> spread(theNbins);
18 std::vector<std::pair<double,double> > phiEdge;
19 phiEdge.reserve(theNbins);
28 <<
" spread: " << spread[
i];
32 dynamic_cast<const BoundPlane*
>(&theDets[
i]->surface());
35 throw cms::Exception(
"UnexpectedState") << (
"PhiBorderFinder: det surface is not a BoundPlane");
38 std::vector<GlobalPoint> dc =
42 for (std::vector<GlobalPoint>::const_iterator
pt=dc.begin();
44 float phi = (*pt).phi();
47 if (phi > phimax) phimax =
phi;
54 phiEdge.push_back(std::pair<double,double>(
phimin,phimax));
73 fabs(firstPhi-secondPhi) <
Geom::pi() )
88 if ( rms < 0.01*step) {
95 throw cms::Exception(
"UnexpectedState") <<
"PhiBorderFinder: consistency error";
const std::string metname
geomsort::ExtractPhi< Det, float > DetPhi
U second(std::pair< T, U > const &p)
void swap(edm::DataFrameContainer &lhs, edm::DataFrameContainer &rhs)
std::vector< double > thePhiBorders
PhiBorderFinder(const std::vector< const Det * > &utheDets)
double stat_RMS(const CONT &cont)
T value() const
Explicit access to value in case implicit conversion not OK.
static std::vector< GlobalPoint > corners(const Plane &)
void precomputed_value_sort(RandomAccessIterator begin, RandomAccessIterator end, const Extractor &extr)
static int position[264][3]
double positiveRange(double phi) const
std::vector< double > thePhiBins
int binIndex(int i) const