File indexing completed on 2024-04-06 12:11:22
0001 #ifndef SEEDFINDERSELECTOR_H
0002 #define SEEDFINDERSELECTOR_H
0003
0004 #include <vector>
0005 #include <memory>
0006 #include <string>
0007
0008 #include "DataFormats/TrackerCommon/interface/TrackerTopology.h"
0009 #include "Geometry/Records/interface/TrackerTopologyRcd.h"
0010 #include "TrackingTools/TransientTrackingRecHit/interface/SeedingLayerSetsHits.h"
0011 #include "RecoTracker/MeasurementDet/interface/MeasurementTracker.h"
0012 #include "RecoTracker/Record/interface/CkfComponentsRecord.h"
0013 #include "RecoTracker/TkSeedingLayers/interface/SeedingLayerSetsBuilder.h"
0014 #include "FWCore/Framework/interface/FrameworkfwdMostUsed.h"
0015 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0016 #include "FWCore/Utilities/interface/ESGetToken.h"
0017
0018 class TrackingRegion;
0019 class FastTrackerRecHit;
0020 class MultiHitGeneratorFromPairAndLayers;
0021 class HitTripletGeneratorFromPairAndLayers;
0022 class CAHitTripletGenerator;
0023 class CAHitQuadrupletGenerator;
0024 class IdealMagneticFieldRecord;
0025 class MagneticField;
0026 class MultipleScatteringParametrisationMaker;
0027 class TrackerMultipleScatteringRecord;
0028
0029 class SeedFinderSelector {
0030 public:
0031 SeedFinderSelector(const edm::ParameterSet&, edm::ConsumesCollector&&);
0032
0033 ~SeedFinderSelector();
0034
0035 void initEvent(const edm::Event&, const edm::EventSetup&);
0036
0037 void setTrackingRegion(const TrackingRegion* trackingRegion) { trackingRegion_ = trackingRegion; }
0038
0039 bool pass(const std::vector<const FastTrackerRecHit*>& hits) const;
0040
0041 SeedingLayerSetsBuilder::SeedingLayerId Layer_tuple(const FastTrackerRecHit* hit) const;
0042
0043 private:
0044 std::unique_ptr<HitTripletGeneratorFromPairAndLayers> pixelTripletGenerator_;
0045 std::unique_ptr<MultiHitGeneratorFromPairAndLayers> multiHitGenerator_;
0046 const TrackingRegion* trackingRegion_;
0047 const edm::EventSetup* eventSetup_;
0048 const MeasurementTracker* measurementTracker_;
0049 const std::string measurementTrackerLabel_;
0050 const edm::ESGetToken<MeasurementTracker, CkfComponentsRecord> measurementTrackerESToken_;
0051 const edm::ESGetToken<TrackerTopology, TrackerTopologyRcd> trackerTopologyESToken_;
0052 const edm::ESGetToken<MagneticField, IdealMagneticFieldRecord> fieldESToken_;
0053 const edm::ESGetToken<MultipleScatteringParametrisationMaker, TrackerMultipleScatteringRecord> msMakerESToken_;
0054 const TrackerTopology* trackerTopology_ = nullptr;
0055 const MagneticField* field_ = nullptr;
0056 const MultipleScatteringParametrisationMaker* msmaker_ = nullptr;
0057 std::unique_ptr<CAHitTripletGenerator> CAHitTriplGenerator_;
0058 std::unique_ptr<CAHitQuadrupletGenerator> CAHitQuadGenerator_;
0059 std::unique_ptr<SeedingLayerSetsBuilder> seedingLayers_;
0060 std::unique_ptr<SeedingLayerSetsHits> seedingLayer;
0061 std::vector<unsigned> layerPairs_;
0062 std::vector<SeedingLayerSetsBuilder::SeedingLayerId> seedingLayerIds;
0063 };
0064
0065 #endif