CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Protected Member Functions | Private Attributes
MuRingForwardDoubleLayer Class Reference

#include <MuRingForwardDoubleLayer.h>

Inheritance diagram for MuRingForwardDoubleLayer:
RingedForwardLayer ForwardDetLayer DetLayer GeometricSearchDet

Public Member Functions

const MuRingForwardLayerbackLayer () const
 
virtual const std::vector
< const GeomDet * > & 
basicComponents () const
 
virtual std::pair< bool,
TrajectoryStateOnSurface
compatible (const TrajectoryStateOnSurface &, const Propagator &, const MeasurementEstimator &) const
 
virtual std::vector< DetWithStatecompatibleDets (const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est) const
 
virtual const std::vector
< const GeometricSearchDet * > & 
components () const
 Returns basic components, if any. More...
 
const MuRingForwardLayerfrontLayer () const
 
virtual std::vector< DetGroupgroupedCompatibleDets (const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est) const
 
virtual bool hasGroups () const
 
bool isCrack (const GlobalPoint &gp) const
 
bool isInsideOut (const TrajectoryStateOnSurface &tsos) const
 
 MuRingForwardDoubleLayer (const std::vector< const ForwardDetRing * > &frontRings, const std::vector< const ForwardDetRing * > &backRings)
 Constructor, takes ownership of pointers. More...
 
virtual const std::vector
< const ForwardDetRing * > & 
rings () const
 Return the vector of rings. More...
 
void selfTest () const
 
virtual SubDetector subDetector () const
 The type of detector (PixelBarrel, PixelEndcap, TIB, TOB, TID, TEC, CSC, DT, RPCBarrel, RPCEndcap) More...
 
virtual ~MuRingForwardDoubleLayer ()
 
- Public Member Functions inherited from RingedForwardLayer
 RingedForwardLayer ()
 
virtual ~RingedForwardLayer ()
 
- Public Member Functions inherited from ForwardDetLayer
bool contains (const Local3DPoint &p) const
 
 ForwardDetLayer ()
 
virtual Location location () const
 Which part of the detector (barrel, endcap) More...
 
virtual const BoundDiskspecificSurface () const
 
virtual const BoundSurfacesurface () const
 The surface of the GeometricSearchDet. More...
 
virtual ~ForwardDetLayer ()
 
- Public Member Functions inherited from DetLayer
std::vector< const DetLayer * > compatibleLayers (NavigationDirection direction) const
 
std::vector< const DetLayer * > compatibleLayers (const FreeTrajectoryState &fts, PropagationDirection timeDirection) const
 
std::vector< const DetLayer * > compatibleLayers (const FreeTrajectoryState &fts, PropagationDirection timeDirection, int &counter) const
 
 DetLayer ()
 
NavigableLayernavigableLayer () const
 Return the NavigableLayer associated with this DetLayer. More...
 
virtual std::vector< const
DetLayer * > 
nextLayers (NavigationDirection direction) const
 
virtual std::vector< const
DetLayer * > 
nextLayers (const FreeTrajectoryState &fts, PropagationDirection timeDirection) const
 
virtual void setNavigableLayer (NavigableLayer *nlp)
 Set the NavigableLayer associated with this DetLayer. More...
 
virtual ~DetLayer ()
 
- Public Member Functions inherited from GeometricSearchDet
virtual void compatibleDetsV (const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est, std::vector< DetWithState > &result) const
 
 GeometricSearchDet ()
 
virtual void groupedCompatibleDetsV (const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est, std::vector< DetGroup > &result) const
 
virtual const
Surface::PositionType
position () const
 Returns position of the surface. More...
 
virtual ~GeometricSearchDet ()
 

Protected Member Functions

virtual BoundDiskcomputeSurface ()
 
- Protected Member Functions inherited from ForwardDetLayer
virtual void initialize ()
 
float rmax () const
 
float rmin () const
 
