File indexing completed on 2024-04-06 12:31:26
0001 #ifndef DetLayers_BarrelDetLayer_H
0002 #define DetLayers_BarrelDetLayer_H
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014 #include "TrackingTools/DetLayers/interface/DetLayer.h"
0015
0016 #include "DataFormats/GeometrySurface/interface/ReferenceCounted.h"
0017 #include "DataFormats/GeometrySurface/interface/BoundCylinder.h"
0018
0019 #include <vector>
0020 #include <algorithm>
0021
0022 class BarrelDetLayer : public DetLayer {
0023 public:
0024 BarrelDetLayer(bool doHaveGroup) : DetLayer(doHaveGroup, true), theCylinder(nullptr) {}
0025
0026 ~BarrelDetLayer() override;
0027
0028
0029 const BoundSurface& surface() const final { return *theCylinder; }
0030
0031 std::pair<bool, TrajectoryStateOnSurface> compatible(const TrajectoryStateOnSurface& ts,
0032 const Propagator&,
0033 const MeasurementEstimator&) const final;
0034
0035
0036 Location location() const final { return GeomDetEnumerators::barrel; }
0037
0038
0039 virtual const BoundCylinder& specificSurface() const final { return *theCylinder; }
0040
0041 bool contains(const Local3DPoint& p) const;
0042
0043 protected:
0044 virtual void initialize();
0045
0046 void setSurface(BoundCylinder* cp);
0047 virtual BoundCylinder* computeSurface();
0048
0049 SimpleCylinderBounds const& bounds() const { return static_cast<SimpleCylinderBounds const&>(theCylinder->bounds()); }
0050
0051 private:
0052
0053 ReferenceCountingPointer<BoundCylinder> theCylinder;
0054 };
0055
0056 #endif