CMS 3D CMS Logo

List of all members | Classes | Public Member Functions | Private Member Functions | Private Attributes
MuonNavigationSchool Class Reference

#include <MuonNavigationSchool.h>

Inheritance diagram for MuonNavigationSchool:
NavigationSchool

Classes

struct  delete_layer
 

Public Member Functions

 MuonNavigationSchool (const MuonDetLayerGeometry *, bool enableRPC=true, bool enableCSC=true, bool enableGEM=false, bool enableME0=false)
 Constructor. More...
 
StateType navigableLayers () override
 return navigable layers, from base class More...
 
 ~MuonNavigationSchool () override
 Destructor. More...
 
- Public Member Functions inherited from NavigationSchool
const std::vector< const DetLayer * > & allLayersInSystem () const
 
template<typename... Args>
std::vector< const DetLayer * > compatibleLayers (const DetLayer &detLayer, Args &&...args) const
 Returns all layers compatible. More...
 
 NavigationSchool ()
 
template<typename... Args>
std::vector< const DetLayer * > nextLayers (const DetLayer &detLayer, Args &&...args) const
 NavigationDirection. More...
 
virtual ~NavigationSchool ()
 

Private Member Functions

void addBarrelLayer (const BarrelDetLayer *)
 add barrel layer More...
 
void addEndcapLayer (const ForwardDetLayer *)
 add endcap layer (backward and forward) More...
 
float calculateEta (const float &, const float &) const
 calculate pseudorapidity from r and z More...
 
void createInverseLinks ()
 establish inward links More...
 
void linkBarrelLayers ()
 link barrel layers More...
 
void linkEndcapLayers (const MapE &, std::vector< MuonForwardNavigableLayer * > &)
 link endcap layers More...
 

Private Attributes

MapE theBackwardLayers
 +z endcap More...
 
std::vector< MuonForwardNavigableLayer * > theBackwardNLC
 
MapB theBarrelLayers
 
std::vector< MuonBarrelNavigableLayer * > theBarrelNLC
 -z endcap More...
 
MapE theForwardLayers
 barrel More...
 
std::vector< MuonForwardNavigableLayer * > theForwardNLC
 
const MuonDetLayerGeometrytheMuonDetLayerGeometry
 

Additional Inherited Members

- Public Types inherited from NavigationSchool
typedef std::vector< NavigableLayer * > StateType
 
- Protected Member Functions inherited from NavigationSchool
void setState (const StateType &state)
 
- Protected Attributes inherited from NavigationSchool
const std::vector< const DetLayer * > * theAllDetLayersInSystem
 
StateType theAllNavigableLayer
 

Detailed Description

Description: Navigation school for the muon system This class defines which DetLayers are reacheable from each Muon DetLayer (DT, CSC and RPC). The reacheableness is based on an eta range criteria.

Author
: Stefano Lacaprara - INFN Padova stefa.nosp@m.no.l.nosp@m.acapr.nosp@m.ara@.nosp@m.pd.in.nosp@m.fn.i.nosp@m.t

Modification:

Chang Liu: The class links maps for nextLayers and compatibleLayers in the same time.

Cesare Calabria: GEMs implementation.

David Nash: ME0s implementation.

Definition at line 39 of file MuonNavigationSchool.h.

Constructor & Destructor Documentation

MuonNavigationSchool::MuonNavigationSchool ( const MuonDetLayerGeometry muonLayout,
bool  enableRPC = true,
bool  enableCSC = true,
bool  enableGEM = false,
bool  enableME0 = false 
)

Constructor.

Definition at line 42 of file MuonNavigationSchool.cc.

References addBarrelLayer(), addEndcapLayer(), MuonDetLayerGeometry::allBarrelLayers(), MuonDetLayerGeometry::allCSCLayers(), MuonDetLayerGeometry::allDTLayers(), MuonDetLayerGeometry::allEndcapCscGemLayers(), MuonDetLayerGeometry::allEndcapCscME0Layers(), MuonDetLayerGeometry::allEndcapLayers(), MuonDetLayerGeometry::allGEMLayers(), MuonDetLayerGeometry::allLayers(), MuonDetLayerGeometry::allME0Layers(), Reference_intrackfit_cff::barrel, createInverseLinks(), makeMuonMisalignmentScenario::endcap, Exception, mps_fire::i, linkBarrelLayers(), linkEndcapLayers(), NavigationSchool::theAllDetLayersInSystem, NavigationSchool::theAllNavigableLayer, theBackwardLayers, theBackwardNLC, theForwardLayers, and theForwardNLC.

