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 | Static Protected Member Functions | Protected Attributes | Private Member Functions
TIDLayer Class Reference

#include <TIDLayer.h>

Inheritance diagram for TIDLayer:
RingedForwardLayer GeometricSearchDetWithGroups ForwardDetLayer GeometricSearchDet DetLayer GeometricSearchDet

Public Member Functions

virtual const std::vector
< const GeomDet * > & 
basicComponents () const
 
virtual const std::vector
< const GeometricSearchDet * > & 
components () const
 Returns basic components, if any. More...
 
void groupedCompatibleDetsV (const TrajectoryStateOnSurface &tsos, const Propagator &prop, const MeasurementEstimator &est, std::vector< DetGroup > &result) const
 
virtual SubDetector subDetector () const
 The type of detector (PixelBarrel, PixelEndcap, TIB, TOB, TID, TEC, CSC, DT, RPCBarrel, RPCEndcap) More...
 
 TIDLayer (std::vector< const TIDRing * > &rings)
 
 ~TIDLayer ()
 
- Public Member Functions inherited from RingedForwardLayer
 RingedForwardLayer ()
 
virtual ~RingedForwardLayer ()
 
- Public Member Functions inherited from ForwardDetLayer
virtual std::pair< bool,
TrajectoryStateOnSurface
compatible (const TrajectoryStateOnSurface &, const Propagator &, const MeasurementEstimator &) const
 
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 std::vector< DetWithStatecompatibleDets (const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est) const
 
 GeometricSearchDet ()
 
virtual std::vector< DetGroupgroupedCompatibleDets (const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est) const
 
virtual const
Surface::PositionType
position () const
 Returns position of the surface. More...
 
virtual ~GeometricSearchDet ()
 
- Public Member Functions inherited from GeometricSearchDetWithGroups
void compatibleDetsV (const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est, std::vector< DetWithState > &result) const
 
bool hasGroups () const
 

Protected Member Functions

float computeWindowSize (const GeomDet *det, const TrajectoryStateOnSurface &tsos, const MeasurementEstimator &est) const
 
int findClosest (const GlobalPoint[3]) const
 
int findNextIndex (const GlobalPoint[3], int) const
 
bool overlapInR (const TrajectoryStateOnSurface &tsos, int i, double ymax) const
 
- Protected Member Functions inherited from ForwardDetLayer
virtual BoundDiskcomputeSurface ()
 
virtual void initialize ()
 
float rmax () const
 
float rmin () const
 
void setSurface (BoundDisk *cp)
 
float zmax () const
 
float zmin () const
 

Static Protected Member Functions

static void orderAndMergeLevels (const TrajectoryStateOnSurface &tsos, const Propagator &prop, const std::vector< std::vector< DetGroup > > &groups, const std::vector< int > &indices, std::vector< DetGroup > &result)
 

Protected Attributes

std::vector< const GeomDet * > theBasicComps
 
std::vector< const
GeometricSearchDet * > 
theComps
 
- Protected Attributes inherited from GeometricSearchDet
GeomDetCompatibilityChecker theCompatibilityChecker
 

Private Member Functions

virtual BoundDiskcomputeDisk (const std::vector< const TIDRing * > &rings) const
 
virtual std::vector< int > ringIndicesByCrossingProximity (const TrajectoryStateOnSurface &startingState, const Propagator &prop) const
 

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
 
- Public Types inherited from GeometricSearchDetWithGroups
typedef
GeometricSearchDet::DetWithState 
DetWithState
 

Detailed Description

A concrete implementation for TID layer built out of TIDRings

Definition at line 14 of file TIDLayer.h.

Constructor & Destructor Documentation

TIDLayer::TIDLayer ( std::vector< const TIDRing * > &  rings)

Definition at line 34 of file TIDLayer.cc.

References BoundSurface::bounds(), computeDisk(), BoundDisk::innerRadius(), LogDebug, BoundDisk::outerRadius(), PV3DBase< T, PVType, FrameType >::perp(), GeometricSearchDet::position(), ForwardDetLayer::setSurface(), ForwardDetLayer::specificSurface(), theBasicComps, theComps, Bounds::thickness(), and PV3DBase< T, PVType, FrameType >::z().

