CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Private Member Functions | Private Attributes
ThirdHitPrediction Class Reference

#include <ThirdHitPrediction.h>

Public Types

typedef TkTrackingRegionsMargin< float > Margin
 
typedef PixelRecoRange< float > Range
 

Public Member Functions

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 &region, GlobalPoint inner, GlobalPoint outer, const edm::EventSetup &es, double nSigMultipleScattering, double maxAngleRatio, std::string builderName)
 
 ~ThirdHitPrediction ()
 

Private Member Functions

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])
 

Private Attributes

std::pair< float, float > arc_0m
 
float Bz
 
Global2DVector c0
 
Global2DVector dif
 
GlobalPoint g1
 
GlobalPoint g2
 
bool keep
 
double maxRatio
 
double nSigma
 
Global2DVector p1
 
Global2DVector p2
 
float r0
 
float rm
 
bool theBarrel
 
Range theDetRange
 
bool theForward
 
const DetLayertheLayer
 
PixelRecoLineRZ theLine
 
Margin theTolerance
 
const TransientTrackingRecHitBuildertheTTRecHitBuilder
 

Detailed Description

Definition at line 33 of file ThirdHitPrediction.h.

Member Typedef Documentation

◆ Margin

Definition at line 36 of file ThirdHitPrediction.h.

◆ Range

Definition at line 35 of file ThirdHitPrediction.h.

Constructor & Destructor Documentation

◆ ThirdHitPrediction()

ThirdHitPrediction::ThirdHitPrediction ( const TrackingRegion region,
GlobalPoint  inner,
GlobalPoint  outer,
const edm::EventSetup es,
double  nSigMultipleScattering,
double  maxAngleRatio,
std::string  builderName 
)

Definition at line 18 of file ThirdHitPrediction.cc.

24  {
25  using namespace edm;
28 
30  es.get<TransientRecHitRecord>().get(builderName, ttrhbESH);
31  theTTRecHitBuilder = ttrhbESH.product();
32 
33  Bz = fabs(magfield->inInverseGeV(GlobalPoint(0, 0, 0)).z());
34 
35  c0 = Global2DVector(region.origin().x(), region.origin().y());
36 
37  r0 = region.originRBound();
38  rm = region.ptMin() / Bz;
39 
40  g1 = inner;
41  g2 = outer;
42 
43  p1 = Global2DVector(g1.x(), g1.y());
44  p2 = Global2DVector(g2.x(), g2.y());
45 
46  dif = p1 - p2;
47 
48  // Prepare circles of minimal pt (rm) and cylinder of origin (r0)
49  keep = true;
51 
54 }

References fftjetpileupestimator_calo_uncalib_cfi::c0, diffTwoXMLs::g1, diffTwoXMLs::g2, edm::EventSetup::get(), get, SurfaceOrientation::inner, keep, volumeBasedMagneticField_160812_cfi::magfield, AllPixelTracks_cfi::maxAngleRatio, HLT_2018_cff::maxRatio, HLTSiStripMonitoring_cff::nSigma, AllPixelTracks_cfi::nSigMultipleScattering, SurfaceOrientation::outer, p1, p2, edm::ESHandle< T >::product(), HLT_2018_cff::region, and submit::rm.

◆ ~ThirdHitPrediction()

ThirdHitPrediction::~ThirdHitPrediction ( )

Definition at line 57 of file ThirdHitPrediction.cc.

57 {}

Member Function Documentation

◆ angleRatio()

float ThirdHitPrediction::angleRatio ( const Global2DVector p3,
const Global2DVector c 
)
private

Definition at line 172 of file ThirdHitPrediction.cc.

172  {
173  float rad2 = (p1 - c).mag2();
174 
175  float a12 = asin(fabsf(areaParallelogram(p1 - c, p2 - c)) / rad2);
176  float a23 = asin(fabsf(areaParallelogram(p2 - c, p3 - c)) / rad2);
177 
178  return a23 / a12;
179 }

References HltBtagPostValidation_cff::c, mag2(), p1, p2, and p3.

◆ areaParallelogram()

float ThirdHitPrediction::areaParallelogram ( const Global2DVector a,
const Global2DVector b 
)
private

Definition at line 167 of file ThirdHitPrediction.cc.

