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 Member Functions | Private Attributes
DirectTrackerNavigation Class Reference

#include <DirectTrackerNavigation.h>

Public Member Functions

DirectTrackerNavigationclone () const
 clone More...
 
std::vector< const DetLayer * > compatibleLayers (const FreeTrajectoryState &fts, PropagationDirection timeDirection) const
 find compatible layers for a given trajectory state More...
 
 DirectTrackerNavigation (const edm::ESHandle< GeometricSearchTracker > &, bool outOnly=true)
 constructor More...
 
virtual ~DirectTrackerNavigation ()
 destructor More...
 

Private Member Functions

float calculateEta (float r, float z) const
 
bool checkCompatible (const FreeTrajectoryState &, const BarrelDetLayer *) const
 
bool checkCompatible (const FreeTrajectoryState &, const ForwardDetLayer *) const
 
void inOutBPx (const FreeTrajectoryState &, std::vector< const DetLayer * > &) const
 
void inOutBTEC (const FreeTrajectoryState &, std::vector< const DetLayer * > &) const
 
void inOutBTID (const FreeTrajectoryState &, std::vector< const DetLayer * > &) const
 
void inOutFPx (const FreeTrajectoryState &, std::vector< const DetLayer * > &) const
 
void inOutFTEC (const FreeTrajectoryState &, std::vector< const DetLayer * > &) const
 
void inOutFTID (const FreeTrajectoryState &, std::vector< const DetLayer * > &) const
 
void inOutPx (const FreeTrajectoryState &, std::vector< const DetLayer * > &) const
 
void inOutTIB (const FreeTrajectoryState &, std::vector< const DetLayer * > &) const
 
void inOutTOB (const FreeTrajectoryState &, std::vector< const DetLayer * > &) const
 
bool outward (const FreeTrajectoryState &) const
 

Private Attributes

float theEpsilon
 
edm::ESHandle
< GeometricSearchTracker
theGeometricSearchTracker
 
bool theOutLayerOnlyFlag
 

Detailed Description

Definition at line 28 of file DirectTrackerNavigation.h.

Constructor & Destructor Documentation

DirectTrackerNavigation::DirectTrackerNavigation ( const edm::ESHandle< GeometricSearchTracker > &  tkLayout,
bool  outOnly = true 
)

constructor

Definition at line 34 of file DirectTrackerNavigation.cc.

Referenced by clone().

35  :
36  theGeometricSearchTracker(tkLayout), theOutLayerOnlyFlag(outOnly), theEpsilon(-0.01) {
37 
38 }
edm::ESHandle< GeometricSearchTracker > theGeometricSearchTracker
virtual DirectTrackerNavigation::~DirectTrackerNavigation ( )
inlinevirtual

destructor

Definition at line 37 of file DirectTrackerNavigation.h.

37 {}

Member Function Documentation

float DirectTrackerNavigation::calculateEta ( float  r,
float  z 
) const
private

Definition at line 264 of file DirectTrackerNavigation.cc.

References create_public_lumi_plots::log, and funct::tan().

Referenced by checkCompatible().

264  {
265 
266  if ( z > 0 ) return -log((tan(atan(r/z)/2.)));
267  return log(-(tan(atan(r/z)/2.)));
268 
269 }
double double double z
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
bool DirectTrackerNavigation::checkCompatible ( const FreeTrajectoryState fts,
const BarrelDetLayer dl 
) const
private

Definition at line 214 of file DirectTrackerNavigation.cc.

References BoundSurface::bounds(), calculateEta(), PV3DBase< T, PVType, FrameType >::eta(), eta(), Bounds::length(), FreeTrajectoryState::position(), Cylinder::radius(), CosmicsPD_Skims::radius, BarrelDetLayer::specificSurface(), and theEpsilon.

Referenced by inOutBPx(), inOutBTEC(), inOutBTID(), inOutFPx(), inOutFTEC(), inOutFTID(), inOutPx(), inOutTIB(), and inOutTOB().

214  {
215 
216  float eta0 = fts.position().eta();
217 
218  const BoundCylinder& bc = dl->specificSurface();
219  float radius = bc.radius();
220  float length = bc.bounds().length()/2.;
221 
222  float eta = calculateEta(radius, length);
223 
224  return ( fabs(eta0) <= (fabs(eta) + theEpsilon) );
225 
226 }
virtual float length() const =0
T eta() const
Scalar radius() const
Radius of the cylinder.
Definition: Cylinder.h:55
GlobalPoint position() const
float calculateEta(float r, float z) const
const Bounds & bounds() const
Definition: BoundSurface.h:89
virtual const BoundCylinder & specificSurface() const
Extension of the interface.
T eta() const
Definition: PV3DBase.h:75
bool DirectTrackerNavigation::checkCompatible ( const FreeTrajectoryState fts,
const ForwardDetLayer dl 
) const
private

