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 | Protected Attributes
TBLayer Class Referenceabstract

#include <TBLayer.h>

Inheritance diagram for TBLayer:
BarrelDetLayer DetLayer GeometricSearchDet TBPLayer TIBLayer

Public Member Functions

virtual const std::vector
< const GeomDet * > & 
basicComponents () const final
 
virtual const std::vector
< const GeometricSearchDet * > & 
components () const final __attribute__((cold))
 Returns basic components, if any. More...
 
void groupedCompatibleDetsV (const TrajectoryStateOnSurface &tsos, const Propagator &prop, const MeasurementEstimator &est, std::vector< DetGroup > &result) const final __attribute__((hot))
 
virtual SubDetector subDetector () const final
 The type of detector (PixelBarrel, PixelEndcap, TIB, TOB, TID, TEC, CSC, DT, RPCBarrel, RPCEndcap) More...
 
template<typename TDET >
 TBLayer (std::vector< const TDET * > &inner, std::vector< const TDET * > &outer, GeomDetEnumerators::SubDetector ime)
 
 ~TBLayer () __attribute__((cold))
 
- Public Member Functions inherited from BarrelDetLayer
 BarrelDetLayer (bool doHaveGroup)
 
virtual std::pair< bool,
TrajectoryStateOnSurface
compatible (const TrajectoryStateOnSurface &ts, const Propagator &, const MeasurementEstimator &) const
 
bool contains (const Local3DPoint &p) const
 
virtual Location location () const
 DetLayer interface. More...
 
virtual const BoundCylinderspecificSurface () const
 Extension of the interface. More...
 
virtual const BoundSurfacesurface () const
 GeometricSearchDet interface. More...
 
virtual ~BarrelDetLayer ()
 
- Public Member Functions inherited from DetLayer
 DetLayer (bool doHaveGroup, bool ibar)
 
bool isBarrel () const
 
bool isForward () const
 
int seqNum () const
 
void setSeqNum (int sq)
 
virtual ~DetLayer ()
 
- 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 ()
 

Protected Member Functions

bool addClosest (const TrajectoryStateOnSurface &tsos, const Propagator &prop, const MeasurementEstimator &est, const SubLayerCrossing &crossing, std::vector< DetGroup > &result) const __attribute__((hot))
 
SubLayerCrossings computeCrossings (const TrajectoryStateOnSurface &startingState, PropagationDirection propDir) const __attribute__((hot))
 
virtual std::tuple< bool, int,
int > 
computeIndexes (GlobalPoint gInnerPoint, GlobalPoint gOuterPoint) const =0
 
virtual float computeWindowSize (const GeomDet *det, const TrajectoryStateOnSurface &tsos, const MeasurementEstimator &est) const =0
 
bool isPhase2OT () const
 
bool isPixel () const
 
bool isTIB () const
 
bool isTOB () const
 
virtual void searchNeighbors (const TrajectoryStateOnSurface &tsos, const Propagator &prop, const MeasurementEstimator &est, const SubLayerCrossing &crossing, float window, std::vector< DetGroup > &result, bool checkClosest) const =0
 
const std::vector< const
GeometricSearchDet * > & 
subLayer (int ind) const
 
- Protected Member Functions inherited from BarrelDetLayer
SimpleCylinderBounds const & bounds () const
 
virtual BoundCylindercomputeSurface ()
 
virtual void initialize ()
 
void setSurface (BoundCylinder *cp)
 

Protected Attributes

GeomDetEnumerators::SubDetector me
 
std::vector< const GeomDet * > theBasicComps
 
std::vector< const
GeometricSearchDet * > 
theComps
 
std::vector< const
GeometricSearchDet * > 
theInnerComps
 
ReferenceCountingPointer
< BoundCylinder
theInnerCylinder
 
std::vector< const
GeometricSearchDet * > 
theOuterComps
 
ReferenceCountingPointer
< BoundCylinder
theOuterCylinder
 
- Protected Attributes inherited from GeometricSearchDet
bool haveGroups
 
GeomDetCompatibilityChecker theCompatibilityChecker
 

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
 

Detailed Description

Definition at line 13 of file TBLayer.h.

Constructor & Destructor Documentation

