test
CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Types | Private Member Functions | Private Attributes
Phase2EndcapRing Class Referencefinal

#include <Phase2EndcapRing.h>

Inheritance diagram for Phase2EndcapRing:
GeometricSearchDet

Public Member Functions

virtual const std::vector
< const GeomDet * > & 
basicComponents () const
 
virtual std::pair< bool,
TrajectoryStateOnSurface
compatible (const TrajectoryStateOnSurface &, const Propagator &, const MeasurementEstimator &) const
 
virtual const std::vector
< const GeometricSearchDet * > & 
components () const __attribute__((cold))
 Returns basic components, if any. More...
 
void groupedCompatibleDetsV (const TrajectoryStateOnSurface &tsos, const Propagator &prop, const MeasurementEstimator &est, std::vector< DetGroup > &result) const __attribute__((hot))
 
 Phase2EndcapRing (std::vector< const GeomDet * > &innerDets, std::vector< const GeomDet * > &outerDets, const std::vector< const GeomDet * > &innerDetBrothers=std::vector< const GeomDet * >(), const std::vector< const GeomDet * > &outerDetBrothers=std::vector< const GeomDet * >())
 
virtual const BoundDiskspecificSurface () const
 
virtual const BoundSurfacesurface () const
 The surface of the GeometricSearchDet. More...
 
 ~Phase2EndcapRing ()
 
- Public Member Functions inherited from GeometricSearchDet
virtual std::vector< DetWithStatecompatibleDets (const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est) const
 
virtual void compatibleDetsV (const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est, std::vector< DetWithState > &result) const
 
 GeometricSearchDet (bool doHaveGroups)
 
virtual std::vector< DetGroupgroupedCompatibleDets (const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est) const
 
bool hasGroups () const
 
virtual const
Surface::PositionType
position () const
 Returns position of the surface. More...
 
virtual ~GeometricSearchDet ()
 

Private Types

typedef PeriodicBinFinderInPhi
< float > 
BinFinderType
 

Private Member Functions

bool addClosest (const TrajectoryStateOnSurface &tsos, const Propagator &prop, const MeasurementEstimator &est, const SubLayerCrossing &crossing, std::vector< DetGroup > &result, std::vector< DetGroup > &brotherresult) const __attribute__((hot))
 
SubLayerCrossings computeCrossings (const TrajectoryStateOnSurface &tsos, PropagationDirection propDir) const __attribute__((hot))
 
void searchNeighbors (const TrajectoryStateOnSurface &tsos, const Propagator &prop, const MeasurementEstimator &est, const SubLayerCrossing &crossing, float window, std::vector< DetGroup > &result, std::vector< DetGroup > &brotherresult, bool checkClosest) const __attribute__((hot))
 
const std::vector< const
GeomDet * > & 
subLayer (int ind) const
 
const std::vector< const
GeomDet * > & 
subLayerBrothers (int ind) const
 

Private Attributes

BinFinderType theBackBinFinder
 
std::vector< const GeomDet * > theBackDetBrothers
 
std::vector< const GeomDet * > theBackDets
 
ReferenceCountingPointer
< BoundDisk
theBackDisk
 
std::vector< const GeomDet * > theDets
 
ReferenceCountingPointer
< BoundDisk
theDisk
 
BinFinderType theFrontBinFinder
 
std::vector< const GeomDet * > theFrontDetBrothers
 
std::vector< const GeomDet * > theFrontDets
 
ReferenceCountingPointer
< BoundDisk
theFrontDisk
 

Additional Inherited Members

- 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
bool haveGroups
 
GeomDetCompatibilityChecker theCompatibilityChecker
 

Detailed Description

A concrete implementation for TID rings

Definition at line 14 of file Phase2EndcapRing.h.

Member Typedef Documentation

Definition at line 85 of file Phase2EndcapRing.h.

Constructor & Destructor Documentation

