CMS 3D CMS Logo

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

const std::vector< const GeomDet * > & basicComponents () const override
 
std::pair< bool, TrajectoryStateOnSurfacecompatible (const TrajectoryStateOnSurface &, const Propagator &, const MeasurementEstimator &) const override
 
const std::vector< const GeometricSearchDet * > & components () const override __attribute__((cold))
 Returns basic components, if any. More...
 
void groupedCompatibleDetsV (const TrajectoryStateOnSurface &tsos, const Propagator &prop, const MeasurementEstimator &est, std::vector< DetGroup > &result) const override __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
 
const BoundSurfacesurface () const override
 The surface of the GeometricSearchDet. More...
 
 ~Phase2EndcapRing () override
 
- 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::PositionTypeposition () 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< BoundDisktheBackDisk
 
std::vector< const GeomDet * > theDets
 
ReferenceCountingPointer< BoundDisktheDisk
 
BinFinderType theFrontBinFinder
 
std::vector< const GeomDet * > theFrontDetBrothers
 
std::vector< const GeomDet * > theFrontDets
 
ReferenceCountingPointer< BoundDisktheFrontDisk
 

Additional Inherited Members

- Public Types inherited from GeometricSearchDet
typedef std::pair< const GeomDet *, TrajectoryStateOnSurfaceDetWithState
 
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 31 of file Phase2EndcapRing.cc.

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

34  :
35  GeometricSearchDet(true),
36  theFrontDets(innerDets.begin(),innerDets.end()),
37  theBackDets(outerDets.begin(),outerDets.end()),
38  theFrontDetBrothers(innerDetBrothers.begin(),innerDetBrothers.end()),
39  theBackDetBrothers(outerDetBrothers.begin(),outerDetBrothers.end())
40 {
41  theDets.assign(theFrontDets.begin(),theFrontDets.end());
42  theDets.insert(theDets.end(),theBackDets.begin(),theBackDets.end());
43  theDets.insert(theDets.end(),theFrontDetBrothers.begin(),theFrontDetBrothers.end());
44  theDets.insert(theDets.end(),theBackDetBrothers.begin(),theBackDetBrothers.end());
45 
46 
47  // the dets should be already phi-ordered. TO BE CHECKED
48  //sort( theFrontDets.begin(), theFrontDets.end(), DetLessPhi() );
49  //sort( theBackDets.begin(), theBackDets.end(), DetLessPhi() );
50 
52 
55 
56  theFrontBinFinder = BinFinderType( theFrontDets.front()->surface().position().phi(),
57  theFrontDets.size());
58  theBackBinFinder = BinFinderType( theBackDets.front()->surface().position().phi(),
59  theBackDets.size());
60 
61 
62 #ifdef EDM_ML_DEBUG
63  LogDebug("TkDetLayers") << "DEBUG INFO for Phase2EndcapRing" ;
64  for(vector<const GeomDet*>::const_iterator it=theFrontDets.begin();
65  it!=theFrontDets.end(); it++){
66  LogDebug("TkDetLayers") << "frontDet detId,phi,z,r: "
67  << (*it)->geographicalId().rawId() << " , "
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 detId,phi,z,r: "
77  << (*it)->geographicalId().rawId() << " , "
78  << (*it)->surface().position().phi() << " , "
79  << (*it)->surface().position().z() << " , "
80  << (*it)->surface().position().perp() ;
81  }
82  }
83 
84  for(vector<const GeomDet*>::const_iterator it=theBackDets.begin();
85  it!=theBackDets.end(); it++){
86  LogDebug("TkDetLayers") << "backDet detId,phi,z,r: "
87  << (*it)->geographicalId().rawId() << " , "
88  << (*it)->surface().position().phi() << " , "
89  << (*it)->surface().position().z() << " , "
90  << (*it)->surface().position().perp() ;
91  }
92 
93  if(!theBackDetBrothers.empty()){
94  for(vector<const GeomDet*>::const_iterator it=theBackDetBrothers.begin();
95  it!=theBackDetBrothers.end(); it++){
96  LogDebug("TkDetLayers") << "backDet brothers detId,phi,z,r: "
97  << (*it)->geographicalId().rawId() << " , "
98  << (*it)->surface().position().phi() << " , "
99  << (*it)->surface().position().z() << " , "
100  << (*it)->surface().position().perp() ;
101  }
102  }
103 #endif
104 
105 }
#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 ( )
override