42  : theMuonDetLayerGeometry(muonLayout) {
43 
44  theAllDetLayersInSystem=&muonLayout->allLayers();
45  theAllNavigableLayer.resize(muonLayout->allLayers().size(),nullptr);
46 
47 
48 
49  // get all barrel DetLayers (DT + optional RPC)
50  vector<const DetLayer*> barrel;
51  if ( enableRPC ) barrel = muonLayout->allBarrelLayers();
52  else barrel = muonLayout->allDTLayers();
53 
54  for ( auto i = barrel.begin(); i != barrel.end(); i++ ) {
55  const BarrelDetLayer* mbp = dynamic_cast<const BarrelDetLayer*>(*i);
56  if ( mbp == nullptr ) throw cms::Exception("MuonNavigationSchool", "Bad BarrelDetLayer");
57  addBarrelLayer(mbp);
58  }
59 
60 
61  // get all endcap DetLayers (CSC + optional RPC, GEM, ME0)
62  vector<const DetLayer*> endcap;
63  if ( enableCSC & enableGEM & enableRPC & enableME0) endcap = muonLayout->allEndcapLayers(); //CSC + RPC + GEM +ME0
64  else if ( enableCSC & enableGEM & !enableRPC & !enableME0) endcap = muonLayout->allEndcapCscGemLayers(); // CSC + GEM
65  else if ( !enableCSC & enableGEM & !enableRPC & !enableME0) endcap = muonLayout->allGEMLayers(); //GEM only
66  else if ( enableCSC & !enableGEM & !enableRPC & !enableME0) endcap = muonLayout->allCSCLayers(); //CSC only
67  else if ( enableCSC & !enableGEM & !enableRPC & enableME0) endcap = muonLayout->allEndcapCscME0Layers(); // CSC + ME0
68  else if ( !enableCSC & !enableGEM & !enableRPC & enableME0) endcap = muonLayout->allME0Layers(); // ME0 only
69  //else endcap = muonLayout->allCSCLayers(); //CSC only for all the remaining cases
70  //Trying allEndcaplayers in all other cases, as in the GEM PR
71  else endcap = muonLayout->allEndcapLayers();
72 
73  for ( auto i = endcap.begin(); i != endcap.end(); i++ ) {
74  const ForwardDetLayer* mep = dynamic_cast<const ForwardDetLayer*>(*i);
75  if ( mep == nullptr ) throw cms::Exception("MuonNavigationSchool", "Bad ForwardDetLayer");
76  addEndcapLayer(mep);
77  }
78 
79  // create outward links for all DetLayers
83 
84  // create inverse links
86 
87 }
void createInverseLinks()
establish inward links
const std::vector< const DetLayer * > & allEndcapCscME0Layers() const
return all endcap DetLayers (CSC+ME0), -Z to +Z
std::vector< MuonForwardNavigableLayer * > theForwardNLC
MapE theBackwardLayers
+z endcap
const std::vector< const DetLayer * > & allEndcapLayers() const
return all endcap DetLayers (CSC+RPC+GEM+ME0), -Z to +Z
void addEndcapLayer(const ForwardDetLayer *)
add endcap layer (backward and forward)
const std::vector< const DetLayer * > & allCSCLayers() const
return the CSC DetLayers (endcap), -Z to +Z
std::vector< MuonForwardNavigableLayer * > theBackwardNLC
StateType theAllNavigableLayer
void linkBarrelLayers()
link barrel layers
const std::vector< const DetLayer * > & allBarrelLayers() const
return all barrel DetLayers (DT+RPC), inside-out
const std::vector< const DetLayer * > * theAllDetLayersInSystem
const std::vector< const DetLayer * > & allME0Layers() const
return the ME0 DetLayers (endcap), -Z to +Z
const std::vector< const DetLayer * > & allDTLayers() const
return the DT DetLayers (barrel), inside-out
void addBarrelLayer(const BarrelDetLayer *)
add barrel layer
void linkEndcapLayers(const MapE &, std::vector< MuonForwardNavigableLayer * > &)
link endcap layers
const MuonDetLayerGeometry * theMuonDetLayerGeometry
const std::vector< const DetLayer * > & allGEMLayers() const
return the GEM DetLayers (endcap), -Z to +Z
const std::vector< const DetLayer * > & allLayers() const
return all layers (DT+CSC+RPC+GEM), order: backward, barrel, forward
const std::vector< const DetLayer * > & allEndcapCscGemLayers() const
return all endcap DetLayers (CSC+GEM), -Z to +Z
MuonNavigationSchool::~MuonNavigationSchool ( )
override