Phase2EndcapRing::Phase2EndcapRing ( std::vector< const GeomDet * > &  innerDets,
std::vector< const GeomDet * > &  outerDets,
const std::vector< const GeomDet * > &  innerDetBrothers = std::vector<const GeomDet*>(),
const std::vector< const GeomDet * > &  outerDetBrothers = std::vector<const GeomDet*>() 
)

Definition at line 32 of file Phase2EndcapRing.cc.

References LogDebug, theBackBinFinder, theBackDetBrothers, theBackDets, theBackDisk, theDets, theDisk, theFrontBinFinder, theFrontDetBrothers, theFrontDets, and theFrontDisk.

35  :
36  GeometricSearchDet(true),
37  theFrontDets(innerDets.begin(),innerDets.end()),
38  theBackDets(outerDets.begin(),outerDets.end()),
39  theFrontDetBrothers(innerDetBrothers.begin(),innerDetBrothers.end()),
40  theBackDetBrothers(outerDetBrothers.begin(),outerDetBrothers.end())
41 {
42  theDets.assign(theFrontDets.begin(),theFrontDets.end());
43  theDets.insert(theDets.end(),theBackDets.begin(),theBackDets.end());
44  theDets.insert(theDets.end(),theFrontDetBrothers.begin(),theFrontDetBrothers.end());
45  theDets.insert(theDets.end(),theBackDetBrothers.begin(),theBackDetBrothers.end());
46 
47 
48  // the dets should be already phi-ordered. TO BE CHECKED
49  //sort( theFrontDets.begin(), theFrontDets.end(), DetLessPhi() );
50  //sort( theBackDets.begin(), theBackDets.end(), DetLessPhi() );
51 
53 
56 
57  theFrontBinFinder = BinFinderType( theFrontDets.front()->surface().position().phi(),
58  theFrontDets.size());
59  theBackBinFinder = BinFinderType( theBackDets.front()->surface().position().phi(),
60  theBackDets.size());
61 
62 
63 #ifdef EDM_ML_DEBUG
64  LogDebug("TkDetLayers") << "DEBUG INFO for Phase2EndcapRing" ;
65  for(vector<const GeomDet*>::const_iterator it=theFrontDets.begin();
66  it!=theFrontDets.end(); it++){
67  LogDebug("TkDetLayers") << "frontDet phi,z,r: "
68  << (*it)->surface().position().phi() << " , "
69  << (*it)->surface().position().z() << " , "
70  << (*it)->surface().position().perp() ;
71  }
72 
73  if(!theFrontDetBrothers.empty()){
74  for(vector<const GeomDet*>::const_iterator it=theFrontDetBrothers.begin();
75  it!=theFrontDetBrothers.end(); it++){
76  LogDebug("TkDetLayers") << "frontDet brothers phi,z,r: "
77  << (*it)->surface().position().phi() << " , "
78  << (*it)->surface().position().z() << " , "
79  << (*it)->surface().position().perp() ;
80  }
81  }
82 
83  for(vector<const GeomDet*>::const_iterator it=theBackDets.begin();
84  it!=theBackDets.end(); it++){
85  LogDebug("TkDetLayers") << "backDet phi,z,r: "
86  << (*it)->surface().position().phi() << " , "
87  << (*it)->surface().position().z() << " , "
88  << (*it)->surface().position().perp() ;
89  }
90 
91  if(!theBackDetBrothers.empty()){
92  for(vector<const GeomDet*>::const_iterator it=theBackDetBrothers.begin();
93  it!=theBackDetBrothers.end(); it++){
94  LogDebug("TkDetLayers") << "backDet brothers phi,z,r: "
95  << (*it)->surface().position().phi() << " , "
96  << (*it)->surface().position().z() << " , "
97  << (*it)->surface().position().perp() ;
98  }
99  }
100 #endif
101 
102 }
#define LogDebug(id)
std::vector< const GeomDet * > theDets
std::vector< const GeomDet * > theFrontDets
std::vector< const GeomDet * > theFrontDetBrothers
std::vector< const GeomDet * > theBackDets
GeometricSearchDet(bool doHaveGroups)
ReferenceCountingPointer< BoundDisk > theFrontDisk
BinFinderType theFrontBinFinder
ReferenceCountingPointer< BoundDisk > theDisk
std::vector< const GeomDet * > theBackDetBrothers
PeriodicBinFinderInPhi< float > BinFinderType
BinFinderType theBackBinFinder
ReferenceCountingPointer< BoundDisk > theBackDisk
Phase2EndcapRing::~Phase2EndcapRing ( )