Definition at line 232 of file DirectTrackerNavigation.cc.

References calculateEta(), PV3DBase< T, PVType, FrameType >::eta(), BoundDisk::innerRadius(), BoundDisk::outerRadius(), GloballyPositioned< T >::position(), FreeTrajectoryState::position(), ForwardDetLayer::specificSurface(), theEpsilon, detailsBasic3DVector::z, and PV3DBase< T, PVType, FrameType >::z().

232  {
233 
234  float eta0 = fts.position().eta();
235 
236  const BoundDisk& bd = dl->specificSurface();
237 
238  float outRadius = bd.outerRadius();
239  float inRadius = bd.innerRadius();
240  float z = bd.position().z();
241 
242  float etaOut = calculateEta(outRadius, z);
243  float etaIn = calculateEta(inRadius, z);
244 
245  if ( eta0 > 0 ) return ( eta0 > ( etaOut - theEpsilon) && eta0 < (etaIn + theEpsilon) );
246  else return ( eta0 < (etaOut + theEpsilon ) && eta0 > ( etaIn - theEpsilon ) );
247 
248 }
double double double z
T z() const
Definition: PV3DBase.h:63
virtual const BoundDisk & specificSurface() const
GlobalPoint position() const
float calculateEta(float r, float z) const
T eta() const
Definition: PV3DBase.h:75
float outerRadius() const
The outer radius of the disk.
Definition: BoundDisk.h:75
float innerRadius() const
The inner radius of the disk.
Definition: BoundDisk.h:72
const PositionType & position() const
DirectTrackerNavigation* DirectTrackerNavigation::clone ( void  ) const
inline

clone

Definition at line 40 of file DirectTrackerNavigation.h.

References DirectTrackerNavigation().

40  {
41  return new DirectTrackerNavigation(*this);
42  }
DirectTrackerNavigation(const edm::ESHandle< GeometricSearchTracker > &, bool outOnly=true)
constructor
vector< const DetLayer * > DirectTrackerNavigation::compatibleLayers ( const FreeTrajectoryState fts,
PropagationDirection  timeDirection 
) const

find compatible layers for a given trajectory state

Definition at line 45 of file DirectTrackerNavigation.cc.

References PV3DBase< T, PVType, FrameType >::eta(), inOutBPx(), inOutBTEC(), inOutBTID(), inOutFPx(), inOutFTEC(), inOutFTID(), inOutPx(), inOutTIB(), inOutTOB(), LogTrace, oppositeToMomentum, convertSQLitetoXML_cfg::output, outward(), FreeTrajectoryState::position(), and theOutLayerOnlyFlag.

Referenced by TSGFromPropagation::trackerSeeds(), and FastTSGFromPropagation::trackerSeeds().

46  {
47 
48  bool inOut = outward(fts);
49  double eta0 = fts.position().eta();
50 
51  vector<const DetLayer*> output;
52 
53  // check eta of DetLayers for compatibility
54 
55  if (inOut) {
56 
57  if ( !theOutLayerOnlyFlag ) {
58  inOutPx(fts,output);
59 
60  if ( eta0 > 1.55) inOutFPx(fts,output);
61  else if ( eta0 < -1.55 ) inOutBPx(fts,output);
62 
63  if ( fabs(eta0) < 1.67 ) inOutTIB(fts,output);
64 
65  if ( eta0 > 1.17 ) inOutFTID(fts,output);
66  else if ( eta0 < -1.17 ) inOutBTID(fts,output);
67  }
68 
69  if ( fabs(eta0) < 1.35 ) inOutTOB(fts,output);
70 
71  if ( eta0 > 0.97 ) inOutFTEC(fts,output);
72  else if ( eta0 < -0.97 ) inOutBTEC(fts,output);
73 
74  } else {
75  LogTrace("Muon|RecoMuon|DirectionTrackerNavigation")<<"No implementation for inward state at this moment. ";
76  }
77 
78  if ( dir == oppositeToMomentum ) std::reverse(output.begin(),output.end());
79 
80  return output;
81 
82 }
void inOutPx(const FreeTrajectoryState &, std::vector< const DetLayer * > &) const
void inOutTIB(const FreeTrajectoryState &, std::vector< const DetLayer * > &) const
void inOutFTID(const FreeTrajectoryState &, std::vector< const DetLayer * > &) const
void inOutBTID(const FreeTrajectoryState &, std::vector< const DetLayer * > &) const
void inOutTOB(const FreeTrajectoryState &, std::vector< const DetLayer * > &) const
#define LogTrace(id)
void inOutFPx(const FreeTrajectoryState &, std::vector< const DetLayer * > &) const
GlobalPoint position() const
void inOutBTEC(const FreeTrajectoryState &, std::vector< const DetLayer * > &) const
bool outward(const FreeTrajectoryState &) const
void inOutFTEC(const FreeTrajectoryState &, std::vector< const DetLayer * > &) const
T eta() const
Definition: PV3DBase.h:75
dbl *** dir
Definition: mlp_gen.cc:35
void inOutBPx(const FreeTrajectoryState &, std::vector< const DetLayer * > &) const
void DirectTrackerNavigation::inOutBPx ( const FreeTrajectoryState fts,
std::vector< const DetLayer * > &  output 
) const
private

