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,2> hitPair;
173 for(
int i=0;
i<2;
i++){
182 pairCandidate =
ls.slice(
p,
p+2);
191 assert(found ==
true);
194 std::vector<BaseTrackerRecHit const *> fHits{hits[
i]};
195 std::vector<BaseTrackerRecHit const *> sHits{hits[i+1]};
198 auto& layerCache =
filler.layerHitMapCache();
205 std::vector<OrderedHitSeeds> tripletresult;
207 for(
auto& ntuplet : tripletresult)
210 return !tripletresult.empty();
218 throw cms::Exception(
"FastSimTracking") <<
"For the given configuration, SeedFinderSelector::pass requires at least 4 hits";
222 throw cms::Exception(
"FastSimTracking") <<
"ERROR: SeedingLayers pointer not set for CAHitQuadrupletGenerator";
231 std::array<SeedingLayerSetsBuilder::SeedingLayerId,2> hitPair;
232 for(
int i=0;
i<3;
i++){
241 pairCandidate =
ls.slice(
p,
p+2);
250 assert(found ==
true);
253 std::vector<BaseTrackerRecHit const *> fHits{hits[
i]};
254 std::vector<BaseTrackerRecHit const *> sHits{hits[i+1]};
257 auto& layerCache =
filler.layerHitMapCache();
265 std::vector<OrderedHitSeeds> quadrupletresult;
267 for(
auto& ntuplet : quadrupletresult)
270 return !quadrupletresult.empty();
300 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
def create(alignables, pedeDump, additionalData, outputFile, config)
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_