CMS 3D CMS Logo

MuonNavigationSchool.h
Go to the documentation of this file.
1 #ifndef Navigation_MuonNavigationSchool_H
2 #define Navigation_MuonNavigationSchool_H
3 
30 #include <vector>
31 #include <map>
32 
35 class MuonEtaRange;
36 class BarrelDetLayer;
37 class ForwardDetLayer;
38 
40 
41  public:
43  MuonNavigationSchool(const MuonDetLayerGeometry *, bool enableRPC = true, bool enableCSC = true, bool enableGEM = false, bool enableME0 = false);
45  ~MuonNavigationSchool() override;
47  StateType navigableLayers() override;
48  private:
50  void addBarrelLayer(const BarrelDetLayer*);
52  void addEndcapLayer(const ForwardDetLayer*);
54  void linkBarrelLayers();
56  void linkEndcapLayers(const MapE&,std::vector<MuonForwardNavigableLayer*>&);
58  void createInverseLinks();
59  float calculateEta(const float&, const float& ) const;
60 
61  private:
62 
63  struct delete_layer
64  {
65  template <typename T>
66  void operator()(T*& p)
67  {
68  if( p)
69  {
70  delete p;
71  p = nullptr;
72  }
73  }
74  };
75 
79 
80  std::vector<MuonBarrelNavigableLayer*> theBarrelNLC;
81  std::vector<MuonForwardNavigableLayer*> theForwardNLC;
82  std::vector<MuonForwardNavigableLayer*> theBackwardNLC;
83 
85 
86 };
87 #endif
void createInverseLinks()
establish inward links
StateType navigableLayers() override
return navigable layers, from base class
std::vector< MuonForwardNavigableLayer * > theForwardNLC
MapE theBackwardLayers
+z endcap
std::map< const BarrelDetLayer *, MTDEtaRange, MTDDetLayerComp > MapB
void addEndcapLayer(const ForwardDetLayer *)
add endcap layer (backward and forward)
std::vector< MuonForwardNavigableLayer * > theBackwardNLC
float calculateEta(const float &, const float &) const
calculate pseudorapidity from r and z
std::vector< MuonBarrelNavigableLayer * > theBarrelNLC
-z endcap
void linkBarrelLayers()
link barrel layers
std::vector< NavigableLayer * > StateType
void addBarrelLayer(const BarrelDetLayer *)
add barrel layer
~MuonNavigationSchool() override
Destructor.
void linkEndcapLayers(const MapE &, std::vector< MuonForwardNavigableLayer * > &)
link endcap layers
const MuonDetLayerGeometry * theMuonDetLayerGeometry
MuonNavigationSchool(const MuonDetLayerGeometry *, bool enableRPC=true, bool enableCSC=true, bool enableGEM=false, bool enableME0=false)
Constructor.
long double T
std::map< const ForwardDetLayer *, MTDEtaRange, MTDDetLayerComp > MapE