Definition at line 104 of file Phase2EndcapRing.cc.

104  {
105 
106 }

Member Function Documentation

bool Phase2EndcapRing::addClosest ( const TrajectoryStateOnSurface tsos,
const Propagator prop,
const MeasurementEstimator est,
const SubLayerCrossing crossing,
std::vector< DetGroup > &  result,
std::vector< DetGroup > &  brotherresult 
) const
private

Definition at line 220 of file Phase2EndcapRing.cc.

References CompatibleDetToGroupAdder::add(), SubLayerCrossing::closestDetIndex(), subLayer(), subLayerBrothers(), SubLayerCrossing::subLayerIndex(), theBackDetBrothers, and theFrontDetBrothers.

Referenced by groupedCompatibleDetsV().

226 {
227  const vector<const GeomDet*>& sub( subLayer( crossing.subLayerIndex()));
228  const GeomDet* det(sub[crossing.closestDetIndex()]);
229  bool firstgroup = CompatibleDetToGroupAdder::add( *det, tsos, prop, est, result);
230  if(theFrontDetBrothers.empty() && theBackDetBrothers.empty()) return firstgroup;
231  // it assumes that the closestDetIndex is ok also for the brother detectors: the crossing is NOT recomputed
232  const vector<const GeomDet*>& subBrothers( subLayerBrothers( crossing.subLayerIndex()));
233  const GeomDet* detBrother(subBrothers[crossing.closestDetIndex()]);
234  bool brothergroup = CompatibleDetToGroupAdder::add( *detBrother, tsos, prop, est, brotherresult);
235  return firstgroup || brothergroup;
236 }
int closestDetIndex() const
std::vector< const GeomDet * > theFrontDetBrothers
const std::vector< const GeomDet * > & subLayer(int ind) const
tuple result
Definition: mps_fire.py:84
int subLayerIndex() const
const std::vector< const GeomDet * > & subLayerBrothers(int ind) const
std::vector< const GeomDet * > theBackDetBrothers
static bool add(const GeometricSearchDet &det, const TrajectoryStateOnSurface &tsos, const Propagator &prop, const MeasurementEstimator &est, std::vector< DetGroup > &result) __attribute__((hot))
virtual const std::vector<const GeomDet*>& Phase2EndcapRing::basicComponents ( ) const
inlinevirtual

Implements GeometricSearchDet.

Definition at line 25 of file Phase2EndcapRing.h.

References theDets.

25 {return theDets;}
std::vector< const GeomDet * > theDets
pair< bool, TrajectoryStateOnSurface > Phase2EndcapRing::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.

Implements GeometricSearchDet.

Definition at line 116 of file Phase2EndcapRing.cc.

117  {
118  edm::LogError("TkDetLayers") << "temporary dummy implementation of Phase2EndcapRing::compatible()!!" ;
119  return pair<bool,TrajectoryStateOnSurface>();
120 }
const vector< const GeometricSearchDet * > & Phase2EndcapRing::components ( ) const
virtual

Returns basic components, if any.

Returns direct components, if any

Implements GeometricSearchDet.

Definition at line 109 of file Phase2EndcapRing.cc.

110 {
111  throw DetLayerException("Phase2EndcapRing doesn't have GeometricSearchDet components");
112 }
Common base class.
SubLayerCrossings Phase2EndcapRing::computeCrossings ( const TrajectoryStateOnSurface tsos,
PropagationDirection  propDir 
) const
private

