Skip to content

Commit

Permalink
Merge pull request #16635 from makortel/reworkSeeding_v7
Browse files Browse the repository at this point in the history
New seeding framework
  • Loading branch information
davidlange6 committed Nov 24, 2016
2 parents e51b2b7 + 71a871a commit 547ec9c
Show file tree
Hide file tree
Showing 139 changed files with 4,412 additions and 1,399 deletions.
10 changes: 10 additions & 0 deletions Configuration/Applications/python/ConfigBuilder.py
Expand Up @@ -2217,6 +2217,16 @@ def prepare(self, doChecking = False):

self.pythonCfgCode += self.addCustomiseCmdLine()

# Temporary hack to put the early delete customization after
# everything else
#
# FIXME: remove when no longer needed
if "RECO" in self.stepMap or "RAW2RECO" in self.stepMap:
self.pythonCfgCode += "\n# Add early deletion of temporary data products to reduce peak memory need\n"
self.pythonCfgCode += "from Configuration.StandardSequences.earlyDeleteSettings_cff import customiseEarlyDeleteForRECO\n"
self.pythonCfgCode += "process = customiseEarlyDeleteForRECO(process)\n"
self.pythonCfgCode += "# End adding early deletion\n"


# make the .io file

Expand Down
4 changes: 4 additions & 0 deletions Configuration/StandardSequences/python/Reconstruction_cff.py
Expand Up @@ -135,6 +135,10 @@
noTrackingAndDependent.append(siStripZeroSuppression)
noTrackingAndDependent.append(siStripClusters)
noTrackingAndDependent.append(initialStepSeedLayersPreSplitting)
noTrackingAndDependent.append(trackerClusterCheckPreSplitting)
noTrackingAndDependent.append(initialStepTrackingRegionsPreSplitting)
noTrackingAndDependent.append(initialStepHitDoubletsPreSplitting)
noTrackingAndDependent.append(initialStepHitTripletsPreSplitting)
noTrackingAndDependent.append(initialStepSeedsPreSplitting)
noTrackingAndDependent.append(initialStepTrackCandidatesPreSplitting)
noTrackingAndDependent.append(initialStepTracksPreSplitting)
Expand Down
@@ -0,0 +1,7 @@
# Abstract all early deletion settings here

from RecoTracker.Configuration.customiseEarlyDeleteForSeeding import customiseEarlyDeleteForSeeding

def customiseEarlyDeleteForRECO(process):
process = customiseEarlyDeleteForSeeding(process)
return process
6 changes: 5 additions & 1 deletion DataFormats/TrackerRecHit2D/src/classes.h
Expand Up @@ -26,6 +26,7 @@
#include "DataFormats/TrackerRecHit2D/interface/FastProjectedTrackerRecHit.h"
#include "DataFormats/TrackerRecHit2D/interface/FastTrackerRecHitCollection.h"
#include "DataFormats/TrackerRecHit2D/interface/Phase2TrackerRecHit1D.h"
#include "DataFormats/TrackerRecHit2D/interface/BaseTrackerRecHit.h"
#include <vector>

