CMS 3D CMS Logo

List of all members | Public Member Functions
MuonNavigableLayer Class Referenceabstract

#include <MuonNavigableLayer.h>

Inheritance diagram for MuonNavigableLayer:
NavigableLayer MuonBarrelNavigableLayer MuonForwardNavigableLayer

Public Member Functions

std::vector< const DetLayer * > compatibleLayers (const FreeTrajectoryState &fts, PropagationDirection dir) const override=0
 NavigableLayer interface. More...
 
std::vector< const DetLayer * > compatibleLayers (NavigationDirection dir) const override=0
 
const DetLayerdetLayer () const override=0
 return DetLayer More...
 
bool isInsideOut (const FreeTrajectoryState &fts) const
 
std::vector< const DetLayer * > nextLayers (const FreeTrajectoryState &fts, PropagationDirection dir) const override=0
 NavigableLayer interface. More...
 
std::vector< const DetLayer * > nextLayers (NavigationDirection dir) const override=0
 NavigableLayer interface. More...
 
void setDetLayer (const DetLayer *) override=0
 set DetLayer More...
 
MuonEtaRange trackingRange (const FreeTrajectoryState &fts) const
 
- Public Member Functions inherited from NavigableLayer
virtual std::vector< const DetLayer * > compatibleLayers (const FreeTrajectoryState &fts, PropagationDirection timeDirection, int &counter) const
 
void setSchool (NavigationSchool const *sh)
 
virtual ~NavigableLayer ()
 

Additional Inherited Members

- Protected Attributes inherited from NavigableLayer
NavigationSchool const * school = nullptr
 

Detailed Description

base class for MuonBarrelNavigableLayer and MuonForwardNavigable. trackingRange defines an MuonEtaRange for an FTS, which is used for search compatible DetLayers.

Author
: Chang Liu - Purdue University Chang.nosp@m..Liu.nosp@m.@cern.nosp@m..ch

Modification:

base class for MuonBarrelNavigableLayer and MuonForwardNavigableLayer. trackingRange defines an MuonEtaRange for an FTS, which is used for searching compatible DetLayers.

Author
: Chang Liu - Purdue University Chang.nosp@m..Liu.nosp@m.@cern.nosp@m..ch with contributions from: R. Bellan - INFN Torino

code of trackingRange is from MuonGlobalNavigation in ORCA whose author is Stefano Lacaprara - INFN Padova Modification:

Definition at line 25 of file MuonNavigableLayer.h.

Member Function Documentation

◆ compatibleLayers() [1/2]

std::vector<const DetLayer*> MuonNavigableLayer::compatibleLayers ( const FreeTrajectoryState fts,
PropagationDirection  dir 
) const
overridepure virtual

NavigableLayer interface.

Reimplemented from NavigableLayer.

Implemented in MuonBarrelNavigableLayer, and MuonForwardNavigableLayer.

◆ compatibleLayers() [2/2]

std::vector<const DetLayer*> MuonNavigableLayer::compatibleLayers ( NavigationDirection  dir) const
overridepure virtual

◆ detLayer()

const DetLayer* MuonNavigableLayer::detLayer ( ) const
overridepure virtual

◆ isInsideOut()

bool MuonNavigableLayer::isInsideOut ( const FreeTrajectoryState fts) const

◆ nextLayers() [1/2]

std::vector<const DetLayer*> MuonNavigableLayer::nextLayers ( const FreeTrajectoryState fts,
PropagationDirection  dir 
) const
overridepure virtual

◆ nextLayers() [2/2]

std::vector<const DetLayer*> MuonNavigableLayer::nextLayers ( NavigationDirection  dir) const
overridepure virtual

◆ setDetLayer()

void MuonNavigableLayer::setDetLayer ( const DetLayer )
overridepure virtual

◆ trackingRange()

MuonEtaRange MuonNavigableLayer::trackingRange ( const FreeTrajectoryState fts) const

Definition at line 36 of file MuonNavigableLayer.cc.

36  {
37  float z = fts.position().z();
38  float r = fts.position().perp();
39  float eta;
40  if (z > 0)
41  eta = -log((tan(atan(r / z) / 2.)));
42  else
43  eta = log(-(tan(atan(r / z) / 2.)));
44 
45  double theta = atan(r / z);
46 
47  double spread = 5.0 * sqrt(fts.curvilinearError().matrix()(2, 2)) / fabs(sin(theta)); //5*sigma(eta)
48 
49  //C.L.: this spread could be too large to use.
50  // convert it to a smaller one by assuming a virtual radius
51  // that transforms the error on angle to error on z axis.
52  // not accurate, but works!
53 
54  double eta_max = 0;
55 
56  if (z > 0)
57  eta_max = calculateEta(r, z + spread);
58  else
59  eta_max = calculateEta(r, z - spread);
60 
61  spread = std::min(0.07, fabs(eta_max - eta));
62 
63  MuonEtaRange range(eta + spread, eta - spread);
64 
65  spread = 0.07;
66  // special treatment for special geometry in overlap region
67 
68  if (eta > 1.0 && eta < 1.1)
69  range = MuonEtaRange(eta + 3.0 * spread, eta - spread);
70  if (eta < -1.0 && eta > -1.1)
71  range = MuonEtaRange(eta + spread, eta - 3.0 * spread);
72 
73  return range;
74 }

References calculateEta(), FreeTrajectoryState::curvilinearError(), PVValHelper::eta, egammaIdentification::eta_max, dqm-mbProfile::log, CurvilinearTrajectoryError::matrix(), min(), PV3DBase< T, PVType, FrameType >::perp(), FreeTrajectoryState::position(), alignCSCRings::r, FastTimerService_cff::range, funct::sin(), mathSSE::sqrt(), funct::tan(), theta(), and PV3DBase< T, PVType, FrameType >::z().

FreeTrajectoryState::momentum
GlobalVector momentum() const
Definition: FreeTrajectoryState.h:68
FastTimerService_cff.range
range
Definition: FastTimerService_cff.py:34
min
T min(T a, T b)
Definition: MathUtil.h:58
FreeTrajectoryState::position
GlobalPoint position() const
Definition: FreeTrajectoryState.h:67
funct::sin
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
PV3DBase::z
T z() const
Definition: PV3DBase.h:61
MuonEtaRange
Definition: MuonEtaRange.h:15
PVValHelper::eta
Definition: PVValidationHelpers.h:70
FreeTrajectoryState::curvilinearError
const CurvilinearTrajectoryError & curvilinearError() const
Definition: FreeTrajectoryState.h:89
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
DDAxes::z
Basic3DVector::dot
T dot(const Basic3DVector &rh) const
Scalar product, or "dot" product, with a vector of same type.
Definition: extBasic3DVector.h:189
theta
Geom::Theta< T > theta() const
Definition: Basic3DVectorLD.h:150
egammaIdentification.eta_max
eta_max
Definition: egammaIdentification.py:19
funct::tan
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
PV3DBase::basicVector
const BasicVectorType & basicVector() const
Definition: PV3DBase.h:53
alignCSCRings.r
r
Definition: alignCSCRings.py:93
calculateEta
float calculateEta(float r, float z)
Definition: MuonNavigableLayer.cc:30
dqm-mbProfile.log
log
Definition: dqm-mbProfile.py:17
PV3DBase::perp
T perp() const
Definition: PV3DBase.h:69
CurvilinearTrajectoryError::matrix
const AlgebraicSymMatrix55 & matrix() const
Definition: CurvilinearTrajectoryError.h:61