CMS 3D CMS Logo

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

#include <LayerCollector.h>

Public Member Functions

std::vector< const DetLayer * > allLayers (const FTS &aFts) const
 
std::vector< const
BarrelDetLayer * > 
barrelLayers (const FTS &aFts) const
 
float deltaR () const
 
float deltaZ () const
 
std::vector< const
ForwardDetLayer * > 
forwardLayers (const FTS &aFts) const
 
 LayerCollector (NavigationSchool const *aSchool, const Propagator *aPropagator, const MeasurementTracker *tracker, float dr, float dz)
 
const Propagatorpropagator () const
 

Private Types

typedef FreeTrajectoryState FTS
 
typedef std::pair< float, float > Range
 
typedef TrajectoryStateOnSurface TSOS
 

Private Member Functions

bool rangesIntersect (const Range &a, const Range &b) const
 

Private Attributes

float theDeltaR
 
float theDeltaZ
 
const PropagatorthePropagator
 
NavigationSchool const * theSchool
 
const StartingLayerFinder theStartingLayerFinder
 

Detailed Description

Class collecting all layers of the tracker.

Definition at line 19 of file LayerCollector.h.

Member Typedef Documentation

Definition at line 21 of file LayerCollector.h.

typedef std::pair<float, float> LayerCollector::Range
private

Definition at line 23 of file LayerCollector.h.

Definition at line 22 of file LayerCollector.h.

Constructor & Destructor Documentation

LayerCollector::LayerCollector ( NavigationSchool const *  aSchool,
const Propagator aPropagator,
const MeasurementTracker tracker,
float  dr,
float  dz 
)
inline

Definition at line 26 of file LayerCollector.h.

31  : theSchool(aSchool),
32  thePropagator(aPropagator),
33  theStartingLayerFinder{*aPropagator, *tracker},
34  theDeltaR(dr),
35  theDeltaZ(dz) {}
const StartingLayerFinder theStartingLayerFinder
const Propagator * thePropagator
NavigationSchool const * theSchool

Member Function Documentation

vector< const DetLayer * > LayerCollector::allLayers ( const FTS aFts) const

Definition at line 7 of file LayerCollector.cc.

References GeomDetEnumerators::barrel, HLT_FULL_cff::deltaR, GeomDetEnumerators::endcap, TrajectoryStateOnSurface::freeState(), TrajectoryStateOnSurface::globalParameters(), TrajectoryStateOnSurface::globalPosition(), TrajectoryStateOnSurface::isValid(), FreeTrajectoryState::parameters(), PV3DBase< T, PVType, FrameType >::perp(), HLT_FULL_cff::propagator, rangesIntersect(), and PV3DBase< T, PVType, FrameType >::z().

Referenced by ConversionSeedFinder::findLayers().

7  {
8  vector<const DetLayer*> myLayers;
9 
10  FTS myFts(aFts.parameters());
11 
12  vector<const DetLayer*> nextLayers = theStartingLayerFinder(myFts, deltaR(), deltaZ());
13 
14  vector<const DetLayer*> dummy;
15 
16  bool inside = true;
17  while (inside) {
18  inside = false;
19  for (vector<const DetLayer*>::iterator ilay = nextLayers.begin(); ilay != nextLayers.end(); ilay++) {
20  TSOS pTsos = propagator()->propagate(myFts, (**ilay).surface());
21 
22  if (pTsos.isValid()) {
23  inside = true;
24 
25  if ((**ilay).location() == GeomDetEnumerators::barrel) {
26  Range barrZRange((**ilay).position().z() - 0.5 * ((**ilay).surface().bounds().length()),
27  (**ilay).position().z() + 0.5 * ((**ilay).surface().bounds().length()));
28  Range trajZRange(pTsos.globalPosition().z() - deltaZ(), pTsos.globalPosition().z() + deltaZ());
29 
30  if (rangesIntersect(trajZRange, barrZRange))
31  myLayers.push_back(*ilay);
32 
33  } else if ((**ilay).location() == GeomDetEnumerators::endcap) {
34  const ForwardDetLayer* fwd = dynamic_cast<const ForwardDetLayer*>(*ilay);
35  Range fwdRRange((*fwd).specificSurface().innerRadius(), (*fwd).specificSurface().outerRadius());
36  Range trajRRange(pTsos.globalPosition().perp() - deltaR(), pTsos.globalPosition().perp() + deltaR());
37 
38  if (rangesIntersect(trajRRange, fwdRRange))
39  myLayers.push_back(*ilay);
40  }
41 
42  myFts = FTS(pTsos.globalParameters());
43 
44  nextLayers = theSchool->nextLayers(**ilay, *pTsos.freeState(), propagator()->propagationDirection());
45 
46  break;
47  }
48  }
49  }
50 
51  return myLayers;
52 }
const StartingLayerFinder theStartingLayerFinder
T perp() const
Definition: PV3DBase.h:69
const GlobalTrajectoryParameters & parameters() const
float deltaR() const
GlobalPoint globalPosition() const
virtual PropagationDirection propagationDirection() const final
Definition: Propagator.h:139
NavigationSchool const * theSchool
bool rangesIntersect(const Range &a, const Range &b) const
std::pair< float, float > Range
FreeTrajectoryState const * freeState(bool withErrors=true) const
T z() const
Definition: PV3DBase.h:61
float deltaZ() const
const Propagator * propagator() const
const GlobalTrajectoryParameters & globalParameters() const
std::vector< const DetLayer * > nextLayers(const DetLayer &detLayer, Args &&...args) const
TrajectoryStateOnSurface propagate(STA const &state, SUR const &surface) const
Definition: Propagator.h:50
FreeTrajectoryState FTS
vector< const BarrelDetLayer * > LayerCollector::barrelLayers ( const FTS aFts) const