34  :
35  theComps(rings.begin(),rings.end())
36 {
37  //They should be already R-ordered. TO BE CHECKED!!
38  //sort( theRings.begin(), theRings.end(), DetLessR());
40 
41  if ( theComps.size() != 3) throw DetLayerException("Number of rings in TID layer is not equal to 3 !!");
42 
43  for(vector<const GeometricSearchDet*>::const_iterator it=theComps.begin();
44  it!=theComps.end();it++){
45  theBasicComps.insert(theBasicComps.end(),
46  (**it).basicComponents().begin(),
47  (**it).basicComponents().end());
48  }
49 
50 
51  LogDebug("TkDetLayers") << "==== DEBUG TIDLayer =====" ;
52  LogDebug("TkDetLayers") << "r,zed pos , thickness, innerR, outerR: "
53  << this->position().perp() << " , "
54  << this->position().z() << " , "
55  << this->specificSurface().bounds().thickness() << " , "
56  << this->specificSurface().innerRadius() << " , "
57  << this->specificSurface().outerRadius() ;
58 }
#define LogDebug(id)
Common base class.
T perp() const
Definition: PV3DBase.h:71
void setSurface(BoundDisk *cp)
std::vector< const GeomDet * > theBasicComps
Definition: TIDLayer.h:66
virtual float thickness() const =0
virtual BoundDisk * computeDisk(const std::vector< const TIDRing * > &rings) const
Definition: TIDLayer.cc:62
T z() const
Definition: PV3DBase.h:63
virtual const BoundDisk & specificSurface() const
const Bounds & bounds() const
Definition: BoundSurface.h:89
std::vector< const GeometricSearchDet * > theComps
Definition: TIDLayer.h:65
virtual const Surface::PositionType & position() const
Returns position of the surface.
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
TIDLayer::~TIDLayer ( )

Definition at line 92 of file TIDLayer.cc.

References i, and theComps.

92  {
93  vector<const GeometricSearchDet*>::const_iterator i;
94  for (i=theComps.begin(); i!=theComps.end(); i++) {
95  delete *i;
96  }
97 
98 }
int i
Definition: DBlmapReader.cc:9
std::vector< const GeometricSearchDet * > theComps
Definition: TIDLayer.h:65

Member Function Documentation

virtual const std::vector<const GeomDet*>& TIDLayer::basicComponents ( ) const
inlinevirtual

Implements GeometricSearchDet.

Definition at line 21 of file TIDLayer.h.

References theBasicComps.

21 {return theBasicComps;}
std::vector< const GeomDet * > theBasicComps
Definition: TIDLayer.h:66
virtual const std::vector<const GeometricSearchDet*>& TIDLayer::components ( ) const
inlinevirtual

Returns basic components, if any.

Returns direct components, if any

Implements GeometricSearchDet.

Definition at line 23 of file TIDLayer.h.

References theComps.

23 {return theComps;}
std::vector< const GeometricSearchDet * > theComps
Definition: TIDLayer.h:65
BoundDisk * TIDLayer::computeDisk ( const std::vector< const TIDRing * > &  rings) const
privatevirtual

Definition at line 62 of file TIDLayer.cc.

References i, BoundDisk::innerRadius(), max(), min, pos, ForwardDetLayer::rmax(), ForwardDetLayer::rmin(), makeMuonMisalignmentScenario::rot, ForwardDetLayer::zmax(), ForwardDetLayer::zmin(), and zPos.

Referenced by TIDLayer().

