Go to the documentation of this file.00001 #ifndef TkDetLayers_CompositeTECPetal_h
00002 #define TkDetLayers_CompositeTECPetal_h
00003
00004
00005 #include "TrackingTools/DetLayers/interface/GeometricSearchDet.h"
00006 #include "TECPetal.h"
00007 #include "TECWedge.h"
00008 #include "SubLayerCrossings.h"
00009
00010 #include "FWCore/Utilities/interface/Visibility.h"
00011
00012
00016 #pragma GCC visibility push(hidden)
00017 class CompositeTECPetal GCC11_FINAL : public TECPetal{
00018 public:
00019 CompositeTECPetal(std::vector<const TECWedge*>& innerWedges,
00020 std::vector<const TECWedge*>& outerWedges);
00021
00022 ~CompositeTECPetal();
00023
00024
00025 virtual const std::vector<const GeomDet*>& basicComponents() const {return theBasicComps;}
00026
00027 virtual const std::vector<const GeometricSearchDet*>& components() const {return theComps;}
00028
00029 virtual std::pair<bool, TrajectoryStateOnSurface>
00030 compatible( const TrajectoryStateOnSurface& ts, const Propagator&,
00031 const MeasurementEstimator&) const;
00032
00033 virtual void
00034 groupedCompatibleDetsV( const TrajectoryStateOnSurface& startingState,
00035 const Propagator& prop,
00036 const MeasurementEstimator& est,
00037 std::vector<DetGroup> & result) const;
00038
00039
00040 private:
00041
00042 SubLayerCrossings computeCrossings(const TrajectoryStateOnSurface& tsos,
00043 PropagationDirection propDir) const dso_internal;
00044
00045
00046
00047 bool addClosest( const TrajectoryStateOnSurface& tsos,
00048 const Propagator& prop,
00049 const MeasurementEstimator& est,
00050 const SubLayerCrossing& crossing,
00051 std::vector<DetGroup>& result) const dso_internal;
00052
00053 void searchNeighbors( const TrajectoryStateOnSurface& tsos,
00054 const Propagator& prop,
00055 const MeasurementEstimator& est,
00056 const SubLayerCrossing& crossing,
00057 float window,
00058 std::vector<DetGroup>& result,
00059 bool checkClosest) const dso_internal;
00060
00061 static
00062 bool overlap( const GlobalPoint& gpos, const GeometricSearchDet& rod, float window) dso_internal;
00063
00064 static
00065 float computeWindowSize( const GeomDet* det,
00066 const TrajectoryStateOnSurface& tsos,
00067 const MeasurementEstimator& est) dso_internal;
00068
00069 int findBin( float R,int layer) const dso_internal;
00070
00071 GlobalPoint findPosition(int index,int diskSectorIndex) const dso_internal;
00072
00073 const std::vector<const GeometricSearchDet*>& subLayer( int ind) const dso_internal {
00074 return (ind==0 ? theFrontComps : theBackComps);
00075 }
00076
00077
00078 private:
00079 std::vector<const GeometricSearchDet*> theComps;
00080 std::vector<const GeometricSearchDet*> theFrontComps;
00081 std::vector<const GeometricSearchDet*> theBackComps;
00082 std::vector<const GeomDet*> theBasicComps;
00083
00084 std::vector<float> theFrontBoundaries;
00085 std::vector<float> theBackBoundaries;
00086
00087 ReferenceCountingPointer<BoundDiskSector> theFrontSector;
00088 ReferenceCountingPointer<BoundDiskSector> theBackSector;
00089
00090 };
00091
00092
00093 #pragma GCC visibility pop
00094 #endif