void setSurface (BoundDisk *cp)
 
float zmax () const
 
float zmin () const
 

Private Attributes

MuRingForwardLayer theBackLayer
 
std::vector< const GeomDet * > theBasicComponents
 
std::vector< const
GeometricSearchDet * > 
theComponents
 
MuRingForwardLayer theFrontLayer
 
std::vector< const
ForwardDetRing * > 
theRings
 

Additional Inherited Members

- Public Types inherited from DetLayer
typedef
GeomDetEnumerators::Location 
Location
 
typedef
GeomDetEnumerators::SubDetector 
SubDetector
 
- Public Types inherited from GeometricSearchDet
typedef std::pair< const
GeomDet
*, TrajectoryStateOnSurface
DetWithState
 
typedef BoundSurface::PositionType PositionType
 
typedef BoundSurface::RotationType RotationType
 
typedef TrajectoryStateOnSurface TrajectoryState
 
- Protected Attributes inherited from GeometricSearchDet
GeomDetCompatibilityChecker theCompatibilityChecker
 

Detailed Description

A plane composed two layers of disks. Represents forward muon CSC stations.

Date:
2007/12/19 09:48:34
Revision:
1.2
Author
R. Wilkinson

Definition at line 21 of file MuRingForwardDoubleLayer.h.

Constructor & Destructor Documentation

MuRingForwardDoubleLayer::MuRingForwardDoubleLayer ( const std::vector< const ForwardDetRing * > &  frontRings,
const std::vector< const ForwardDetRing * > &  backRings 
)

Constructor, takes ownership of pointers.

Definition at line 23 of file MuRingForwardDoubleLayer.cc.

References basicComponents(), computeSurface(), BoundDisk::innerRadius(), LogTrace, metname, BoundDisk::outerRadius(), GloballyPositioned< T >::position(), selfTest(), ForwardDetLayer::setSurface(), ForwardDetLayer::specificSurface(), theBasicComponents, theComponents, theRings, and PV3DBase< T, PVType, FrameType >::z().

24  :
25 
26  theFrontLayer(frontRings),
27  theBackLayer(backRings),
28  theRings(frontRings), // add back later
29  theComponents(),
31 {
32 
33  const std::string metname = "Muon|RecoMuon|RecoMuonDetLayers|MuRingForwardDoubleLayer";
34 
35  theRings.insert(theRings.end(), backRings.begin(), backRings.end());
36  theComponents = std::vector <const GeometricSearchDet*>(theRings.begin(), theRings.end());
37 
38  // Cache chamber pointers (the basic components_)
39  // and find extension in R and Z
40  for (vector<const ForwardDetRing*>::const_iterator it=theRings.begin();
41  it!=theRings.end(); it++) {
42  vector<const GeomDet*> tmp2 = (*it)->basicComponents();
43  theBasicComponents.insert(theBasicComponents.end(),tmp2.begin(),tmp2.end());
44  }
45 
47 
48  LogTrace(metname) << "Constructing MuRingForwardDoubleLayer: "
49  << basicComponents().size() << " Dets "
50  << theRings.size() << " Rings "
51  << " Z: " << specificSurface().position().z()
52  << " R1: " << specificSurface().innerRadius()
53  << " R2: " << specificSurface().outerRadius();
54 
55  selfTest();
56 }
const std::string metname
virtual const std::vector< const GeomDet * > & basicComponents() const
void setSurface(BoundDisk *cp)
std::vector< const GeomDet * > theBasicComponents
std::vector< const ForwardDetRing * > theRings
T z() const
Definition: PV3DBase.h:63
virtual const BoundDisk & specificSurface() const
#define LogTrace(id)
virtual BoundDisk * computeSurface()
std::vector< const GeometricSearchDet * > theComponents
float outerRadius() const
The outer radius of the disk.
Definition: BoundDisk.h:75
float innerRadius() const
The inner radius of the disk.
Definition: BoundDisk.h:72
const PositionType & position() const
virtual MuRingForwardDoubleLayer::~MuRingForwardDoubleLayer ( )
inlinevirtual