63 {
64  float theRmin = rings.front()->specificSurface().innerRadius();
65  float theRmax = rings.front()->specificSurface().outerRadius();
66  float theZmin = rings.front()->position().z() -
67  rings.front()->surface().bounds().thickness()/2;
68  float theZmax = rings.front()->position().z() +
69  rings.front()->surface().bounds().thickness()/2;
70 
71  for (vector<const TIDRing*>::const_iterator i = rings.begin(); i != rings.end(); i++) {
72  float rmin = (**i).specificSurface().innerRadius();
73  float rmax = (**i).specificSurface().outerRadius();
74  float zmin = (**i).position().z() - (**i).surface().bounds().thickness()/2.;
75  float zmax = (**i).position().z() + (**i).surface().bounds().thickness()/2.;
76  theRmin = min( theRmin, rmin);
77  theRmax = max( theRmax, rmax);
78  theZmin = min( theZmin, zmin);
79  theZmax = max( theZmax, zmax);
80  }
81 
82  float zPos = (theZmax+theZmin)/2.;
83  PositionType pos(0.,0.,zPos);
85 
86  return new BoundDisk( pos, rot,SimpleDiskBounds(theRmin, theRmax,
87  theZmin-zPos, theZmax-zPos));
88 
89 }
BoundSurface::RotationType RotationType
int i
Definition: DBlmapReader.cc:9
BoundSurface::PositionType PositionType
double zPos
float rmin() const
#define min(a, b)
Definition: mlp_lapack.h:161
float zmin() const
const T & max(const T &a, const T &b)
float zmax() const
float rmax() const
float TIDLayer::computeWindowSize ( const GeomDet det,
const TrajectoryStateOnSurface tsos,
const MeasurementEstimator est 
) const
protected

Definition at line 218 of file TIDLayer.cc.

References MeasurementEstimator::maximalLocalDisplacement(), GeomDet::surface(), and PV2DBase< T, PVType, FrameType >::y().

Referenced by groupedCompatibleDetsV().

221 {
222  const BoundPlane& startPlane = det->surface();
224  est.maximalLocalDisplacement( tsos, startPlane);
225  return maxDistance.y();
226 }
T y() const
Definition: PV2DBase.h:45
virtual Local2DVector maximalLocalDisplacement(const TrajectoryStateOnSurface &ts, const BoundPlane &plane) const
const BoundPlane & surface() const
The nominal surface of the GeomDet.
Definition: GeomDet.h:35
int TIDLayer::findClosest ( const GlobalPoint  ringCrossing[3]) const
protected

Definition at line 293 of file TIDLayer.cc.

References i, BoundDisk::innerRadius(), BoundDisk::outerRadius(), perp(), and theComps.

Referenced by ringIndicesByCrossingProximity().

294 {
295  int theBin = 0;
296  const BoundDisk & theFrontRing = static_cast<const BoundDisk &>(theComps[0]->surface());
297  float initialR = 0.5*( theFrontRing.innerRadius() +
298  theFrontRing.outerRadius());
299  float rDiff = fabs( ringCrossing[0].perp() - initialR);
300  for (int i = 1; i < 3 ; i++){
301  const BoundDisk & theRing = static_cast<const BoundDisk &>(theComps[i]->surface());
302  float ringR = 0.5*( theRing.innerRadius() +
303  theRing.outerRadius());
304  float testDiff = fabs( ringCrossing[i].perp() - ringR);
305  if ( testDiff<rDiff ) {
306  rDiff = testDiff;
307  theBin = i;
308  }
309  }
310  return theBin;
311 }
int i
Definition: DBlmapReader.cc:9
std::vector< const GeometricSearchDet * > theComps
Definition: TIDLayer.h:65
T perp() const
Magnitude of transverse component.
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
int TIDLayer::findNextIndex ( const GlobalPoint  ringCrossing[3],
int  closest 
) const
protected

Definition at line 314 of file TIDLayer.cc.

References i, BoundDisk::innerRadius(), BoundDisk::outerRadius(), perp(), and theComps.

Referenced by ringIndicesByCrossingProximity().