Destructor.

Definition at line 91 of file MuonNavigationSchool.cc.

References theBackwardNLC, theBarrelNLC, and theForwardNLC.

91  {
92 
93  for_each(theBarrelNLC.begin(),theBarrelNLC.end(), delete_layer());
94  for_each(theForwardNLC.begin(),theForwardNLC.end(), delete_layer());
95  for_each(theBackwardNLC.begin(),theBackwardNLC.end(), delete_layer());
96 
97 }
std::vector< MuonForwardNavigableLayer * > theForwardNLC
std::vector< MuonForwardNavigableLayer * > theBackwardNLC
std::vector< MuonBarrelNavigableLayer * > theBarrelNLC
-z endcap

Member Function Documentation

void MuonNavigationSchool::addBarrelLayer ( const BarrelDetLayer mbp)
private

add barrel layer

create barrel layer map

Definition at line 127 of file MuonNavigationSchool.cc.

References calculateEta(), MuonTCMETValueMapProducer_cff::eta_max, MuonME0RecHits_cfi::eta_min, TCMET_cfi::radius, BarrelDetLayer::specificSurface(), and theBarrelLayers.

Referenced by MuonNavigationSchool().

127  {
128 
129  const BoundCylinder& bc = mbp->specificSurface();
130  float radius = bc.radius();
131  float length = bc.bounds().length()/2.;
132 
133  float eta_max = calculateEta(radius, length);
134  float eta_min = -eta_max;
135 
136  theBarrelLayers[mbp] = MuonEtaRange(eta_max, eta_min);
137 
138 }
virtual const BoundCylinder & specificSurface() const final
Extension of the interface.
float calculateEta(const float &, const float &) const
calculate pseudorapidity from r and z
void MuonNavigationSchool::addEndcapLayer ( const ForwardDetLayer mep)
private

add endcap layer (backward and forward)

create forwrad/backward layer maps

Definition at line 142 of file MuonNavigationSchool.cc.

References calculateEta(), MuonTCMETValueMapProducer_cff::eta_max, MuonME0RecHits_cfi::eta_min, ForwardDetLayer::specificSurface(), theBackwardLayers, theForwardLayers, and z.

Referenced by MuonNavigationSchool().

142  {
143 
144  const BoundDisk& bd = mep->specificSurface();
145  float outRadius = bd.outerRadius();
146  float inRadius = bd.innerRadius();
147  float thick = bd.bounds().length()/2.;
148  float z = bd.position().z();
149 
150  if ( z > 0. ) {
151  float eta_min = calculateEta(outRadius, z-thick);
152  float eta_max = calculateEta(inRadius, z+thick);
153  theForwardLayers[mep] = MuonEtaRange(eta_max, eta_min);
154  } else {
155  float eta_max = calculateEta(outRadius, z+thick);
156  float eta_min = calculateEta(inRadius, z-thick);
157  theBackwardLayers[mep] = MuonEtaRange(eta_max, eta_min);
158  }
159 
160 }
MapE theBackwardLayers
+z endcap
float calculateEta(const float &, const float &) const
calculate pseudorapidity from r and z
virtual const BoundDisk & specificSurface() const final
float MuonNavigationSchool::calculateEta ( const float &  r,
const float &  z 
) const
private

calculate pseudorapidity from r and z

