CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions
MuonNavigableLayer Class Referenceabstract

#include <MuonNavigableLayer.h>

Inheritance diagram for MuonNavigableLayer:
NavigableLayer MuonBarrelNavigableLayer MuonForwardNavigableLayer

Public Member Functions

virtual std::vector< const
DetLayer * > 
compatibleLayers (NavigationDirection dir) const =0
 
virtual std::vector< const
DetLayer * > 
compatibleLayers (const FreeTrajectoryState &fts, PropagationDirection dir) const =0
 NavigableLayer interface. More...
 
virtual DetLayerdetLayer () const =0
 return DetLayer More...
 
bool isInsideOut (const FreeTrajectoryState &fts) const
 
virtual std::vector< const
DetLayer * > 
nextLayers (NavigationDirection dir) const =0
 NavigableLayer interface. More...
 
virtual std::vector< const
DetLayer * > 
nextLayers (const FreeTrajectoryState &fts, PropagationDirection dir) const =0
 NavigableLayer interface. More...
 
virtual void setDetLayer (DetLayer *)=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
 
virtual ~NavigableLayer ()
 

Detailed Description

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

Date:
2007/01/29 16:24:17
Revision:
1.8
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.

Date:
2007/01/29 16:25:21
Revision:
1.9
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 28 of file MuonNavigableLayer.h.

Member Function Documentation

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

NavigableLayer interface.

Reimplemented from NavigableLayer.

Implemented in MuonBarrelNavigableLayer, and MuonForwardNavigableLayer.

virtual DetLayer* MuonNavigableLayer::detLayer ( ) const
pure virtual
bool MuonNavigableLayer::isInsideOut ( const FreeTrajectoryState fts) const

Definition at line 74 of file MuonNavigableLayer.cc.

References PV3DBase< T, PVType, FrameType >::basicVector(), Basic3DVector< T >::dot(), FreeTrajectoryState::momentum(), and FreeTrajectoryState::position().

74  {
75 
76  return (fts.position().basicVector().dot(fts.momentum().basicVector())>0);
77 
78 }
GlobalVector momentum() const
GlobalPoint position() const
const BasicVectorType & basicVector() const
Definition: PV3DBase.h:56
T dot(const Basic3DVector &rh) const
Scalar product, or &quot;dot&quot; product, with a vector of same type.
virtual std::vector<const DetLayer*> MuonNavigableLayer::nextLayers ( NavigationDirection  dir) const
pure virtual
virtual std::vector<const DetLayer*> MuonNavigableLayer::nextLayers ( const FreeTrajectoryState fts,
PropagationDirection  dir 
) const
pure virtual
virtual void MuonNavigableLayer::setDetLayer ( DetLayer )
pure virtual
MuonEtaRange MuonNavigableLayer::trackingRange ( const FreeTrajectoryState fts) const

Definition at line 39 of file MuonNavigableLayer.cc.

References calculateEta(), FreeTrajectoryState::curvilinearError(), eta(), create_public_lumi_plots::log, CurvilinearTrajectoryError::matrix(), min, PV3DBase< T, PVType, FrameType >::perp(), FreeTrajectoryState::position(), alignCSCRings::r, funct::sin(), mathSSE::sqrt(), funct::tan(), theta(), detailsBasic3DVector::z, and PV3DBase< T, PVType, FrameType >::z().

40 {
41  float z = fts.position().z();
42  float r = fts.position().perp();
43  float eta;
44  if ( z>0 ) eta = -log((tan(atan(r/z)/2.)));
45  else eta = log(-(tan(atan(r/z)/2.)));
46 
47  double theta = atan(r/z);
48 
49  double spread = 5.0*sqrt(fts.curvilinearError().matrix()(2,2))/fabs(sin(theta)); //5*sigma(eta)
50 
51  //C.L.: this spread could be too large to use.
52  // convert it to a smaller one by assuming a virtual radius
53  // that transforms the error on angle to error on z axis.
54  // not accurate, but works!
55 
56  double eta_max = 0;
57 
58  if ( z > 0 ) eta_max = calculateEta(r, z+spread);
59  else 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 ) range = MuonEtaRange(eta+3.0*spread,eta-spread);
69  if ( eta < -1.0 && eta > -1.1 ) range = MuonEtaRange(eta+spread,eta-3.0*spread);
70 
71  return range;
72 }
T perp() const
Definition: PV3DBase.h:71
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
Geom::Theta< T > theta() const
#define min(a, b)
Definition: mlp_lapack.h:161
T eta() const
const CurvilinearTrajectoryError & curvilinearError() const
double double double z
T sqrt(T t)
Definition: SSEVec.h:46
T z() const
Definition: PV3DBase.h:63
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
GlobalPoint position() const
float calculateEta(float r, float z)
const AlgebraicSymMatrix55 & matrix() const