Definition at line 180 of file Phase2EndcapRing.cc.

References funct::abs(), PeriodicBinFinderInPhi< T >::binIndex(), SiPixelRawToDigiRegional_cfi::deltaPhi, TrajectoryStateOnSurface::globalMomentum(), TrajectoryStateOnSurface::globalPosition(), rho, theBackBinFinder, theBackDets, theBackDisk, theFrontBinFinder, theFrontDets, theFrontDisk, and TrajectoryStateOnSurface::transverseCurvature().

Referenced by groupedCompatibleDetsV().

182 {
183  auto rho = startingState.transverseCurvature();
184 
185  HelixPlaneCrossing::PositionType startPos( startingState.globalPosition() );
186  HelixPlaneCrossing::DirectionType startDir( startingState.globalMomentum() );
187  HelixForwardPlaneCrossing crossing(startPos,startDir,rho,propDir);
188 
189  pair<bool,double> frontPath = crossing.pathLength( *theFrontDisk);
190  if (!frontPath.first) return SubLayerCrossings();
191 
192  pair<bool,double> backPath = crossing.pathLength( *theBackDisk);
193  if (!backPath.first) return SubLayerCrossings();
194 
195  GlobalPoint gFrontPoint(crossing.position(frontPath.second));
196  GlobalPoint gBackPoint( crossing.position(backPath.second));
197 
198  int frontIndex = theFrontBinFinder.binIndex(gFrontPoint.barePhi());
199  SubLayerCrossing frontSLC( 0, frontIndex, gFrontPoint);
200 
201  int backIndex = theBackBinFinder.binIndex(gBackPoint.barePhi());
202  SubLayerCrossing backSLC( 1, backIndex, gBackPoint);
203 
204 
205  // 0ss: frontDisk has index=0, backDisk has index=1
206  float frontDist = std::abs(Geom::deltaPhi( gFrontPoint.barePhi(),
207  theFrontDets[frontIndex]->surface().phi()));
208  float backDist = std::abs(Geom::deltaPhi( gBackPoint.barePhi(),
209  theBackDets[backIndex]->surface().phi()));
210 
211 
212  if (frontDist < backDist) {
213  return SubLayerCrossings( frontSLC, backSLC, 0);
214  }
215  else {
216  return SubLayerCrossings( backSLC, frontSLC, 1);
217  }
218 }
std::vector< const GeomDet * > theFrontDets
std::vector< const GeomDet * > theBackDets
virtual int binIndex(T phi) const
returns an index in the valid range for the bin that contains phi
ReferenceCountingPointer< BoundDisk > theFrontDisk
BinFinderType theFrontBinFinder
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
BinFinderType theBackBinFinder
ReferenceCountingPointer< BoundDisk > theBackDisk
void Phase2EndcapRing::groupedCompatibleDetsV ( const TrajectoryStateOnSurface tsos,
const Propagator prop,
const MeasurementEstimator est,
std::vector< DetGroup > &  result 
) const
virtual

Reimplemented from GeometricSearchDet.

Definition at line 125 of file Phase2EndcapRing.cc.

References addClosest(), SubLayerCrossings::closest(), SubLayerCrossings::closestIndex(), computeCrossings(), tkDetUtil::computeWindowSize(), LayerCrossingSide::endcapSide(), SubLayerCrossings::isValid(), LogTrace, eostools::move(), DetGroupMerger::orderAndMergeTwoLevels(), SubLayerCrossings::other(), Propagator::propagationDirection(), and searchNeighbors().

