File indexing completed on 2023-04-15 01:47:33
0001 #ifndef RecoTracker_PixelLowPtUtilities_PixelTripletLowPtGenerator_h
0002 #define RecoTracker_PixelLowPtUtilities_PixelTripletLowPtGenerator_h
0003
0004
0005
0006
0007
0008
0009
0010 #include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h"
0011 #include "Geometry/Records/interface/TrackerDigiGeometryRecord.h"
0012 #include "DataFormats/TrackerCommon/interface/TrackerTopology.h"
0013 #include "Geometry/Records/interface/TrackerTopologyRcd.h"
0014
0015 #include "FWCore/Framework/interface/EventSetup.h"
0016 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0017 #include "FWCore/Utilities/interface/EDGetToken.h"
0018 #include "RecoTracker/PixelSeeding/interface/HitTripletGeneratorFromPairAndLayers.h"
0019
0020 #include "RecoTracker/PixelLowPtUtilities/interface/TripletFilter.h"
0021
0022 class IdealMagneticFieldRecord;
0023 class MultipleScatteringParametrisationMaker;
0024 class TrackerMultipleScatteringRecord;
0025 class SiPixelClusterShapeCache;
0026 class TrackerGeometry;
0027 class TransientTrackingRecHitBuilder;
0028 class TransientRecHitRecord;
0029 class TripletFilter;
0030 class ClusterShapeHitFilter;
0031 class CkfComponentsRecord;
0032
0033 #include <vector>
0034
0035 class PixelTripletLowPtGenerator : public HitTripletGeneratorFromPairAndLayers {
0036 public:
0037 PixelTripletLowPtGenerator(const edm::ParameterSet& cfg, edm::ConsumesCollector& iC);
0038
0039 ~PixelTripletLowPtGenerator() override;
0040
0041 void hitTriplets(const TrackingRegion& region,
0042 OrderedHitTriplets& trs,
0043 const edm::Event& ev,
0044 const edm::EventSetup& es,
0045 const SeedingLayerSetsHits::SeedingLayerSet& pairLayers,
0046 const std::vector<SeedingLayerSetsHits::SeedingLayer>& thirdLayers) override;
0047 void hitTriplets(const TrackingRegion& region,
0048 OrderedHitTriplets& result,
0049 const edm::EventSetup& es,
0050 const HitDoublets& doublets,
0051 const RecHitsSortedInPhi** thirdHitMap,
0052 const std::vector<const DetLayer*>& thirdLayerDetLayer,
0053 const int nThirdLayers) override;
0054
0055 private:
0056 edm::ESGetToken<TrackerGeometry, TrackerDigiGeometryRecord> m_geomToken;
0057 edm::ESGetToken<TrackerTopology, TrackerTopologyRcd> m_topoToken;
0058 edm::ESGetToken<MagneticField, IdealMagneticFieldRecord> m_magfieldToken;
0059 edm::ESGetToken<TransientTrackingRecHitBuilder, TransientRecHitRecord> m_ttrhBuilderToken;
0060 edm::ESGetToken<MultipleScatteringParametrisationMaker, TrackerMultipleScatteringRecord> m_msmakerToken;
0061 edm::ESGetToken<ClusterShapeHitFilter, CkfComponentsRecord> m_clusterFilterToken;
0062
0063 void getTracker(const edm::EventSetup& es);
0064 GlobalPoint getGlobalPosition(const TrackingRecHit* recHit);
0065
0066 const TrackerGeometry* theTracker;
0067 std::unique_ptr<TripletFilter> theFilter;
0068
0069 edm::EDGetTokenT<SiPixelClusterShapeCache> theClusterShapeCacheToken;
0070 double nSigMultipleScattering;
0071 double rzTolerance;
0072 double maxAngleRatio;
0073
0074 bool checkMultipleScattering;
0075 bool checkClusterShape;
0076 };
0077
0078 #endif