Definition at line 164 of file MuonNavigationSchool.cc.

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

Referenced by addBarrelLayer(), and addEndcapLayer().

164  {
165 
166  if ( z > 0 ) return -log((tan(atan(r/z)/2.)));
167  return log(-(tan(atan(r/z)/2.)));
168 
169 }
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
void MuonNavigationSchool::createInverseLinks ( )
private

establish inward links

create inverse links (i.e. inwards)

Definition at line 275 of file MuonNavigationSchool.cc.

References MuonBarrelNavigableLayer::getAllOuterBackwardLayers(), MuonBarrelNavigableLayer::getAllOuterBarrelLayers(), MuonBarrelNavigableLayer::getAllOuterForwardLayers(), MuonBarrelNavigableLayer::getOuterBackwardLayers(), MuonBarrelNavigableLayer::getOuterBarrelLayers(), MuonBarrelNavigableLayer::getOuterForwardLayers(), mps_fire::i, navigableLayers(), MuonForwardNavigableLayer::setInwardCompatibleLinks(), MuonBarrelNavigableLayer::setInwardCompatibleLinks(), MuonForwardNavigableLayer::setInwardLinks(), MuonBarrelNavigableLayer::setInwardLinks(), NavigationSchool::setState(), NavigationSchool::theAllNavigableLayer, theBackwardLayers, theBarrelLayers, and theForwardLayers.

Referenced by MuonNavigationSchool().

