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.

Date:
2006/05/23 10:11:01
Revision:
1.2

Definition at line 22 of file LayerCollector.h.

Member Typedef Documentation

Definition at line 26 of file LayerCollector.h.

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

Definition at line 28 of file LayerCollector.h.

Definition at line 27 of file LayerCollector.h.

Constructor & Destructor Documentation

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

Definition at line 32 of file LayerCollector.h.

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

Definition at line 41 of file LayerCollector.h.

41 {}

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:66
virtual PropagationDirection propagationDirection() const
Definition: Propagator.h:143
const GlobalTrajectoryParameters & parameters() const
float deltaR() const
GlobalPoint globalPosition() const
const StartingLayerFinder * finder() const
bool rangesIntersect(const Range &a, const Range &b) const
FreeTrajectoryState * freeState(bool withErrors=true) const
std::pair< float, float > Range
T z() const
Definition: PV3DBase.h:58
float deltaZ() const
const Propagator * propagator() const
virtual TrajectoryStateOnSurface propagate(const FreeTrajectoryState &, const Surface &) const
Definition: Propagator.cc:9
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 49 of file LayerCollector.h.

References theDeltaR.

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

Definition at line 50 of file LayerCollector.h.

References theDeltaZ.

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

Definition at line 48 of file LayerCollector.h.

References theStartingLayerFinder.

48 {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 47 of file LayerCollector.h.

References thePropagator.

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

Definition at line 61 of file LayerCollector.h.

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

Member Data Documentation

float LayerCollector::theDeltaR
private

Definition at line 56 of file LayerCollector.h.

Referenced by deltaR().

float LayerCollector::theDeltaZ
private

Definition at line 57 of file LayerCollector.h.

Referenced by deltaZ().

const Propagator* LayerCollector::thePropagator
private

Definition at line 54 of file LayerCollector.h.

Referenced by propagator().

const StartingLayerFinder* LayerCollector::theStartingLayerFinder
private

Definition at line 55 of file LayerCollector.h.

Referenced by finder().