Definition at line 172 of file DirectTrackerNavigation.cc.

References checkCompatible(), and theGeometricSearchTracker.

Referenced by compatibleLayers().

172  {
173 
174  const vector<ForwardDetLayer*>& forward = theGeometricSearchTracker->negPixelForwardLayers();
175 
176  for (vector<ForwardDetLayer*>::const_iterator iter_E = forward.begin(); iter_E != forward.end(); iter_E++) {
177  if ( checkCompatible(fts,(*iter_E)) ) output.push_back((*iter_E));
178  }
179 
180 }
edm::ESHandle< GeometricSearchTracker > theGeometricSearchTracker
bool checkCompatible(const FreeTrajectoryState &, const BarrelDetLayer *) const
void DirectTrackerNavigation::inOutBTEC ( const FreeTrajectoryState fts,
std::vector< const DetLayer * > &  output 
) const
private

Definition at line 200 of file DirectTrackerNavigation.cc.

References checkCompatible(), and theGeometricSearchTracker.

Referenced by compatibleLayers().

200  {
201 
202  const vector<ForwardDetLayer*>& forward = theGeometricSearchTracker->negTecLayers();
203 
204  for (vector<ForwardDetLayer*>::const_iterator iter_E = forward.begin(); iter_E != forward.end(); iter_E++) {
205  if ( checkCompatible(fts,(*iter_E)) ) output.push_back((*iter_E));
206  }
207 
208 }
edm::ESHandle< GeometricSearchTracker > theGeometricSearchTracker
bool checkCompatible(const FreeTrajectoryState &, const BarrelDetLayer *) const
void DirectTrackerNavigation::inOutBTID ( const FreeTrajectoryState fts,
std::vector< const DetLayer * > &  output 
) const
private

Definition at line 186 of file DirectTrackerNavigation.cc.

References checkCompatible(), and theGeometricSearchTracker.

Referenced by compatibleLayers().

186  {
187 
188  const vector<ForwardDetLayer*>& forward = theGeometricSearchTracker->negTidLayers();
189 
190  for (vector<ForwardDetLayer*>::const_iterator iter_E = forward.begin(); iter_E != forward.end(); iter_E++) {
191  if ( checkCompatible(fts,(*iter_E)) ) output.push_back((*iter_E));
192  }
193 
194 }
edm::ESHandle< GeometricSearchTracker > theGeometricSearchTracker
bool checkCompatible(const FreeTrajectoryState &, const BarrelDetLayer *) const
void DirectTrackerNavigation::inOutFPx ( const FreeTrajectoryState fts,
std::vector< const DetLayer * > &  output 
) const
private

Definition at line 130 of file DirectTrackerNavigation.cc.

References checkCompatible(), and theGeometricSearchTracker.

Referenced by compatibleLayers().

130  {
131 
132  const vector<ForwardDetLayer*>& forward = theGeometricSearchTracker->posPixelForwardLayers();
133 
134  for (vector<ForwardDetLayer*>::const_iterator iter_E = forward.begin(); iter_E != forward.end(); iter_E++) {
135  if ( checkCompatible(fts,(*iter_E)) ) output.push_back((*iter_E));
136  }
137 
138 }
edm::ESHandle< GeometricSearchTracker > theGeometricSearchTracker
bool checkCompatible(const FreeTrajectoryState &, const BarrelDetLayer *) const
void DirectTrackerNavigation::inOutFTEC ( const FreeTrajectoryState fts,
std::vector< const DetLayer * > &  output 
) const
private

Definition at line 158 of file DirectTrackerNavigation.cc.

References checkCompatible(), and theGeometricSearchTracker.

Referenced by compatibleLayers().

