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 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
 
const StartingLayerFinderfinder () const
 
std::vector< const
ForwardDetLayer * > 
forwardLayers (const FTS &aFts) const
 
 LayerCollector (const Propagator *aPropagator, const StartingLayerFinder *aFinder, float dr, float dz)
 
const Propagatorpropagator () const
 
 ~LayerCollector ()
 

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
 
const StartingLayerFindertheStartingLayerFinder
 

Detailed Description

Class collecting all layers of the tracker.

Definition at line 20 of file LayerCollector.h.

Member Typedef Documentation

Definition at line 24 of file LayerCollector.h.

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

Definition at line 26 of file LayerCollector.h.

Definition at line 25 of file LayerCollector.h.

Constructor & Destructor Documentation

LayerCollector::LayerCollector ( const Propagator aPropagator,
const StartingLayerFinder aFinder,
float  dr,
float  dz 
)
inline

Definition at line 30 of file LayerCollector.h.

33  :
34  thePropagator(aPropagator),
35  theStartingLayerFinder(aFinder),
36  theDeltaR(dr),
37  theDeltaZ(dz) { }
const Propagator * thePropagator
const StartingLayerFinder * theStartingLayerFinder
LayerCollector::~LayerCollector ( )
inline

Definition at line 39 of file LayerCollector.h.

39 {}

Member Function Documentation

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

Definition at line 6 of file LayerCollector.cc.

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

Referenced by ConversionSeedFinder::findLayers().

6  {
7 
8 
9  vector<const DetLayer*> myLayers;
10 
11 
12 
13  FTS myFts(aFts.parameters());
14 
15  vector<const DetLayer*> nextLayers = finder()->startingLayers(myFts, deltaR(), deltaZ());
16 
17  vector<const DetLayer*> dummy;
18 
19 
20 
21 
22  bool inside = true;
23  while(inside) {
24 
25  inside = false;
26  for(vector<const DetLayer*>::iterator ilay = nextLayers.begin(); ilay != nextLayers.end(); ilay++) {
27 
28 
29  TSOS pTsos = propagator()->propagate(myFts, (**ilay).surface());
30 
31 
32  if(pTsos.isValid()) {
33 
34  inside = true;
35 
36 
37 
38  if((**ilay).location() == GeomDetEnumerators::barrel) {
39 
40  Range barrZRange((**ilay).position().z() -
41  0.5*((**ilay).surface().bounds().length()),
42  (**ilay).position().z() +
43  0.5*((**ilay).surface().bounds().length()));
44  Range trajZRange(pTsos.globalPosition().z() - deltaZ(),
45  pTsos.globalPosition().z() + deltaZ());
46 
47  if(rangesIntersect(trajZRange, barrZRange))
48  myLayers.push_back(*ilay);
49 
50  } else if((**ilay).location() == GeomDetEnumerators::endcap) {
51 
52  const ForwardDetLayer* fwd =
53  dynamic_cast<const ForwardDetLayer*>(*ilay);
54  Range fwdRRange((*fwd).specificSurface().innerRadius(),
55  (*fwd).specificSurface().outerRadius());
56  Range trajRRange(pTsos.globalPosition().perp() - deltaR(),
57  pTsos.globalPosition().perp() + deltaR());
58 
59  if(rangesIntersect(trajRRange, fwdRRange))
60  myLayers.push_back(*ilay);
61 
62  }
63 
64  myFts = FTS(pTsos.globalParameters());
65 
66 
67  nextLayers = (**ilay).nextLayers(*pTsos.freeState(),
69 
70 
71  break;
72 
73 
74  }
75 
76 
77 
78  }
79  }
80 
81 
82 
83 
84  return myLayers;
85 }
T perp() const
Definition: PV3DBase.h:72
const GlobalTrajectoryParameters & parameters() const
float deltaR() const
GlobalPoint globalPosition() const
const StartingLayerFinder * finder() const
virtual PropagationDirection propagationDirection() const GCC11_FINAL
Definition: Propagator.h:145
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:64
float deltaZ() const
const Propagator * propagator() const
virtual TrajectoryStateOnSurface propagate(const FreeTrajectoryState &, const Surface &) const
Definition: Propagator.cc:12
const GlobalTrajectoryParameters & globalParameters() const
std::vector< const DetLayer * > startingLayers(const FTS &aFts, float dr, float dz) const
FreeTrajectoryState FTS
vector< const BarrelDetLayer * > LayerCollector::barrelLayers ( const FTS aFts) const

Definition at line 87 of file LayerCollector.cc.

References cond::ecalcond::all.

87  {
88 
89  vector<const DetLayer*> all = allLayers(aFts);
90  vector<const BarrelDetLayer*> barrelLayers;
91 
92 
93  for(vector<const DetLayer*>::iterator ilay = all.begin();
94  ilay != all.end(); ilay++) {
95 
96  if(const BarrelDetLayer* myBarrel =
97  dynamic_cast<const BarrelDetLayer*>(*ilay))
98  barrelLayers.push_back(myBarrel);
99  }
100 
101 
102  return barrelLayers;
103 }
std::vector< const BarrelDetLayer * > barrelLayers(const FTS &aFts) const
std::vector< const DetLayer * > allLayers(const FTS &aFts) const
float LayerCollector::deltaR ( ) const
inline

Definition at line 47 of file LayerCollector.h.

References theDeltaR.

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

Definition at line 48 of file LayerCollector.h.

References theDeltaZ.

48 {return theDeltaZ;}
const StartingLayerFinder* LayerCollector::finder ( ) const
inline

Definition at line 46 of file LayerCollector.h.

References theStartingLayerFinder.

46 {return theStartingLayerFinder;}
const StartingLayerFinder * theStartingLayerFinder
vector< const ForwardDetLayer * > LayerCollector::forwardLayers ( const FTS aFts) const

Definition at line 105 of file LayerCollector.cc.

References cond::ecalcond::all.

105  {
106 
107  vector<const DetLayer*> all = allLayers(aFts);
108  vector<const ForwardDetLayer*> fwdLayers;
109 
110 
111  for(vector<const DetLayer*>::iterator ilay = all.begin();
112  ilay != all.end(); ilay++) {
113 
114  if(const ForwardDetLayer* myFwd =
115  dynamic_cast<const ForwardDetLayer*>(*ilay))
116  fwdLayers.push_back(myFwd);
117  }
118 
119 
120  return fwdLayers;
121 }
std::vector< const DetLayer * > allLayers(const FTS &aFts) const
const Propagator* LayerCollector::propagator ( void  ) const
inline

Definition at line 45 of file LayerCollector.h.

References thePropagator.

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

Definition at line 59 of file LayerCollector.h.

59  {
60  if ( a.first > b.second || b.first > a.second) return false;
61  else return true;
62  }
double b
Definition: hdecay.h:120
double a
Definition: hdecay.h:121

Member Data Documentation

float LayerCollector::theDeltaR
private

Definition at line 54 of file LayerCollector.h.

Referenced by deltaR().

float LayerCollector::theDeltaZ
private

Definition at line 55 of file LayerCollector.h.

Referenced by deltaZ().

const Propagator* LayerCollector::thePropagator
private

Definition at line 52 of file LayerCollector.h.

Referenced by propagator().

const StartingLayerFinder* LayerCollector::theStartingLayerFinder
private

Definition at line 53 of file LayerCollector.h.

Referenced by finder().