167  {
168  return a.x() * b.y() - a.y() * b.x();
169 }

References a, and b.

◆ calculateRanges()

void ThirdHitPrediction::calculateRanges ( float  rz3,
float  phi[2],
float  rz[2] 
)
private

Definition at line 289 of file ThirdHitPrediction.cc.

289  {
290  // Clear
291  phi[0] = 0.;
292  rz[0] = 0.;
293  phi[1] = 0.;
294  rz[1] = 0.;
295 
296  // Calculate
297  if (theBarrel)
298  calculateRangesBarrel(rz3, phi, rz, keep);
299  else
300  calculateRangesForward(rz3, phi, rz, keep);
301 }

References keep.

◆ calculateRangesBarrel()

void ThirdHitPrediction::calculateRangesBarrel ( float  r3,
float  phi[2],
float  z[2],
bool  keep 
)
private

Definition at line 195 of file ThirdHitPrediction.cc.

195  {
196  pair<float, float> arc_all = findArcIntersection(arc_0m, findTouchingCircles(r3), keep);
197 
198  if (arc_all.second != 0.) {
199  Global2DVector c3(0., 0.); // barrel at r3
200  invertCircle(c3, r3); // inverted
201 
202  float angle[3]; // prepare angles
203  angle[0] = arc_all.first - arc_all.second;
204  angle[1] = arc_all.first;
205  angle[2] = arc_all.first + arc_all.second;
206 
207  float phi3[3], z3[3];
208  Global2DVector delta = c3 - p2;
209 
210  for (int i = 0; i < 3; i++) {
211  Global2DVector vec(cos(angle[i]), sin(angle[i])); // unit vector
212  float lambda = delta * vec - sqrt(sqr(delta * vec) - delta * delta + sqr(r3));
213 
214  Global2DVector p3 = p2 + lambda * vec; // inverted third hit
215  invertPoint(p3); // third hit
216  phi3[i] = p3.phi(); // phi of third hit
217 
218  float ratio;
219 
220  if (keep && i == 1) { // Straight line
221  ratio = (p2 - p3).mag() / (p1 - p2).mag();
222  } else { // Circle
223  Global2DVector c = p2 - vec * (vec * (p2 - p1)); // inverted antipodal
224  invertPoint(c); // antipodal
225  c = 0.5 * (p1 + c); // center
226 
227  ratio = angleRatio(p3, c);
228  }
229 
230  z3[i] = g2.z() + (g2.z() - g1.z()) * ratio; // z of third hit
231  }
232 
233  spinCloser(phi3);
234 
235  // Parabola on phi - z
236  float par[3];
237  fitParabola(phi3, z3, par);
238  findRectangle(phi3, z3, par, phi, z);
239  }
240 }

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.

243  {
244  float angle[3]; // prepare angles
245  angle[0] = arc_0m.first - arc_0m.second;
246  angle[1] = arc_0m.first;
247  angle[2] = arc_0m.first + arc_0m.second;
248 
249  float ratio = (z3 - g2.z()) / (g2.z() - g1.z());
250 
251  if (0 < ratio && ratio < maxRatio) {
252  float phi3[3], r3[3];
253 
254  for (int i = 0; i < 3; i++) {
256 
257  if (keep && i == 1) { // Straight line
258  p3 = p2 + ratio * (p2 - p1);
259  } else { // Circle
260  Global2DVector vec(cos(angle[i]), sin(angle[i])); // unit vector
261 
262  Global2DVector c = p2 - vec * (vec * (p2 - p1)); // inverted antipodal
263  invertPoint(c); // antipodal
264  c = 0.5 * (p1 + c); // center
265 
266  float rad2 = (p1 - c).mag2();
267 
268  float a12 = asin(areaParallelogram(p1 - c, p2 - c) / rad2);
269  float a23 = ratio * a12;
270 
271  p3 = c + Global2DVector((p2 - c).x() * cos(a23) - (p2 - c).y() * sin(a23),
272  (p2 - c).x() * sin(a23) + (p2 - c).y() * cos(a23));
273  }
274 
275  phi3[i] = p3.phi();
276  r3[i] = p3.mag();
277  }
278 
279  spinCloser(phi3);
280 
281  // Parabola on phi - z
282  float par[3];
283  fitParabola(phi3, r3, par);
284  findRectangle(phi3, r3, par, phi, r);
285  }
286 }