129 {
130  SubLayerCrossings crossings;
131  crossings = computeCrossings( tsos, prop.propagationDirection());
132  if(! crossings.isValid()) return;
133 
134 
135  std::vector<DetGroup> closestResult;
136  std::vector<DetGroup> closestBrotherResult;
137  addClosest( tsos, prop, est, crossings.closest(), closestResult,closestBrotherResult);
138  if (closestResult.empty()) return;
139 
140  DetGroupElement closestGel( closestResult.front().front());
141  int crossingSide = LayerCrossingSide().endcapSide( closestGel.trajectoryState(), prop);
142  float phiWindow = tkDetUtil::computeWindowSize( closestGel.det(), closestGel.trajectoryState(), est);
143  searchNeighbors( tsos, prop, est, crossings.closest(), phiWindow,
144  closestResult, closestBrotherResult, false);
145 
146  vector<DetGroup> closestCompleteResult;
147  DetGroupMerger::orderAndMergeTwoLevels(std::move(closestResult),std::move(closestBrotherResult),closestCompleteResult,
148  0, crossingSide);
149 
150  vector<DetGroup> nextResult;
151  vector<DetGroup> nextBrotherResult;
152  searchNeighbors( tsos, prop, est, crossings.other(), phiWindow,
153  nextResult, nextBrotherResult, true);
154 
155  vector<DetGroup> nextCompleteResult;
156  DetGroupMerger::orderAndMergeTwoLevels(std::move(nextResult),std::move(nextBrotherResult),nextCompleteResult,
157  0, crossingSide);
158 
159  DetGroupMerger::orderAndMergeTwoLevels( std::move(closestCompleteResult), std::move(nextCompleteResult), result,
160  crossings.closestIndex(), crossingSide);
161 
162  //due to propagator problems, when we add single pt sub modules, we should order them in z (endcap)
163  sort(result.begin(),result.end(),DetGroupElementZLess());
164 
165 #ifdef EDM_ML_DEBUG
166  for (auto& grp : result) {
167  if ( grp.empty() ) continue;
168  LogTrace("TkDetLayers") <<"New group in Phase2EndcapRing made by : " << std::endl;
169  for (auto const & det : grp) {
170  LogTrace("TkDetLayers") <<" geom det at r: " << det.det()->position().perp() <<" id:" << det.det()->geographicalId().rawId()
171  <<" tsos at:" << det.trajectoryState().globalPosition() << std::endl;
172  }
173  }
174 #endif
175 
176 }
int closestIndex() const
virtual PropagationDirection propagationDirection() const final
Definition: Propagator.h:151
tuple result
Definition: mps_fire.py:84
float computeWindowSize(const GeomDet *det, const TrajectoryStateOnSurface &tsos, const MeasurementEstimator &est)
Definition: TkDetUtil.cc:9
def move
Definition: eostools.py:510
static int endcapSide(const TrajectoryStateOnSurface &startingState, const Propagator &prop)
#define LogTrace(id)
void searchNeighbors(const TrajectoryStateOnSurface &tsos, const Propagator &prop, const MeasurementEstimator &est, const SubLayerCrossing &crossing, float window, std::vector< DetGroup > &result, std::vector< DetGroup > &brotherresult, bool checkClosest) const __attribute__((hot))
const SubLayerCrossing & other() const
bool addClosest(const TrajectoryStateOnSurface &tsos, const Propagator &prop, const MeasurementEstimator &est, const SubLayerCrossing &crossing, std::vector< DetGroup > &result, std::vector< DetGroup > &brotherresult) const __attribute__((hot))
const SubLayerCrossing & closest() const
static void orderAndMergeTwoLevels(std::vector< DetGroup > &&one, std::vector< DetGroup > &&two, std::vector< DetGroup > &result, int firstIndex, int firstCrossed)
SubLayerCrossings computeCrossings(const TrajectoryStateOnSurface &tsos, PropagationDirection propDir) const __attribute__((hot))
void Phase2EndcapRing::searchNeighbors ( const TrajectoryStateOnSurface tsos,
const Propagator prop,
const MeasurementEstimator est,
const SubLayerCrossing crossing,
float  window,
std::vector< DetGroup > &  result,
std::vector< DetGroup > &  brotherresult,
bool  checkClosest 
) const
private

Definition at line 240 of file Phase2EndcapRing.cc.

