Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2021-04-12 23:30:37

0001 #ifndef TkDetLayers_GeometricSearchTracker_h
0002 #define TkDetLayers_GeometricSearchTracker_h
0003 
0004 #include "TrackingTools/DetLayers/interface/BarrelDetLayer.h"
0005 #include "TrackingTools/DetLayers/interface/ForwardDetLayer.h"
0006 #include "TrackingTools/DetLayers/interface/DetLayerGeometry.h"
0007 #include "RecoMTD/DetLayers/interface/MTDDetLayerGeometry.h"
0008 
0009 class TrackerTopology;
0010 
0011 /** GeometricSearchTracker implementation
0012  *  
0013  */
0014 
0015 class GeometricSearchTracker : public DetLayerGeometry {
0016 public:
0017   GeometricSearchTracker(const std::vector<BarrelDetLayer const*>& pxlBar,
0018                          const std::vector<BarrelDetLayer const*>& tib,
0019                          const std::vector<BarrelDetLayer const*>& tob,
0020                          const std::vector<ForwardDetLayer const*>& negPxlFwd,
0021                          const std::vector<ForwardDetLayer const*>& negTid,
0022                          const std::vector<ForwardDetLayer const*>& negTec,
0023                          const std::vector<ForwardDetLayer const*>& posPxlFwd,
0024                          const std::vector<ForwardDetLayer const*>& posTid,
0025                          const std::vector<ForwardDetLayer const*>& posTec,
0026                          const TrackerTopology* tTopo) __attribute__((cold));
0027 
0028   ~GeometricSearchTracker() override __attribute__((cold));
0029 
0030   void addDetLayerGeometry();
0031 
0032   void addMTDLayers(const std::vector<BarrelDetLayer const*>& btl,
0033                     const std::vector<ForwardDetLayer const*>& negEtl,
0034                     const std::vector<ForwardDetLayer const*>& posEtl);
0035 
0036   std::vector<DetLayer const*> const& allLayers() const { return theAllLayers; }
0037 
0038   std::vector<BarrelDetLayer const*> const& barrelLayers() const { return theBarrelLayers; }
0039 
0040   std::vector<ForwardDetLayer const*> const& forwardLayers() const { return theForwardLayers; }
0041   std::vector<ForwardDetLayer const*> const& negForwardLayers() const { return theNegForwardLayers; }
0042   std::vector<ForwardDetLayer const*> const& posForwardLayers() const { return thePosForwardLayers; }
0043 
0044   std::vector<BarrelDetLayer const*> const& pixelBarrelLayers() const { return thePixelBarrelLayers; }
0045   std::vector<BarrelDetLayer const*> const& tibLayers() const { return theTibLayers; }
0046   std::vector<BarrelDetLayer const*> const& tobLayers() const { return theTobLayers; }
0047 
0048   std::vector<ForwardDetLayer const*> const& negPixelForwardLayers() const { return theNegPixelForwardLayers; }
0049   std::vector<ForwardDetLayer const*> const& negTidLayers() const { return theNegTidLayers; }
0050   std::vector<ForwardDetLayer const*> const& negTecLayers() const { return theNegTecLayers; }
0051 
0052   std::vector<ForwardDetLayer const*> const& posPixelForwardLayers() const { return thePosPixelForwardLayers; }
0053   std::vector<ForwardDetLayer const*> const& posTidLayers() const { return thePosTidLayers; }
0054   std::vector<ForwardDetLayer const*> const& posTecLayers() const { return thePosTecLayers; }
0055 
0056   /// Give the DetId of a module, returns the pointer to the corresponding DetLayer
0057   const DetLayer* idToLayer(const DetId& detId) const override;
0058 
0059   /// obsolete method. Use idToLayer() instead.
0060   const DetLayer* detLayer(const DetId& id) const { return idToLayer(id); };
0061 
0062   //Need to make this pointer public so the tracker builder can build the MTD
0063   MTDDetLayerGeometry* mtdDetLayerGeometry;
0064 
0065 private:
0066   std::vector<DetLayer const*> theAllLayers;
0067   std::vector<BarrelDetLayer const*> theBarrelLayers;
0068   std::vector<ForwardDetLayer const*> theForwardLayers;
0069   std::vector<ForwardDetLayer const*> theNegForwardLayers;
0070   std::vector<ForwardDetLayer const*> thePosForwardLayers;
0071 
0072   std::vector<BarrelDetLayer const*> thePixelBarrelLayers;
0073   std::vector<BarrelDetLayer const*> theTibLayers;
0074   std::vector<BarrelDetLayer const*> theTobLayers;
0075 
0076   std::vector<ForwardDetLayer const*> theNegPixelForwardLayers;
0077   std::vector<ForwardDetLayer const*> theNegTidLayers;
0078   std::vector<ForwardDetLayer const*> theNegTecLayers;
0079   std::vector<ForwardDetLayer const*> thePosPixelForwardLayers;
0080   std::vector<ForwardDetLayer const*> thePosTidLayers;
0081   std::vector<ForwardDetLayer const*> thePosTecLayers;
0082 
0083   //MTD stuff
0084   std::vector<BarrelDetLayer const*> theBTLLayers;
0085   std::vector<ForwardDetLayer const*> theETLLayers;
0086   std::vector<ForwardDetLayer const*> theNegETLLayers;
0087   std::vector<ForwardDetLayer const*> thePosETLLayers;
0088 
0089   const TrackerTopology* theTrkTopo;
0090 };
0091 
0092 #endif