References angle(), HltBtagPostValidation_cff::c, funct::cos(), diffTwoXMLs::g1, diffTwoXMLs::g2, mps_fire::i, keep, mag2(), HLT_2018_cff::maxRatio, 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

Definition at line 96 of file ThirdHitPrediction.cc.

96  {
97  // spin closer
98  while (b.first < a.first - M_PI)
99  b.first += 2 * M_PI;
100  while (b.first > a.first + M_PI)
101  b.first -= 2 * M_PI;
102 
103  float min, max;
104 
105  if (a.first - a.second > b.first - b.second)
106  min = a.first - a.second;
107  else {
108  min = b.first - b.second;
109  keep = false;
110  }
111 
112  if (a.first + a.second < b.first + b.second)
113  max = a.first + a.second;
114  else {
115  max = b.first + b.second;
116  keep = false;
117  }
118 
119  pair<float, float> c(0., 0.);
120 
121  if (min < max) {
122  c.first = 0.5 * (max + min);
123  c.second = 0.5 * (max - min);
124  }
125 
126  return c;
127 }

References a, b, HltBtagPostValidation_cff::c, keep, M_PI, SiStripPI::max, and min().

◆ findMinimalCircles()

pair< float, float > ThirdHitPrediction::findMinimalCircles ( float  r)
private

Definition at line 75 of file ThirdHitPrediction.cc.

75  {
76  pair<float, float> a(0., 0.);
77 
78  if (dif.mag2() < 2 * sqr(r))
79  a = pair<float, float>(dif.phi(), 0.5 * acos(1 - 0.5 * dif.mag2() / sqr(r)));
80 
81  return a;
82 }

References a, alignCSCRings::r, and sqr().

◆ findRectangle()

void ThirdHitPrediction::findRectangle ( const float  x[3],
const float  y[3],
const float  par[3],
float  phi[2],
float  z[2] 
)
private

Definition at line 145 of file ThirdHitPrediction.cc.

146  {
147  // Initial guess
148  phi[0] = min(x[0], x[2]);
149  z[0] = min(y[0], y[2]);
150  phi[1] = max(x[0], x[2]);
151  z[1] = max(y[0], y[2]);
152 
153  // Extremum: position and value
154  float xe = -par[1] / (2 * par[2]);
155  float ye = par[0] - sqr(par[1]) / (4 * par[2]);
156 
157  // Check if extremum is inside the phi range
158  if (phi[0] < xe && xe < phi[1]) {
159  if (ye < z[0])
160  z[0] = ye;
161  if (ye > z[1])
162  z[1] = ye;
163  }
164 }

References SiStripPI::max, min(), and sqr().

◆ findTouchingCircles()

pair< float, float > ThirdHitPrediction::findTouchingCircles ( float  r)
private

Definition at line 85 of file ThirdHitPrediction.cc.

85  {
87  invertCircle(c, r);
88 
89  pair<float, float> a(0., 0.);
90  a = pair<float, float>((c - p2).phi(), 0.5 * acos(1 - 2 * sqr(r) / (c - p2).mag2()));
91 
92  return a;
93 }

References a, HltBtagPostValidation_cff::c, fftjetpileupestimator_calo_uncalib_cfi::c0, mag2(), p2, alignCSCRings::r, and sqr().

◆ fitParabola()

void ThirdHitPrediction::fitParabola ( const float  x[3],
const float  y[3],
float  par[3] 
)
private

Definition at line 130 of file ThirdHitPrediction.cc.

130  {
131  float s2 = sqr(x[0]) * (y[1] - y[2]) + sqr(x[1]) * (y[2] - y[0]) + sqr(x[2]) * (y[0] - y[1]);
132 
133  float s1 = x[0] * (y[1] - y[2]) + x[1] * (y[2] - y[0]) + x[2] * (y[0] - y[1]);
134 
135  float s3 = (x[0] - x[1]) * (x[1] - x[2]) * (x[2] - x[0]);
136  float s4 =
137  x[0] * x[1] * y[2] * (x[0] - x[1]) + x[0] * y[1] * x[2] * (x[2] - x[0]) + y[0] * x[1] * x[2] * (x[1] - x[2]);
138 
139  par[2] = s1 / s3; // a2
140  par[1] = -s2 / s3; // a1
141  par[0] = -s4 / s3; // a0
142 }