275  {
276 
277  // set outward link
278  // NavigationSetter setter(*this);
279 
281 
282 
283  // find for each layer which are the layers pointing to it
284  typedef map<const DetLayer*, MapB, less<const DetLayer*> > BarrelMapType;
285  typedef map<const DetLayer*, MapE, less<const DetLayer*> > ForwardMapType;
286 
287  // map of all DetLayers which can reach a specific DetLayer
288  BarrelMapType reachedBarrelLayersMap;
289  ForwardMapType reachedForwardLayersMap;
290 
291  // map of all DetLayers which is compatible with a specific DetLayer
292  BarrelMapType compatibleBarrelLayersMap;
293  ForwardMapType compatibleForwardLayersMap;
294 
295  // collect all reacheable layers starting from a barrel layer
296  for ( MapBI bli = theBarrelLayers.begin();
297  bli != theBarrelLayers.end(); bli++ ) {
298  // barrel
300  dynamic_cast<MuonBarrelNavigableLayer*>(theAllNavigableLayer[((*bli).first)->seqNum()]);
301  MapB reacheableB = mbnl->getOuterBarrelLayers();
302  for (MapBI i = reacheableB.begin(); i != reacheableB.end(); i++ ) {
303  reachedBarrelLayersMap[(*i).first].insert(*bli);
304  }
305  MapB compatibleB = mbnl->getAllOuterBarrelLayers();
306  for (MapBI i = compatibleB.begin(); i != compatibleB.end(); i++ ) {
307  compatibleBarrelLayersMap[(*i).first].insert(*bli);
308  }
309  MapE reacheableE = mbnl->getOuterBackwardLayers();
310  for (MapEI i = reacheableE.begin(); i != reacheableE.end(); i++ ) {
311  reachedBarrelLayersMap[(*i).first].insert(*bli);
312  }
313  reacheableE = mbnl->getOuterForwardLayers();
314  for (MapEI i = reacheableE.begin(); i != reacheableE.end(); i++ ) {
315  reachedBarrelLayersMap[(*i).first].insert(*bli);
316  }
317  MapE compatibleE = mbnl->getAllOuterBackwardLayers();
318  for (MapEI i = compatibleE.begin(); i != compatibleE.end(); i++ ) {
319  compatibleBarrelLayersMap[(*i).first].insert(*bli);
320  }
321  compatibleE = mbnl->getAllOuterForwardLayers();
322  for (MapEI i = compatibleE.begin(); i != compatibleE.end(); i++ ) {
323  compatibleBarrelLayersMap[(*i).first].insert(*bli);
324  }
325 
326  }
327 
328  // collect all reacheable layer starting from a backward layer
329  for ( MapEI eli = theBackwardLayers.begin();
330  eli != theBackwardLayers.end(); eli++ ) {
331  MapE reacheableE =
332  dynamic_cast<MuonForwardNavigableLayer*>(theAllNavigableLayer[((*eli).first)->seqNum()])->getOuterEndcapLayers();
333  for (MapEI i = reacheableE.begin(); i != reacheableE.end(); i++ ) {
334  reachedForwardLayersMap[(*i).first].insert(*eli);
335  }
336  // collect all compatible layer starting from a backward layer
337  MapE compatibleE =
338  dynamic_cast<MuonForwardNavigableLayer*>(theAllNavigableLayer[((*eli).first)->seqNum()])->getAllOuterEndcapLayers();
339  for (MapEI i = compatibleE.begin(); i != compatibleE.end(); i++ ) {
340  compatibleForwardLayersMap[(*i).first].insert(*eli);
341  }
342  }
343 
344  for ( MapEI eli = theForwardLayers.begin();
345  eli != theForwardLayers.end(); eli++ ) {
346  // collect all reacheable layer starting from a forward layer
347  MapE reacheableE =
348  dynamic_cast<MuonForwardNavigableLayer*>(theAllNavigableLayer[((*eli).first)->seqNum()])->getOuterEndcapLayers();
349  for (MapEI i = reacheableE.begin(); i != reacheableE.end(); i++ ) {
350  reachedForwardLayersMap[(*i).first].insert(*eli);
351  }
352  // collect all compatible layer starting from a forward layer
353  MapE compatibleE =
354  dynamic_cast<MuonForwardNavigableLayer*>(theAllNavigableLayer[((*eli).first)->seqNum()])->getAllOuterEndcapLayers();
355  for (MapEI i = compatibleE.begin(); i != compatibleE.end(); i++ ) {
356  compatibleForwardLayersMap[(*i).first].insert(*eli);
357  }
358  }
359 
360  // now set inverse link for barrel layers
361  for ( MapBI bli = theBarrelLayers.begin();
362  bli != theBarrelLayers.end(); bli++ ) {
364  dynamic_cast<MuonBarrelNavigableLayer*>(theAllNavigableLayer[((*bli).first)->seqNum()]);
365  mbnl->setInwardLinks(reachedBarrelLayersMap[(*bli).first]);
366  mbnl->setInwardCompatibleLinks(compatibleBarrelLayersMap[(*bli).first]);
367 
368  }
369  //BACKWARD
370  for ( MapEI eli = theBackwardLayers.begin();
371  eli != theBackwardLayers.end(); eli++ ) {
373  dynamic_cast<MuonForwardNavigableLayer*>(theAllNavigableLayer[((*eli).first)->seqNum()]);
374  // for backward next layers
375  mfnl->setInwardLinks(reachedBarrelLayersMap[(*eli).first],
376  reachedForwardLayersMap[(*eli).first]);
377  // for backward compatible layers
378  mfnl->setInwardCompatibleLinks(compatibleBarrelLayersMap[(*eli).first],
379  compatibleForwardLayersMap[(*eli).first]);
380  }
381  //FORWARD
382  for ( MapEI eli = theForwardLayers.begin();
383  eli != theForwardLayers.end(); eli++ ) {
385  dynamic_cast<MuonForwardNavigableLayer*>(theAllNavigableLayer[((*eli).first)->seqNum()]);
386  // and for forward next layers
387  mfnl->setInwardLinks(reachedBarrelLayersMap[(*eli).first],
388  reachedForwardLayersMap[(*eli).first]);
389  // and for forward compatible layers
390  mfnl->setInwardCompatibleLinks(compatibleBarrelLayersMap[(*eli).first],
391  compatibleForwardLayersMap[(*eli).first]);
392  }
393 
394 }
StateType navigableLayers() override
return navigable layers, from base class
MapB::const_iterator MapBI
MapE theBackwardLayers
+z endcap
std::map< const BarrelDetLayer *, MTDEtaRange, MTDDetLayerComp > MapB
void setInwardLinks(const MapB &, const MapE &)
set inward links
void setInwardCompatibleLinks(const MapB &)
StateType theAllNavigableLayer
void setInwardLinks(const MapB &)
set inward links
void setInwardCompatibleLinks(const MapB &, const MapE &)
MapE::const_iterator MapEI
void setState(const StateType &state)
std::map< const ForwardDetLayer *, MTDEtaRange, MTDDetLayerComp > MapE
void MuonNavigationSchool::linkBarrelLayers ( )
private

