|
std::unique_ptr< HitRZCompatibility > | checkRZ (const DetLayer *layer, const Hit &outerHit, const DetLayer *outerlayer=nullptr, float lr=0, float gz=0, float dr=0, float dz=0) const override |
|
void | checkTracks (reco::TrackCollection const &tracks, std::vector< bool > &mask) const override |
|
std::unique_ptr< TrackingRegion > | clone () const override |
|
const Range & | etaRange () const |
| allowed eta range [eta_min, eta_max] interval More...
|
|
TrackingRegion::Hits | hits (const SeedingLayerSetsHits::SeedingLayer &layer) const override |
| get hits from layer compatible with region constraints More...
|
|
bool | isPrecise () const |
| is precise error calculation switched on More...
|
|
std::string | name () const override |
|
RectangularEtaPhiTrackingRegion & | operator= (RectangularEtaPhiTrackingRegion const &)=delete |
|
RectangularEtaPhiTrackingRegion & | operator= (RectangularEtaPhiTrackingRegion &&)=delete |
|
const Margin & | phiMargin () const |
|
std::string | print () const override |
|
| RectangularEtaPhiTrackingRegion () |
|
| RectangularEtaPhiTrackingRegion (RectangularEtaPhiTrackingRegion const &rh) |
|
| RectangularEtaPhiTrackingRegion (RectangularEtaPhiTrackingRegion &&)=default |
|
| RectangularEtaPhiTrackingRegion (const GlobalVector &dir, const GlobalPoint &vertexPos, float ptMin, float rVertex, float zVertex, float deltaEta, float deltaPhi, const MagneticField &field, const MultipleScatteringParametrisationMaker *msmaker, bool precise=true, UseMeasurementTracker whereToUseMeasurementTracker=UseMeasurementTracker::kNever, const MeasurementTrackerEvent *measurementTracker=nullptr, bool etaPhiRegion=false) |
|
| RectangularEtaPhiTrackingRegion (const GlobalVector &dir, const GlobalPoint &vertexPos, float ptMin, float rVertex, float zVertex, Margin etaMargin, Margin phiMargin, const MagneticField &field, const MultipleScatteringParametrisationMaker *msmaker, bool precise=true, UseMeasurementTracker whereToUseMeasurementTracker=UseMeasurementTracker::kNever, const MeasurementTrackerEvent *measurementTracker=nullptr, bool etaPhiRegion=false) |
|
| RectangularEtaPhiTrackingRegion (const GlobalVector &dir, const GlobalPoint &vertexPos, Range invPtRange, float rVertex, float zVertex, Margin etaMargin, Margin phiMargin, const MagneticField &field, const MultipleScatteringParametrisationMaker *msmaker, bool precise=true, UseMeasurementTracker whereToUseMeasurementTracker=UseMeasurementTracker::kNever, const MeasurementTrackerEvent *measurementTracker=nullptr, bool etaPhiRegion=false, bool useMS=true) |
|
const Range & | tanLambdaRange () const |
|
std::vector< bool > | checkTracks (reco::TrackCollection const &tracks) const |
| return a boolean mask over the TrackCollection reflecting the compatibility of each track with the region constraints More...
|
|
GlobalVector const & | direction () const |
| the direction around which region is constructed More...
|
|
Range | invPtRange () const |
| inverse pt range More...
|
|
GlobalPoint const & | origin () const |
|
float | originRBound () const |
| bounds the particle vertex in the transverse plane More...
|
|
float | originZBound () const |
| bounds the particle vertex in the longitudinal plane More...
|
|
float | phiDirection () const |
|
float | ptMin () const |
| minimal pt of interest More...
|
|
std::unique_ptr< TrackingRegion > | restrictedRegion (const GlobalPoint &originPos, const float &originRBound, const float &originZBound) const |
| clone region with new vertex position More...
|
|
| TrackingRegion () |
|
| TrackingRegion (const GlobalVector &direction, const GlobalPoint &originPos, const Range &invPtRange, const float &originRBound, const float &originZBound) |
|
GlobalVector const & | unitDirection () const |
|
virtual | ~TrackingRegion () |
|
A concrete implementation of TrackingRegion. Apart of vertex constraint from TrackingRegion in this implementation the region of interest is further constrainted in phi and eta around the direction of the region
Definition at line 26 of file RectangularEtaPhiTrackingRegion.h.
RectangularEtaPhiTrackingRegion::RectangularEtaPhiTrackingRegion |
( |
const GlobalVector & |
dir, |
|
|
const GlobalPoint & |
vertexPos, |
|
|
float |
ptMin, |
|
|
float |
rVertex, |
|
|
float |
zVertex, |
|
|
float |
deltaEta, |
|
|
float |
deltaPhi, |
|
|
const MagneticField & |
field, |
|
|
const MultipleScatteringParametrisationMaker * |
msmaker, |
|
|
bool |
precise = true , |
|
|
UseMeasurementTracker |
whereToUseMeasurementTracker = UseMeasurementTracker::kNever , |
|
|
const MeasurementTrackerEvent * |
measurementTracker = nullptr , |
|
|
bool |
etaPhiRegion = false |
|
) |
| |
|
inline |
constructor (symmetric eta and phi margins).
dir - the direction around which region is constructed
the initial direction of the momentum of the particle should be in the range
phi of dir +- deltaPhi
eta of dir +- deltaEta
vertexPos - the position of the vertex (origin) of the of the region.
It is a centre of cylinder constraind with rVertex, zVertex. The track of the particle should cross the cylinder
WARNING: in the current implementaion the vertexPos is supposed to be placed on the beam line, i.e. to be of the form (0,0,float)
ptMin - minimal pt of interest
rVertex - radius of the cylinder around beam line where the tracks of interest should point to.
zVertex - half height of the cylinder around the beam line where the tracks of interest should point to.
deltaEta - allowed deviation of the initial direction of particle in eta in respect to direction of the region
deltaPhi - allowed deviation of the initial direction of particle in phi in respect to direction of the region whereToUseMeasurementTracker: 1=everywhere, 0=outside pixles, -1=nowhere msmaker - Needed if either precise or useMS is true
Definition at line 92 of file RectangularEtaPhiTrackingRegion.h.
static const double deltaEta
PixelRecoRange< float > Range
float ptMin() const
minimal pt of interest
Abs< T >::type abs(const T &t)
RectangularEtaPhiTrackingRegion()
TkTrackingRegionsMargin< float > Margin
whereToUseMeasurementTracker
Definition at line 100 of file RectangularEtaPhiTrackingRegion.cc.
References funct::abs(), GeomDetEnumerators::barrel, alignCSCRings::corr, SimpleLineRZ::cotLine(), f, PixelPluginsPhase0_cfi::isBarrel, phase1PixelTopology::layer, SiStripPI::max, SiStripPI::min, SurfaceOrientation::outer, ptMin, DetLayer::seqNum(), sqr(), mathSSE::sqrt(), vtxMean(), PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), PixelRecoPointRZ::z(), PV3DBase< T, PVType, FrameType >::z(), and PixelRecoLineRZ::zAtR().
Referenced by checkRZ().
118 return std::make_unique<HitEtaCheck>(
isBarrel,
outer, cotLeft, cotRight);
121 float outerZscatt = 0;
122 float innerScatt = 0;
127 float sinThetaOuterInv =
std::sqrt(1.
f +
sqr(cotThetaOuter));
128 outerZscatt = 3.f * oSigma(
ptMin(), cotThetaOuter) * sinThetaOuterInv;
133 float zMinLine = boundL.
zAtR(0.) - outerZscatt;
134 float zMaxLine = boundR.zAtR(0.) + outerZscatt;
153 auto cotTheta =
std::abs(leftLine.cotLine() + rightLine.cotLine()) * 0.5
f;
159 auto corr = innerScatt * sinThetaInv;
163 auto corr = innerScatt * cosThetaInv;
TkTrackingRegionsMargin< float > Margin
TkTrackingRegionsMargin< float > Margin
GlobalPoint const & origin() const
const MultipleScatteringParametrisationMaker * theMSMaker
constexpr std::array< uint8_t, layerIndexSize > layer
float zAtR(float r) const
MultipleScatteringParametrisation parametrisation(const DetLayer *layer, X0Source x0Source=X0Source::useX0AtEta) const
float ptMin() const
minimal pt of interest
Abs< T >::type abs(const T &t)
static GlobalPoint vtxMean(const GlobalPoint &p1, const GlobalError &e1, const GlobalPoint &p2, const GlobalError &e2)
float originRBound() const
bounds the particle vertex in the transverse plane
HitRZConstraint rzConstraint() const
float originZBound() const
bounds the particle vertex in the longitudinal plane
Definition at line 168 of file RectangularEtaPhiTrackingRegion.cc.
References funct::abs(), PixelRecoRange< T >::empty(), f, reco::helper::VirtualJetProducerHelper::intersection(), PixelRecoRange< T >::intersection(), phase1PixelTopology::layer, PixelRecoUtilities::longitudinalBendingCorrection(), PixelRecoRange< T >::max(), SiStripPI::max, PixelRecoRange< T >::mean(), PixelRecoRange< T >::min(), SiStripPI::min, trackingPOGFilters_cfi::phiWindow, ptMin, CosmicsPD_Skims::radius, HitZCheck::range(), OuterHitPhiPrediction::setTolerance(), HitZCheck::setTolerance(), sqr(), mathSSE::sqrt(), w2, and HLTMuonOfflineAnalyzer_cfi::z0.
172 float halfLength = 0.5f *
layer->surface().bounds().length();
173 float halfThickness = 0.5f *
layer->surface().bounds().thickness();
174 float z0 =
layer->position().z();
179 Range detZWindow(
z0 - halfLength,
z0 + halfLength);
184 if (hitZWindow.empty())
196 auto cotTheta = (hitZWindow.mean() -
origin().
z()) * invR;
199 auto scatt = 3.f * msSigma(
ptMin(), cotTheta);
202 float hitErrRPhi = 0.;
204 float corrPhi = (scatt + hitErrRPhi) * invR;
205 float corrZ = scatt * sinThetaInv + bendR *
std::abs(cotTheta) + hitErrZ;
216 Range w1 = zPrediction.range(detRWindow.min());
217 Range w2 = zPrediction.range(detRWindow.max());
220 phiRange = phiPrediction(detRWindow.mean());
OuterHitPhiPrediction phiWindow(const MagneticField &field) const
void setTolerance(float tolerance)
common ppss p3p6s2 common epss epspn46 common const1 w2
GlobalPoint const & origin() const
const MultipleScatteringParametrisationMaker * theMSMaker
constexpr std::array< uint8_t, layerIndexSize > layer
double intersection(double r12)
PixelRecoRange< float > Range
MultipleScatteringParametrisation parametrisation(const DetLayer *layer, X0Source x0Source=X0Source::useX0AtEta) const
float ptMin() const
minimal pt of interest
Abs< T >::type abs(const T &t)
HitRZConstraint rzConstraint() const
PixelRecoRange< T > intersection(const PixelRecoRange< T > &r) const
const MagneticField * theField
double longitudinalBendingCorrection(double radius, double pt, const MagneticField &field)
get hits from layer compatible with region constraints
Implements TrackingRegion.
Definition at line 307 of file RectangularEtaPhiTrackingRegion.cc.
References alongMomentum, GeomDetEnumerators::barrel, Plane::build(), utilities::cache(), runTheMatrix::const, funct::cos(), DeadROC_duringRun::dir, GeomDetEnumerators::endcap, f, h, hfClusterShapes_cfi::hits, GeomDetEnumerators::isBarrel(), GeomDetEnumerators::isEndcap(), GeomDetEnumerators::isTrackerPixel(), GeomDetEnumerators::isTrackerStrip(), phase1PixelTopology::layer, DetLayer::location(), LogDebug, mps_fire::result, makeMuonMisalignmentScenario::rot, funct::sin(), DetLayer::subDetector(), and extraflags_cff::vtx.
314 bool measurementMethod =
false;
316 measurementMethod =
true;
319 measurementMethod =
true;
321 if (measurementMethod) {
325 std::unique_ptr<MeasurementEstimator> est;
342 LogDebug(
"RectangularEtaPhiTrackingRegion") <<
"use pixel specific estimator.";
343 findDetAndHits = est.get();
345 LogDebug(
"RectangularEtaPhiTrackingRegion") <<
"use generic etat phi estimator.";
364 auto hits = lm.recHits(*detLayer, tsos, prop, *findDetAndHits);
367 for (
auto h :
hits) {
372 LogDebug(
"RectangularEtaPhiTrackingRegion")
373 <<
" found " <<
hits.size() <<
" minus one measurements on layer: " << detLayer->
subDetector();
387 auto layerHits =
layer.hits();
388 result.reserve(layerHits.size());
389 for (
auto&& ih : layerHits) {
401 auto layerHits =
layer.hits();
402 result.reserve(layerHits.size());
403 for (
auto&& ih : layerHits) {
std::unique_ptr< MeasurementEstimator > estimator(const BarrelDetLayer *layer) const
virtual Location location() const =0
Which part of the detector (barrel, endcap)
GlobalPoint const & origin() const
bool isBarrel(GeomDetEnumerators::SubDetector m)
Sin< T >::type sin(const T &t)
Global3DPoint GlobalPoint
virtual SubDetector subDetector() const =0
The type of detector (PixelBarrel, PixelEndcap, TIB, TOB, TID, TEC, CSC, DT, RPCBarrel, RPCEndcap)
const UseMeasurementTracker theMeasurementTrackerUsage
float phiDirection() const
TrackingRegion::Hits hits(const SeedingLayerSetsHits::SeedingLayer &layer) const override
get hits from layer compatible with region constraints
constexpr std::array< uint8_t, layerIndexSize > layer
static PlanePointer build(Args &&... args)
const MeasurementTrackerEvent * theMeasurementTracker
Cos< T >::type cos(const T &t)
bool isEndcap(GeomDetEnumerators::SubDetector m)
bool isTrackerStrip(GeomDetEnumerators::SubDetector m)
SeedingLayerSetsHits::Hits Hits
GlobalVector const & direction() const
the direction around which region is constructed
const MagneticField * theField
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
bool isTrackerPixel(GeomDetEnumerators::SubDetector m)