Definition at line 107 of file Phase2EndcapRing.cc.

107  {
108 
109 }

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 225 of file Phase2EndcapRing.cc.

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

Referenced by groupedCompatibleDetsV(), and specificSurface().

231 {
232  const vector<const GeomDet*>& sub( subLayer( crossing.subLayerIndex()));
233  const GeomDet* det(sub[crossing.closestDetIndex()]);
234  bool firstgroup = CompatibleDetToGroupAdder::add( *det, tsos, prop, est, result);
235  if(theFrontDetBrothers.empty() && theBackDetBrothers.empty()) return firstgroup;
236  // it assumes that the closestDetIndex is ok also for the brother detectors: the crossing is NOT recomputed
237  const vector<const GeomDet*>& subBrothers( subLayerBrothers( crossing.subLayerIndex()));
238  const GeomDet* detBrother(subBrothers[crossing.closestDetIndex()]);
239  bool brothergroup = CompatibleDetToGroupAdder::add( *detBrother, tsos, prop, est, brotherresult);
240  return firstgroup || brothergroup;
241 }
int closestDetIndex() const
std::vector< const GeomDet * > theFrontDetBrothers
const std::vector< const GeomDet * > & subLayer(int ind) const
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))
const std::vector<const GeomDet*>& Phase2EndcapRing::basicComponents ( ) const
inlineoverridevirtual

Implements GeometricSearchDet.

Definition at line 25 of file Phase2EndcapRing.h.

References compatible(), components(), groupedCompatibleDetsV(), mps_fire::result, and theDets.

25 {return theDets;}
std::vector< const GeomDet * > theDets
pair< bool, TrajectoryStateOnSurface > Phase2EndcapRing::compatible ( const TrajectoryStateOnSurface ts,
const Propagator ,
const MeasurementEstimator  
) const
overridevirtual

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 119 of file Phase2EndcapRing.cc.

Referenced by basicComponents().

120  {
121  edm::LogError("TkDetLayers") << "temporary dummy implementation of Phase2EndcapRing::compatible()!!" ;
122  return pair<bool,TrajectoryStateOnSurface>();
123 }
const vector< const GeometricSearchDet * > & Phase2EndcapRing::components ( ) const
overridevirtual

Returns basic components, if any.

Returns direct components, if any

Implements GeometricSearchDet.

Definition at line 112 of file Phase2EndcapRing.cc.

Referenced by basicComponents().

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

Definition at line 185 of file Phase2EndcapRing.cc.

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

Referenced by groupedCompatibleDetsV(), and specificSurface().

187 {
188  auto rho = startingState.transverseCurvature();
189 
190  HelixPlaneCrossing::PositionType startPos( startingState.globalPosition() );
191  HelixPlaneCrossing::DirectionType startDir( startingState.globalMomentum() );
192  HelixForwardPlaneCrossing crossing(startPos,startDir,rho,propDir);
193 
194  pair<bool,double> frontPath = crossing.pathLength( *theFrontDisk);
195  if (!frontPath.first) return SubLayerCrossings();
196 
197  pair<bool,double> backPath = crossing.pathLength( *theBackDisk);
198  if (!backPath.first) return SubLayerCrossings();
199 
200  GlobalPoint gFrontPoint(crossing.position(frontPath.second));
201  GlobalPoint gBackPoint( crossing.position(backPath.second));
202 
203  int frontIndex = theFrontBinFinder.binIndex(gFrontPoint.barePhi());
204  SubLayerCrossing frontSLC( 0, frontIndex, gFrontPoint);
205 
206  int backIndex = theBackBinFinder.binIndex(gBackPoint.barePhi());
207  SubLayerCrossing backSLC( 1, backIndex, gBackPoint);
208 
209 
210  // 0ss: frontDisk has index=0, backDisk has index=1
211  float frontDist = std::abs(Geom::deltaPhi( gFrontPoint.barePhi(),
212  theFrontDets[frontIndex]->surface().phi()));
213  float backDist = std::abs(Geom::deltaPhi( gBackPoint.barePhi(),
214  theBackDets[backIndex]->surface().phi()));
215 
216 
217  if (frontDist < backDist) {
218  return SubLayerCrossings( frontSLC, backSLC, 0);
219  }
220  else {
221  return SubLayerCrossings( backSLC, frontSLC, 1);
222  }
223 }
std::vector< const GeomDet * > theFrontDets
int binIndex(T phi) const override
returns an index in the valid range for the bin that contains phi
std::vector< const GeomDet * > theBackDets
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
overridevirtual