References indexGen::s2, and sqr().

◆ getRanges() [1/2]

void ThirdHitPrediction::getRanges ( const DetLayer layer,
float  phi[],
float  rz[] 
)

Definition at line 304 of file ThirdHitPrediction.cc.

304  {
305  theLayer = layer;
306 
307  if (layer)
308  initLayer(layer);
309 
310  float phi_inner[2], rz_inner[2];
311  calculateRanges(theDetRange.min(), phi_inner, rz_inner);
312 
313  float phi_outer[2], rz_outer[2];
314  calculateRanges(theDetRange.max(), phi_outer, rz_outer);
315 
316  if ((phi_inner[0] == 0. && phi_inner[1] == 0.) || (phi_outer[0] == 0. && phi_outer[1] == 0.)) {
317  phi[0] = 0.;
318  phi[1] = 0.;
319 
320  rz[0] = 0.;
321  rz[1] = 0.;
322  } else {
323  while (phi_outer[0] > phi_inner[0] + M_PI) {
324  phi_outer[0] -= 2 * M_PI;
325  phi_outer[1] -= 2 * M_PI;
326  }
327 
328  while (phi_outer[0] < phi_inner[0] - M_PI) {
329  phi_outer[0] += 2 * M_PI;
330  phi_outer[1] += 2 * M_PI;
331  }
332 
333  phi[0] = min(phi_inner[0], phi_outer[0]);
334  phi[1] = max(phi_inner[1], phi_outer[1]);
335 
336  rz[0] = min(rz_inner[0], rz_outer[0]);
337  rz[1] = max(rz_inner[1], rz_outer[1]);
338  }
339 }

References M_PI, SiStripPI::max, and min().

Referenced by PixelTripletLowPtGenerator::hitTriplets().

◆ getRanges() [2/2]

void ThirdHitPrediction::getRanges ( float  rORz,
float  phi[],
float  rz[] 
)

Definition at line 342 of file ThirdHitPrediction.cc.

342 { calculateRanges(rz3, phi, rz); }

◆ initLayer()

void ThirdHitPrediction::initLayer ( const DetLayer layer)
private

Definition at line 431 of file ThirdHitPrediction.cc.

431  {
432  if (layer->location() == GeomDetEnumerators::barrel) {
433  theBarrel = true;
434  theForward = false;
435  const BarrelDetLayer& bl = dynamic_cast<const BarrelDetLayer&>(*layer);
436  float halfThickness = bl.surface().bounds().thickness() / 2;
437  float radius = bl.specificSurface().radius();
438  theDetRange = Range(radius - halfThickness, radius + halfThickness);
439  } else if (layer->location() == GeomDetEnumerators::endcap) {
440  theBarrel = false;
441  theForward = true;
442  const ForwardDetLayer& fl = dynamic_cast<const ForwardDetLayer&>(*layer);
443  float halfThickness = fl.surface().bounds().thickness() / 2;
444  float zLayer = fl.position().z();
445  theDetRange = Range(zLayer - halfThickness, zLayer + halfThickness);
446  }
447 }

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

Definition at line 60 of file ThirdHitPrediction.cc.

60  {
61  float s = dif.mag2() / ((c - p1).mag2() - sqr(r));
62 
63  c = p1 + (c - p1) * s;
64  r *= fabsf(s);
65 }

References HltBtagPostValidation_cff::c, mag2(), p1, alignCSCRings::r, alignCSCRings::s, and sqr().

◆ invertPoint()

void ThirdHitPrediction::invertPoint ( Global2DVector p)
private

Definition at line 68 of file ThirdHitPrediction.cc.

68  {
69  float s = dif.mag2() / (p - p1).mag2();
70 
71  p = p1 + (p - p1) * s;
72 }

References mag2(), AlCaHLTBitMon_ParallelJobs::p, p1, and alignCSCRings::s.

◆ isCompatibleWithMultipleScattering()

bool ThirdHitPrediction::isCompatibleWithMultipleScattering ( GlobalPoint  g3,
const std::vector< const TrackingRecHit * > &  h,
std::vector< GlobalVector > &  localDirs,
const edm::EventSetup es 
)