Definition at line 54 of file LayerCollector.cc.

References python.cmstools::all().

54  {
55  vector<const DetLayer*> all = allLayers(aFts);
56  vector<const BarrelDetLayer*> barrelLayers;
57 
58  for (vector<const DetLayer*>::iterator ilay = all.begin(); ilay != all.end(); ilay++) {
59  if (const BarrelDetLayer* myBarrel = dynamic_cast<const BarrelDetLayer*>(*ilay))
60  barrelLayers.push_back(myBarrel);
61  }
62 
63  return barrelLayers;
64 }
std::vector< const BarrelDetLayer * > barrelLayers(const FTS &aFts) const
std::vector< const DetLayer * > allLayers(const FTS &aFts) const
def all
workaround iterator generators for ROOT classes
Definition: cmstools.py:25
float LayerCollector::deltaR ( ) const
inline

Definition at line 42 of file LayerCollector.h.

References theDeltaR.

42 { return theDeltaR; }
float LayerCollector::deltaZ ( ) const
inline

Definition at line 43 of file LayerCollector.h.

References theDeltaZ.

43 { return theDeltaZ; }
vector< const ForwardDetLayer * > LayerCollector::forwardLayers ( const FTS aFts) const

Definition at line 66 of file LayerCollector.cc.

References python.cmstools::all().

66  {
67  vector<const DetLayer*> all = allLayers(aFts);
68  vector<const ForwardDetLayer*> fwdLayers;
69 
70  for (vector<const DetLayer*>::iterator ilay = all.begin(); ilay != all.end(); ilay++) {
71  if (const ForwardDetLayer* myFwd = dynamic_cast<const ForwardDetLayer*>(*ilay))
72  fwdLayers.push_back(myFwd);
73  }
74 
75  return fwdLayers;
76 }
std::vector< const DetLayer * > allLayers(const FTS &aFts) const
def all
workaround iterator generators for ROOT classes
Definition: cmstools.py:25
const Propagator* LayerCollector::propagator ( ) const
inline

Definition at line 41 of file LayerCollector.h.

References thePropagator.

41 { return thePropagator; }
const Propagator * thePropagator
bool LayerCollector::rangesIntersect ( const Range a,
const Range b 
) const
inlineprivate

Definition at line 52 of file LayerCollector.h.

52  {
53  if (a.first > b.second || b.first > a.second)
54  return false;
55  else
56  return true;
57  }
double b
Definition: hdecay.h:118
double a
Definition: hdecay.h:119

Member Data Documentation

float LayerCollector::theDeltaR
private

Definition at line 49 of file LayerCollector.h.

Referenced by deltaR().

float LayerCollector::theDeltaZ
private

Definition at line 50 of file LayerCollector.h.

Referenced by deltaZ().

const Propagator* LayerCollector::thePropagator
private

Definition at line 47 of file LayerCollector.h.

Referenced by propagator().

NavigationSchool const* LayerCollector::theSchool
private

Definition at line 46 of file LayerCollector.h.

const StartingLayerFinder LayerCollector::theStartingLayerFinder
private

Definition at line 48 of file LayerCollector.h.