Definition at line 29 of file MuRingForwardDoubleLayer.h.

29 {}

Member Function Documentation

const MuRingForwardLayer* MuRingForwardDoubleLayer::backLayer ( ) const
inline

Definition at line 71 of file MuRingForwardDoubleLayer.h.

References theBackLayer.

71 {return &theBackLayer;}
virtual const std::vector<const GeomDet*>& MuRingForwardDoubleLayer::basicComponents ( ) const
inlinevirtual

Implements GeometricSearchDet.

Definition at line 34 of file MuRingForwardDoubleLayer.h.

References theBasicComponents.

Referenced by MuRingForwardDoubleLayer().

34 {return theBasicComponents;}
std::vector< const GeomDet * > theBasicComponents
std::pair< bool, TrajectoryStateOnSurface > MuRingForwardDoubleLayer::compatible ( const TrajectoryStateOnSurface ts,
const Propagator ,
const MeasurementEstimator  
) const
virtual

tests the geometrical compatibility of the Det with the predicted state. The FreeTrajectoryState argument is propagated to the Det surface using the Propagator argument. The resulting TrajectoryStateOnSurface is tested for compatibility with the surface bounds. If compatible, a std::pair< true, propagatedState> is returned. If the propagation fails, or if the state is not compatible, a std::pair< false, propagatedState> is returned.

Reimplemented from ForwardDetLayer.

Definition at line 90 of file MuRingForwardDoubleLayer.cc.

References BoundSurface::bounds(), deltaR(), TrajectoryStateOnSurface::hasError(), SimpleDiskBounds::inside(), insideOut, isInsideOut(), TrajectoryStateOnSurface::isValid(), TrajectoryStateOnSurface::localDirection(), TrajectoryStateOnSurface::localError(), TrajectoryStateOnSurface::localPosition(), LogTrace, metname, LocalTrajectoryError::positionError(), Propagator::propagate(), ForwardDetLayer::rmax(), ForwardDetLayer::rmin(), ForwardDetLayer::specificSurface(), mathSSE::sqrt(), ForwardDetLayer::surface(), funct::tan(), theBackLayer, theFrontLayer, PV3DBase< T, PVType, FrameType >::theta(), Bounds::thickness(), tmp, LocalError::xx(), LocalError::yy(), ForwardDetLayer::zmax(), ForwardDetLayer::zmin(), and zPos.

Referenced by compatibleDets().