315 {
316 
317  int firstIndexToCheck = (closest != 0)? 0 : 1;
318  const BoundDisk & theFrontRing = static_cast<const BoundDisk &>(theComps[firstIndexToCheck]->surface());
319  float initialR = ( theFrontRing.innerRadius() +
320  theFrontRing.outerRadius())/2.;
321 
322  float rDiff = fabs( ringCrossing[0].perp() - initialR);
323  int theBin = firstIndexToCheck;
324  for (int i = firstIndexToCheck+1; i < 3 ; i++){
325  if ( i != closest) {
326  const BoundDisk & theRing = static_cast<const BoundDisk &>(theComps[i]->surface());
327  float ringR = ( theRing.innerRadius() +
328  theRing.outerRadius())/2.;
329  float testDiff = fabs( ringCrossing[i].perp() - ringR);
330  if ( testDiff<rDiff ) {
331  rDiff = testDiff;
332  theBin = i;
333  }
334  }
335  }
336  return theBin;
337 }
int i
Definition: DBlmapReader.cc:9
std::vector< const GeometricSearchDet * > theComps
Definition: TIDLayer.h:65
T perp() const
Magnitude of transverse component.
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
void TIDLayer::groupedCompatibleDetsV ( const TrajectoryStateOnSurface tsos,
const Propagator prop,
const MeasurementEstimator est,
std::vector< DetGroup > &  result 
) const
virtual

Reimplemented from GeometricSearchDet.

Definition at line 103 of file TIDLayer.cc.

References computeWindowSize(), orderAndMergeLevels(), overlapInR(), query::result, ringIndicesByCrossingProximity(), and theComps.

107 {
108  vector<int> ringIndices = ringIndicesByCrossingProximity(startingState,prop);
109  if ( ringIndices.size()!=3 ) {
110  edm::LogError("TkDetLayers") << "TkRingedForwardLayer::groupedCompatibleDets : ringIndices.size() = "
111  << ringIndices.size() << " and not =3!!" ;
112  return;
113  }
114 
115  vector<DetGroup> closestResult;
116  vector<DetGroup> nextResult;
117  vector<DetGroup> nextNextResult;
118  vector<vector<DetGroup> > groupsAtRingLevel;
119 
120  theComps[ringIndices[0]]->groupedCompatibleDetsV( startingState, prop, est, closestResult);
121  if ( closestResult.empty() ){
122  theComps[ringIndices[1]]->groupedCompatibleDetsV( startingState, prop, est, result);
123  return;
124  }
125 
126  groupsAtRingLevel.push_back(closestResult);
127 
128  DetGroupElement closestGel( closestResult.front().front());
129  float rWindow = computeWindowSize( closestGel.det(), closestGel.trajectoryState(), est);
130  if(!overlapInR(closestGel.trajectoryState(),ringIndices[1],rWindow)) {
131  result.swap(closestResult);
132  return;
133  };
134 
135  nextResult.clear();
136  theComps[ringIndices[1]]->groupedCompatibleDetsV( startingState, prop, est, nextResult);
137  if(nextResult.empty()) {
138  result.swap(closestResult);
139  return;
140  }
141  groupsAtRingLevel.push_back(nextResult);
142 
143  if(!overlapInR(closestGel.trajectoryState(),ringIndices[2],rWindow) ) {
144  //then merge 2 levels & return
145  orderAndMergeLevels(closestGel.trajectoryState(),prop,groupsAtRingLevel,ringIndices,result);
146  return;
147  }
148 
149  theComps[ringIndices[2]]->groupedCompatibleDetsV( startingState, prop, est, nextNextResult);
150  if(nextNextResult.empty()) {
151  // then merge 2 levels and return
152  orderAndMergeLevels(closestGel.trajectoryState(),prop,groupsAtRingLevel,ringIndices,result);
153  return;
154  }
155 
156  groupsAtRingLevel.push_back(nextNextResult);
157  // merge 3 level and return merged
158  orderAndMergeLevels(closestGel.trajectoryState(),prop,groupsAtRingLevel,ringIndices, result);
159 }
float computeWindowSize(const GeomDet *det, const TrajectoryStateOnSurface &tsos, const MeasurementEstimator &est) const
Definition: TIDLayer.cc:218
virtual std::vector< int > ringIndicesByCrossingProximity(const TrajectoryStateOnSurface &startingState, const Propagator &prop) const
Definition: TIDLayer.cc:163
tuple result
Definition: query.py:137
static void orderAndMergeLevels(const TrajectoryStateOnSurface &tsos, const Propagator &prop, const std::vector< std::vector< DetGroup > > &groups, const std::vector< int > &indices, std::vector< DetGroup > &result)
Definition: TIDLayer.cc:261
bool overlapInR(const TrajectoryStateOnSurface &tsos, int i, double ymax) const
Definition: TIDLayer.cc:342
std::vector< const GeometricSearchDet * > theComps
Definition: TIDLayer.h:65
void TIDLayer::orderAndMergeLevels ( const TrajectoryStateOnSurface tsos,
const Propagator prop,
const std::vector< std::vector< DetGroup > > &  groups,
const std::vector< int > &  indices,
std::vector< DetGroup > &  result 
)
staticprotected

