CMS 3D CMS Logo

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

#include <StateOnTrackerBound.h>

Public Member Functions

TrajectoryStateOnSurface operator() (const FreeTrajectoryState &fts) const
 
TrajectoryStateOnSurface operator() (const TrajectoryStateOnSurface &tsos) const
 
 StateOnTrackerBound (const Propagator *prop)
 
 ~StateOnTrackerBound ()
 

Private Attributes

PropagatorthePropagator
 

Detailed Description

Propagates to the Tracker bounds, i.e. either to the barrel cylinder or to one of the forward disks that constitute the envelope of the sensitive Tracker volumes. Ported from ORCA

Definition at line 13 of file StateOnTrackerBound.h.

Constructor & Destructor Documentation

◆ StateOnTrackerBound()

StateOnTrackerBound::StateOnTrackerBound ( const Propagator prop)

Definition at line 11 of file StateOnTrackerBound.cc.

11 : thePropagator(prop->clone()) {}

◆ ~StateOnTrackerBound()

StateOnTrackerBound::~StateOnTrackerBound ( )

Definition at line 13 of file StateOnTrackerBound.cc.

13 { delete thePropagator; }

References thePropagator.

Member Function Documentation

◆ operator()() [1/2]

TrajectoryStateOnSurface StateOnTrackerBound::operator() ( const FreeTrajectoryState fts) const

Definition at line 19 of file StateOnTrackerBound.cc.

19  {
20  // try to guess if propagation should be first to cylinder or first to disk
21  float tanTheta = (fts.position().perp() > 70) ? fts.position().perp() / fts.position().z()
22  : fts.momentum().perp() / fts.momentum().z();
24 
25  TrajectoryStateOnSurface firstTry;
26  if (tanTheta < 0 && fabs(tanTheta) < corner) {
28 
29  if (!firstTry.isValid()) {
31  }
32  if (firstTry.globalPosition().perp() > TrackerBounds::radius()) {
33  // the propagation should have gone to the cylinder
35  } else
36  return firstTry;
37  } else if (tanTheta > 0 && fabs(tanTheta) < corner) {
39  if (!firstTry.isValid()) {
41  }
42  if (firstTry.globalPosition().perp() > TrackerBounds::radius()) {
44  } else
45  return firstTry;
46  } else {
47  // barrel
49  if (!firstTry.isValid()) {
50  if (tanTheta < 0)
52  if (tanTheta >= 0)
54  return firstTry;
55  }
56  if (firstTry.globalPosition().z() < -TrackerBounds::halfLength()) {
57  // the propagation should have gone to the negative disk
59  } else if (firstTry.globalPosition().z() > TrackerBounds::halfLength()) {
60  // the propagation should have gone to the positive disk
62  } else
63  return firstTry;
64  }
65  return firstTry;
66 }

References TrackerBounds::barrelBound(), distTCMET_cfi::corner, TrajectoryStateOnSurface::globalPosition(), TrackerBounds::halfLength(), TrajectoryStateOnSurface::isValid(), FreeTrajectoryState::momentum(), TrackerBounds::negativeEndcapDisk(), PV3DBase< T, PVType, FrameType >::perp(), FreeTrajectoryState::position(), TrackerBounds::positiveEndcapDisk(), Propagator::propagate(), TrackerBounds::radius(), thePropagator, and PV3DBase< T, PVType, FrameType >::z().

◆ operator()() [2/2]

TrajectoryStateOnSurface StateOnTrackerBound::operator() ( const TrajectoryStateOnSurface tsos) const

Definition at line 15 of file StateOnTrackerBound.cc.

15  {
16  return operator()(*tsos.freeState());
17 }

References TrajectoryStateOnSurface::freeState().

Member Data Documentation

◆ thePropagator

Propagator* StateOnTrackerBound::thePropagator
private

Definition at line 24 of file StateOnTrackerBound.h.

Referenced by operator()(), and ~StateOnTrackerBound().

FreeTrajectoryState::momentum
GlobalVector momentum() const
Definition: FreeTrajectoryState.h:68
TrackerBounds::halfLength
static float halfLength()
Definition: TrackerBounds.h:33
TrajectoryStateOnSurface::globalPosition
GlobalPoint globalPosition() const
Definition: TrajectoryStateOnSurface.h:65
TrackerBounds::radius
static float radius()
Definition: TrackerBounds.h:32
distTCMET_cfi.corner
corner
Definition: distTCMET_cfi.py:38
FreeTrajectoryState::position
GlobalPoint position() const
Definition: FreeTrajectoryState.h:67
TrackerBounds::barrelBound
static const Cylinder & barrelBound()
Definition: TrackerBounds.h:26
PV3DBase::z
T z() const
Definition: PV3DBase.h:61
TrajectoryStateOnSurface
Definition: TrajectoryStateOnSurface.h:16
TrajectoryStateOnSurface::freeState
FreeTrajectoryState const * freeState(bool withErrors=true) const
Definition: TrajectoryStateOnSurface.h:58
TrackerBounds::negativeEndcapDisk
static const Disk & negativeEndcapDisk()
Definition: TrackerBounds.h:27
Propagator::propagate
TrajectoryStateOnSurface propagate(STA const &state, SUR const &surface) const
Definition: Propagator.h:50
StateOnTrackerBound::operator()
TrajectoryStateOnSurface operator()(const TrajectoryStateOnSurface &tsos) const
Definition: StateOnTrackerBound.cc:15
Propagator::clone
virtual Propagator * clone() const =0
TrackerBounds::positiveEndcapDisk
static const Disk & positiveEndcapDisk()
Definition: TrackerBounds.h:28
PV3DBase::perp
T perp() const
Definition: PV3DBase.h:69
TrajectoryStateOnSurface::isValid
bool isValid() const
Definition: TrajectoryStateOnSurface.h:54
StateOnTrackerBound::thePropagator
Propagator * thePropagator
Definition: StateOnTrackerBound.h:24