template<typename TDET >
TBLayer::TBLayer ( std::vector< const TDET * > &  inner,
std::vector< const TDET * > &  outer,
GeomDetEnumerators::SubDetector  ime 
)
inline

Definition at line 17 of file TBLayer.h.

18  :
19  BarrelDetLayer(true),
20  theInnerComps(inner.begin(),inner.end()),
21  theOuterComps(outer.begin(),outer.end()), me(ime){}
std::vector< const GeometricSearchDet * > theInnerComps
Definition: TBLayer.h:84
BarrelDetLayer(bool doHaveGroup)
GeomDetEnumerators::SubDetector me
Definition: TBLayer.h:91
std::vector< const GeometricSearchDet * > theOuterComps
Definition: TBLayer.h:85
TBLayer::~TBLayer ( )

Definition at line 11 of file TBLayer.cc.

References i, and theComps.

11  {
12  for ( auto i : theComps) delete i;
13 }
int i
Definition: DBlmapReader.cc:9
std::vector< const GeometricSearchDet * > theComps
Definition: TBLayer.h:83

Member Function Documentation

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

Definition at line 86 of file TBLayer.cc.

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

Referenced by groupedCompatibleDetsV().

91 {
92 
93  auto const & sub = subLayer( crossing.subLayerIndex());
94  auto det = sub[crossing.closestDetIndex()];
95  return CompatibleDetToGroupAdder().add( *det, tsos, prop, est, result);
96 }
int closestDetIndex() const
int subLayerIndex() const
tuple result
Definition: query.py:137
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 GeometricSearchDet * > & subLayer(int ind) const
Definition: TBLayer.h:64
virtual const std::vector<const GeomDet*>& TBLayer::basicComponents ( ) const
inlinefinalvirtual

Implements GeometricSearchDet.

Definition at line 28 of file TBLayer.h.

References theBasicComps.

28 {return theBasicComps;}
std::vector< const GeomDet * > theBasicComps
Definition: TBLayer.h:86
virtual const std::vector<const GeometricSearchDet*>& TBLayer::components ( ) const
inlinefinalvirtual

Returns basic components, if any.

Returns direct components, if any

Implements GeometricSearchDet.

Definition at line 30 of file TBLayer.h.

References theComps.

30 {return theComps;}
std::vector< const GeometricSearchDet * > theComps
Definition: TBLayer.h:83
SubLayerCrossings TBLayer::computeCrossings ( const TrajectoryStateOnSurface startingState,
PropagationDirection  propDir 
) const
protected

Definition at line 50 of file TBLayer.cc.

References computeIndexes(), TrajectoryStateOnSurface::globalMomentum(), TrajectoryStateOnSurface::globalPosition(), HelixBarrelCylinderCrossing::hasSolution(), HelixBarrelCylinderCrossing::onlyPos, HelixBarrelCylinderCrossing::position(), rho, theInnerCylinder, theOuterCylinder, and TrajectoryStateOnSurface::transverseCurvature().

Referenced by groupedCompatibleDetsV().