Definition at line 261 of file TIDLayer.cc.

References alongMomentum, TrajectoryStateOnSurface::globalMomentum(), TrajectoryStateOnSurface::globalPosition(), i, oppositeToMomentum, Propagator::propagationDirection(), python.multivaluedict::sort(), and PV3DBase< T, PVType, FrameType >::z().

Referenced by groupedCompatibleDetsV().

266 {
267  vector< pair<vector<DetGroup> const *,int> > groupPlusIndex;
268 
269  for(unsigned int i=0;i<groups.size();i++){
270  groupPlusIndex.push_back(pair<vector<DetGroup> const *,int>(&groups[i],indices[i]) );
271  }
272  //order is ring3,ring1,ring2
273  std::sort(groupPlusIndex.begin(),groupPlusIndex.end(),TIDringLess());
274 
275 
276  float zpos = tsos.globalPosition().z();
277  if(tsos.globalMomentum().z()*zpos>0){ // momentum points outwards
278  if(prop.propagationDirection() == alongMomentum)
279  mergeOutward(groupPlusIndex,result);
280  else
281  mergeInward(groupPlusIndex,result);
282  }
283  else{ // momentum points inwards
285  mergeOutward(groupPlusIndex,result);
286  else
287  mergeInward(groupPlusIndex,result);
288  }
289 
290 }
int i
Definition: DBlmapReader.cc:9
virtual PropagationDirection propagationDirection() const
Definition: Propagator.h:143
GlobalPoint globalPosition() const
T z() const
Definition: PV3DBase.h:63
tuple result
Definition: query.py:137
GlobalVector globalMomentum() const
bool TIDLayer::overlapInR ( const TrajectoryStateOnSurface tsos,
int  i,
double  ymax 
) const
protected

Definition at line 342 of file TIDLayer.cc.

References BoundSurface::bounds(), TrajectoryStateOnSurface::globalPosition(), getHLTprescales::index, BoundDisk::innerRadius(), max(), BoundDisk::outerRadius(), PV3DBase< T, PVType, FrameType >::perp(), GloballyPositioned< T >::position(), theComps, Bounds::thickness(), and PV3DBase< T, PVType, FrameType >::z().

Referenced by groupedCompatibleDetsV().

343 {
344  // assume "fixed theta window", i.e. margin in local y = r is changing linearly with z
345  float tsRadius = tsos.globalPosition().perp();
346  float thetamin = ( max(0.,tsRadius-ymax))/(fabs(tsos.globalPosition().z())+10.); // add 10 cm contingency
347  float thetamax = ( tsRadius + ymax)/(fabs(tsos.globalPosition().z())-10.);
348 
349  const BoundDisk& ringDisk = static_cast<const BoundDisk&>(theComps[index]->surface());
350  float ringMinZ = fabs( ringDisk.position().z()) - ringDisk.bounds().thickness()/2.;
351  float ringMaxZ = fabs( ringDisk.position().z()) + ringDisk.bounds().thickness()/2.;
352  float thetaRingMin = ringDisk.innerRadius()/ ringMaxZ;
353  float thetaRingMax = ringDisk.outerRadius()/ ringMinZ;
354 
355  // do the theta regions overlap ?
356 
357  return !( thetamin > thetaRingMax || thetaRingMin > thetamax);
358 }
T perp() const
Definition: PV3DBase.h:71
GlobalPoint globalPosition() const
virtual float thickness() const =0
const T & max(const T &a, const T &b)
T z() const
Definition: PV3DBase.h:63
const Bounds & bounds() const
Definition: BoundSurface.h:89
std::vector< const GeometricSearchDet * > theComps
Definition: TIDLayer.h:65
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
vector< int > TIDLayer::ringIndicesByCrossingProximity ( const TrajectoryStateOnSurface startingState,
const Propagator prop 
) const
privatevirtual

