CMS 3D CMS Logo

List of all members | Static Public Member Functions
FTSFromVertexToPointFactory Class Reference

#include <FTSFromVertexToPointFactory.h>

Static Public Member Functions

static FreeTrajectoryState get (MagneticField const &magField, GlobalPoint const &xmeas, GlobalPoint const &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 29 of file FTSFromVertexToPointFactory.h.

Member Function Documentation

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

Definition at line 22 of file FTSFromVertexToPointFactory.cc.

References f, objects.autophobj::float, runTauDisplay::gp, MagneticField::inTesla(), eostools::move(), PV3DBase< T, PVType, FrameType >::perp(), EnergyCorrector::pt, mathSSE::sqrt(), Vector3DBase< T, FrameTag >::unit(), and PV3DBase< T, PVType, FrameType >::z().

Referenced by Options.Options::__getitem__(), betterConfigParser.BetterConfigParser::__updateDict(), ElectronSeedAnalyzer::analyze(), HLTPMMassFilter::approxMomAtVtx(), PixelHitMatcher::compatibleHits(), PixelHitMatcher::compatibleSeeds(), TrackingRegionsFromSuperClustersProducer::createTrackingRegion(), betterConfigParser.BetterConfigParser::getCompares(), betterConfigParser.BetterConfigParser::getGeneral(), TrajSeedMatcher::getNrValidLayersAlongTraj(), betterConfigParser.BetterConfigParser::getResultingSection(), TrajSeedMatcher::processSeed(), and SeedFilter::seeds().

27 {
28  auto magFieldAtPoint = magField.inTesla(xmeas);
29  auto BInTesla = magFieldAtPoint.z();
30  GlobalVector xdiff = xmeas - xvert;
31  auto mom = momentum*xdiff.unit();
32  auto pt = mom.perp();
33  auto pz = mom.z();
34  auto pxOld = mom.x();
35  auto pyOld = mom.y();
36 
37 
38  auto curv = (BInTesla*0.29979f*0.01f)/pt;
39 
40  // stays as doc...
41  // auto alpha = std::asin(0.5f*xdiff.perp()*curv);
42  // auto ca = std::cos(float(charge)*alpha);
43  // auto sa = std::sin(float(charge)*alpha);
44 
45  auto sa = 0.5f*xdiff.perp()*curv*float(charge);
46  auto ca = sqrt(1.f-sa*sa);
47 
48  auto pxNew = ca*pxOld + sa*pyOld;
49  auto pyNew = -sa*pxOld + ca*pyOld;
50  GlobalVector pNew(pxNew, pyNew, pz);
51 
52  GlobalTrajectoryParameters gp(xmeas, pNew, charge, & magField, std::move(magFieldAtPoint));
53 
54  return FreeTrajectoryState(gp);
55 }
T perp() const
Definition: PV3DBase.h:72
T sqrt(T t)
Definition: SSEVec.h:18
double f[11][100]
Vector3DBase unit() const
Definition: Vector3DBase.h:57
def move(src, dest)
Definition: eostools.py:510