CMS 3D CMS Logo

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

#include <StateOnTrackerBound.h>

Public Member Functions

TrajectoryStateOnSurface operator() (const TrajectoryStateOnSurface &tsos) const
 
TrajectoryStateOnSurface operator() (const FreeTrajectoryState &fts) 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

Date:
2007/01/31 17:31:32
Revision:
1.4

Definition at line 15 of file StateOnTrackerBound.h.

Constructor & Destructor Documentation

StateOnTrackerBound::StateOnTrackerBound ( const Propagator prop)

Definition at line 13 of file StateOnTrackerBound.cc.

13  :
14  thePropagator( prop->clone())
15 {}
virtual Propagator * clone() const =0
StateOnTrackerBound::~StateOnTrackerBound ( )

Definition at line 17 of file StateOnTrackerBound.cc.

References thePropagator.

18 {
19  delete thePropagator;
20 }

Member Function Documentation

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

Definition at line 23 of file StateOnTrackerBound.cc.

References TrajectoryStateOnSurface::freeState().

24 {
25  return operator()(*tsos.freeState());
26 }
FreeTrajectoryState * freeState(bool withErrors=true) const
TrajectoryStateOnSurface operator()(const TrajectoryStateOnSurface &tsos) const
TrajectoryStateOnSurface StateOnTrackerBound::operator() ( const FreeTrajectoryState fts) const

Definition at line 29 of file StateOnTrackerBound.cc.

References TrackerBounds::barrelBound(), 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().

30 {
31  // try to guess if propagation should be first to cylinder or first to disk
32  float tanTheta = (fts.position().perp() > 70 ) ? fts.position().perp()/fts.position().z() : fts.momentum().perp()/fts.momentum().z();
34 
35  TrajectoryStateOnSurface firstTry;
36  if (tanTheta < 0 && fabs(tanTheta) < corner) {
37  firstTry =
39 
40  if (!firstTry.isValid()) {
42  }
43  if (firstTry.globalPosition().perp() > TrackerBounds::radius()) {
44  // the propagation should have gone to the cylinder
46  }
47  else return firstTry;
48  }
49  else if (tanTheta > 0 && fabs(tanTheta) < corner) {
50  firstTry =
52  if (!firstTry.isValid()) {
54  }
55  if (firstTry.globalPosition().perp() > TrackerBounds::radius()) {
57  }
58  else return firstTry;
59  }
60  else {
61  // barrel
62  firstTry =
64  if (!firstTry.isValid()) {
65  if (tanTheta < 0 ) return thePropagator->propagate( fts,TrackerBounds::negativeEndcapDisk());
66  if (tanTheta >= 0 ) return thePropagator->propagate( fts,TrackerBounds::positiveEndcapDisk());
67  return firstTry;
68  }
69  if (firstTry.globalPosition().z() < -TrackerBounds::halfLength()) {
70  // the propagation should have gone to the negative disk
71  return thePropagator->propagate( fts,
73  }
74  else if (firstTry.globalPosition().z() > TrackerBounds::halfLength()) {
75  // the propagation should have gone to the positive disk
76  return thePropagator->propagate( fts,
78  }
79  else return firstTry;
80  }
81  return firstTry;
82 }
T perp() const
Definition: PV3DBase.h:71
GlobalPoint globalPosition() const
static float halfLength()
Definition: TrackerBounds.h:36
static const BoundCylinder & barrelBound()
Definition: TrackerBounds.h:29
T z() const
Definition: PV3DBase.h:63
static const BoundDisk & positiveEndcapDisk()
Definition: TrackerBounds.h:31
GlobalVector momentum() const
static float radius()
Definition: TrackerBounds.h:35
virtual TrajectoryStateOnSurface propagate(const FreeTrajectoryState &, const Surface &) const
Definition: Propagator.cc:12
GlobalPoint position() const
static const BoundDisk & negativeEndcapDisk()
Definition: TrackerBounds.h:30

Member Data Documentation

Propagator* StateOnTrackerBound::thePropagator
private

Definition at line 30 of file StateOnTrackerBound.h.

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