link barrel layers

linking barrel layers outwards

Definition at line 172 of file MuonNavigationSchool.cc.

References theBackwardLayers, theBarrelLayers, theBarrelNLC, and theForwardLayers.

Referenced by MuonNavigationSchool().

172  {
173 
174  for (MapBI bl = theBarrelLayers.begin();
175  bl != theBarrelLayers.end(); bl++) {
176 
177  MuonEtaRange range = (*bl).second;
178 
179  // first add next barrel layer
180  MapBI plusOne(bl);
181  plusOne++;
182  MapB outerBarrel;
183  MapB allOuterBarrel;
184  if ( plusOne != theBarrelLayers.end() ) { outerBarrel.insert(*plusOne);}
185  // add all outer barrel layers
186  for ( MapBI iMBI = plusOne; iMBI!= theBarrelLayers.end(); iMBI++){
187  allOuterBarrel.insert(*iMBI);
188  }
189  // then add all compatible backward layers with an eta criteria
190  MapE allOuterBackward;
191  for (MapEI el = theBackwardLayers.begin();
192  el != theBackwardLayers.end(); el++) {
193  if ( (*el).second.isCompatible(range) ) {
194  allOuterBackward.insert(*el);
195  }
196  }
197  //add the backward next layer with an eta criteria
198  MapE outerBackward;
199  for (MapEI el = theBackwardLayers.begin();
200  el != theBackwardLayers.end(); el++) {
201  if ( (*el).second.isCompatible(range) ) {
202  outerBackward.insert(*el);
203  break;
204  }
205  }
206 
207  // then add all compatible forward layers with an eta criteria
208  MapE allOuterForward;
209  for (MapEI el = theForwardLayers.begin();
210  el != theForwardLayers.end(); el++) {
211  if ( (*el).second.isCompatible(range) ) {
212  allOuterForward.insert(*el);
213  }
214  }
215 
216  // then add forward next layer with an eta criteria
217  MapE outerForward;
218  for (MapEI el = theForwardLayers.begin();
219  el != theForwardLayers.end(); el++) {
220  if ( (*el).second.isCompatible(range) ) {
221  outerForward.insert(*el);
222  break;
223  }
224  }
225 
227  (*bl).first,outerBarrel, outerBackward, outerForward,
228  allOuterBarrel,allOuterBackward,allOuterForward));
229 
230  }
231 
232 }
MapB::const_iterator MapBI
MapE theBackwardLayers
+z endcap
std::map< const BarrelDetLayer *, MTDEtaRange, MTDDetLayerComp > MapB
std::vector< MuonBarrelNavigableLayer * > theBarrelNLC
-z endcap
MapE::const_iterator MapEI
std::map< const ForwardDetLayer *, MTDEtaRange, MTDDetLayerComp > MapE
void MuonNavigationSchool::linkEndcapLayers ( const MapE layers,
std::vector< MuonForwardNavigableLayer * > &  result 
)
private

link endcap layers

linking forward/backward layers outwards

Definition at line 234 of file MuonNavigationSchool.cc.

References MuonEtaRange::add(), MuonEtaRange::isCompatible(), MuonEtaRange::isInside(), checklumidiff::l, SiStripPI::max, GetRecoTauVFromDQM_MC_cff::next, and MuonEtaRange::subtract().

Referenced by MuonNavigationSchool().

