Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #13753 from makortel/new_quadruplets_v4
Quadruplet seeding by propagating triplet to 4th layer
- Loading branch information
Showing
31 changed files
with
651 additions
and
23 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
38 changes: 38 additions & 0 deletions
38
RecoPixelVertexing/PixelTriplets/interface/HitQuadrupletGenerator.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
#ifndef HitQuadrupletGenerator_H | ||
#define HitQuadrupletGenerator_H | ||
|
||
/** abstract interface for generators of hit triplets pairs | ||
* compatible with a TrackingRegion. | ||
*/ | ||
|
||
#include "RecoTracker/TkTrackingRegions/interface/OrderedHitsGenerator.h" | ||
#include "RecoPixelVertexing/PixelTriplets/interface/OrderedHitSeeds.h" | ||
|
||
#include "FWCore/Utilities/interface/RunningAverage.h" | ||
|
||
class TrackingRegion; | ||
namespace edm { class Event; class EventSetup; } | ||
#include <vector> | ||
|
||
class HitQuadrupletGenerator : public OrderedHitsGenerator { | ||
public: | ||
|
||
HitQuadrupletGenerator(unsigned int size=500); | ||
|
||
virtual ~HitQuadrupletGenerator() { } | ||
|
||
virtual const OrderedHitSeeds & run( | ||
const TrackingRegion& region, const edm::Event & ev, const edm::EventSetup& es) final; | ||
|
||
virtual void hitQuadruplets( const TrackingRegion& reg, OrderedHitSeeds& prs, | ||
const edm::Event & ev, const edm::EventSetup& es) = 0; | ||
|
||
virtual void clear() final; | ||
|
||
private: | ||
OrderedHitSeeds theQuadruplets; | ||
edm::RunningAverage localRA; | ||
}; | ||
|
||
|
||
#endif |
37 changes: 37 additions & 0 deletions
37
RecoPixelVertexing/PixelTriplets/interface/HitQuadrupletGeneratorFromTripletAndLayers.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
#ifndef RecoPixelVertexing_PixelTriplets_HitQuadrupletGeneratorFromTripletAndLayers_h | ||
#define RecoPixelVertexing_PixelTriplets_HitQuadrupletGeneratorFromTripletAndLayers_h | ||
|
||
/** A HitQuadrupletGenerator from HitTripletGenerator and vector of | ||
Layers. The HitTripletGenerator provides a set of hit triplets. | ||
For each triplet the search for compatible hit(s) is done among | ||
provided Layers | ||
*/ | ||
|
||
#include "RecoPixelVertexing/PixelTriplets/interface/OrderedHitSeeds.h" | ||
#include <vector> | ||
#include "TrackingTools/TransientTrackingRecHit/interface/SeedingLayerSetsHits.h" | ||
#include "RecoTracker/TkHitPairs/interface/LayerHitMapCache.h" | ||
|
||
class HitTripletGeneratorFromPairAndLayers; | ||
|
||
class HitQuadrupletGeneratorFromTripletAndLayers { | ||
|
||
public: | ||
typedef LayerHitMapCache LayerCacheType; | ||
|
||
HitQuadrupletGeneratorFromTripletAndLayers(); | ||
virtual ~HitQuadrupletGeneratorFromTripletAndLayers(); | ||
|
||
void init( std::unique_ptr<HitTripletGeneratorFromPairAndLayers>&& tripletGenerator, LayerCacheType* layerCache); | ||
|
||
virtual void hitQuadruplets( const TrackingRegion& region, OrderedHitSeeds& result, | ||
const edm::Event& ev, const edm::EventSetup& es, | ||
const SeedingLayerSetsHits::SeedingLayerSet& tripletLayers, | ||
const std::vector<SeedingLayerSetsHits::SeedingLayer>& fourthLayers) = 0; | ||
|
||
protected: | ||
std::unique_ptr<HitTripletGeneratorFromPairAndLayers> theTripletGenerator; | ||
LayerCacheType *theLayerCache; | ||
}; | ||
#endif | ||
|
12 changes: 12 additions & 0 deletions
12
...ixelVertexing/PixelTriplets/interface/HitQuadrupletGeneratorFromTripletAndLayersFactory.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
#ifndef PixelTriplets_HitQuadrupletGeneratorFromTripletAndLayersFactory_H | ||
#define PixelTriplets_HitQuadrupletGeneratorFromTripletAndLayersFactory_H | ||
|
||
#include "RecoPixelVertexing/PixelTriplets/interface/HitQuadrupletGeneratorFromTripletAndLayers.h" | ||
#include "FWCore/PluginManager/interface/PluginFactory.h" | ||
|
||
namespace edm {class ParameterSet; class ConsumesCollector;} | ||
|
||
typedef edmplugin::PluginFactory<HitQuadrupletGeneratorFromTripletAndLayers *(const edm::ParameterSet &, edm::ConsumesCollector&)> | ||
HitQuadrupletGeneratorFromTripletAndLayersFactory; | ||
|
||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
50 changes: 50 additions & 0 deletions
50
RecoPixelVertexing/PixelTriplets/plugins/CombinedHitQuadrupletGenerator.cc
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
#include "CombinedHitQuadrupletGenerator.h" | ||
|
||
#include "RecoPixelVertexing/PixelTriplets/interface/HitQuadrupletGeneratorFromTripletAndLayers.h" | ||
#include "RecoPixelVertexing/PixelTriplets/interface/HitQuadrupletGeneratorFromTripletAndLayersFactory.h" | ||
#include "RecoPixelVertexing/PixelTriplets/interface/HitTripletGeneratorFromPairAndLayers.h" | ||
#include "RecoPixelVertexing/PixelTriplets/interface/HitTripletGeneratorFromPairAndLayersFactory.h" | ||
#include "RecoTracker/TkHitPairs/interface/HitPairGeneratorFromLayerPair.h" | ||
#include "LayerQuadruplets.h" | ||
#include "FWCore/Framework/interface/ConsumesCollector.h" | ||
#include "FWCore/Framework/interface/Event.h" | ||
#include "DataFormats/Common/interface/Handle.h" | ||
|
||
|
||
using namespace std; | ||
using namespace ctfseeding; | ||
|
||
CombinedHitQuadrupletGenerator::CombinedHitQuadrupletGenerator(const edm::ParameterSet& cfg, edm::ConsumesCollector& iC): | ||
theSeedingLayerToken(iC.consumes<SeedingLayerSetsHits>(cfg.getParameter<edm::InputTag>("SeedingLayers"))) | ||
{ | ||
edm::ParameterSet generatorPSet = cfg.getParameter<edm::ParameterSet>("GeneratorPSet"); | ||
std::string generatorName = generatorPSet.getParameter<std::string>("ComponentName"); | ||
edm::ParameterSet tripletGeneratorPSet = cfg.getParameter<edm::ParameterSet>("TripletGeneratorPSet"); | ||
std::string tripletGeneratorName = tripletGeneratorPSet.getParameter<std::string>("ComponentName"); | ||
|
||
std::unique_ptr<HitTripletGeneratorFromPairAndLayers> tripletGenerator(HitTripletGeneratorFromPairAndLayersFactory::get()->create(tripletGeneratorName, tripletGeneratorPSet, iC)); | ||
// Some CPU wasted here because same pairs are generated multiple times | ||
tripletGenerator->init(std::make_unique<HitPairGeneratorFromLayerPair>(0, 1, &theLayerCache), &theLayerCache); | ||
|
||
theGenerator.reset(HitQuadrupletGeneratorFromTripletAndLayersFactory::get()->create(generatorName, generatorPSet, iC)); | ||
theGenerator->init(std::move(tripletGenerator), &theLayerCache); | ||
} | ||
|
||
CombinedHitQuadrupletGenerator::~CombinedHitQuadrupletGenerator() {} | ||
|
||
void CombinedHitQuadrupletGenerator::hitQuadruplets( | ||
const TrackingRegion& region, OrderedHitSeeds & result, | ||
const edm::Event& ev, const edm::EventSetup& es) | ||
{ | ||
edm::Handle<SeedingLayerSetsHits> hlayers; | ||
ev.getByToken(theSeedingLayerToken, hlayers); | ||
const SeedingLayerSetsHits& layers = *hlayers; | ||
if(layers.numberOfLayersInSet() != 4) | ||
throw cms::Exception("Configuration") << "CombinedHitQuadrupletsGenerator expects SeedingLayerSetsHits::numberOfLayersInSet() to be 4, got " << layers.numberOfLayersInSet(); | ||
|
||
std::vector<LayerQuadruplets::LayerSetAndLayers> quadlayers = LayerQuadruplets::layers(layers); | ||
for(const auto& tripletAndLayers: quadlayers) { | ||
theGenerator->hitQuadruplets(region, result, ev, es, tripletAndLayers.first, tripletAndLayers.second); | ||
} | ||
theLayerCache.clear(); | ||
} |
44 changes: 44 additions & 0 deletions
44
RecoPixelVertexing/PixelTriplets/plugins/CombinedHitQuadrupletGenerator.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
#ifndef CombinedHitQuadrupletGenerator_H | ||
#define CombinedHitQuadrupletGenerator_H | ||
|
||
/** A HitQuadrupletGenerator consisting of a set of | ||
* quadruplet generators of type HitQuadrupletGeneratorFromPairAndLayers | ||
* initialised from provided layers in the form of PixelLayerQuadruplets | ||
*/ | ||
|
||
#include <vector> | ||
#include "RecoPixelVertexing/PixelTriplets/interface/HitQuadrupletGenerator.h" | ||
#include "RecoTracker/TkHitPairs/interface/LayerHitMapCache.h" | ||
#include "FWCore/ParameterSet/interface/ParameterSet.h" | ||
#include "FWCore/Utilities/interface/EDGetToken.h" | ||
|
||
|
||
class TrackingRegion; | ||
class HitQuadrupletGeneratorFromTripletAndLayers; | ||
class SeedingLayerSetsHits; | ||
|
||
namespace edm { class Event; } | ||
namespace edm { class EventSetup; } | ||
|
||
class CombinedHitQuadrupletGenerator : public HitQuadrupletGenerator { | ||
public: | ||
typedef LayerHitMapCache LayerCacheType; | ||
|
||
public: | ||
|
||
CombinedHitQuadrupletGenerator( const edm::ParameterSet& cfg, edm::ConsumesCollector& iC); | ||
|
||
virtual ~CombinedHitQuadrupletGenerator(); | ||
|
||
/// from base class | ||
virtual void hitQuadruplets( const TrackingRegion& reg, OrderedHitSeeds & triplets, | ||
const edm::Event & ev, const edm::EventSetup& es); | ||
|
||
private: | ||
edm::EDGetTokenT<SeedingLayerSetsHits> theSeedingLayerToken; | ||
|
||
LayerCacheType theLayerCache; | ||
|
||
std::unique_ptr<HitQuadrupletGeneratorFromTripletAndLayers> theGenerator; | ||
}; | ||
#endif |
Oops, something went wrong.