Definition at line 163 of file TIDLayer.cc.

References findClosest(), findNextIndex(), TrajectoryStateOnSurface::globalMomentum(), TrajectoryStateOnSurface::globalPosition(), i, errorMatrix2Lands::indices, Propagator::propagationDirection(), rho, theComps, and TrajectoryStateOnSurface::transverseCurvature().

Referenced by groupedCompatibleDetsV().

165 {
166  typedef HelixForwardPlaneCrossing Crossing;
168 
169  HelixPlaneCrossing::PositionType startPos( startingState.globalPosition());
170  HelixPlaneCrossing::DirectionType startDir( startingState.globalMomentum());
172  float rho( startingState.transverseCurvature());
173 
174  // calculate the crossings with the ring surfaces
175  // rings are assumed to be sorted in R !
176 
177  Crossing myXing( startPos, startDir, rho, propDir );
178 
179  GlobalPoint ringCrossings[3];
180  // vector<GlobalVector> ringXDirections;
181 
182  for (int i = 0; i < 3 ; i++ ) {
183  const BoundDisk & theRing = static_cast<const BoundDisk &>(theComps[i]->surface());
184  pair<bool,double> pathlen = myXing.pathLength( theRing);
185  if ( pathlen.first ) {
186  ringCrossings[i] = GlobalPoint( myXing.position(pathlen.second ));
187  // ringXDirections.push_back( GlobalVector( myXing.direction(pathlen.second )));
188  } else {
189  // TO FIX.... perhaps there is something smarter to do
190  //throw DetLayerException("trajectory doesn't cross TID rings");
191  ringCrossings[i] = GlobalPoint( 0.,0.,0.);
192  // ringXDirections.push_back( GlobalVector( 0.,0.,0.));
193  }
194  }
195 
196  int closestIndex = findClosest(ringCrossings);
197  int nextIndex = findNextIndex(ringCrossings,closestIndex);
198  if ( closestIndex<0 || nextIndex<0 ) return vector<int>();
199  int nextNextIndex = -1;
200  for(int i=0; i<3 ; i++){
201  if(i!= closestIndex && i!=nextIndex) {
202  nextNextIndex = i;
203  break;
204  }
205  }
206 
207  vector<int> indices;
208  indices.push_back(closestIndex);
209  indices.push_back(nextIndex);
210  indices.push_back(nextNextIndex);
211  return indices;
212 }
int findClosest(const GlobalPoint[3]) const
Definition: TIDLayer.cc:293
int i
Definition: DBlmapReader.cc:9
virtual PropagationDirection propagationDirection() const
Definition: Propagator.h:143
Definition: DDAxes.h:10
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
GlobalPoint globalPosition() const
Vector2DBase< float, LocalTag > Local2DVector
PropagationDirection
int findNextIndex(const GlobalPoint[3], int) const
Definition: TIDLayer.cc:314
std::vector< const GeometricSearchDet * > theComps
Definition: TIDLayer.h:65
GlobalVector globalMomentum() const
virtual SubDetector TIDLayer::subDetector ( ) const
inlinevirtual

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

Implements DetLayer.

Definition at line 31 of file TIDLayer.h.

References GeomDetEnumerators::TID.

Member Data Documentation

std::vector<const GeomDet*> TIDLayer::theBasicComps
protected

Definition at line 66 of file TIDLayer.h.

Referenced by basicComponents(), and TIDLayer().

std::vector<const GeometricSearchDet*> TIDLayer::theComps
protected