Definition at line 345 of file ThirdHitPrediction.cc.

348  {
349  Global2DVector p1(g1.x(), g1.y());
350  Global2DVector p2(g2.x(), g2.y());
351  Global2DVector p3(g3.x(), g3.y());
352 
353  CircleFromThreePoints circle(g1, g2, g3);
354 
355  if (circle.curvature() != 0.) {
356  Global2DVector c(circle.center().x(), circle.center().y());
357 
358  float rad2 = (p1 - c).mag2();
359  float a12 = asin(fabsf(areaParallelogram(p1 - c, p2 - c)) / rad2);
360  float a23 = asin(fabsf(areaParallelogram(p2 - c, p3 - c)) / rad2);
361 
362  float slope = (g2.z() - g1.z()) / a12;
363 
364  float rz3 = g2.z() + slope * a23;
365  float delta_z = g3.z() - rz3;
366 
367  // Transform to tt
368  vector<TransientTrackingRecHit::RecHitPointer> th;
369  for (vector<const TrackingRecHit*>::const_iterator ih = h.begin(); ih != h.end(); ih++)
370  th.push_back(theTTRecHitBuilder->build(*ih));
371 
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]);
374 
375  float sigma_z2 = (1 + a23 / a12) * (1 + a23 / a12) * sigma2_le2 + (a23 / a12) * (a23 / a12) * sigma1_le2;
376 
377  float cotTheta = slope * circle.curvature(); // == sinhEta
378  float coshEta = sqrt(1 + sqr(cotTheta)); // == 1/sinTheta
379 
380  float pt = Bz / circle.curvature();
381  float p = pt * coshEta;
382 
383  float m_pi = 0.13957018;
384  float beta = p / sqrt(sqr(p) + sqr(m_pi));
385 
387  PixelRecoPointRZ rz2(g2.perp(), g2.z());
388 
389  float sigma_z = msp(pt, cotTheta, rz2) / beta;
390 
391  // Calculate globalDirs
392  float sinTheta = 1. / coshEta;
393  float cosTheta = cotTheta * sinTheta;
394 
395  int dir;
396  if (areaParallelogram(p1 - c, p2 - c) > 0)
397  dir = 1;
398  else
399  dir = -1;
400 
401  float curvature = circle.curvature();
402 
403  {
404  Global2DVector v = (p1 - c) * curvature * dir;
405  globalDirs.push_back(GlobalVector(-v.y() * sinTheta, v.x() * sinTheta, cosTheta));
406  }
407 
408  {
409  Global2DVector v = (p2 - c) * curvature * dir;
410  globalDirs.push_back(GlobalVector(-v.y() * sinTheta, v.x() * sinTheta, cosTheta));
411  }
412 
413  {
414  Global2DVector v = (p3 - c) * curvature * dir;
415  globalDirs.push_back(GlobalVector(-v.y() * sinTheta, v.x() * sinTheta, cosTheta));
416  }
417 
418  // Multiple scattering
419  float sigma_ms = sigma_z * coshEta;
420 
421  // Local error squared
422  float sigma_le2 = max(th[2]->parametersError()[0][0], th[2]->parametersError()[1][1]);
423 
424  return (delta_z * delta_z / (sigma_ms * sigma_ms + sigma_le2 + sigma_z2) < nSigma * nSigma);
425  }
426 
427  return false;
428 }

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

Definition at line 182 of file ThirdHitPrediction.cc.

182  {
183  while (phi[1] < phi[0] - M_PI)
184  phi[1] += 2 * M_PI;
185  while (phi[1] > phi[0] + M_PI)
186  phi[1] -= 2 * M_PI;
187 
188  while (phi[2] < phi[1] - M_PI)
189  phi[2] += 2 * M_PI;
190  while (phi[2] > phi[1] + M_PI)
191  phi[2] -= 2 * M_PI;
192 }

References M_PI.

Member Data Documentation

◆ arc_0m

std::pair<float, float> ThirdHitPrediction::arc_0m
private

Definition at line 93 of file ThirdHitPrediction.h.

◆ Bz

float ThirdHitPrediction::Bz
private

Definition at line 90 of file ThirdHitPrediction.h.

◆ c0