Reimplemented from GeometricSearchDet.

Definition at line 128 of file Phase2EndcapRing.cc.

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

Referenced by basicComponents().

132 {
133  SubLayerCrossings crossings;
134  crossings = computeCrossings( tsos, prop.propagationDirection());
135  if(! crossings.isValid()) return;
136 
137 
138  std::vector<DetGroup> closestResult;
139  std::vector<DetGroup> closestBrotherResult;
140  addClosest( tsos, prop, est, crossings.closest(), closestResult,closestBrotherResult);
141  if (closestResult.empty()) return;
142 
143  DetGroupElement closestGel( closestResult.front().front());
144  int crossingSide = LayerCrossingSide().endcapSide( closestGel.trajectoryState(), prop);
145  float phiWindow = tkDetUtil::computeWindowSize( closestGel.det(), closestGel.trajectoryState(), est);
146  searchNeighbors( tsos, prop, est, crossings.closest(), phiWindow,
147  closestResult, closestBrotherResult, false);
148 
149  vector<DetGroup> closestCompleteResult;
150  DetGroupMerger::orderAndMergeTwoLevels(std::move(closestResult),std::move(closestBrotherResult),closestCompleteResult,
151  0, crossingSide);
152 
153  vector<DetGroup> nextResult;
154  vector<DetGroup> nextBrotherResult;
155  searchNeighbors( tsos, prop, est, crossings.other(), phiWindow,
156  nextResult, nextBrotherResult, true);
157 
158  vector<DetGroup> nextCompleteResult;
159  DetGroupMerger::orderAndMergeTwoLevels(std::move(nextResult),std::move(nextBrotherResult),nextCompleteResult,
160  0, crossingSide);
161 
162  DetGroupMerger::orderAndMergeTwoLevels( std::move(closestCompleteResult), std::move(nextCompleteResult), result,
163  crossings.closestIndex(), crossingSide);
164 
165  //due to propagator problems, when we add single pt sub modules, we should order them in z (endcap)
166  if(!theFrontDetBrothers.empty() && !theBackDetBrothers.empty())
167  sort(result.begin(),result.end(),DetGroupElementZLess());
168 
169 #ifdef EDM_ML_DEBUG
170  LogTrace("TkDetLayers") <<"Number of groups : " << result.size() << std::endl;
171  for (auto& grp : result) {
172  if ( grp.empty() ) continue;
173  LogTrace("TkDetLayers") <<"New group in Phase2EndcapRing made by : " << std::endl;
174  for (auto const & det : grp) {
175  LogTrace("TkDetLayers") <<" geom det at r: " << det.det()->position().perp() <<" id:" << det.det()->geographicalId().rawId()
176  <<" tsos at:" << det.trajectoryState().globalPosition() << std::endl;
177  }
178  }
179 #endif
180 
181 }
int closestIndex() const
std::vector< const GeomDet * > theFrontDetBrothers
float computeWindowSize(const GeomDet *det, const TrajectoryStateOnSurface &tsos, const MeasurementEstimator &est)
Definition: TkDetUtil.cc:10
virtual PropagationDirection propagationDirection() const final
Definition: Propagator.h:151
static int endcapSide(const TrajectoryStateOnSurface &startingState, const Propagator &prop)
#define LogTrace(id)
std::vector< const GeomDet * > theBackDetBrothers
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))
def move(src, dest)
Definition: eostools.py:511
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 245 of file Phase2EndcapRing.cc.

References PVValHelper::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(), and specificSurface().

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

Definition at line 40 of file Phase2EndcapRing.h.

References addClosest(), computeCrossings(), searchNeighbors(), theDisk, and svgfig::window().

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
const BoundSurface& Phase2EndcapRing::surface ( ) const
inlineoverridevirtual

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
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
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().