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 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 detId,phi,z,r: "
68  << (*it)->geographicalId().rawId() << " , "
69  << (*it)->surface().position().phi() << " , "
70  << (*it)->surface().position().z() << " , "
71  << (*it)->surface().position().perp() ;
72  }
73 
74  if(!theFrontDetBrothers.empty()){
75  for(vector<const GeomDet*>::const_iterator it=theFrontDetBrothers.begin();
76  it!=theFrontDetBrothers.end(); it++){
77  LogDebug("TkDetLayers") << "frontDet brothers detId,phi,z,r: "
78  << (*it)->geographicalId().rawId() << " , "
79  << (*it)->surface().position().phi() << " , "
80  << (*it)->surface().position().z() << " , "
81  << (*it)->surface().position().perp() ;
82  }
83  }
84 
85  for(vector<const GeomDet*>::const_iterator it=theBackDets.begin();
86  it!=theBackDets.end(); it++){
87  LogDebug("TkDetLayers") << "backDet detId,phi,z,r: "
88  << (*it)->geographicalId().rawId() << " , "
89  << (*it)->surface().position().phi() << " , "
90  << (*it)->surface().position().z() << " , "
91  << (*it)->surface().position().perp() ;
92  }
93 
94  if(!theBackDetBrothers.empty()){
95  for(vector<const GeomDet*>::const_iterator it=theBackDetBrothers.begin();
96  it!=theBackDetBrothers.end(); it++){
97  LogDebug("TkDetLayers") << "backDet brothers detId,phi,z,r: "
98  << (*it)->geographicalId().rawId() << " , "
99  << (*it)->surface().position().phi() << " , "
100  << (*it)->surface().position().z() << " , "
101  << (*it)->surface().position().perp() ;
102  }
103  }
104 #endif
105 
106 }
#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 108 of file Phase2EndcapRing.cc.

108  {
109 
110 }

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

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

Referenced by groupedCompatibleDetsV(), and specificSurface().

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

Referenced by basicComponents().

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

Returns basic components, if any.

Returns direct components, if any

Implements GeometricSearchDet.

Definition at line 113 of file Phase2EndcapRing.cc.

Referenced by basicComponents().

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

Definition at line 186 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().

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

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

254 {
255  const GlobalPoint& gCrossingPos = crossing.position();
256 
257  const vector<const GeomDet*>& sLayer( subLayer( crossing.subLayerIndex()));
258  // It assumes that what is ok for the front modules in the pt modules is ok also for the back module
259  const vector<const GeomDet*>& sBrotherLayer( subLayerBrothers( crossing.subLayerIndex()));
260 
261  int closestIndex = crossing.closestDetIndex();
262  int negStartIndex = closestIndex-1;
263  int posStartIndex = closestIndex+1;
264 
265  if (checkClosest) { // must decide if the closest is on the neg or pos side
266  if ( Geom::phiLess( gCrossingPos.barePhi(), sLayer[closestIndex]->surface().phi())) {
267  posStartIndex = closestIndex;
268  }
269  else {
270  negStartIndex = closestIndex;
271  }
272  }
273 
274  const BinFinderType& binFinder = (crossing.subLayerIndex()==0 ? theFrontBinFinder : theBackBinFinder);
275 
276  typedef CompatibleDetToGroupAdder Adder;
277  int half = sLayer.size()/2; // to check if dets are called twice....
278  for (int idet=negStartIndex; idet >= negStartIndex - half; idet--) {
279  const GeomDet & neighborDet = *sLayer[binFinder.binIndex(idet)];
280  if (!tkDetUtil::overlapInPhi( gCrossingPos, neighborDet, window)) break;
281  if (!Adder::add( neighborDet, tsos, prop, est, result)) break;
282  if(theFrontDetBrothers.empty() && theBackDetBrothers.empty()) break;
283  // If the two above checks are passed also the brother module will be added with no further checks
284  const GeomDet & neighborBrotherDet = *sBrotherLayer[binFinder.binIndex(idet)];
285  Adder::add( neighborBrotherDet, tsos, prop, est, brotherresult);
286  // maybe also add shallow crossing angle test here???
287  }
288  for (int idet=posStartIndex; idet < posStartIndex + half; idet++) {
289  const GeomDet & neighborDet = *sLayer[binFinder.binIndex(idet)];
290  if (!tkDetUtil::overlapInPhi( gCrossingPos, neighborDet, window)) break;
291  if (!Adder::add( neighborDet, tsos, prop, est, result)) break;
292  if(theFrontDetBrothers.empty() && theBackDetBrothers.empty()) break;
293  // If the two above checks are passed also the brother module will be added with no further checks
294  const GeomDet & neighborBrotherDet = *sBrotherLayer[binFinder.binIndex(idet)];
295  Adder::add( neighborBrotherDet, tsos, prop, est, brotherresult);
296  // maybe also add shallow crossing angle test here???
297  }
298 }
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().