4 : theNbins(utheDets.
size()),
8 std::vector<const Det*> theDets = utheDets;
11 std::vector<ConstReferenceCountingPointer<BoundDisk> >
disks(
theNbins);
14 dynamic_cast<const BoundDisk*
> (&(theDets[
i]->surface()));
15 if (disks[
i]==
nullptr) {
16 throw cms::Exception(
"UnexpectedState") <<
"RBorderFinder: implemented for BoundDisks only";
23 theRBorders.push_back(disks.front()->innerRadius());
24 theRBins.push_back((disks.front()->outerRadius()+disks.front()->innerRadius()));
29 double step = (disks.back()->innerRadius() -
30 disks.front()->innerRadius())/(theNbins-1);
31 std::vector<double> spread;
32 std::vector<std::pair<double,double> > REdge;
33 REdge.reserve(theNbins);
36 spread.reserve(theNbins);
41 REdge.push_back(std::pair<double,double>(disks[
i]->
innerRadius(),
48 double br = (REdge[(
i-1)].
second + REdge[
i].first)/2.;
53 if (REdge[
i].first - REdge[
i-1].
second < 0) {
60 if ( rms < 0.01*step) {
67 throw cms::Exception(
"UnexpectedState") <<
"RBorderFinder consistency error";
RBorderFinder(const std::vector< const Det * > &utheDets)
geomsort::ExtractR< Det, float > DetR
U second(std::pair< T, U > const &p)
double stat_RMS(const CONT &cont)
void precomputed_value_sort(RandomAccessIterator begin, RandomAccessIterator end, const Extractor &extr, const Compare &comp)
std::vector< double > theRBorders
std::vector< double > theRBins