CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Protected Attributes
GeometricSearchDet Class Referenceabstract

#include <GeometricSearchDet.h>

Inheritance diagram for GeometricSearchDet:
CompositeTECPetal DetLayer DetRod ForwardDetRing MTDDetSector Phase1PixelBlade Phase2EndcapRing Phase2EndcapSingleRing PixelBlade TECWedge TIBRing TIDRing

Public Types

typedef std::pair< const GeomDet *, TrajectoryStateOnSurfaceDetWithState
 
typedef BoundSurface::PositionType PositionType
 
typedef BoundSurface::RotationType RotationType
 
typedef TrajectoryStateOnSurface TrajectoryState
 

Public Member Functions

virtual const std::vector< const GeomDet * > & basicComponents () const =0
 
virtual std::pair< bool, TrajectoryStateOnSurfacecompatible (const TrajectoryStateOnSurface &ts, const Propagator &, const MeasurementEstimator &) const =0
 
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
 
virtual const std::vector< const GeometricSearchDet * > & components () const =0
 Returns basic components, if any. More...
 
 GeometricSearchDet (bool doHaveGroups)
 
virtual std::vector< DetGroupgroupedCompatibleDets (const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est) const
 
virtual void groupedCompatibleDetsV (const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est, std::vector< DetGroup > &result) const
 
bool hasGroups () const
 
virtual const Surface::PositionTypeposition () const
 Returns position of the surface. More...
 
virtual const BoundSurfacesurface () const =0
 The surface of the GeometricSearchDet. More...
 
virtual ~GeometricSearchDet ()
 

Protected Attributes

bool haveGroups
 
GeomDetCompatibilityChecker theCompatibilityChecker
 

Detailed Description

Definition at line 17 of file GeometricSearchDet.h.

Member Typedef Documentation

◆ DetWithState

Definition at line 19 of file GeometricSearchDet.h.

◆ PositionType

Definition at line 20 of file GeometricSearchDet.h.

◆ RotationType

Definition at line 21 of file GeometricSearchDet.h.

◆ TrajectoryState

Definition at line 22 of file GeometricSearchDet.h.

Constructor & Destructor Documentation

◆ GeometricSearchDet()

GeometricSearchDet::GeometricSearchDet ( bool  doHaveGroups)
inline

Definition at line 24 of file GeometricSearchDet.h.

24 : haveGroups(doHaveGroups) {}

◆ ~GeometricSearchDet()

GeometricSearchDet::~GeometricSearchDet ( )
virtual

Definition at line 7 of file GeometricSearchDet.cc.

7 {}

Member Function Documentation

◆ basicComponents()

virtual const std::vector<const GeomDet*>& GeometricSearchDet::basicComponents ( ) const
pure virtual

◆ compatible()

virtual std::pair<bool, TrajectoryStateOnSurface> GeometricSearchDet::compatible ( const TrajectoryStateOnSurface ts,
const Propagator ,
const MeasurementEstimator  
) const
pure 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.

Implemented in CompositeTECPetal, MTDDetSector, MTDDetTray, MuDetRod, Phase2OTBarrelRod, BarrelDetLayer, ForwardDetLayer, MuDetRing, Phase1PixelBlade, MTDSectorForwardDoubleLayer, Phase2EndcapRing, PixelBlade, TOBRod, TIBRing, Phase2EndcapSingleRing, TIDRing, CompositeTECWedge, PixelRod, and SimpleTECWedge.

◆ compatibleDets()

std::vector< GeometricSearchDet::DetWithState > GeometricSearchDet::compatibleDets ( const TrajectoryStateOnSurface startingState,
const Propagator prop,
const MeasurementEstimator est 
) const
virtual

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

Reimplemented in MTDDetSector, MTDDetTray, MuDetRod, MuDetRing, MTDSectorForwardDoubleLayer, and MTDSectorForwardLayer.

Definition at line 35 of file GeometricSearchDet.cc.

References compatibleDetsV(), and mps_fire::result.

Referenced by CkfDebugger::analyseRecHitNotFound(), HitEff::analyze(), SiStripHitEfficiencyWorker::analyze(), MTDTrayBarrelLayer::compatibleDets(), MuRodBarrelLayer::compatibleDets(), MuRingForwardLayer::compatibleDets(), TrajectoryManager::createPSimHits(), TSGFromPropagation::findMeasurements(), FastTSGFromPropagation::findMeasurements(), CosmicTrackingRegion::hits_(), TkMSParameterizationBuilder::produce(), L2MuonSeedGeneratorFromL1T::produce(), L2MuonSeedGenerator::produce(), ConvBremSeedProducer::produce(), and L2MuonSeedGeneratorFromL1TkMu::produce().

36  {
37  std::vector<DetWithState> result;
38  compatibleDetsV(startingState, prop, est, result);
39  return result;
40 }
virtual void compatibleDetsV(const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est, std::vector< DetWithState > &result) const

◆ compatibleDetsV()

void GeometricSearchDet::compatibleDetsV ( const TrajectoryStateOnSurface startingState,
const Propagator prop,
const MeasurementEstimator est,
std::vector< DetWithState > &  result 
) const
virtual

Reimplemented in MTDDetSector, PixelRod, and ForwardDetRing.

