CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions
FTSFromVertexToPointFactory Class Reference

#include <FTSFromVertexToPointFactory.h>

Public Member Functions

 FTSFromVertexToPointFactory ()
 
FreeTrajectoryState operator() (const MagneticField *magField, const GlobalPoint &xmeas, const GlobalPoint &xvert, float momentum, TrackCharge charge)
 

Detailed Description

Description: Utility class to create FTS from supercluster

Implementation: should go somewhere else in the future

Definition at line 28 of file FTSFromVertexToPointFactory.h.

Constructor & Destructor Documentation

FTSFromVertexToPointFactory::FTSFromVertexToPointFactory ( )
inline

Definition at line 30 of file FTSFromVertexToPointFactory.h.

30 { };

Member Function Documentation

FreeTrajectoryState FTSFromVertexToPointFactory::operator() ( const MagneticField magField,
const GlobalPoint xmeas,
const GlobalPoint xvert,
float  momentum,
TrackCharge  charge 
)

Definition at line 23 of file FTSFromVertexToPointFactory.cc.

References alpha, funct::C, funct::cos(), MagneticField::inTesla(), PV3DBase< T, PVType, FrameType >::perp(), phi, PV3DBase< T, PVType, FrameType >::phi(), funct::sin(), PV3DBase< T, PVType, FrameType >::theta(), theta(), and PV3DBase< T, PVType, FrameType >::z().

27 {
28  double BInTesla = magField->inTesla(xmeas).z();
29  GlobalVector xdiff = xmeas -xvert;
30  double theta = xdiff.theta();
31  double phi= xdiff.phi();
32  double pt = momentum*sin(theta);
33  double pz = momentum*cos(theta);
34  double pxOld = pt*cos(phi);
35  double pyOld = pt*sin(phi);
36 
37  double RadCurv = 100*pt/(BInTesla*0.29979);
38  double alpha = asin(0.5*xdiff.perp()/RadCurv);
39 
40  float ca = cos(charge*alpha);
41  float sa = sin(charge*alpha);
42  double pxNew = ca*pxOld + sa*pyOld;
43  double pyNew = -sa*pxOld + ca*pyOld;
44  GlobalVector pNew(pxNew, pyNew, pz);
45 
46  GlobalTrajectoryParameters gp(xmeas, pNew, charge, magField);
47 
50 
51  return VertexToPoint;
52 }
float alpha
Definition: AMPTWrapper.h:95
T perp() const
Definition: PV3DBase.h:72
virtual GlobalVector inTesla(const GlobalPoint &gp) const =0
Field value ad specified global point, in Tesla.
ROOT::Math::SMatrixIdentity AlgebraicMatrixID
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
Geom::Phi< T > phi() const
Definition: PV3DBase.h:69
Geom::Theta< T > theta() const
ROOT::Math::SMatrix< double, 5, 5, ROOT::Math::MatRepSym< double, 5 > > AlgebraicSymMatrix55
double charge(const std::vector< uint8_t > &Ampls)
Geom::Theta< T > theta() const
Definition: PV3DBase.h:75
T z() const
Definition: PV3DBase.h:64
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
Definition: DDAxes.h:10