92 {
93  // mostly copied from ForwardDetLayer, except propagates to closest surface,
94  // not to center
95  const std::string metname = "Muon|RecoMuon|RecoMuonDetLayers|MuRingForwardDoubleLayer";
96 
97  bool insideOut = isInsideOut(startingState);
98  const MuRingForwardLayer & closerLayer = (insideOut) ? theFrontLayer : theBackLayer;
99  LogTrace("Muon|RecoMuon|RecoMuonDetLayers|MuRingForwardDoubleLayer")
100  << "MuRingForwardDoubleLayer::compatible is assuming inside-out direction: "<< insideOut;
101 
102 
103  //std::pair<bool, TrajectoryStateOnSurface> result
104  // = closerLayer.compatible(startingState, prop, est);
105  //if(!result.first)
106  // {
107  // result = furtherLayer.compatible(startingState, prop, est);
108  //}
109 
110 
111  TrajectoryStateOnSurface myState = prop.propagate( startingState, closerLayer.specificSurface());
112  if ( !myState.isValid()) return make_pair( false, myState);
113 
114  // take into account the thickness of the layer
115  float deltaR = surface().bounds().thickness()/2. *
116  fabs( tan( myState.localDirection().theta()));
117 
118  // take into account the error on the predicted state
119  const float nSigma = 3.;
120  if (myState.hasError()) {
121  LocalError err = myState.localError().positionError();
122  // ignore correlation for the moment...
123  deltaR += nSigma * sqrt(err.xx() + err.yy());
124  }
125 
126  float zPos = (zmax()+zmin())/2.;
127  SimpleDiskBounds tmp( rmin()-deltaR, rmax()+deltaR,
128  zmin()-zPos, zmax()-zPos);
129 
130  return make_pair( tmp.inside(myState.localPosition()), myState);
131 }
float xx() const
Definition: LocalError.h:24
const std::string metname
double zPos
LocalVector localDirection() const
virtual const BoundSurface & surface() const
The surface of the GeometricSearchDet.
float rmin() const
float zmin() const
LocalError positionError() const
Geom::Theta< T > theta() const
Definition: PV3DBase.h:74
virtual float thickness() const =0
float yy() const
Definition: LocalError.h:26
T sqrt(T t)
Definition: SSEVec.h:46
virtual const BoundDisk & specificSurface() const
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
const LocalTrajectoryError & localError() const
#define LogTrace(id)
double deltaR(double eta1, double eta2, double phi1, double phi2)
Definition: TreeUtility.cc:17
float zmax() const
const Bounds & bounds() const
Definition: BoundSurface.h:89
std::vector< std::vector< double > > tmp
Definition: MVATrainer.cc:100
bool isInsideOut(const TrajectoryStateOnSurface &tsos) const
float rmax() const
vector< GeometricSearchDet::DetWithState > MuRingForwardDoubleLayer::compatibleDets ( const TrajectoryStateOnSurface startingState,
const Propagator prop,
const MeasurementEstimator est 
) const
virtual

Returns all Dets compatible with a trajectory state according to the estimator est. The startingState should be propagated to the surface of each compatible Det using the Propagator passed as an argument. The default implementation should be overridden in dets with specific surface types to avoid propagation to a generic Surface

Reimplemented from GeometricSearchDet.

Definition at line 135 of file MuRingForwardDoubleLayer.cc.

References compatible(), groupedCompatibleDets(), LogTrace, metname, and query::result.

137  {
138  vector<DetWithState> result;
139  const std::string metname = "Muon|RecoMuon|RecoMuonDetLayers|MuRingForwardDoubleLayer";
140  pair<bool, TrajectoryStateOnSurface> compat =
141  compatible(startingState, prop, est);
142 
143  if (!compat.first) {
144 
145  LogTrace(metname) << " MuRingForwardDoubleLayer::compatibleDets: not compatible"
146  << " (should not have been selected!)";
147  return result;
148  }
149 
150 
151  TrajectoryStateOnSurface& tsos = compat.second;
152 
153  // standard implementation of compatibleDets() for class which have
154  // groupedCompatibleDets implemented.
155  // This code should be moved in a common place intead of being
156  // copied many times.
157  vector<DetGroup> vectorGroups = groupedCompatibleDets(tsos,prop,est);
158  for(vector<DetGroup>::const_iterator itDG=vectorGroups.begin();
159  itDG!=vectorGroups.end();itDG++){
160  for(vector<DetGroupElement>::const_iterator itDGE=itDG->begin();
161  itDGE!=itDG->end();itDGE++){
162  result.push_back(DetWithState(itDGE->det(),itDGE->trajectoryState()));
163  }
164  }
165  return result;
166 }
virtual std::pair< bool, TrajectoryStateOnSurface > compatible(const TrajectoryStateOnSurface &, const Propagator &, const MeasurementEstimator &) const
const std::string metname
virtual std::vector< DetGroup > groupedCompatibleDets(const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est) const
tuple result
Definition: query.py:137
#define LogTrace(id)
std::pair< const GeomDet *, TrajectoryStateOnSurface > DetWithState
virtual const std::vector<const GeometricSearchDet*>& MuRingForwardDoubleLayer::components ( ) const
inlinevirtual

