15 public unary_function< const ForwardDetLayer*, bool> {
21 float zdiff = a->
position().
z() + theLayer->position().z();
23 theLayer->specificSurface().innerRadius();
26 if ( fabs( zdiff) < 1. && fabs( rdiff) < 1.)
return true;
38 FDLC leftLayers =
FDLC( flc.begin(), middle);
39 FDLC rightLayers =
FDLC( middle, flc.end());
40 vector<PairType> foundPairs;
42 for (
FDLI i = leftLayers.begin();
i != leftLayers.end();
i++) {
45 if ( partner == 0)
throw cms::Exception(
"SymmetricLayerFinder",
"Assymmetric forward layers in Tracker");
47 foundPairs.push_back( make_pair( *
i, partner));
51 for ( vector<PairType>::iterator ipair = foundPairs.begin();
52 ipair != foundPairs.end(); ipair++) {
53 theForwardMap[ipair->first] = ipair->second;
54 theForwardMap[ipair->second] = ipair->first;
59 const FDLC& rightLayers)
63 if ( result == rightLayers.end())
return 0;
70 for (
ConstFDLI i = input.begin();
i != input.end();
i++) {
71 result.push_back( mirror(*
i));
SymmetricLayerFinder(const FDLC &)
const ForwardDetLayer * theLayer
const ForwardDetLayer * mirror(const ForwardDetLayer *layer)
static std::string const input
bool operator()(const ForwardDetLayer *a)
virtual const BoundDisk & specificSurface() const
const ForwardDetLayer * mirrorPartner(const ForwardDetLayer *layer, const FDLC &rightLayers)
virtual const Surface::PositionType & position() const
Returns position of the surface.
std::vector< const ForwardDetLayer * > FDLC
ForwardLayerMirrorImage(const ForwardDetLayer *layer)
FDLC::const_iterator ConstFDLI