References Clusterizer1DCommons::add(), PV3DBase< T, PVType, FrameType >::barePhi(), PeriodicBinFinderInPhi< T >::binIndex(), SubLayerCrossing::closestDetIndex(), tkDetUtil::overlapInPhi(), Geom::phiLess(), SubLayerCrossing::position(), subLayer(), subLayerBrothers(), SubLayerCrossing::subLayerIndex(), theBackBinFinder, theBackDetBrothers, theFrontBinFinder, and theFrontDetBrothers.

Referenced by groupedCompatibleDetsV().

248 {
249  GlobalPoint gCrossingPos = crossing.position();
250 
251  const vector<const GeomDet*>& sLayer( subLayer( crossing.subLayerIndex()));
252  // It assumes that what is ok for the front modules in the pt modules is ok also for the back module
253  const vector<const GeomDet*>& sBrotherLayer( subLayerBrothers( crossing.subLayerIndex()));
254 
255  int closestIndex = crossing.closestDetIndex();
256  int negStartIndex = closestIndex-1;
257  int posStartIndex = closestIndex+1;
258 
259  if (checkClosest) { // must decide if the closest is on the neg or pos side
260  if ( Geom::phiLess( gCrossingPos.barePhi(), sLayer[closestIndex]->surface().phi())) {
261  posStartIndex = closestIndex;
262  }
263  else {
264  negStartIndex = closestIndex;
265  }
266  }
267 
268  const BinFinderType& binFinder = (crossing.subLayerIndex()==0 ? theFrontBinFinder : theBackBinFinder);
269 
270  typedef CompatibleDetToGroupAdder Adder;
271  int half = sLayer.size()/2; // to check if dets are called twice....
272  for (int idet=negStartIndex; idet >= negStartIndex - half; idet--) {
273  const GeomDet & neighborDet = *sLayer[binFinder.binIndex(idet)];
274  if (!tkDetUtil::overlapInPhi( gCrossingPos, neighborDet, window)) break;
275  if (!Adder::add( neighborDet, tsos, prop, est, result)) break;
276  if(theFrontDetBrothers.empty() && theBackDetBrothers.empty()) break;
277  // If the two above checks are passed also the brother module will be added with no further checks
278  const GeomDet & neighborBrotherDet = *sBrotherLayer[binFinder.binIndex(idet)];
279  Adder::add( neighborBrotherDet, tsos, prop, est, brotherresult);
280  // maybe also add shallow crossing angle test here???
281  }
282  for (int idet=posStartIndex; idet < posStartIndex + half; idet++) {
283  const GeomDet & neighborDet = *sLayer[binFinder.binIndex(idet)];
284  if (!tkDetUtil::overlapInPhi( gCrossingPos, neighborDet, window)) break;
285  if (!Adder::add( neighborDet, tsos, prop, est, result)) break;
286  if(theFrontDetBrothers.empty() && theBackDetBrothers.empty()) break;
287  // If the two above checks are passed also the brother module will be added with no further checks
288  const GeomDet & neighborBrotherDet = *sBrotherLayer[binFinder.binIndex(idet)];
289  Adder::add( neighborBrotherDet, tsos, prop, est, brotherresult);
290  // maybe also add shallow crossing angle test here???
291  }
292 }
def window
Definition: svgfig.py:642
int closestDetIndex() const
std::vector< const GeomDet * > theFrontDetBrothers
void add(const std::vector< const T * > &source, std::vector< const T * > &dest)
bool overlapInPhi(float phi, const GeomDet &det, float phiWindow)
Definition: TkDetUtil.h:19
const std::vector< const GeomDet * > & subLayer(int ind) const
tuple result
Definition: mps_fire.py:84
const GlobalPoint & position() const
T barePhi() const
Definition: PV3DBase.h:68
int subLayerIndex() const
BinFinderType theFrontBinFinder
const std::vector< const GeomDet * > & subLayerBrothers(int ind) const
std::vector< const GeomDet * > theBackDetBrothers
bool phiLess(float phi1, float phi2)
Definition: VectorUtil.h:23
PeriodicBinFinderInPhi< float > BinFinderType
BinFinderType theBackBinFinder
virtual const BoundDisk& Phase2EndcapRing::specificSurface ( ) const
inlinevirtual