Global2DVector ThirdHitPrediction::c0
private

Definition at line 92 of file ThirdHitPrediction.h.

◆ dif

Global2DVector ThirdHitPrediction::dif
private

Definition at line 92 of file ThirdHitPrediction.h.

◆ g1

GlobalPoint ThirdHitPrediction::g1
private

Definition at line 91 of file ThirdHitPrediction.h.

◆ g2

GlobalPoint ThirdHitPrediction::g2
private

Definition at line 91 of file ThirdHitPrediction.h.

◆ keep

bool ThirdHitPrediction::keep
private

Definition at line 95 of file ThirdHitPrediction.h.

◆ maxRatio

double ThirdHitPrediction::maxRatio
private

Definition at line 98 of file ThirdHitPrediction.h.

◆ nSigma

double ThirdHitPrediction::nSigma
private

Definition at line 97 of file ThirdHitPrediction.h.

◆ p1

Global2DVector ThirdHitPrediction::p1
private

Definition at line 92 of file ThirdHitPrediction.h.

◆ p2

Global2DVector ThirdHitPrediction::p2
private

Definition at line 92 of file ThirdHitPrediction.h.

◆ r0

float ThirdHitPrediction::r0
private

Definition at line 90 of file ThirdHitPrediction.h.

◆ rm

float ThirdHitPrediction::rm
private

Definition at line 90 of file ThirdHitPrediction.h.

◆ theBarrel

bool ThirdHitPrediction::theBarrel
private

Definition at line 80 of file ThirdHitPrediction.h.

◆ theDetRange

Range ThirdHitPrediction::theDetRange
private

Definition at line 81 of file ThirdHitPrediction.h.

◆ theForward

bool ThirdHitPrediction::theForward
private

Definition at line 80 of file ThirdHitPrediction.h.

◆ theLayer

const DetLayer* ThirdHitPrediction::theLayer
private

Definition at line 85 of file ThirdHitPrediction.h.

◆ theLine

PixelRecoLineRZ ThirdHitPrediction::theLine
private

Definition at line 83 of file ThirdHitPrediction.h.

◆ theTolerance

Margin ThirdHitPrediction::theTolerance
private

Definition at line 82 of file ThirdHitPrediction.h.

◆ theTTRecHitBuilder

const TransientTrackingRecHitBuilder* ThirdHitPrediction::theTTRecHitBuilder
private

Definition at line 87 of file ThirdHitPrediction.h.