52 {
53  GlobalPoint startPos( startingState.globalPosition());
54  GlobalVector startDir( startingState.globalMomentum());
55  double rho( startingState.transverseCurvature());
56 
57  HelixBarrelCylinderCrossing innerCrossing( startPos, startDir, rho,
58  propDir,*theInnerCylinder,
60  if (!innerCrossing.hasSolution()) return SubLayerCrossings();
61 
62  HelixBarrelCylinderCrossing outerCrossing( startPos, startDir, rho,
63  propDir,*theOuterCylinder,
65  if (!outerCrossing.hasSolution()) return SubLayerCrossings();
66 
67 
68  GlobalPoint gInnerPoint( innerCrossing.position());
69  GlobalPoint gOuterPoint( outerCrossing.position());
70 
71 
72  int innerIndex, outerIndex; bool inLess;
73  std::tie(inLess,innerIndex, outerIndex) = computeIndexes(gInnerPoint,gOuterPoint);
74 
75  SubLayerCrossing innerSLC( 0, innerIndex, gInnerPoint);
76  SubLayerCrossing outerSLC( 1, outerIndex, gOuterPoint);
77 
78  if (inLess) {
79  return SubLayerCrossings( innerSLC, outerSLC, 0);
80  }
81  else {
82  return SubLayerCrossings( outerSLC, innerSLC, 1);
83  }
84 }
ReferenceCountingPointer< BoundCylinder > theOuterCylinder
Definition: TBLayer.h:89
Definition: DDAxes.h:10
GlobalPoint globalPosition() const
virtual std::tuple< bool, int, int > computeIndexes(GlobalPoint gInnerPoint, GlobalPoint gOuterPoint) const =0
GlobalVector globalMomentum() const
ReferenceCountingPointer< BoundCylinder > theInnerCylinder
Definition: TBLayer.h:88
virtual std::tuple<bool,int,int> TBLayer::computeIndexes ( GlobalPoint  gInnerPoint,
GlobalPoint  gOuterPoint 
) const
protectedpure virtual

Implemented in TBPLayer, and TIBLayer.

Referenced by computeCrossings().

virtual float TBLayer::computeWindowSize ( const GeomDet det,
const TrajectoryStateOnSurface tsos,
const MeasurementEstimator est 
) const
protectedpure virtual

Implemented in TBPLayer, and TIBLayer.

Referenced by groupedCompatibleDetsV().

void TBLayer::groupedCompatibleDetsV ( const TrajectoryStateOnSurface tsos,
const Propagator prop,
const MeasurementEstimator est,
std::vector< DetGroup > &  result 
) const
finalvirtual

Reimplemented from GeometricSearchDet.

Definition at line 18 of file TBLayer.cc.

References addClosest(), LayerCrossingSide::barrelSide(), SubLayerCrossings::closest(), SubLayerCrossings::closestIndex(), computeCrossings(), computeWindowSize(), isTIB(), SubLayerCrossings::isValid(), DetGroupMerger::orderAndMergeTwoLevels(), SubLayerCrossings::other(), Propagator::propagationDirection(), query::result, searchNeighbors(), and svgfig::window().

21  {
22  SubLayerCrossings crossings;
23  crossings = computeCrossings( tsos, prop.propagationDirection());
24  if(! crossings.isValid()) return;
25 
26  std::vector<DetGroup> closestResult;
27  addClosest( tsos, prop, est, crossings.closest(), closestResult);
28  // for TIB this differs from compatibleDets logic, which checks next in such cases!!!
29  if (closestResult.empty()){
30  if (!isTIB()) addClosest( tsos, prop, est, crossings.other(), result);
31  return;
32  }
33 
34  DetGroupElement closestGel( closestResult.front().front());
35  float window = computeWindowSize( closestGel.det(), closestGel.trajectoryState(), est);
36 
37  searchNeighbors( tsos, prop, est, crossings.closest(), window,
38  closestResult, false);
39 
40  std::vector<DetGroup> nextResult;
41  searchNeighbors( tsos, prop, est, crossings.other(), window,
42  nextResult, true);
43 
44  int crossingSide = LayerCrossingSide().barrelSide( closestGel.trajectoryState(), prop);
45  DetGroupMerger::orderAndMergeTwoLevels( std::move(closestResult), std::move(nextResult), result,
46  crossings.closestIndex(), crossingSide);
47 }
SubLayerCrossings computeCrossings(const TrajectoryStateOnSurface &startingState, PropagationDirection propDir) const __attribute__((hot))
Definition: TBLayer.cc:50
def window
Definition: svgfig.py:642
static int barrelSide(const TrajectoryStateOnSurface &startingState, const Propagator &prop)
returns 0 if barrel layer crossed from inside, 1 if from outside
virtual PropagationDirection propagationDirection() const
Definition: Propagator.h:155
int closestIndex() const
bool addClosest(const TrajectoryStateOnSurface &tsos, const Propagator &prop, const MeasurementEstimator &est, const SubLayerCrossing &crossing, std::vector< DetGroup > &result) const __attribute__((hot))
Definition: TBLayer.cc:86
virtual float computeWindowSize(const GeomDet *det, const TrajectoryStateOnSurface &tsos, const MeasurementEstimator &est) const =0
tuple result
Definition: query.py:137
const SubLayerCrossing & other() const
const SubLayerCrossing & closest() const
bool isTIB() const
Definition: TBLayer.h:68
virtual void searchNeighbors(const TrajectoryStateOnSurface &tsos, const Propagator &prop, const MeasurementEstimator &est, const SubLayerCrossing &crossing, float window, std::vector< DetGroup > &result, bool checkClosest) const =0
static void orderAndMergeTwoLevels(std::vector< DetGroup > &&one, std::vector< DetGroup > &&two, std::vector< DetGroup > &result, int firstIndex, int firstCrossed)
bool TBLayer::isPhase2OT ( ) const
inlineprotected

Definition at line 71 of file TBLayer.h.

References me, and GeomDetEnumerators::P2OTB.

71 { return me==GeomDetEnumerators::P2OTB;}
GeomDetEnumerators::SubDetector me
Definition: TBLayer.h:91
bool TBLayer::isPixel ( ) const
inlineprotected

Definition at line 70 of file TBLayer.h.

References me, and GeomDetEnumerators::PixelBarrel.

GeomDetEnumerators::SubDetector me
Definition: TBLayer.h:91
bool TBLayer::isTIB ( ) const
inlineprotected

Definition at line 68 of file TBLayer.h.

References me, and GeomDetEnumerators::TIB.

Referenced by groupedCompatibleDetsV().

68 { return me==GeomDetEnumerators::TIB;}
GeomDetEnumerators::SubDetector me
Definition: TBLayer.h:91
bool TBLayer::isTOB ( ) const
inlineprotected

Definition at line 69 of file TBLayer.h.

References me, and GeomDetEnumerators::TOB.

69 { return me==GeomDetEnumerators::TOB;}
GeomDetEnumerators::SubDetector me
Definition: TBLayer.h:91
virtual void TBLayer::searchNeighbors ( const TrajectoryStateOnSurface tsos,
const Propagator prop,
const MeasurementEstimator est,
const SubLayerCrossing crossing,
float  window,
std::vector< DetGroup > &  result,
bool  checkClosest 
) const
protectedpure virtual

Implemented in TBPLayer, and TIBLayer.

Referenced by groupedCompatibleDetsV().

virtual SubDetector TBLayer::subDetector ( ) const
inlinefinalvirtual

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

Implements DetLayer.

Definition at line 39 of file TBLayer.h.

References me, and GeomDetEnumerators::subDetGeom.

GeomDetEnumerators::SubDetector me
Definition: TBLayer.h:91
SubDetector subDetGeom[18]
const std::vector<const GeometricSearchDet*>& TBLayer::subLayer ( int  ind) const
inlineprotected

Definition at line 64 of file TBLayer.h.

References theInnerComps, and theOuterComps.

Referenced by addClosest(), and TIBLayer::searchNeighbors().

64  {
65  return (ind==0 ? theInnerComps : theOuterComps);
66  }
std::vector< const GeometricSearchDet * > theInnerComps
Definition: TBLayer.h:84
std::vector< const GeometricSearchDet * > theOuterComps
Definition: TBLayer.h:85

Member Data Documentation

GeomDetEnumerators::SubDetector TBLayer::me
protected

Definition at line 91 of file TBLayer.h.

Referenced by isPhase2OT(), isPixel(), isTIB(), isTOB(), and subDetector().

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

Definition at line 86 of file TBLayer.h.

Referenced by basicComponents(), and TIBLayer::TIBLayer().

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

Definition at line 83 of file TBLayer.h.

Referenced by components(), TIBLayer::TIBLayer(), and ~TBLayer().

std::vector<const GeometricSearchDet*> TBLayer::theInnerComps
protected

Definition at line 84 of file TBLayer.h.

Referenced by TIBLayer::computeIndexes(), subLayer(), and TIBLayer::TIBLayer().

ReferenceCountingPointer<BoundCylinder> TBLayer::theInnerCylinder
protected

Definition at line 88 of file TBLayer.h.

Referenced by computeCrossings(), and TIBLayer::TIBLayer().

std::vector<const GeometricSearchDet*> TBLayer::theOuterComps
protected

Definition at line 85 of file TBLayer.h.

Referenced by TIBLayer::computeIndexes(), subLayer(), and TIBLayer::TIBLayer().

ReferenceCountingPointer<BoundCylinder> TBLayer::theOuterCylinder
protected

Definition at line 89 of file TBLayer.h.

Referenced by computeCrossings(), and TIBLayer::TIBLayer().