Returns basic components, if any.

Returns direct components, if any

Implements GeometricSearchDet.

Definition at line 36 of file MuRingForwardDoubleLayer.h.

References theComponents.

36 {return theComponents;}
std::vector< const GeometricSearchDet * > theComponents
BoundDisk * MuRingForwardDoubleLayer::computeSurface ( )
protectedvirtual

Reimplemented from ForwardDetLayer.

Definition at line 59 of file MuRingForwardDoubleLayer.cc.

References BoundSurface::bounds(), BoundDisk::innerRadius(), max(), min, BoundDisk::outerRadius(), pos, GloballyPositioned< T >::position(), ForwardDetLayer::rmax(), ForwardDetLayer::rmin(), makeMuonMisalignmentScenario::rot, ForwardDetLayer::specificSurface(), theBackLayer, theFrontLayer, Bounds::thickness(), PV3DBase< T, PVType, FrameType >::z(), ForwardDetLayer::zmax(), ForwardDetLayer::zmin(), and zPos.

Referenced by MuRingForwardDoubleLayer().

60 {
61  const BoundDisk & frontDisk = theFrontLayer.specificSurface();
62  const BoundDisk & backDisk = theBackLayer.specificSurface();
63 
64  float rmin = min( frontDisk.innerRadius(), backDisk.innerRadius() );
65  float rmax = max( frontDisk.outerRadius(), backDisk.outerRadius() );
66  float zmin = frontDisk.position().z();
67  float halfThickness = frontDisk.bounds().thickness()/2.;
68  zmin = (zmin > 0) ? zmin-halfThickness : zmin+halfThickness;
69  float zmax = backDisk.position().z();
70  halfThickness = backDisk.bounds().thickness()/2.;
71  zmax = (zmax > 0) ? zmax+halfThickness : zmax-halfThickness;
72  float zPos = (zmax+zmin)/2.;
73  PositionType pos(0.,0.,zPos);
75 
76  return new BoundDisk( pos, rot,
77  SimpleDiskBounds( rmin, rmax,
78  zmin-zPos, zmax-zPos));
79 }
BoundSurface::RotationType RotationType
BoundSurface::PositionType PositionType
double zPos
float rmin() const
#define min(a, b)
Definition: mlp_lapack.h:161
float zmin() const
virtual float thickness() const =0
const T & max(const T &a, const T &b)
T z() const
Definition: PV3DBase.h:63
virtual const BoundDisk & specificSurface() const
float zmax() const
const Bounds & bounds() const
Definition: BoundSurface.h:89
float rmax() const
float outerRadius() const
The outer radius of the disk.
Definition: BoundDisk.h:75
float innerRadius() const
The inner radius of the disk.
Definition: BoundDisk.h:72
const PositionType & position() const
const MuRingForwardLayer* MuRingForwardDoubleLayer::frontLayer ( ) const
inline

Definition at line 70 of file MuRingForwardDoubleLayer.h.

References theFrontLayer.

70 {return &theFrontLayer;}
vector< DetGroup > MuRingForwardDoubleLayer::groupedCompatibleDets ( const TrajectoryStateOnSurface startingState,
const Propagator prop,
const MeasurementEstimator est 
) const
virtual

Similar to compatibleDets(), but the compatible Dets are grouped in one or more groups. Dets are put in the same group if they are mutually exclusive for track crossing, i.e. a reconstructible track cannot cross more than one Det from a group. Pathological tracks (spirals etc.) can of course violate this rule.
The DetGroups are sorted in the sequence of crossing by a track. In order to define the direction of crossing the Propagator used in this method should have a defined direction() : either "alongMomentum" or "oppositeToMomentum" but not "anyDirection".
The three signatures of this method differ by the input trajectory state arguments: the starting state can be a TrajectoryStateOnSurface or a FreeTrajectoryState, and the state on this CompositeDet may be already known or not. The last two arguments are as for the method compatibleDets().
First signature: The first argument is a TrajectoryStateOnSurface, usually not on the surface of this CompositeDet.

