1 #ifndef PhiBorderFinder_H
2 #define PhiBorderFinder_H
36 std::vector<const Det*> theDets = utheDets;
43 LogTrace(metname) <<
"RecoMuonDetLayers::PhiBorderFinder "
44 <<
"step w: " << step <<
" # of bins: " <<
theNbins;
46 std::vector<double> spread(theNbins);
47 std::vector<std::pair<double,double> > phiEdge;
48 phiEdge.reserve(theNbins);
57 <<
" spread: " << spread[
i];
61 dynamic_cast<const BoundPlane*
>(&theDets[
i]->surface());
64 throw cms::Exception(
"UnexpectedState") << (
"PhiBorderFinder: det surface is not a BoundPlane");
67 std::vector<GlobalPoint> dc =
71 for (std::vector<GlobalPoint>::const_iterator
pt=dc.begin();
73 float phi = (*pt).phi();
76 if (phi > phimax) phimax =
phi;
83 phiEdge.push_back(std::pair<double,double>(
phimin,phimax));
102 fabs(firstPhi-secondPhi) <
Geom::pi() )
117 if ( rms < 0.01*step) {
124 throw cms::Exception(
"UnexpectedState") <<
"PhiBorderFinder: consistency error";
162 return (ind < 0) ? ind+
theNbins : ind;
const std::string metname
geomsort::ExtractPhi< Det, float > DetPhi
virtual ~PhiBorderFinder()
U second(std::pair< T, U > const &p)
const std::vector< double > & phiBorders() const
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.
bool isPhiPeriodic() const
Returns true if the Dets are periodic in phi.
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
bool isPhiOverlapping() const
Returns true if any 2 of the Det overlap in phi.
volatile std::atomic< bool > shutdown_flag false
int binIndex(int i) const
tuple size
Write out results.
const std::vector< double > & phiBins() const
The centers of the Dets.