235  {
236 
237  for (MapEI el = layers.begin(); el != layers.end(); el++) {
238 
239  MuonEtaRange range = (*el).second;
240  // first add next endcap layer (if compatible)
241  MapEI plusOne(el);
242  plusOne++;
243  MapE outerLayers;
244  if ( plusOne != layers.end() && (*plusOne).second.isCompatible(range) ) {
245  outerLayers.insert(*plusOne);
246  if ( !range.isInside((*plusOne).second) ) {
247  // then look if the next layer has a wider eta range, if so add it
248  MapEI tmpel(plusOne);
249  tmpel++;
250  MuonEtaRange max((*plusOne).second);
251  for ( MapEI l = tmpel; l != layers.end(); l++ ) {
252  MuonEtaRange next = (*l).second;
253  if ( next.isCompatible(max) && !range.isInside(next) &&
254  !next.isInside(max) && next.subtract(max).isInside(range) ) {
255  max = max.add(next);
256  outerLayers.insert(*l);
257  }
258  }
259  }
260  }
261 
262  MapE allOuterLayers;
263  for (MapEI iMEI = plusOne; iMEI!=layers.end(); iMEI++){
264  if ((*iMEI).second.isCompatible(range)) allOuterLayers.insert(*iMEI);
265  }
266 
267  result.push_back(new MuonForwardNavigableLayer(
268  (*el).first,outerLayers, allOuterLayers));
269  }
270 
271 }
std::vector< LayerSetAndLayers > layers(const SeedingLayerSetsHits &sets)
Definition: LayerTriplets.cc:4
bool isInside(float eta, float error=0.) const
Definition: MuonEtaRange.cc:43
bool isCompatible(const MuonEtaRange &range) const
true if this overlaps with range
Definition: MuonEtaRange.cc:54
MapE::const_iterator MapEI
MuonEtaRange subtract(const MuonEtaRange &) const
create new range of size this minus range
Definition: MuonEtaRange.cc:65
std::map< const ForwardDetLayer *, MTDEtaRange, MTDDetLayerComp > MapE
MuonNavigationSchool::StateType MuonNavigationSchool::navigableLayers ( )
overridevirtual

return navigable layers, from base class

return all Navigable layers

Implements NavigationSchool.

Definition at line 102 of file MuonNavigationSchool.cc.

References cuy::ib, mps_fire::result, theBackwardNLC, theBarrelNLC, and theForwardNLC.

Referenced by createInverseLinks().

102  {
103 
105 
106  vector<MuonBarrelNavigableLayer*>::const_iterator ib;
107  vector<MuonForwardNavigableLayer*>::const_iterator ie;
108 
109  for ( ib = theBarrelNLC.begin(); ib != theBarrelNLC.end(); ib++ ) {
110  result.push_back(*ib);
111  }
112 
113  for ( ie = theForwardNLC.begin(); ie != theForwardNLC.end(); ie++ ) {
114  result.push_back(*ie);
115  }
116 
117  for ( ie = theBackwardNLC.begin(); ie != theBackwardNLC.end(); ie++ ) {
118  result.push_back(*ie);
119  }
120 
121  return result;
122 
123 }
std::vector< MuonForwardNavigableLayer * > theForwardNLC
std::vector< MuonForwardNavigableLayer * > theBackwardNLC
std::vector< MuonBarrelNavigableLayer * > theBarrelNLC
-z endcap
std::vector< NavigableLayer * > StateType
ib
Definition: cuy.py:662

Member Data Documentation

MapE MuonNavigationSchool::theBackwardLayers
private

+z endcap

Definition at line 78 of file MuonNavigationSchool.h.

Referenced by addEndcapLayer(), createInverseLinks(), linkBarrelLayers(), and MuonNavigationSchool().

std::vector<MuonForwardNavigableLayer*> MuonNavigationSchool::theBackwardNLC
private
MapB MuonNavigationSchool::theBarrelLayers
private

Definition at line 76 of file MuonNavigationSchool.h.

Referenced by addBarrelLayer(), createInverseLinks(), and linkBarrelLayers().

std::vector<MuonBarrelNavigableLayer*> MuonNavigationSchool::theBarrelNLC
private

-z endcap

Definition at line 80 of file MuonNavigationSchool.h.

Referenced by linkBarrelLayers(), navigableLayers(), and ~MuonNavigationSchool().

MapE MuonNavigationSchool::theForwardLayers
private
std::vector<MuonForwardNavigableLayer*> MuonNavigationSchool::theForwardNLC
private
const MuonDetLayerGeometry* MuonNavigationSchool::theMuonDetLayerGeometry
private

Definition at line 84 of file MuonNavigationSchool.h.