Reimplemented from GeometricSearchDet.

Definition at line 170 of file MuRingForwardDoubleLayer.cc.

References MuRingForwardLayer::compatibleDets(), LogTrace, metname, query::result, theBackLayer, and theFrontLayer.

Referenced by compatibleDets().

172  {
173 
174  const std::string metname = "Muon|RecoMuon|RecoMuonDetLayers|MuRingForwardDoubleLayer";
175  vector<GeometricSearchDet::DetWithState> detWithStates1, detWithStates2;
176 
177  LogTrace(metname) << "groupedCompatibleDets are currently given always in inside-out order";
178  // this should be fixed either in RecoMuon/MeasurementDet/MuonDetLayerMeasurements or
179  // RecoMuon/DetLayers/MuRingForwardDoubleLayer
180  // and removed the reverse operation in StandAloneMuonFilter::findBestMeasurements
181 
182  detWithStates1 = theFrontLayer.compatibleDets(startingState, prop, est);
183  detWithStates2 = theBackLayer.compatibleDets(startingState, prop, est);
184 
185  vector<DetGroup> result;
186  if(!detWithStates1.empty()) result.push_back( DetGroup(detWithStates1) );
187  if(!detWithStates2.empty()) result.push_back( DetGroup(detWithStates2) );
188  LogTrace(metname) << "DoubleLayer Compatible dets: " << result.size();
189  return result;
190 }
const std::string metname
virtual std::vector< DetWithState > compatibleDets(const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est) const
tuple result
Definition: query.py:137
#define LogTrace(id)
virtual bool MuRingForwardDoubleLayer::hasGroups ( ) const
inlinevirtual

Implements GeometricSearchDet.

Definition at line 56 of file MuRingForwardDoubleLayer.h.

56 {return true;}
bool MuRingForwardDoubleLayer::isCrack ( const GlobalPoint gp) const

Definition at line 193 of file MuRingForwardDoubleLayer.cc.

References BoundDisk::innerRadius(), LogTrace, metname, BoundDisk::outerRadius(), PV3DBase< T, PVType, FrameType >::perp(), alignCSCRings::r, query::result, MuRingForwardLayer::rings(), ForwardDetRing::specificSurface(), and theBackLayer.

194 {
195  const std::string metname = "Muon|RecoMuon|RecoMuonDetLayers|MuRingForwardDoubleLayer";
196  // approximate
197  bool result = false;
198  double r = gp.perp();
199  const std::vector<const ForwardDetRing*>& backRings = theBackLayer.rings();
200  if(backRings.size() > 1)
201  {
202  const MuDetRing * innerRing = dynamic_cast<const MuDetRing *>(backRings[0]);
203  const MuDetRing * outerRing = dynamic_cast<const MuDetRing *>(backRings[1]);
204  assert(innerRing && outerRing);
205  float crackInner = innerRing->specificSurface().outerRadius();
206  float crackOuter = outerRing->specificSurface().innerRadius();
207  LogTrace(metname) << "In a crack:" << crackInner << " " << r << " " << crackOuter;
208  if(r > crackInner && r < crackOuter) return true;
209  }
210  // non-overlapping rings
211  //double phi = gp.phi().degrees();
212  return result;
213 }
T perp() const
Definition: PV3DBase.h:71
const std::string metname
virtual const std::vector< const ForwardDetRing * > & rings() const
Return the vector of rings.
tuple result
Definition: query.py:137
#define LogTrace(id)
float outerRadius() const
The outer radius of the disk.
Definition: BoundDisk.h:75
float innerRadius() const
The inner radius of the disk.
Definition: BoundDisk.h:72
const BoundDisk & specificSurface() const
Return the ring surface as a BoundDisk.
bool MuRingForwardDoubleLayer::isInsideOut ( const TrajectoryStateOnSurface tsos) const