Definition at line 9 of file GeometricSearchDet.cc.

References groupedCompatibleDetsV(), hasGroups(), mps_fire::result, and UNLIKELY.

Referenced by CompatibleDetToGroupAdder::add(), compatibleDets(), TSGForRoadSearch::makeSeeds_0(), TSGForRoadSearch::makeSeeds_3(), and TSGForRoadSearch::makeSeeds_4().

12  {
13  if UNLIKELY (!hasGroups())
14  edm::LogError("DetLayers") << "At the moment not a real implementation";
15 
16  // standard implementation of compatibleDets() for class which have
17  // groupedCompatibleDets implemented.
18 
19  std::vector<DetGroup> vectorGroups;
20  groupedCompatibleDetsV(startingState, prop, est, vectorGroups);
21  for (auto itDG = vectorGroups.begin(); itDG != vectorGroups.end(); itDG++) {
22  for (auto itDGE = itDG->begin(); itDGE != itDG->end(); itDGE++) {
23  result.emplace_back(itDGE->det(), itDGE->trajectoryState());
24  }
25  }
26 }
for(int i=first, nt=offsets[nh];i< nt;i+=gridDim.x *blockDim.x)
Log< level::Error, false > LogError
virtual void groupedCompatibleDetsV(const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est, std::vector< DetGroup > &result) const
HLT enums.
double a
Definition: hdecay.h:121
#define UNLIKELY(x)
Definition: Likely.h:21

◆ components()

virtual const std::vector<const GeometricSearchDet*>& GeometricSearchDet::components ( ) const
pure virtual

◆ groupedCompatibleDets()

std::vector< DetGroup > GeometricSearchDet::groupedCompatibleDets ( const TrajectoryStateOnSurface startingState,
const Propagator prop,
const MeasurementEstimator est 
) const
virtual

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

Reimplemented in MTDDetSector, MTDDetTray, MuDetRod, MuDetRing, MTDSectorForwardDoubleLayer, and MTDSectorForwardLayer.

Definition at line 42 of file GeometricSearchDet.cc.

References groupedCompatibleDetsV(), and mps_fire::result.

44  {
45  std::vector<DetGroup> result;
46  groupedCompatibleDetsV(startingState, prop, est, result);
47  return result;
48 }
virtual void groupedCompatibleDetsV(const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est, std::vector< DetGroup > &result) const

◆ groupedCompatibleDetsV()

void GeometricSearchDet::groupedCompatibleDetsV ( const TrajectoryStateOnSurface startingState,
const Propagator prop,
const MeasurementEstimator est,
std::vector< DetGroup > &  result 
) const
virtual

◆ hasGroups()

bool GeometricSearchDet::hasGroups ( ) const
inline

Definition at line 99 of file GeometricSearchDet.h.

References haveGroups.

Referenced by CompatibleDetToGroupAdder::add(), and compatibleDetsV().

99 { return haveGroups; }

◆ position()

virtual const Surface::PositionType& GeometricSearchDet::position ( ) const
inlinevirtual

Returns position of the surface.

Definition at line 31 of file GeometricSearchDet.h.

References GloballyPositioned< T >::position(), and surface().

Referenced by TkLayerLess::barrelForwardLess(), MuonGEMDetLayerGeometryBuilder::buildEndcapLayers(), MuDetRing::compatibleDets(), CompositeTECWedge::CompositeTECWedge(), PixelForwardLayer::computeHelicity(), PixelForwardLayerPhase1::computeHelicity(), fastsim::SimplifiedGeometryFactory::createSimplifiedGeometry(), MultipleScatteringGeometry::detLayers(), PixelTripletNoTipGenerator::hitTriplets(), ThirdHitCorrection::init(), MuDetRing::init(), InnerDeltaPhi::initForwardMS(), ThirdHitRZPredictionBase::initLayer(), ThirdHitPrediction::initLayer(), TkLayerLess::insideOutLess(), TkLayerLess::insideOutLessSigned(), SimpleNavigationSchool::linkNextBarrelLayer(), SimpleNavigationSchool::linkOuterGroup(), MSLayer::MSLayer(), TIBLayer::overlap(), Phase1PixelBlade::Phase1PixelBlade(), PixelBlade::PixelBlade(), PixelForwardLayerPhase1::PixelForwardLayerPhase1(), L2MuonSeedGeneratorFromL1T::produce(), L2MuonSeedGeneratorFromL1TkMu::produce(), L2MuonSeedGenerator::produce(), L1MuonSeededTrackingRegionsProducer::regions(), SimpleBarrelNavigableLayer::setAdditionalLink(), SimpleTECWedge::SimpleTECWedge(), and TECLayer::TECLayer().

31 { return surface().position(); }
virtual const BoundSurface & surface() const =0
The surface of the GeometricSearchDet.
const PositionType & position() const

◆ surface()

virtual const BoundSurface& GeometricSearchDet::surface ( ) const
pure virtual

Member Data Documentation

◆ haveGroups

bool GeometricSearchDet::haveGroups
protected

Definition at line 103 of file GeometricSearchDet.h.

Referenced by hasGroups().

◆ theCompatibilityChecker

GeomDetCompatibilityChecker GeometricSearchDet::theCompatibilityChecker
protected