|
|
#include <TOBRod.h>
|
const std::vector< const GeomDet * > & | basicComponents () const override |
|
std::pair< bool, TrajectoryStateOnSurface > | compatible (const TrajectoryStateOnSurface &ts, const Propagator &, const MeasurementEstimator &) const override __attribute__((cold)) |
|
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)) |
|
| TOBRod (std::vector< const GeomDet * > &innerDets, std::vector< const GeomDet * > &outerDets) __attribute__((cold)) |
|
| ~TOBRod () override __attribute__((cold)) |
|
| GeometricSearchDet (bool doHaveGroups) |
|
virtual const Plane & | specificSurface () const final |
| Return the rod surface as a Plane. More...
|
|
const BoundSurface & | surface () const final |
| The surface of the GeometricSearchDet. More...
|
|
| ~DetRod () override |
|
virtual std::vector< DetWithState > | compatibleDets (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< DetGroup > | groupedCompatibleDets (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 () |
|
|
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 &tsos, PropagationDirection propDir) const __attribute__((hot)) |
|
float | computeWindowSize (const GeomDet *det, const TrajectoryStateOnSurface &tsos, const MeasurementEstimator &est) const __attribute__((hot)) |
|
void | searchNeighbors (const TrajectoryStateOnSurface &tsos, const Propagator &prop, const MeasurementEstimator &est, const SubLayerCrossing &crossing, float window, std::vector< DetGroup > &result, bool checkClosest) const __attribute__((hot)) |
|
const std::vector< const GeomDet * > & | subRod (int ind) const |
|
A concrete implementation for TOB Rod
Definition at line 14 of file TOBRod.h.
◆ BinFinderType
◆ TOBRod()
TOBRod::TOBRod |
( |
std::vector< const GeomDet * > & |
innerDets, |
|
|
std::vector< const GeomDet * > & |
outerDets |
|
) |
| |
Definition at line 25 of file TOBRod.cc.
41 LogDebug(
"TkDetLayers") <<
"==== DEBUG TOBRod =====";
43 LogDebug(
"TkDetLayers") <<
"inner TOBRod's Det pos z,perp,eta,phi: " << (**i).position().z() <<
" , "
44 << (**i).position().perp() <<
" , " << (**i).position().eta() <<
" , "
45 << (**i).position().phi();
49 LogDebug(
"TkDetLayers") <<
"outer TOBRod's Det pos z,perp,eta,phi: " << (**i).position().z() <<
" , "
50 << (**i).position().perp() <<
" , " << (**i).position().eta() <<
" , "
51 << (**i).position().phi();
53 LogDebug(
"TkDetLayers") <<
"==== end DEBUG TOBRod =====";
References mps_fire::i, LogDebug, DetRod::setPlane(), theDets, theInnerBinFinder, theInnerDets, theInnerPlane, theOuterBinFinder, theOuterDets, and theOuterPlane.
◆ ~TOBRod()
◆ addClosest()
◆ basicComponents()
const std::vector<const GeomDet*>& TOBRod::basicComponents |
( |
| ) |
const |
|
inlineoverridevirtual |
◆ compatible()
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 62 of file TOBRod.cc.
65 edm::LogError(
"TkDetLayers") <<
"temporary dummy implementation of TOBRod::compatible()!!";
66 return pair<bool, TrajectoryStateOnSurface>();
◆ components()
◆ computeCrossings()
Definition at line 105 of file TOBRod.cc.
107 GlobalPoint startPos(startingState.globalPosition());
109 double rho(startingState.transverseCurvature());
113 std::pair<bool, double> outerPath = crossing.pathLength(*
theOuterPlane);
114 if (!outerPath.first)
116 GlobalPoint gOuterPoint(crossing.position(outerPath.second));
118 std::pair<bool, double> innerPath = crossing.pathLength(*
theInnerPlane);
119 if (!innerPath.first)
121 GlobalPoint gInnerPoint(crossing.position(innerPath.second));
131 if (innerDist < outerDist) {
References funct::abs(), PeriodicBinFinderInZ< T >::binIndex(), PeriodicBinFinderInZ< T >::binPosition(), TrajectoryStateOnSurface::globalMomentum(), TrajectoryStateOnSurface::globalPosition(), rho, theInnerBinFinder, theInnerPlane, theOuterBinFinder, theOuterPlane, and TrajectoryStateOnSurface::transverseCurvature().
Referenced by groupedCompatibleDetsV().
◆ computeWindowSize()
◆ groupedCompatibleDetsV()
Reimplemented from GeometricSearchDet.
Definition at line 69 of file TOBRod.cc.
78 std::vector<DetGroup> closestResult;
80 if (closestResult.empty()) {
81 std::vector<DetGroup> nextResult;
83 if (nextResult.empty())
96 std::vector<DetGroup> nextResult;
References addClosest(), LayerCrossingSide::barrelSide(), SubLayerCrossings::closest(), SubLayerCrossings::closestIndex(), computeCrossings(), computeWindowSize(), SubLayerCrossings::isValid(), eostools::move(), DetGroupMerger::orderAndMergeTwoLevels(), SubLayerCrossings::other(), Propagator::propagationDirection(), mps_fire::result, searchNeighbors(), and svgfig::window().
◆ searchNeighbors()
Definition at line 178 of file TOBRod.cc.
190 int negStartIndex = closestIndex - 1;
191 int posStartIndex = closestIndex + 1;
194 if (gCrossingPos.
z() < sRod[closestIndex]->surface().position().z()) {
195 posStartIndex = closestIndex;
197 negStartIndex = closestIndex;
202 for (
int idet = negStartIndex; idet >= 0; idet--) {
208 for (
int idet = posStartIndex; idet < static_cast<int>(sRod.size()); idet++) {
References PVValHelper::add(), SubLayerCrossing::closestDetIndex(), goodZToMuMu_cfi::overlap, SubLayerCrossing::position(), mps_fire::result, SubLayerCrossing::subLayerIndex(), subRod(), svgfig::window(), and PV3DBase< T, PVType, FrameType >::z().
Referenced by groupedCompatibleDetsV().
◆ subRod()
const std::vector<const GeomDet*>& TOBRod::subRod |
( |
int |
ind | ) |
const |
|
inlineprivate |
◆ theDets
std::vector<const GeomDet*> TOBRod::theDets |
|
private |
◆ theInnerBinFinder
◆ theInnerDets
std::vector<const GeomDet*> TOBRod::theInnerDets |
|
private |
◆ theInnerPlane
◆ theOuterBinFinder
◆ theOuterDets
std::vector<const GeomDet*> TOBRod::theOuterDets |
|
private |
◆ theOuterPlane
const GlobalPoint & position() const
std::vector< const GeomDet * > theOuterDets
ReferenceCountingPointer< Plane > theInnerPlane
int binIndex(T z) const override
returns an index in the valid range for the bin that contains Z
PeriodicBinFinderInZ< float > BinFinderType
def window(xmin, xmax, ymin, ymax, x=0, y=0, width=100, height=100, xlogbase=None, ylogbase=None, minusInfinity=-1000, flipx=False, flipy=True)
std::vector< const GeomDet * > theInnerDets
const Plane & surface() const
The nominal surface of the GeomDet.
virtual PropagationDirection propagationDirection() const final
BinFinderType theOuterBinFinder
static void orderAndMergeTwoLevels(std::vector< DetGroup > &&one, std::vector< DetGroup > &&two, std::vector< DetGroup > &result, int firstIndex, int firstCrossed)
BinFinderType theInnerBinFinder
static bool add(const GeometricSearchDet &det, const TrajectoryStateOnSurface &tsos, const Propagator &prop, const MeasurementEstimator &est, std::vector< DetGroup > &result) __attribute__((hot))
const SubLayerCrossing & closest() const
void setPlane(Plane *plane)
Set the rod's plane.
void add(std::map< std::string, TH1 * > &h, TH1 *hist)
float computeWindowSize(const GeomDet *det, const TrajectoryStateOnSurface &tsos, const MeasurementEstimator &est) const __attribute__((hot))
int closestDetIndex() const
const std::vector< const GeomDet * > & subRod(int ind) const
std::vector< const GeomDet * > theDets
Log< level::Error, false > LogError
SubLayerCrossings computeCrossings(const TrajectoryStateOnSurface &tsos, PropagationDirection propDir) const __attribute__((hot))
T binPosition(int ind) const override
the middle of the bin
void searchNeighbors(const TrajectoryStateOnSurface &tsos, const Propagator &prop, const MeasurementEstimator &est, const SubLayerCrossing &crossing, float window, std::vector< DetGroup > &result, bool checkClosest) const __attribute__((hot))
static int barrelSide(const TrajectoryStateOnSurface &startingState, const Propagator &prop)
returns 0 if barrel layer crossed from inside, 1 if from outside
const SubLayerCrossing & other() const
bool addClosest(const TrajectoryStateOnSurface &tsos, const Propagator &prop, const MeasurementEstimator &est, const SubLayerCrossing &crossing, std::vector< DetGroup > &result) const __attribute__((hot))
int subLayerIndex() const
Abs< T >::type abs(const T &t)
ReferenceCountingPointer< Plane > theOuterPlane
virtual Local2DVector maximalLocalDisplacement(const TrajectoryStateOnSurface &ts, const Plane &plane) const =0