ThirdHitPrediction::theTTRecHitBuilder
const TransientTrackingRecHitBuilder * theTTRecHitBuilder
Definition: ThirdHitPrediction.h:87
edm::ESHandle::product
T const * product() const
Definition: ESHandle.h:86
ThirdHitPrediction::theLayer
const DetLayer * theLayer
Definition: ThirdHitPrediction.h:85
DDAxes::y
CircleFromThreePoints
Definition: CircleFromThreePoints.h:18
sqr
float sqr(float x)
Definition: ThirdHitPrediction.cc:13
mps_fire.i
i
Definition: mps_fire.py:355
ThirdHitPrediction::calculateRangesBarrel
void calculateRangesBarrel(float r3, float phi[2], float z[2], bool keep)
Definition: ThirdHitPrediction.cc:195
ThirdHitPrediction::angleRatio
float angleRatio(const Global2DVector &p3, const Global2DVector &c)
Definition: ThirdHitPrediction.cc:172
PV3DBase::x
T x() const
Definition: PV3DBase.h:59
DiDispStaMuonMonitor_cfi.pt
pt
Definition: DiDispStaMuonMonitor_cfi.py:39
ThirdHitPrediction::arc_0m
std::pair< float, float > arc_0m
Definition: ThirdHitPrediction.h:93
BarrelDetLayer::surface
const BoundSurface & surface() const final
GeometricSearchDet interface.
Definition: BarrelDetLayer.h:29
min
T min(T a, T b)
Definition: MathUtil.h:58
m_pi
#define m_pi
Definition: RPCConst.cc:8
edm
HLT enums.
Definition: AlignableModifier.h:19
zMuMuMuonUserData.beta
beta
Definition: zMuMuMuonUserData.py:10
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
ForwardDetLayer::surface
const BoundSurface & surface() const final
The surface of the GeometricSearchDet.
Definition: ForwardDetLayer.h:29
TransientRecHitRecord
Definition: TransientRecHitRecord.h:14
ThirdHitPrediction::Bz
float Bz
Definition: ThirdHitPrediction.h:90
ThirdHitPrediction::findRectangle
void findRectangle(const float x[3], const float y[3], const float par[3], float phi[2], float z[2])
Definition: ThirdHitPrediction.cc:145
DDAxes::x
indexGen.s2
s2
Definition: indexGen.py:107
GlobalVector
Global3DVector GlobalVector
Definition: GlobalVector.h:10
findQualityFiles.v
v
Definition: findQualityFiles.py:179
ThirdHitPrediction::spinCloser
void spinCloser(float phi[3])
Definition: ThirdHitPrediction.cc:182
GeometricSearchDet::position
virtual const Surface::PositionType & position() const
Returns position of the surface.
Definition: GeometricSearchDet.h:31
TransientTrackingRecHitBuilder::build
virtual RecHitPointer build(const TrackingRecHit *p) const =0
build a tracking rechit from an existing rechit
PixelRecoUtilities::curvature
T curvature(T InversePt, const edm::EventSetup &iSetup)
Definition: PixelRecoUtilities.h:42
ThirdHitPrediction::r0
float r0
Definition: ThirdHitPrediction.h:90
PixelRecoRange::min
T min() const
Definition: PixelRecoRange.h:25
funct::sin
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
PV3DBase::z
T z() const
Definition: PV3DBase.h:61
PV2DBase::phi
Geom::Phi< T > phi() const
Definition: PV2DBase.h:49
GeomDetEnumerators::barrel
Definition: GeomDetEnumerators.h:9
IdealMagneticFieldRecord
Definition: IdealMagneticFieldRecord.h:11
DetLayer::location
virtual Location location() const =0
Which part of the detector (barrel, endcap)
ThirdHitPrediction::keep
bool keep
Definition: ThirdHitPrediction.h:95
ThirdHitPrediction::calculateRanges
void calculateRanges(float rz3, float phi[2], float rz[2])
Definition: ThirdHitPrediction.cc:289
alignCSCRings.s
s
Definition: alignCSCRings.py:92
funct::cos
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
h
edm::EventSetup::get
T get() const
Definition: EventSetup.h:73
ThirdHitPrediction::fitParabola
void fitParabola(const float x[3], const float y[3], float par[3])
Definition: ThirdHitPrediction.cc:130
ThirdHitPrediction::findTouchingCircles
std::pair< float, float > findTouchingCircles(float r)
Definition: ThirdHitPrediction.cc:85
SurfaceOrientation::inner
Definition: Surface.h:19
PixelRecoRange::max
T max() const
Definition: PixelRecoRange.h:26
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
Surface::bounds
const Bounds & bounds() const
Definition: Surface.h:87
ThirdHitPrediction::invertPoint
void invertPoint(Global2DVector &p)
Definition: ThirdHitPrediction.cc:68
DDAxes::z
edm::ESHandle< MagneticField >
Vector2DBase< float, GlobalTag >
ThirdHitPrediction::p2
Global2DVector p2
Definition: ThirdHitPrediction.h:92
Point3DBase< float, GlobalTag >
ThirdHitPrediction::p1
Global2DVector p1
Definition: ThirdHitPrediction.h:92
b
double b
Definition: hdecay.h:118
particleFlowDisplacedVertex_cfi.ratio
ratio
Definition: particleFlowDisplacedVertex_cfi.py:93
AllPixelTracks_cfi.nSigMultipleScattering
nSigMultipleScattering
Definition: AllPixelTracks_cfi.py:39
Bounds::thickness
virtual float thickness() const =0
a
double a
Definition: hdecay.h:119
SiStripPI::max
Definition: SiStripPayloadInspectorHelper.h:169
ThirdHitPrediction::initLayer
void initLayer(const DetLayer *layer)
Definition: ThirdHitPrediction.cc:431
GeomDetEnumerators::endcap
Definition: GeomDetEnumerators.h:9
ThirdHitPrediction::invertCircle
void invertCircle(Global2DVector &c, float &r)
Definition: ThirdHitPrediction.cc:60
ThirdHitPrediction::c0
Global2DVector c0
Definition: ThirdHitPrediction.h:92
dumpMFGeometry_cfg.delta
delta
Definition: dumpMFGeometry_cfg.py:25
ThirdHitPrediction::nSigma
double nSigma
Definition: ThirdHitPrediction.h:97
PV3DBase::y
T y() const
Definition: PV3DBase.h:60
ThirdHitPrediction::calculateRangesForward
void calculateRangesForward(float z3, float phi[2], float r[2], bool keep)
Definition: ThirdHitPrediction.cc:243
mag2
T mag2() const
The vector magnitude squared. Equivalent to vec.dot(vec)
Definition: Basic3DVectorLD.h:124
M_PI
#define M_PI
Definition: BXVectorInputProducer.cc:50
ThirdHitPrediction::findArcIntersection
std::pair< float, float > findArcIntersection(std::pair< float, float > a, std::pair< float, float > b, bool &keep)
Definition: ThirdHitPrediction.cc:96
Global2DVector
Vector2DBase< float, GlobalTag > Global2DVector
Definition: ClusterShapeTrackFilter.h:8
HltBtagPostValidation_cff.c
c
Definition: HltBtagPostValidation_cff.py:31
get
#define get
ThirdHitPrediction::g2
GlobalPoint g2
Definition: ThirdHitPrediction.h:91
BarrelDetLayer
Definition: BarrelDetLayer.h:22
PixelRecoPointRZ
Definition: PixelRecoPointRZ.h:6
ThirdHitPrediction::dif
Global2DVector dif
Definition: ThirdHitPrediction.h:92
alignCSCRings.r
r
Definition: alignCSCRings.py:93
DDAxes::phi
mag
T mag() const
The vector magnitude. Equivalent to sqrt(vec.mag2())
Definition: Basic3DVectorLD.h:127
AllPixelTracks_cfi.maxAngleRatio
maxAngleRatio
Definition: AllPixelTracks_cfi.py:40
ForwardDetLayer
Definition: ForwardDetLayer.h:22
ThirdHitPrediction::g1
GlobalPoint g1
Definition: ThirdHitPrediction.h:91
CosmicsPD_Skims.radius
radius
Definition: CosmicsPD_Skims.py:135
HLT_2018_cff.region
region
Definition: HLT_2018_cff.py:81479
angle
T angle(T x1, T y1, T z1, T x2, T y2, T z2)
Definition: angle.h:11
ThirdHitPrediction::rm
float rm
Definition: ThirdHitPrediction.h:90
p3
double p3[4]
Definition: TauolaWrapper.h:91
PV2DBase::mag2
T mag2() const
Definition: PV2DBase.h:45
MultipleScatteringParametrisation
Definition: MultipleScatteringParametrisation.h:16
ThirdHitPrediction::maxRatio
double maxRatio
Definition: ThirdHitPrediction.h:98
SurfaceOrientation::outer
Definition: Surface.h:19
slope
static const double slope[3]
Definition: CastorTimeSlew.cc:6
ThirdHitPrediction::theDetRange
Range theDetRange
Definition: ThirdHitPrediction.h:81
volumeBasedMagneticField_160812_cfi.magfield
magfield
Definition: volumeBasedMagneticField_160812_cfi.py:11
BarrelDetLayer::specificSurface
virtual const BoundCylinder & specificSurface() const final
Extension of the interface.
Definition: BarrelDetLayer.h:39
PV3DBase::perp
T perp() const
Definition: PV3DBase.h:69
ThirdHitPrediction::findMinimalCircles
std::pair< float, float > findMinimalCircles(float r)
Definition: ThirdHitPrediction.cc:75
ThirdHitPrediction::theForward
bool theForward
Definition: ThirdHitPrediction.h:80
ThirdHitPrediction::theBarrel
bool theBarrel
Definition: ThirdHitPrediction.h:80
ThirdHitPrediction::areaParallelogram
float areaParallelogram(const Global2DVector &a, const Global2DVector &b)
Definition: ThirdHitPrediction.cc:167
ThirdHitPrediction::Range
PixelRecoRange< float > Range
Definition: ThirdHitPrediction.h:35
DeadROC_duringRun.dir
dir
Definition: DeadROC_duringRun.py:23