|
|
#include <ThirdHitPrediction.h>
|
void | getRanges (const DetLayer *layer, float phi[], float rz[]) |
|
void | getRanges (float rORz, float phi[], float rz[]) |
|
bool | isCompatibleWithMultipleScattering (GlobalPoint g3, const std::vector< const TrackingRecHit * > &h, std::vector< GlobalVector > &localDirs, const edm::EventSetup &es) |
|
| ThirdHitPrediction (const TrackingRegion ®ion, GlobalPoint inner, GlobalPoint outer, const edm::EventSetup &es, double nSigMultipleScattering, double maxAngleRatio, std::string builderName) |
|
| ~ThirdHitPrediction () |
|
|
float | angleRatio (const Global2DVector &p3, const Global2DVector &c) |
|
float | areaParallelogram (const Global2DVector &a, const Global2DVector &b) |
|
void | calculateRanges (float rz3, float phi[2], float rz[2]) |
|
void | calculateRangesBarrel (float r3, float phi[2], float z[2], bool keep) |
|
void | calculateRangesForward (float z3, float phi[2], float r[2], bool keep) |
|
std::pair< float, float > | findArcIntersection (std::pair< float, float > a, std::pair< float, float > b, bool &keep) |
|
std::pair< float, float > | findMinimalCircles (float r) |
|
void | findRectangle (const float x[3], const float y[3], const float par[3], float phi[2], float z[2]) |
|
std::pair< float, float > | findTouchingCircles (float r) |
|
void | fitParabola (const float x[3], const float y[3], float par[3]) |
|
void | initLayer (const DetLayer *layer) |
|
void | invertCircle (Global2DVector &c, float &r) |
|
void | invertPoint (Global2DVector &p) |
|
void | printOut (char *text) |
|
void | spinCloser (float phi[3]) |
|
Definition at line 33 of file ThirdHitPrediction.h.
◆ Margin
◆ Range
◆ ThirdHitPrediction()
Definition at line 18 of file ThirdHitPrediction.cc.
References fftjetpileupestimator_calo_uncalib_cfi::c0, diffTwoXMLs::g1, diffTwoXMLs::g2, edm::EventSetup::get(), get, SurfaceOrientation::inner, keep, volumeBasedMagneticField_160812_cfi::magfield, AllPixelTracks_cfi::maxAngleRatio, HLTSiStripMonitoring_cff::nSigma, AllPixelTracks_cfi::nSigMultipleScattering, SurfaceOrientation::outer, p1, p2, edm::ESHandle< T >::product(), HLT_FULL_cff::region, and submit::rm.
◆ ~ThirdHitPrediction()
ThirdHitPrediction::~ThirdHitPrediction |
( |
| ) |
|
◆ angleRatio()
◆ areaParallelogram()
◆ calculateRanges()
void ThirdHitPrediction::calculateRanges |
( |
float |
rz3, |
|
|
float |
phi[2], |
|
|
float |
rz[2] |
|
) |
| |
|
private |
◆ calculateRangesBarrel()
void ThirdHitPrediction::calculateRangesBarrel |
( |
float |
r3, |
|
|
float |
phi[2], |
|
|
float |
z[2], |
|
|
bool |
keep |
|
) |
| |
|
private |
Definition at line 195 of file ThirdHitPrediction.cc.
198 if (arc_all.second != 0.) {
203 angle[0] = arc_all.first - arc_all.second;
204 angle[1] = arc_all.first;
205 angle[2] = arc_all.first + arc_all.second;
207 float phi3[3], z3[3];
210 for (
int i = 0;
i < 3;
i++) {
220 if (
keep &&
i == 1) {
References angle(), HltBtagPostValidation_cff::c, funct::cos(), dumpMFGeometry_cfg::delta, diffTwoXMLs::g1, diffTwoXMLs::g2, mps_fire::i, keep, mag(), p1, p2, p3, particleFlowDisplacedVertex_cfi::ratio, funct::sin(), sqr(), and mathSSE::sqrt().
◆ calculateRangesForward()
void ThirdHitPrediction::calculateRangesForward |
( |
float |
z3, |
|
|
float |
phi[2], |
|
|
float |
r[2], |
|
|
bool |
keep |
|
) |
| |
|
private |
Definition at line 243 of file ThirdHitPrediction.cc.
252 float phi3[3], r3[3];
254 for (
int i = 0;
i < 3;
i++) {
257 if (
keep &&
i == 1) {
269 float a23 =
ratio * a12;
References angle(), HltBtagPostValidation_cff::c, funct::cos(), diffTwoXMLs::g1, diffTwoXMLs::g2, mps_fire::i, keep, mag2(), p1, p2, p3, alignCSCRings::r, particleFlowDisplacedVertex_cfi::ratio, and funct::sin().
◆ findArcIntersection()
pair< float, float > ThirdHitPrediction::findArcIntersection |
( |
std::pair< float, float > |
a, |
|
|
std::pair< float, float > |
b, |
|
|
bool & |
keep |
|
) |
| |
|
private |
◆ findMinimalCircles()
pair< float, float > ThirdHitPrediction::findMinimalCircles |
( |
float |
r | ) |
|
|
private |
◆ findRectangle()
void ThirdHitPrediction::findRectangle |
( |
const float |
x[3], |
|
|
const float |
y[3], |
|
|
const float |
par[3], |
|
|
float |
phi[2], |
|
|
float |
z[2] |
|
) |
| |
|
private |
◆ findTouchingCircles()
pair< float, float > ThirdHitPrediction::findTouchingCircles |
( |
float |
r | ) |
|
|
private |
◆ fitParabola()
void ThirdHitPrediction::fitParabola |
( |
const float |
x[3], |
|
|
const float |
y[3], |
|
|
float |
par[3] |
|
) |
| |
|
private |
◆ getRanges() [1/2]
void ThirdHitPrediction::getRanges |
( |
const DetLayer * |
layer, |
|
|
float |
phi[], |
|
|
float |
rz[] |
|
) |
| |
Definition at line 304 of file ThirdHitPrediction.cc.
310 float phi_inner[2], rz_inner[2];
313 float phi_outer[2], rz_outer[2];
316 if ((phi_inner[0] == 0. && phi_inner[1] == 0.) || (phi_outer[0] == 0. && phi_outer[1] == 0.)) {
323 while (phi_outer[0] > phi_inner[0] +
M_PI) {
324 phi_outer[0] -= 2 *
M_PI;
325 phi_outer[1] -= 2 *
M_PI;
328 while (phi_outer[0] < phi_inner[0] -
M_PI) {
329 phi_outer[0] += 2 *
M_PI;
330 phi_outer[1] += 2 *
M_PI;
333 phi[0] =
min(phi_inner[0], phi_outer[0]);
334 phi[1] =
max(phi_inner[1], phi_outer[1]);
336 rz[0] =
min(rz_inner[0], rz_outer[0]);
337 rz[1] =
max(rz_inner[1], rz_outer[1]);
References M_PI, SiStripPI::max, and min().
Referenced by PixelTripletLowPtGenerator::hitTriplets().
◆ getRanges() [2/2]
void ThirdHitPrediction::getRanges |
( |
float |
rORz, |
|
|
float |
phi[], |
|
|
float |
rz[] |
|
) |
| |
◆ initLayer()
void ThirdHitPrediction::initLayer |
( |
const DetLayer * |
layer | ) |
|
|
private |
Definition at line 431 of file ThirdHitPrediction.cc.
435 const BarrelDetLayer& bl = dynamic_cast<const BarrelDetLayer&>(*layer);
442 const ForwardDetLayer& fl = dynamic_cast<const ForwardDetLayer&>(*layer);
References GeomDetEnumerators::barrel, Surface::bounds(), GeomDetEnumerators::endcap, DetLayer::location(), GeometricSearchDet::position(), CosmicsPD_Skims::radius, BarrelDetLayer::specificSurface(), ForwardDetLayer::surface(), BarrelDetLayer::surface(), Bounds::thickness(), and PV3DBase< T, PVType, FrameType >::z().
◆ invertCircle()
void ThirdHitPrediction::invertCircle |
( |
Global2DVector & |
c, |
|
|
float & |
r |
|
) |
| |
|
private |
◆ invertPoint()
◆ isCompatibleWithMultipleScattering()
Definition at line 345 of file ThirdHitPrediction.cc.
355 if (circle.curvature() != 0.) {
365 float delta_z = g3.
z() - rz3;
368 vector<TransientTrackingRecHit::RecHitPointer> th;
369 for (vector<const TrackingRecHit*>::const_iterator ih =
h.begin(); ih !=
h.end(); ih++)
372 float sigma1_le2 =
max(th[0]->parametersError()[0][0], th[0]->parametersError()[1][1]);
373 float sigma2_le2 =
max(th[1]->parametersError()[0][0], th[1]->parametersError()[1][1]);
375 float sigma_z2 = (1 + a23 / a12) * (1 + a23 / a12) * sigma2_le2 + (a23 / a12) * (a23 / a12) * sigma1_le2;
377 float cotTheta =
slope * circle.curvature();
378 float coshEta =
sqrt(1 +
sqr(cotTheta));
380 float pt =
Bz / circle.curvature();
381 float p =
pt * coshEta;
383 float m_pi = 0.13957018;
389 float sigma_z = msp(
pt, cotTheta, rz2) /
beta;
392 float sinTheta = 1. / coshEta;
393 float cosTheta = cotTheta * sinTheta;
405 globalDirs.push_back(
GlobalVector(-
v.y() * sinTheta,
v.x() * sinTheta, cosTheta));
410 globalDirs.push_back(
GlobalVector(-
v.y() * sinTheta,
v.x() * sinTheta, cosTheta));
415 globalDirs.push_back(
GlobalVector(-
v.y() * sinTheta,
v.x() * sinTheta, cosTheta));
419 float sigma_ms = sigma_z * coshEta;
422 float sigma_le2 =
max(th[2]->parametersError()[0][0], th[2]->parametersError()[1][1]);
424 return (delta_z * delta_z / (sigma_ms * sigma_ms + sigma_le2 + sigma_z2) <
nSigma *
nSigma);
References zMuMuMuonUserData::beta, HltBtagPostValidation_cff::c, PixelRecoUtilities::curvature(), DeadROC_duringRun::dir, diffTwoXMLs::g1, diffTwoXMLs::g2, m_pi, mag2(), SiStripPI::max, HLTSiStripMonitoring_cff::nSigma, AlCaHLTBitMon_ParallelJobs::p, p1, p2, p3, DiDispStaMuonMonitor_cfi::pt, slope, sqr(), mathSSE::sqrt(), findQualityFiles::v, PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().
Referenced by PixelTripletLowPtGenerator::hitTriplets().
◆ printOut()
void ThirdHitPrediction::printOut |
( |
char * |
text | ) |
|
|
private |
◆ spinCloser()
void ThirdHitPrediction::spinCloser |
( |
float |
phi[3] | ) |
|
|
private |
◆ arc_0m
std::pair<float, float> ThirdHitPrediction::arc_0m |
|
private |
◆ Bz
float ThirdHitPrediction::Bz |
|
private |
◆ c0
◆ dif
◆ g1
◆ g2
◆ keep
bool ThirdHitPrediction::keep |
|
private |
◆ maxRatio
double ThirdHitPrediction::maxRatio |
|
private |
◆ nSigma
double ThirdHitPrediction::nSigma |
|
private |
◆ p1
◆ p2
◆ r0
float ThirdHitPrediction::r0 |
|
private |
◆ rm
float ThirdHitPrediction::rm |
|
private |
◆ theBarrel
bool ThirdHitPrediction::theBarrel |
|
private |
◆ theDetRange
Range ThirdHitPrediction::theDetRange |
|
private |
◆ theForward
bool ThirdHitPrediction::theForward |
|
private |
◆ theLayer
const DetLayer* ThirdHitPrediction::theLayer |
|
private |
◆ theLine
◆ theTolerance
Margin ThirdHitPrediction::theTolerance |
|
private |
◆ theTTRecHitBuilder
const TransientTrackingRecHitBuilder * theTTRecHitBuilder
T const * product() const
const DetLayer * theLayer
void calculateRangesBarrel(float r3, float phi[2], float z[2], bool keep)
float angleRatio(const Global2DVector &p3, const Global2DVector &c)
std::pair< float, float > arc_0m
const BoundSurface & surface() const final
GeometricSearchDet interface.
const BoundSurface & surface() const final
The surface of the GeometricSearchDet.
void findRectangle(const float x[3], const float y[3], const float par[3], float phi[2], float z[2])
Global3DVector GlobalVector
void spinCloser(float phi[3])
virtual const Surface::PositionType & position() const
Returns position of the surface.
virtual RecHitPointer build(const TrackingRecHit *p) const =0
build a tracking rechit from an existing rechit
T curvature(T InversePt, const edm::EventSetup &iSetup)
Sin< T >::type sin(const T &t)
Geom::Phi< T > phi() const
virtual Location location() const =0
Which part of the detector (barrel, endcap)
void calculateRanges(float rz3, float phi[2], float rz[2])
Cos< T >::type cos(const T &t)
void fitParabola(const float x[3], const float y[3], float par[3])
std::pair< float, float > findTouchingCircles(float r)
const Bounds & bounds() const
void invertPoint(Global2DVector &p)
virtual float thickness() const =0
void initLayer(const DetLayer *layer)
void invertCircle(Global2DVector &c, float &r)
void calculateRangesForward(float z3, float phi[2], float r[2], bool keep)
T mag2() const
The vector magnitude squared. Equivalent to vec.dot(vec)
std::pair< float, float > findArcIntersection(std::pair< float, float > a, std::pair< float, float > b, bool &keep)
Vector2DBase< float, GlobalTag > Global2DVector
T mag() const
The vector magnitude. Equivalent to sqrt(vec.mag2())
T angle(T x1, T y1, T z1, T x2, T y2, T z2)
static const double slope[3]
virtual const BoundCylinder & specificSurface() const final
Extension of the interface.
std::pair< float, float > findMinimalCircles(float r)
float areaParallelogram(const Global2DVector &a, const Global2DVector &b)
PixelRecoRange< float > Range