CMS 3D CMS Logo

FTSFromVertexToPointFactory.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: EgammaElectronAlgos
4 // Class: FTSFromVertexToPointFactory
5 //
13 //
14 // Original Author: Ursula Berthon, Claude Charlot
15 // Created: Mon Mar 27 13:22:06 CEST 2006
16 //
17 //
20 
22  GlobalPoint const& xmeas,
23  GlobalPoint const& xvert,
24  float momentum,
26  auto magFieldAtPoint = magField.inTesla(xmeas);
27  auto BInTesla = magFieldAtPoint.z();
28  GlobalVector xdiff = xmeas - xvert;
29  auto mom = momentum * xdiff.unit();
30  auto pt = mom.perp();
31  auto pz = mom.z();
32  auto pxOld = mom.x();
33  auto pyOld = mom.y();
34 
35  auto curv = (BInTesla * 0.29979f * 0.01f) / pt;
36 
37  // stays as doc...
38  // auto alpha = std::asin(0.5f*xdiff.perp()*curv);
39  // auto ca = std::cos(float(charge)*alpha);
40  // auto sa = std::sin(float(charge)*alpha);
41 
42  auto sa = 0.5f * xdiff.perp() * curv * float(charge);
43  auto ca = sqrt(1.f - sa * sa);
44 
45  auto pxNew = ca * pxOld + sa * pyOld;
46  auto pyNew = -sa * pxOld + ca * pyOld;
47  GlobalVector pNew(pxNew, pyNew, pz);
48 
49  GlobalTrajectoryParameters gp(xmeas, pNew, charge, &magField, std::move(magFieldAtPoint));
50 
51  return FreeTrajectoryState(gp);
52 }
static FreeTrajectoryState get(MagneticField const &magField, GlobalPoint const &xmeas, GlobalPoint const &xvert, float momentum, TrackCharge charge)
T perp() const
Definition: PV3DBase.h:69
int TrackCharge
Definition: TrackCharge.h:4
T sqrt(T t)
Definition: SSEVec.h:19
T z() const
Definition: PV3DBase.h:61
double f[11][100]
virtual GlobalVector inTesla(const GlobalPoint &gp) const =0
Field value ad specified global point, in Tesla.
Vector3DBase unit() const
Definition: Vector3DBase.h:54
def move(src, dest)
Definition: eostools.py:511