158  {
159 
160  const vector<ForwardDetLayer*>& forward = theGeometricSearchTracker->posTecLayers();
161 
162  for (vector<ForwardDetLayer*>::const_iterator iter_E = forward.begin(); iter_E != forward.end(); iter_E++) {
163  if ( checkCompatible(fts,(*iter_E)) ) output.push_back((*iter_E));
164  }
165 
166 }
edm::ESHandle< GeometricSearchTracker > theGeometricSearchTracker
bool checkCompatible(const FreeTrajectoryState &, const BarrelDetLayer *) const
void DirectTrackerNavigation::inOutFTID ( const FreeTrajectoryState fts,
std::vector< const DetLayer * > &  output 
) const
private

Definition at line 144 of file DirectTrackerNavigation.cc.

References checkCompatible(), and theGeometricSearchTracker.

Referenced by compatibleLayers().

144  {
145 
146  const vector<ForwardDetLayer*>& forward = theGeometricSearchTracker->posTidLayers();
147 
148  for (vector<ForwardDetLayer*>::const_iterator iter_E = forward.begin(); iter_E != forward.end(); iter_E++) {
149  if ( checkCompatible(fts,(*iter_E)) ) output.push_back((*iter_E));
150  }
151 
152 }
edm::ESHandle< GeometricSearchTracker > theGeometricSearchTracker
bool checkCompatible(const FreeTrajectoryState &, const BarrelDetLayer *) const
void DirectTrackerNavigation::inOutPx ( const FreeTrajectoryState fts,
std::vector< const DetLayer * > &  output 
) const
private

Definition at line 88 of file DirectTrackerNavigation.cc.

References Reference_intrackfit_cff::barrel, checkCompatible(), and theGeometricSearchTracker.

Referenced by compatibleLayers().

88  {
89 
90  const vector<BarrelDetLayer*>& barrel = theGeometricSearchTracker->pixelBarrelLayers();
91 
92  for (vector<BarrelDetLayer*>::const_iterator iter_B = barrel.begin(); iter_B != barrel.end(); iter_B++) {
93  if ( checkCompatible(fts,(*iter_B)) ) output.push_back((*iter_B));
94  }
95 
96 }
edm::ESHandle< GeometricSearchTracker > theGeometricSearchTracker
bool checkCompatible(const FreeTrajectoryState &, const BarrelDetLayer *) const
void DirectTrackerNavigation::inOutTIB ( const FreeTrajectoryState fts,
std::vector< const DetLayer * > &  output 
) const
private

Definition at line 102 of file DirectTrackerNavigation.cc.

References Reference_intrackfit_cff::barrel, checkCompatible(), and theGeometricSearchTracker.

Referenced by compatibleLayers().

102  {
103 
104  const vector<BarrelDetLayer*>& barrel = theGeometricSearchTracker->tibLayers();
105 
106  for (vector<BarrelDetLayer*>::const_iterator iter_B = barrel.begin(); iter_B != barrel.end(); iter_B++) {
107  if ( checkCompatible(fts,(*iter_B)) ) output.push_back((*iter_B));
108  }
109 
110 }
edm::ESHandle< GeometricSearchTracker > theGeometricSearchTracker
bool checkCompatible(const FreeTrajectoryState &, const BarrelDetLayer *) const
void DirectTrackerNavigation::inOutTOB ( const FreeTrajectoryState fts,
std::vector< const DetLayer * > &  output 
) const
private

Definition at line 116 of file DirectTrackerNavigation.cc.

References Reference_intrackfit_cff::barrel, checkCompatible(), and theGeometricSearchTracker.

Referenced by compatibleLayers().

116  {
117 
118  const vector<BarrelDetLayer*>& barrel = theGeometricSearchTracker->tobLayers();
119 
120  for (vector<BarrelDetLayer*>::const_iterator iter_B = barrel.begin(); iter_B != barrel.end(); iter_B++) {
121  if ( checkCompatible(fts,(*iter_B)) ) output.push_back((*iter_B));
122  }
123 
124 }
edm::ESHandle< GeometricSearchTracker > theGeometricSearchTracker
bool checkCompatible(const FreeTrajectoryState &, const BarrelDetLayer *) const
bool DirectTrackerNavigation::outward ( const FreeTrajectoryState fts) const
private

Definition at line 254 of file DirectTrackerNavigation.cc.

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

Referenced by compatibleLayers().

254  {
255 
256  return (fts.position().basicVector().dot(fts.momentum().basicVector()) > 0);
257 
258 }
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.

Member Data Documentation

float DirectTrackerNavigation::theEpsilon
private

Definition at line 83 of file DirectTrackerNavigation.h.

Referenced by checkCompatible().

edm::ESHandle<GeometricSearchTracker> DirectTrackerNavigation::theGeometricSearchTracker
private
bool DirectTrackerNavigation::theOutLayerOnlyFlag
private

Definition at line 81 of file DirectTrackerNavigation.h.

Referenced by compatibleLayers().