Definition at line 82 of file MuRingForwardDoubleLayer.cc.

References PV3DBase< T, PVType, FrameType >::basicVector(), Basic3DVector< T >::dot(), TrajectoryStateOnSurface::globalMomentum(), and TrajectoryStateOnSurface::globalPosition().

Referenced by compatible().

83 {
84  return tsos.globalPosition().basicVector().dot(tsos.globalMomentum().basicVector()) > 0;
85 }
GlobalPoint globalPosition() const
GlobalVector globalMomentum() const
const BasicVectorType & basicVector() const
Definition: PV3DBase.h:56
T dot(const Basic3DVector &rh) const
Scalar product, or &quot;dot&quot; product, with a vector of same type.
virtual const std::vector<const ForwardDetRing*>& MuRingForwardDoubleLayer::rings ( ) const
inlinevirtual

Return the vector of rings.

Definition at line 66 of file MuRingForwardDoubleLayer.h.

References theRings.

66 {return theRings;}
std::vector< const ForwardDetRing * > theRings
void MuRingForwardDoubleLayer::selfTest ( ) const

Definition at line 216 of file MuRingForwardDoubleLayer.cc.

References MuRingForwardLayer::basicComponents(), theBackLayer, and theFrontLayer.

Referenced by MuRingForwardDoubleLayer().

217 {
218  const std::vector<const GeomDet*>& frontDets = theFrontLayer.basicComponents();
219  const std::vector<const GeomDet*>& backDets = theBackLayer.basicComponents();
220 
221  std::vector<const GeomDet*>::const_iterator frontItr = frontDets.begin(),
222  lastFront = frontDets.end(),
223  backItr = backDets.begin(),
224  lastBack = backDets.end();
225 
226  // test that each front z is less than each back z
227  for( ; frontItr != lastFront; ++frontItr)
228  {
229  float frontz = fabs( (**frontItr).surface().position().z() );
230  for( ; backItr != lastBack; ++backItr)
231  {
232  float backz = fabs( (**backItr).surface().position().z() );
233  assert(frontz < backz);
234  }
235  }
236 }
virtual const std::vector< const GeomDet * > & basicComponents() const
virtual SubDetector MuRingForwardDoubleLayer::subDetector ( ) const
inlinevirtual

The type of detector (PixelBarrel, PixelEndcap, TIB, TOB, TID, TEC, CSC, DT, RPCBarrel, RPCEndcap)

Implements DetLayer.

Definition at line 60 of file MuRingForwardDoubleLayer.h.

References MuRingForwardLayer::subDetector(), and theBackLayer.

60 {return theBackLayer.subDetector();}
virtual SubDetector subDetector() const
The type of detector (PixelBarrel, PixelEndcap, TIB, TOB, TID, TEC, CSC, DT, RPCBarrel, RPCEndcap)

Member Data Documentation

MuRingForwardLayer MuRingForwardDoubleLayer::theBackLayer
private
std::vector<const GeomDet*> MuRingForwardDoubleLayer::theBasicComponents
private

Definition at line 81 of file MuRingForwardDoubleLayer.h.

Referenced by basicComponents(), and MuRingForwardDoubleLayer().

std::vector<const GeometricSearchDet*> MuRingForwardDoubleLayer::theComponents
private

Definition at line 80 of file MuRingForwardDoubleLayer.h.

Referenced by components(), and MuRingForwardDoubleLayer().

MuRingForwardLayer MuRingForwardDoubleLayer::theFrontLayer
private
std::vector<const ForwardDetRing*> MuRingForwardDoubleLayer::theRings
private

Definition at line 79 of file MuRingForwardDoubleLayer.h.

Referenced by MuRingForwardDoubleLayer(), and rings().