Definition at line 40 of file Phase2EndcapRing.h.

References theDisk.

40 {return *theDisk;}
ReferenceCountingPointer< BoundDisk > theDisk
const std::vector<const GeomDet*>& Phase2EndcapRing::subLayer ( int  ind) const
inlineprivate

Definition at line 65 of file Phase2EndcapRing.h.

References theBackDets, and theFrontDets.

Referenced by addClosest(), and searchNeighbors().

65  {
66  return (ind==0 ? theFrontDets : theBackDets);
67  }
std::vector< const GeomDet * > theFrontDets
std::vector< const GeomDet * > theBackDets
const std::vector<const GeomDet*>& Phase2EndcapRing::subLayerBrothers ( int  ind) const
inlineprivate

Definition at line 69 of file Phase2EndcapRing.h.

References theBackDetBrothers, and theFrontDetBrothers.

Referenced by addClosest(), and searchNeighbors().

69  {
70  return (ind==0 ? theFrontDetBrothers : theBackDetBrothers);
71  }
std::vector< const GeomDet * > theFrontDetBrothers
std::vector< const GeomDet * > theBackDetBrothers
virtual const BoundSurface& Phase2EndcapRing::surface ( ) const
inlinevirtual

The surface of the GeometricSearchDet.

Implements GeometricSearchDet.

Definition at line 23 of file Phase2EndcapRing.h.

References theDisk.

23 {return *theDisk;}
ReferenceCountingPointer< BoundDisk > theDisk

Member Data Documentation

BinFinderType Phase2EndcapRing::theBackBinFinder
private

Definition at line 88 of file Phase2EndcapRing.h.

Referenced by computeCrossings(), Phase2EndcapRing(), and searchNeighbors().

std::vector<const GeomDet*> Phase2EndcapRing::theBackDetBrothers
private

Definition at line 79 of file Phase2EndcapRing.h.

Referenced by addClosest(), Phase2EndcapRing(), searchNeighbors(), and subLayerBrothers().

std::vector<const GeomDet*> Phase2EndcapRing::theBackDets
private

Definition at line 77 of file Phase2EndcapRing.h.

Referenced by computeCrossings(), Phase2EndcapRing(), and subLayer().

ReferenceCountingPointer<BoundDisk> Phase2EndcapRing::theBackDisk
private

Definition at line 83 of file Phase2EndcapRing.h.

Referenced by computeCrossings(), and Phase2EndcapRing().

std::vector<const GeomDet*> Phase2EndcapRing::theDets
private

Definition at line 75 of file Phase2EndcapRing.h.

Referenced by basicComponents(), and Phase2EndcapRing().

ReferenceCountingPointer<BoundDisk> Phase2EndcapRing::theDisk
private

Definition at line 81 of file Phase2EndcapRing.h.

Referenced by Phase2EndcapRing(), specificSurface(), and surface().

BinFinderType Phase2EndcapRing::theFrontBinFinder
private

Definition at line 87 of file Phase2EndcapRing.h.

Referenced by computeCrossings(), Phase2EndcapRing(), and searchNeighbors().

std::vector<const GeomDet*> Phase2EndcapRing::theFrontDetBrothers
private

Definition at line 78 of file Phase2EndcapRing.h.

Referenced by addClosest(), Phase2EndcapRing(), searchNeighbors(), and subLayerBrothers().

std::vector<const GeomDet*> Phase2EndcapRing::theFrontDets
private

Definition at line 76 of file Phase2EndcapRing.h.

Referenced by computeCrossings(), Phase2EndcapRing(), and subLayer().

ReferenceCountingPointer<BoundDisk> Phase2EndcapRing::theFrontDisk
private

Definition at line 82 of file Phase2EndcapRing.h.

Referenced by computeCrossings(), and Phase2EndcapRing().