CMS 3D CMS Logo

GeometricSearchTrackerBuilder.cc
Go to the documentation of this file.
3 
8 #include "TIBLayerBuilder.h"
9 #include "TOBLayerBuilder.h"
10 #include "TIDLayerBuilder.h"
11 #include "TECLayerBuilder.h"
12 
14 
17 
19 
20 using namespace std;
21 
23  const TrackerGeometry* theGeomDetGeometry,
24  const TrackerTopology* tTopo,
25  const bool usePhase2Stacks) {
26  PixelBarrelLayerBuilder aPixelBarrelLayerBuilder;
27  Phase2OTBarrelLayerBuilder aPhase2OTBarrelLayerBuilder;
30  Phase2EndcapLayerBuilder aPhase2EndcapLayerBuilder;
31  TIBLayerBuilder aTIBLayerBuilder;
32  TOBLayerBuilder aTOBLayerBuilder;
33  TIDLayerBuilder aTIDLayerBuilder;
34  TECLayerBuilder aTECLayerBuilder;
35 
36  vector<BarrelDetLayer const*> thePxlBarLayers;
37  vector<BarrelDetLayer const*> theTIBLayers;
38  vector<BarrelDetLayer const*> theTOBLayers;
39  vector<ForwardDetLayer const*> theNegPxlFwdLayers;
40  vector<ForwardDetLayer const*> thePosPxlFwdLayers;
41  vector<ForwardDetLayer const*> theNegTIDLayers;
42  vector<ForwardDetLayer const*> thePosTIDLayers;
43  vector<ForwardDetLayer const*> theNegTECLayers;
44  vector<ForwardDetLayer const*> thePosTECLayers;
45  bool useBrothers = !usePhase2Stacks;
46 
47  vector<const GeometricDet*> theGeometricDetLayers = theGeometricTracker->components();
48  for (vector<const GeometricDet*>::const_iterator it = theGeometricDetLayers.begin();
49  it != theGeometricDetLayers.end();
50  it++) {
51  if ((*it)->type() == GeometricDet::PixelBarrel) {
52  vector<const GeometricDet*> thePxlBarGeometricDetLayers = (*it)->components();
53  for (vector<const GeometricDet*>::const_iterator it2 = thePxlBarGeometricDetLayers.begin();
54  it2 != thePxlBarGeometricDetLayers.end();
55  it2++) {
56  thePxlBarLayers.push_back(aPixelBarrelLayerBuilder.build(*it2, theGeomDetGeometry));
57  }
58  }
59 
60  if ((*it)->type() == GeometricDet::PixelPhase1Barrel) {
61  vector<const GeometricDet*> thePxlBarGeometricDetLayers = (*it)->components();
62  for (vector<const GeometricDet*>::const_iterator it2 = thePxlBarGeometricDetLayers.begin();
63  it2 != thePxlBarGeometricDetLayers.end();
64  it2++) {
65  thePxlBarLayers.push_back(aPixelBarrelLayerBuilder.build(*it2, theGeomDetGeometry));
66  }
67  }
68 
69  if ((*it)->type() == GeometricDet::PixelPhase2Barrel) {
70  vector<const GeometricDet*> thePxlBarGeometricDetLayers = (*it)->components();
71  for (vector<const GeometricDet*>::const_iterator it2 = thePxlBarGeometricDetLayers.begin();
72  it2 != thePxlBarGeometricDetLayers.end();
73  it2++) {
74  thePxlBarLayers.push_back(aPixelBarrelLayerBuilder.build(*it2, theGeomDetGeometry));
75  }
76  }
77 
78  if ((*it)->type() == GeometricDet::TIB) {
79  vector<const GeometricDet*> theTIBGeometricDetLayers = (*it)->components();
80  for (vector<const GeometricDet*>::const_iterator it2 = theTIBGeometricDetLayers.begin();
81  it2 != theTIBGeometricDetLayers.end();
82  it2++) {
83  theTIBLayers.push_back(aTIBLayerBuilder.build(*it2, theGeomDetGeometry));
84  }
85  }
86 
87  if ((*it)->type() == GeometricDet::TOB) {
88  vector<const GeometricDet*> theTOBGeometricDetLayers = (*it)->components();
89  for (vector<const GeometricDet*>::const_iterator it2 = theTOBGeometricDetLayers.begin();
90  it2 != theTOBGeometricDetLayers.end();
91  it2++) {
92  theTOBLayers.push_back(aTOBLayerBuilder.build(*it2, theGeomDetGeometry));
93  }
94  }
95 
96  if ((*it)->type() == GeometricDet::OTPhase2Barrel) {
97  vector<const GeometricDet*> theTOBGeometricDetLayers = (*it)->components();
98 
99  for (vector<const GeometricDet*>::const_iterator it2 = theTOBGeometricDetLayers.begin();
100  it2 != theTOBGeometricDetLayers.end();
101  it2++) {
102  theTOBLayers.push_back(aPhase2OTBarrelLayerBuilder.build(*it2, theGeomDetGeometry, useBrothers));
103  }
104  }
105 
106  if ((*it)->type() == GeometricDet::PixelEndCap) {
107  vector<const GeometricDet*> thePxlFwdGeometricDetLayers = (*it)->components();
108  for (vector<const GeometricDet*>::const_iterator it2 = thePxlFwdGeometricDetLayers.begin();
109  it2 != thePxlFwdGeometricDetLayers.end();
110  it2++) {
111  if ((*it2)->positionBounds().z() < 0)
112  theNegPxlFwdLayers.push_back(aPixelForwardLayerBuilder.build(*it2, theGeomDetGeometry));
113  if ((*it2)->positionBounds().z() > 0)
114  thePosPxlFwdLayers.push_back(aPixelForwardLayerBuilder.build(*it2, theGeomDetGeometry));
115  }
116  }
117 
118  if ((*it)->type() == GeometricDet::PixelPhase1EndCap) {
119  vector<const GeometricDet*> thePxlFwdGeometricDetLayers = (*it)->components();
120  for (vector<const GeometricDet*>::const_iterator it2 = thePxlFwdGeometricDetLayers.begin();
121  it2 != thePxlFwdGeometricDetLayers.end();
122  it2++) {
123  if ((*it2)->positionBounds().z() < 0)
124  theNegPxlFwdLayers.push_back(aPhase1PixelForwardLayerBuilder.build(*it2, theGeomDetGeometry));
125  if ((*it2)->positionBounds().z() > 0)
126  thePosPxlFwdLayers.push_back(aPhase1PixelForwardLayerBuilder.build(*it2, theGeomDetGeometry));
127  }
128  }
129 
130  if ((*it)->type() == GeometricDet::PixelPhase2EndCap) {
131  vector<const GeometricDet*> thePxlFwdGeometricDetLayers = (*it)->components();
132  for (vector<const GeometricDet*>::const_iterator it2 = thePxlFwdGeometricDetLayers.begin();
133  it2 != thePxlFwdGeometricDetLayers.end();
134  it2++) {
135  //FIXME: this is just to keep the compatibility with the PixelPhase1 extension layout
136  //hopefully we can get rid of it soon
137  if ((*it2)->positionBounds().z() < 0) {
138  if ((*it2)->type() == GeometricDet::PixelPhase2FullDisk ||
139  (*it2)->type() == GeometricDet::PixelPhase2ReducedDisk)
140  theNegPxlFwdLayers.push_back(aPhase1PixelForwardLayerBuilder.build(*it2, theGeomDetGeometry));
141  else if ((*it2)->type() == GeometricDet::PixelPhase2TDRDisk)
142  theNegPxlFwdLayers.push_back(aPhase2EndcapLayerBuilder.build(*it2, theGeomDetGeometry, false));
143  } else if ((*it2)->positionBounds().z() > 0) {
144  if ((*it2)->type() == GeometricDet::PixelPhase2FullDisk ||
145  (*it2)->type() == GeometricDet::PixelPhase2ReducedDisk)
146  thePosPxlFwdLayers.push_back(aPhase1PixelForwardLayerBuilder.build(*it2, theGeomDetGeometry));
147  else if ((*it2)->type() == GeometricDet::PixelPhase2TDRDisk)
148  thePosPxlFwdLayers.push_back(aPhase2EndcapLayerBuilder.build(*it2, theGeomDetGeometry, false));
149  } else {
150  edm::LogError("TkDetLayers") << "In PixelPhase2EndCap the disks are neither PixelPhase2FullDisk nor "
151  "PixelPhase2ReducedDisk nor PixelPhase2TDRDisk...";
152  }
153  }
154  }
155 
156  if ((*it)->type() == GeometricDet::TID) {
157  vector<const GeometricDet*> theTIDGeometricDetLayers = (*it)->components();
158  for (vector<const GeometricDet*>::const_iterator it2 = theTIDGeometricDetLayers.begin();
159  it2 != theTIDGeometricDetLayers.end();
160  it2++) {
161  if ((*it2)->positionBounds().z() < 0)
162  theNegTIDLayers.push_back(aTIDLayerBuilder.build(*it2, theGeomDetGeometry));
163  if ((*it2)->positionBounds().z() > 0)
164  thePosTIDLayers.push_back(aTIDLayerBuilder.build(*it2, theGeomDetGeometry));
165  }
166  }
167 
168  if ((*it)->type() == GeometricDet::OTPhase2EndCap) {
169  vector<const GeometricDet*> theTIDGeometricDetLayers = (*it)->components();
170 
171  bool useBrothers = !usePhase2Stacks;
172  for (vector<const GeometricDet*>::const_iterator it2 = theTIDGeometricDetLayers.begin();
173  it2 != theTIDGeometricDetLayers.end();
174  it2++) {
175  if ((*it2)->positionBounds().z() < 0)
176  theNegTIDLayers.push_back(aPhase2EndcapLayerBuilder.build(*it2, theGeomDetGeometry, useBrothers));
177  if ((*it2)->positionBounds().z() > 0)
178  thePosTIDLayers.push_back(aPhase2EndcapLayerBuilder.build(*it2, theGeomDetGeometry, useBrothers));
179  }
180  }
181 
182  if ((*it)->type() == GeometricDet::TEC) {
183  vector<const GeometricDet*> theTECGeometricDetLayers = (*it)->components();
184  for (vector<const GeometricDet*>::const_iterator it2 = theTECGeometricDetLayers.begin();
185  it2 != theTECGeometricDetLayers.end();
186  it2++) {
187  if ((*it2)->positionBounds().z() < 0)
188  theNegTECLayers.push_back(aTECLayerBuilder.build(*it2, theGeomDetGeometry));
189  if ((*it2)->positionBounds().z() > 0)
190  thePosTECLayers.push_back(aTECLayerBuilder.build(*it2, theGeomDetGeometry));
191  }
192  }
193  }
194 
195  return new GeometricSearchTracker(thePxlBarLayers,
196  theTIBLayers,
197  theTOBLayers,
198  theNegPxlFwdLayers,
199  theNegTIDLayers,
200  theNegTECLayers,
201  thePosPxlFwdLayers,
202  thePosTIDLayers,
203  thePosTECLayers,
204  tTopo);
205 }
trackerHierarchy.h
TIBLayerBuilder::build
TIBLayer * build(const GeometricDet *aTIBLayer, const TrackerGeometry *theGeomDetGeometry) __attribute__((cold))
Definition: TIBLayerBuilder.cc:10
TOBLayerBuilder.h
GeometricDet::PixelEndCap
Definition: GeometricDet.h:52
MessageLogger.h
Phase2EndcapLayerBuilder
Definition: Phase2EndcapLayerBuilder.h:14
Trie.h
GeometricDet::PixelPhase2ReducedDisk
Definition: GeometricDet.h:79
PixelForwardLayerBuilder.h
Phase2OTBarrelLayerBuilder::build
Phase2OTBarrelLayer * build(const GeometricDet *aPhase2OTBarrelLayer, const TrackerGeometry *theGeomDetGeometry, const bool useBrothers=true) __attribute__((cold))
Definition: Phase2OTBarrelLayerBuilder.cc:9
GeometricDet::components
ConstGeometricDetContainer & components()
Definition: GeometricDet.h:149
TrackerTopology
Definition: TrackerTopology.h:16
GeometricDet::TID
Definition: GeometricDet.h:54
PixelBarrelLayerBuilder::build
PixelBarrelLayer * build(const GeometricDet *aPixelBarrelLayer, const TrackerGeometry *theGeomDetGeometry) __attribute__((cold))
Definition: PixelBarrelLayerBuilder.cc:7
PixelForwardLayerBuilder::build
ForwardDetLayer * build(const GeometricDet *aPixelForwardLayer, const TrackerGeometry *theGeomDetGeometry) __attribute__((cold))
Definition: PixelForwardLayerBuilder.h:28
GeometricDet::PixelBarrel
Definition: GeometricDet.h:51
PixelBarrelLayerBuilder
Definition: PixelBarrelLayerBuilder.h:14
GeometricDet::OTPhase2Barrel
Definition: GeometricDet.h:72
TrackerTopology.h
GeometricDet::PixelPhase1EndCap
Definition: GeometricDet.h:69
TECLayerBuilder.h
GeometricSearchTrackerBuilder.h
GeometricDet::PixelPhase2Barrel
Definition: GeometricDet.h:75
TIBLayerBuilder
Definition: TIBLayerBuilder.h:14
TrackerRecoGeometryESProducer_cfi.usePhase2Stacks
usePhase2Stacks
Definition: TrackerRecoGeometryESProducer_cfi.py:4
PixelForwardLayerBuilder
Definition: PixelForwardLayerBuilder.h:20
Phase2EndcapLayerBuilder.h
TIBLayerBuilder.h
GeometricDet
Definition: GeometricDet.h:31
GeometricDet::PixelPhase2TDRDisk
Definition: GeometricDet.h:80
TIDLayerBuilder.h
Phase2EndcapLayerBuilder::build
Phase2EndcapLayer * build(const GeometricDet *aPhase2EndcapLayer, const TrackerGeometry *theGeomDetGeometry, const bool useBrothers) __attribute__((cold))
Definition: Phase2EndcapLayerBuilder.cc:7
GeometricDet::PixelPhase2EndCap
Definition: GeometricDet.h:76
TECLayerBuilder::build
TECLayer * build(const GeometricDet *aTECLayer, const TrackerGeometry *theGeomDetGeometry) __attribute__((cold))
Definition: TECLayerBuilder.cc:7
GeometricDet::PixelPhase1Barrel
Definition: GeometricDet.h:68
GeometricDet::OTPhase2EndCap
Definition: GeometricDet.h:71
GeometricDet::TIB
Definition: GeometricDet.h:53
TOBLayerBuilder::build
TOBLayer * build(const GeometricDet *aTOBLayer, const TrackerGeometry *theGeomDetGeometry) __attribute__((cold))
Definition: TOBLayerBuilder.cc:10
edm::LogError
Log< level::Error, false > LogError
Definition: MessageLogger.h:123
TIDLayerBuilder
Definition: TIDLayerBuilder.h:14
GeometricSearchTrackerBuilder::build
GeometricSearchTracker * build(const GeometricDet *theGeometricTracker, const TrackerGeometry *theGeomDetGeometry, const TrackerTopology *tTopo, const bool usePhase2Stacks=false) __attribute__((cold))
Definition: GeometricSearchTrackerBuilder.cc:22
GeomDet.h
std
Definition: JetResolutionObject.h:76
GeometricDet::PixelPhase2FullDisk
Definition: GeometricDet.h:78
GeometricDet::TOB
Definition: GeometricDet.h:55
PixelBarrelLayerBuilder.h
GeometricSearchTracker
Definition: GeometricSearchTracker.h:14
TECLayerBuilder
Definition: TECLayerBuilder.h:14
TIDLayerBuilder::build
TIDLayer * build(const GeometricDet *aTIDLayer, const TrackerGeometry *theGeomDetGeometry) __attribute__((cold))
Definition: TIDLayerBuilder.cc:7
Phase2OTBarrelLayerBuilder.h
TOBLayerBuilder
Definition: TOBLayerBuilder.h:14
Phase2OTBarrelLayerBuilder
Definition: Phase2OTBarrelLayerBuilder.h:14
GeometricDet::TEC
Definition: GeometricDet.h:56
TrackerGeometry
Definition: TrackerGeometry.h:14