Back to home page

Project CMSSW displayed by LXR

 
 

    


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   //new for Phase1
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