28 , measurementTrackerLabel_(cfg.getParameter<
std::
string>(
"measurementTracker"))
30 if(cfg.
exists(
"pixelTripletGeneratorFactory"))
36 if(cfg.
exists(
"MultiHitGeneratorFactory"))
42 if(cfg.
exists(
"CAHitTripletGeneratorFactory"))
47 layerPairs_ = cfg.getParameter<std::vector<unsigned>>(
"layerPairs");
50 if(cfg.
exists(
"CAHitQuadrupletGeneratorFactory"))
53 CAHitQuadGenerator_ = std::make_unique<CAHitQuadrupletGenerator>(quadrupletConfig, consumesCollector);
55 layerPairs_ = cfg.getParameter<std::vector<unsigned>>(
"layerPairs");
60 throw cms::Exception(
"FastSimTracking") <<
"It is forbidden to specify together 'pixelTripletGeneratorFactory', 'CAHitTripletGeneratorFactory' and 'MultiHitGeneratorFactory' in configuration of SeedFinderSelection";
64 throw cms::Exception(
"FastSimTracking") <<
"It is forbidden to specify 'CAHitQuadrupletGeneratorFactory' together with 'pixelTripletGeneratorFactory', 'CAHitTripletGeneratorFactory' or 'MultiHitGeneratorFactory' in configuration of SeedFinderSelection";
104 throw cms::Exception(
"FastSimTracking") <<
"ERROR: event not initialized";
108 throw cms::Exception(
"FastSimTracking") <<
"ERROR: trackingRegion not set";
115 throw cms::Exception(
"FastSimTracking") <<
"SeedFinderSelector::pass requires at least 2 hits";
120 std::vector<BaseTrackerRecHit const *> firstHits{hits[0]};
121 std::vector<BaseTrackerRecHit const *> secondHits{hits[1]};
139 throw cms::Exception(
"FastSimTracking") <<
"For the given configuration, SeedFinderSelector::pass requires at least 3 hits";
142 std::vector<const DetLayer *> thirdLayerDetLayer(1,thirdLayer);
143 std::vector<BaseTrackerRecHit const *> thirdHits{hits[2]};
151 return !tripletresult.empty();
157 return !tripletresult.empty();
163 throw cms::Exception(
"FastSimTracking") <<
"ERROR: SeedingLayers pointer not set for CATripletGenerator";
172 std::array<SeedingLayerSetsBuilder::SeedingLayerId,3> hitPair;
183 std::vector<BaseTrackerRecHit const *> fHits{hits[0]};
184 std::vector<BaseTrackerRecHit const *> sHits{hits[1]};
185 std::vector<BaseTrackerRecHit const *> tHits{hits[2]};
192 pairCandidate =
ls.slice(
p,
p+2);
194 pairCandidate1=pairCandidate;
196 pairCandidate2=pairCandidate;
201 auto& layerCache =
filler.layerHitMapCache();
214 std::vector<OrderedHitSeeds> tripletresult;
216 for(
auto& ntuplet : tripletresult)
219 return !tripletresult[0].empty();
227 throw cms::Exception(
"FastSimTracking") <<
"For the given configuration, SeedFinderSelector::pass requires at least 4 hits";
231 throw cms::Exception(
"FastSimTracking") <<
"ERROR: SeedingLayers pointer not set for CAHitQuadrupletGenerator";
240 std::array<SeedingLayerSetsBuilder::SeedingLayerId,4> hitPair;
253 std::vector<BaseTrackerRecHit const *> fHits{hits[0]};
254 std::vector<BaseTrackerRecHit const *> sHits{hits[1]};
255 std::vector<BaseTrackerRecHit const *> tHits{hits[2]};
256 std::vector<BaseTrackerRecHit const *> frHits{hits[3]};
263 pairCandidate =
ls.slice(
p,
p+2);
265 pairCandidate1=pairCandidate;
267 pairCandidate2=pairCandidate;
269 pairCandidate3=pairCandidate;
274 auto& layerCache =
filler.layerHitMapCache();
291 std::vector<OrderedHitSeeds> quadrupletresult;
293 for(
auto& ntuplet : quadrupletresult)
296 return !quadrupletresult[0].empty();
326 return std::make_tuple(subdet, side, idLayer);
T getParameter(std::string const &) const
bool pass(const std::vector< const FastTrackerRecHit * > &hits) const
std::vector< LayerSetAndLayers > layers(const SeedingLayerSetsHits &sets)
std::unique_ptr< CAHitQuadrupletGenerator > CAHitQuadGenerator_
const edm::EventSetup * eventSetup_
GlobalPoint const & origin() const
std::unique_ptr< SeedingLayerSetsHits > seedingLayer
unsigned int pxfDisk(const DetId &id) const
bool exists(std::string const ¶meterName) const
checks if a parameter exists
SeedFinderSelector(const edm::ParameterSet &cfg, edm::ConsumesCollector &&consumesCollector)
std::unique_ptr< HitTripletGeneratorFromPairAndLayers > pixelTripletGenerator_
std::vector< SeedingLayerSetsBuilder::SeedingLayerId > seedingLayerIds
SeedingLayerSetsBuilder::SeedingLayerId Layer_tuple(const FastTrackerRecHit *hit) const
std::tuple< GeomDetEnumerators::SubDetector, TrackerDetSide, int > SeedingLayerId
const GeomDet * det() const
std::vector< unsigned > layerPairs_
const TrackingRegion * trackingRegion_
const DetLayer * detLayer(const DetId &id) const
obsolete method. Use idToLayer() instead.
DetId geographicalId() const
The label of this GeomDet.
HitDoublets doublets(const TrackingRegion ®, const edm::Event &ev, const edm::EventSetup &es, Layers layers)
edm::ESHandle< TrackerTopology > trackerTopology
unsigned int pxbLayer(const DetId &id) const
void initEvent(const edm::Event &ev, const edm::EventSetup &es)
std::unique_ptr< SeedingLayerSetsBuilder > seedingLayers_
const MeasurementTracker * measurementTracker_
unsigned int pxfSide(const DetId &id) const
const GeometricSearchTracker * geometricSearchTracker() const
const std::string measurementTrackerLabel_
T const * product() const
std::unique_ptr< CAHitTripletGenerator > CAHitTriplGenerator_
T get(const Candidate &c)
std::unique_ptr< MultiHitGeneratorFromPairAndLayers > multiHitGenerator_