CMS 3D CMS Logo

Public Member Functions

LayerCrossingSide Class Reference

#include <LayerCrossingSide.h>

List of all members.

Public Member Functions

int barrelSide (const TrajectoryStateOnSurface &startingState, const Propagator &prop) const
 returns 0 if barrel layer crossed from inside, 1 if from outside
int endcapSide (const TrajectoryStateOnSurface &startingState, const Propagator &prop) const

Detailed Description

Helper class to determine if a TrajectoryStateOnSurface would cross a layer from the inside, or from the outside, if propagated with a propagator with a defined direction. No propagations performed, the result is very fast but not correct in case of a looping track that first goes outwards, then inwards, before crossing a layer.

Definition at line 15 of file LayerCrossingSide.h.


Member Function Documentation

int LayerCrossingSide::barrelSide ( const TrajectoryStateOnSurface startingState,
const Propagator prop 
) const [inline]

returns 0 if barrel layer crossed from inside, 1 if from outside

Definition at line 19 of file LayerCrossingSide.h.

References alongMomentum, Vector3DBase< T, FrameTag >::dot(), TrajectoryStateOnSurface::globalMomentum(), TrajectoryStateOnSurface::globalPosition(), oppositeToMomentum, pos, Propagator::propagationDirection(), PV3DBase< T, PVType, FrameType >::x(), and PV3DBase< T, PVType, FrameType >::y().

                                                                                              {
    GlobalPoint pos = startingState.globalPosition();
    GlobalVector radial(pos.x(), pos.y(), 0);
    if (startingState.globalMomentum().dot( radial) > 0) {  // momentum points outwards
      return (prop.propagationDirection() == alongMomentum ? 0 : 1);
    }
    else {  // momentum points inwards
      return (prop.propagationDirection() == oppositeToMomentum ? 0 : 1);
    }
  }
int LayerCrossingSide::endcapSide ( const TrajectoryStateOnSurface startingState,
const Propagator prop 
) const [inline]

returns 0 if endcap layer crossed from inside, ie from the side of the interation region, 1 if from outside

Definition at line 33 of file LayerCrossingSide.h.

References alongMomentum, TrajectoryStateOnSurface::globalMomentum(), TrajectoryStateOnSurface::globalPosition(), oppositeToMomentum, Propagator::propagationDirection(), and PV3DBase< T, PVType, FrameType >::z().

Referenced by TECLayer::groupedCompatibleDetsV().

                                                                                              {
    float zpos = startingState.globalPosition().z();
    if (startingState.globalMomentum().z() * zpos > 0) {  // momentum points outwards
      return (prop.propagationDirection() == alongMomentum ? 0 : 1);
    }
    else {  // momentum points inwards
      return (prop.propagationDirection() == oppositeToMomentum ? 0 : 1);
    }
  }