namespace DataFormats_TrackerRecHit2D {
Expand Down Expand Up @@ -62,7 +63,10 @@ namespace DataFormats_TrackerRecHit2D {
edm::ClonePolicy<SiTrackerMultiRecHit> > e3;
edm::OwnVector<SiTrackerMultiRecHit,
edm::ClonePolicy<SiTrackerMultiRecHit> >::const_iterator it10;


edm::OwnVector<BaseTrackerRecHit> ovbtrh;
edm::Wrapper<edm::OwnVector<BaseTrackerRecHit>> wovbtrh;

edm::Wrapper< edm::RangeMap<DetId,
edm::OwnVector<SiStripRecHit2D,
edm::ClonePolicy<SiStripRecHit2D> >,
Expand Down
4 changes: 4 additions & 0 deletions DataFormats/TrackerRecHit2D/src/classes_def.xml
Expand Up @@ -74,6 +74,10 @@
<class name="edm::OwnVector<SiStripRecHit1D,edm::ClonePolicy<SiStripRecHit1D> >::const_iterator"/>

<class name="edm::OwnVector<SiTrackerMultiRecHit,edm::ClonePolicy<SiTrackerMultiRecHit> >::const_iterator"/>

<class name="edm::OwnVector<BaseTrackerRecHit>" persistent="false"/>
<class name="edm::Wrapper<edm::OwnVector<BaseTrackerRecHit> >" persistent="false"/>

<class name="edm::RangeMap<DetId, edm::OwnVector<SiStripRecHit2D, edm::ClonePolicy<SiStripRecHit2D> >, edm::ClonePolicy<SiStripRecHit2D> >"/>
<class name="edm::RangeMap<DetId, edm::OwnVector<SiStripRecHit1D, edm::ClonePolicy<SiStripRecHit1D> >, edm::ClonePolicy<SiStripRecHit1D> >"/>

Expand Down
24 changes: 11 additions & 13 deletions FastSimulation/Tracking/plugins/TrajectorySeedProducer.cc
Expand Up @@ -39,9 +39,7 @@
#include "DataFormats/TrajectorySeed/interface/TrajectorySeedCollection.h"

// reco track classes
#include "RecoTracker/TkTrackingRegions/interface/GlobalTrackingRegion.h"
#include "RecoTracker/TkTrackingRegions/interface/TrackingRegionProducer.h"
#include "RecoTracker/TkTrackingRegions/interface/TrackingRegionProducerFactory.h"
#include "RecoTracker/TkTrackingRegions/interface/TrackingRegion.h"
#include "RecoTracker/TkSeedingLayers/interface/SeedingHitSet.h"
#include "RecoTracker/TkSeedGenerator/interface/SeedCreator.h"
#include "RecoTracker/TkSeedGenerator/interface/SeedCreatorFactory.h"
Expand All @@ -67,6 +65,7 @@ class TrajectorySeedProducer:

edm::EDGetTokenT<FastTrackerRecHitCombinationCollection> recHitCombinationsToken;
edm::EDGetTokenT<std::vector<bool> > hitMasksToken;
edm::EDGetTokenT<edm::OwnVector<TrackingRegion> > trackingRegionToken;

// other data members
unsigned int nHitsPerSeed_;
Expand All @@ -75,7 +74,6 @@ class TrajectorySeedProducer:
SeedingTree<TrackingLayer> _seedingTree;

std::unique_ptr<SeedCreator> seedCreator;
std::unique_ptr<TrackingRegionProducer> theRegionProducer;
std::string measurementTrackerLabel;

std::unique_ptr<SeedFinderSelector> seedFinderSelector;
Expand Down Expand Up @@ -139,10 +137,8 @@ TrajectorySeedProducer::TrajectorySeedProducer(const edm::ParameterSet& conf)
seedFinderSelector.reset(new SeedFinderSelector(conf.getParameter<edm::ParameterSet>("seedFinderSelector"),consumesCollector()));
}

/// region producer
edm::ParameterSet regfactoryPSet = conf.getParameter<edm::ParameterSet>("RegionFactoryPSet");
std::string regfactoryName = regfactoryPSet.getParameter<std::string>("ComponentName");
theRegionProducer.reset(TrackingRegionProducerFactory::get()->create(regfactoryName,regfactoryPSet,consumesCollector()));
/// regions
trackingRegionToken = consumes<edm::OwnVector<TrackingRegion> >(conf.getParameter<edm::InputTag>("trackingRegions"));

// seed creator
const edm::ParameterSet & seedCreatorPSet = conf.getParameter<edm::ParameterSet>("SeedCreatorPSet");
Expand Down Expand Up @@ -174,8 +170,10 @@ void TrajectorySeedProducer::produce(edm::Event& e, const edm::EventSetup& es)
// output data
std::unique_ptr<TrajectorySeedCollection> output(new TrajectorySeedCollection());

// produce the regions;
const auto regions = theRegionProducer->regions(e,es);
// read the regions;
edm::Handle<edm::OwnVector<TrackingRegion> > hregions;
e.getByToken(trackingRegionToken, hregions);
const auto& regions = *hregions;
// and make sure there is at least one region
if(regions.size() == 0)
{
Expand Down Expand Up @@ -208,12 +206,12 @@ void TrajectorySeedProducer::produce(edm::Event& e, const edm::EventSetup& es)
}

// loop over the regions
for(auto region = regions.begin();region != regions.end(); ++region)
for(const auto& region: regions)
{
// set the region used in the selector
if(seedFinderSelector)
{
seedFinderSelector->setTrackingRegion(region->get());
seedFinderSelector->setTrackingRegion(&region);
}

// find hits compatible with the seed requirements
Expand All @@ -233,7 +231,7 @@ void TrajectorySeedProducer::produce(edm::Event& e, const edm::EventSetup& es)
fastTrackingUtilities::setRecHitCombinationIndex(seedHits,icomb);

// create the seed
seedCreator->init(**region,es,0);
seedCreator->init(region,es,0);
seedCreator->makeSeed(
*output,
SeedingHitSet(
Expand Down
9 changes: 7 additions & 2 deletions FastSimulation/Tracking/python/DetachedTripletStep_cff.py
Expand Up @@ -2,19 +2,23 @@

# import the full tracking equivalent of this file
import RecoTracker.IterativeTracking.DetachedTripletStep_cff as _standard
from FastSimulation.Tracking.SeedingMigration import _hitSetProducerToFactoryPSet

# fast tracking mask producer
import FastSimulation.Tracking.FastTrackerRecHitMaskProducer_cfi
detachedTripletStepMasks = FastSimulation.Tracking.FastTrackerRecHitMaskProducer_cfi.maskProducerFromClusterRemover(_standard.detachedTripletStepClusters)

# tracking regions
detachedTripletStepTrackingRegions = _standard.detachedTripletStepTrackingRegions.clone()

# trajectory seeds
import FastSimulation.Tracking.TrajectorySeedProducer_cfi
detachedTripletStepSeeds = FastSimulation.Tracking.TrajectorySeedProducer_cfi.trajectorySeedProducer.clone(
layerList = _standard.detachedTripletStepSeedLayers.layerList.value(),
RegionFactoryPSet = _standard.detachedTripletStepSeeds.RegionFactoryPSet,
trackingRegions = "detachedTripletStepTrackingRegions",
hitMasks = cms.InputTag("detachedTripletStepMasks")
)
detachedTripletStepSeeds.seedFinderSelector.pixelTripletGeneratorFactory = _standard.detachedTripletStepSeeds.OrderedHitsFactoryPSet.GeneratorPSet
detachedTripletStepSeeds.seedFinderSelector.pixelTripletGeneratorFactory = _hitSetProducerToFactoryPSet(_standard.detachedTripletStepHitTriplets)

# track candidates
import FastSimulation.Tracking.TrackCandidateProducer_cfi
Expand All @@ -36,6 +40,7 @@

# Final sequence
DetachedTripletStep = cms.Sequence(detachedTripletStepMasks
+detachedTripletStepTrackingRegions
+detachedTripletStepSeeds
+detachedTripletStepTrackCandidates
+detachedTripletStepTracks
Expand Down
11 changes: 8 additions & 3 deletions FastSimulation/Tracking/python/InitialStep_cff.py
Expand Up @@ -2,14 +2,18 @@

# import the full tracking equivalent of this file
import RecoTracker.IterativeTracking.InitialStep_cff as _standard
from FastSimulation.Tracking.SeedingMigration import _hitSetProducerToFactoryPSet

# tracking regions
initialStepTrackingRegions = _standard.initialStepTrackingRegions.clone()

# trajectory seeds
import FastSimulation.Tracking.TrajectorySeedProducer_cfi
initialStepSeeds = FastSimulation.Tracking.TrajectorySeedProducer_cfi.trajectorySeedProducer.clone(
layerList = _standard.initialStepSeedLayers.layerList.value(),
RegionFactoryPSet = _standard.initialStepSeeds.RegionFactoryPSet
trackingRegions = "initialStepTrackingRegions"
)
initialStepSeeds.seedFinderSelector.pixelTripletGeneratorFactory = _standard.initialStepSeeds.OrderedHitsFactoryPSet.GeneratorPSet
initialStepSeeds.seedFinderSelector.pixelTripletGeneratorFactory = _hitSetProducerToFactoryPSet(_standard.initialStepHitTriplets)
initialStepSeeds.seedFinderSelector.pixelTripletGeneratorFactory.SeedComparitorPSet.ComponentName = "none"

# track candidates
Expand All @@ -36,7 +40,8 @@
initialStep = _standard.initialStep.clone()

# Final sequence
InitialStep = cms.Sequence(initialStepSeeds
InitialStep = cms.Sequence(initialStepTrackingRegions
+initialStepSeeds
+initialStepTrackCandidates
+initialStepTracks
+firstStepPrimaryVerticesBeforeMixing
Expand Down
9 changes: 7 additions & 2 deletions FastSimulation/Tracking/python/LowPtTripletStep_cff.py
Expand Up @@ -2,19 +2,23 @@

# import the full tracking equivalent of this file
import RecoTracker.IterativeTracking.LowPtTripletStep_cff as _standard
from FastSimulation.Tracking.SeedingMigration import _hitSetProducerToFactoryPSet

# fast tracking mask producer
import FastSimulation.Tracking.FastTrackerRecHitMaskProducer_cfi
lowPtTripletStepMasks = FastSimulation.Tracking.FastTrackerRecHitMaskProducer_cfi.maskProducerFromClusterRemover(_standard.lowPtTripletStepClusters)

# tracking regions
lowPtTripletStepTrackingRegions = _standard.lowPtTripletStepTrackingRegions.clone()

# trajectory seeds
import FastSimulation.Tracking.TrajectorySeedProducer_cfi
lowPtTripletStepSeeds = FastSimulation.Tracking.TrajectorySeedProducer_cfi.trajectorySeedProducer.clone(
layerList = _standard.lowPtTripletStepSeedLayers.layerList.value(),
RegionFactoryPSet = _standard.lowPtTripletStepSeeds.RegionFactoryPSet,
trackingRegions = "lowPtTripletStepTrackingRegions",
hitMasks = cms.InputTag("lowPtTripletStepMasks"),
)
lowPtTripletStepSeeds.seedFinderSelector.pixelTripletGeneratorFactory = _standard.lowPtTripletStepSeeds.OrderedHitsFactoryPSet.GeneratorPSet
lowPtTripletStepSeeds.seedFinderSelector.pixelTripletGeneratorFactory = _hitSetProducerToFactoryPSet(_standard.lowPtTripletStepHitTriplets)
#lowPtTripletStepSeeds.pixelTripletGeneratorFactory.SeedComparitorPSet=cms.PSet( ComponentName = cms.string( "none" ) )

# track candidates
Expand All @@ -34,6 +38,7 @@

# Final swquence
LowPtTripletStep = cms.Sequence(lowPtTripletStepMasks
+lowPtTripletStepTrackingRegions
+lowPtTripletStepSeeds
+lowPtTripletStepTrackCandidates
+lowPtTripletStepTracks
Expand Down
16 changes: 12 additions & 4 deletions FastSimulation/Tracking/python/MixedTripletStep_cff.py
Expand Up @@ -2,30 +2,36 @@

# import the full tracking equivalent of this file
import RecoTracker.IterativeTracking.MixedTripletStep_cff as _standard
from FastSimulation.Tracking.SeedingMigration import _hitSetProducerToFactoryPSet

# fast tracking mask producer
import FastSimulation.Tracking.FastTrackerRecHitMaskProducer_cfi
mixedTripletStepMasks = FastSimulation.Tracking.FastTrackerRecHitMaskProducer_cfi.maskProducerFromClusterRemover(_standard.mixedTripletStepClusters)
mixedTripletStepMasks.oldHitRemovalInfo = cms.InputTag("pixelPairStepMasks")

# tracking regions
mixedTripletStepTrackingRegionsA = _standard.mixedTripletStepTrackingRegionsA.clone()

# trajectory seeds
import FastSimulation.Tracking.TrajectorySeedProducer_cfi
mixedTripletStepSeedsA = FastSimulation.Tracking.TrajectorySeedProducer_cfi.trajectorySeedProducer.clone(
layerList = _standard.mixedTripletStepSeedLayersA.layerList.value(),
RegionFactoryPSet = _standard.mixedTripletStepSeedsA.RegionFactoryPSet,
trackingRegions = "mixedTripletStepTrackingRegionsA",
hitMasks = cms.InputTag("mixedTripletStepMasks")
)
mixedTripletStepSeedsA.seedFinderSelector.pixelTripletGeneratorFactory = _standard.mixedTripletStepSeedsA.OrderedHitsFactoryPSet.GeneratorPSet
mixedTripletStepSeedsA.seedFinderSelector.pixelTripletGeneratorFactory = _hitSetProducerToFactoryPSet(_standard.mixedTripletStepHitTripletsA)


###
mixedTripletStepTrackingRegionsB = _standard.mixedTripletStepTrackingRegionsB.clone()

import FastSimulation.Tracking.TrajectorySeedProducer_cfi
mixedTripletStepSeedsB = FastSimulation.Tracking.TrajectorySeedProducer_cfi.trajectorySeedProducer.clone(
layerList = _standard.mixedTripletStepSeedLayersB.layerList.value(),
RegionFactoryPSet = _standard.mixedTripletStepSeedsB.RegionFactoryPSet,
trackingRegions = "mixedTripletStepTrackingRegionsB",
hitMasks = cms.InputTag("mixedTripletStepMasks")
)
mixedTripletStepSeedsB.seedFinderSelector.pixelTripletGeneratorFactory = _standard.mixedTripletStepSeedsB.OrderedHitsFactoryPSet.GeneratorPSet
mixedTripletStepSeedsB.seedFinderSelector.pixelTripletGeneratorFactory = _hitSetProducerToFactoryPSet(_standard.mixedTripletStepHitTripletsB)

mixedTripletStepSeeds = _standard.mixedTripletStepSeeds.clone()

Expand All @@ -50,7 +56,9 @@

# Final sequence
MixedTripletStep = cms.Sequence(mixedTripletStepMasks
+mixedTripletStepTrackingRegionsA
+mixedTripletStepSeedsA
+mixedTripletStepTrackingRegionsB
+mixedTripletStepSeedsB
+mixedTripletStepSeeds
+mixedTripletStepTrackCandidates
Expand Down
9 changes: 7 additions & 2 deletions FastSimulation/Tracking/python/PixelLessStep_cff.py
Expand Up @@ -2,19 +2,23 @@

# import the full tracking equivalent of this file
import RecoTracker.IterativeTracking.PixelLessStep_cff as _standard
from FastSimulation.Tracking.SeedingMigration import _hitSetProducerToFactoryPSet

# fast tracking mask producer
import FastSimulation.Tracking.FastTrackerRecHitMaskProducer_cfi
pixelLessStepMasks = FastSimulation.Tracking.FastTrackerRecHitMaskProducer_cfi.maskProducerFromClusterRemover(_standard.pixelLessStepClusters)

# tracking regions
pixelLessStepTrackingRegions = _standard.pixelLessStepTrackingRegions.clone()

# trajectory seeds
import FastSimulation.Tracking.TrajectorySeedProducer_cfi
pixelLessStepSeeds = FastSimulation.Tracking.TrajectorySeedProducer_cfi.trajectorySeedProducer.clone(
layerList = _standard.pixelLessStepSeedLayers.layerList.value(),
RegionFactoryPSet = _standard.pixelLessStepSeeds.RegionFactoryPSet,
trackingRegions = "pixelLessStepTrackingRegions",
hitMasks = cms.InputTag("pixelLessStepMasks"),
)
pixelLessStepSeeds.seedFinderSelector.MultiHitGeneratorFactory = _standard.pixelLessStepSeeds.OrderedHitsFactoryPSet.GeneratorPSet
pixelLessStepSeeds.seedFinderSelector.MultiHitGeneratorFactory = _hitSetProducerToFactoryPSet(_standard.pixelLessStepHitTriplets)
pixelLessStepSeeds.seedFinderSelector.MultiHitGeneratorFactory.refitHits = False

# track candidates
Expand All @@ -37,6 +41,7 @@

# Final sequence
PixelLessStep = cms.Sequence(pixelLessStepMasks
+pixelLessStepTrackingRegions
+pixelLessStepSeeds
+pixelLessStepTrackCandidates
+pixelLessStepTracks
Expand Down
9 changes: 7 additions & 2 deletions FastSimulation/Tracking/python/PixelPairStep_cff.py
Expand Up @@ -7,14 +7,18 @@
import FastSimulation.Tracking.FastTrackerRecHitMaskProducer_cfi
pixelPairStepMasks = FastSimulation.Tracking.FastTrackerRecHitMaskProducer_cfi.maskProducerFromClusterRemover(_standard.pixelPairStepClusters)

# tracking regions
pixelPairStepTrackingRegions = _standard.pixelPairStepTrackingRegions.clone(
RegionPSet=dict(VertexCollection = "firstStepPrimaryVerticesBeforeMixing")
)

# trajectory seeds
import FastSimulation.Tracking.TrajectorySeedProducer_cfi
pixelPairStepSeeds = FastSimulation.Tracking.TrajectorySeedProducer_cfi.trajectorySeedProducer.clone(
layerList = _standard.pixelPairStepSeedLayers.layerList.value(),
RegionFactoryPSet = _standard.pixelPairStepSeeds.RegionFactoryPSet,
trackingRegions = "pixelPairStepTrackingRegions",
hitMasks = cms.InputTag("pixelPairStepMasks"),
)
pixelPairStepSeeds.RegionFactoryPSet.RegionPSet.VertexCollection = cms.InputTag("firstStepPrimaryVerticesBeforeMixing")

# track candidate
import FastSimulation.Tracking.TrackCandidateProducer_cfi
Expand All @@ -33,6 +37,7 @@

# Final sequence
PixelPairStep = cms.Sequence(pixelPairStepMasks
+pixelPairStepTrackingRegions
+pixelPairStepSeeds
+pixelPairStepTrackCandidates
+pixelPairStepTracks
Expand Down
18 changes: 18 additions & 0 deletions FastSimulation/Tracking/python/SeedingMigration.py
@@ -0,0 +1,18 @@
import FWCore.ParameterSet.Config as cms

def _copy(old, new, skip=[]):
skipSet = set(skip)
for key in old.parameterNames_():
if key not in skipSet:
setattr(new, key, getattr(old, key))

def _hitSetProducerToFactoryPSet(producer):
_map = {
"PixelTripletHLTEDProducer": "PixelTripletHLTGenerator",
"PixelTripletLargeTipEDProducer": "PixelTripletLargeTipGenerator",
"MultiHitFromChi2EDProducer": "MultiHitGeneratorFromChi2",
}
ret = cms.PSet()
_copy(producer, ret)
ret.ComponentName = cms.string(_map[producer._TypedParameterizable__type]);
return ret

0 comments on commit 547ec9c

Please sign in to comment.