44 merger_(iConfig.getParameter<edm::
ParameterSet>(
"layerList"), consumesCollector())
52 if(comparitorName !=
"none") {
61 produces<RegionsSeedingHitSets>();
62 produces<TrajectorySeedCollection>();
69 desc.
add<
std::string>(
"ttrhBuilderLabel",
"PixelTTRHBuilderWithoutAngle");
70 desc.
add<
bool>(
"mergeTriplets",
true);
71 desc.
add<
bool>(
"addRemainingTriplets",
false);
83 descComparitor.setAllowAnything();
89 descriptions.
add(
"pixelQuadrupletMergerEDProducer", desc);
95 const auto& regionTriplets = *htriplets;
98 if(regionTriplets.empty()) {
105 auto tmpSeedCollection = std::make_unique<TrajectorySeedCollection>();
113 LogDebug(
"PixelQuadrupletMergerEDProducer") <<
"Creating quadruplets for " << regionTriplets.regionSize() <<
" regions from " << regionTriplets.size() <<
" triplets";
119 for(
const auto& regionSeedingHitSets: regionTriplets) {
127 for(
const auto& hits: regionSeedingHitSets) {
136 for(
const auto&
seed: *tmpSeedCollection) {
137 auto hitRange =
seed.recHits();
139 tripletsPerRegion.emplace_back(static_cast<SeedingHitSet::ConstRecHitPointer>(&*(hitRange.first)),
140 static_cast<SeedingHitSet::ConstRecHitPointer>(&*(hitRange.first+1)),
141 static_cast<SeedingHitSet::ConstRecHitPointer>(&*(hitRange.first+2)));
144 LogTrace(
"PixelQuadrupletEDProducer") <<
" starting region, number of triplets " << tripletsPerRegion.
size();
148 LogTrace(
"PixelQuadrupletEDProducer") <<
" created " << quadruplets.size() <<
" quadruplets";
150 for(
size_t i=0;
i!= quadruplets.size(); ++
i) {
151 const auto& quad = quadruplets[
i];
152 seedingHitSetsFiller.emplace_back(quad[0], quad[1], quad[2], quad[3]);
155 tripletsPerRegion.clear();
160 tmpSeedCollection->shrink_to_fit();
T getParameter(std::string const &) const
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
PixelQuadrupletMergerEDProducer(const edm::ParameterSet &iConfig)
void setTTRHBuilderLabel(std::string)
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
void setAllowAnything()
allow any parameter label/value pairs
edm::EDGetTokenT< RegionsSeedingHitSets > tripletToken_
#define DEFINE_FWK_MODULE(type)
void setMergeTriplets(bool)
virtual unsigned int size() const
~PixelQuadrupletMergerEDProducer()=default
ConsumesCollector consumesCollector()
Use a ConsumesCollector to gather consumes information from helper functions.
std::unique_ptr< SeedCreator > seedCreator_
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void update(const edm::EventSetup &)
const OrderedSeedingHits & mergeTriplets(const OrderedSeedingHits &, const edm::EventSetup &)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
void setAddRemainingTriplets(bool)
virtual void produce(edm::Event &iEvent, const edm::EventSetup &iSetup) override
edm::RunningAverage localRA_
std::unique_ptr< SeedComparitor > comparitor_
QuadrupletSeedMerger merger_
T get(const Candidate &c)
void update(unsigned int q)