Skip to content

Commit

Permalink
Use consumes interface for TrackerHitAssociator
Browse files Browse the repository at this point in the history
  • Loading branch information
wmtan committed May 14, 2015
1 parent a6ef6c0 commit f4dafce
Show file tree
Hide file tree
Showing 14 changed files with 61 additions and 77 deletions.
3 changes: 2 additions & 1 deletion SimMuon/MCTruth/interface/MuonAssociatorByHits.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
#include "SimDataFormats/Vertex/interface/SimVertexContainer.h"

#include "SimMuon/MCTruth/interface/MuonAssociatorByHitsHelper.h"
#include "SimTracker/TrackerHitAssociation/interface/TrackerHitAssociator.h"

#include <memory>

Expand All @@ -26,7 +27,6 @@ class MuonAssociatorByHits {
public:

MuonAssociatorByHits (const edm::ParameterSet& conf, edm::ConsumesCollector && iC);
MuonAssociatorByHits (const edm::ParameterSet& conf);
~MuonAssociatorByHits();

// Originally from TrackAssociatorBase from where this class used to inherit from
Expand Down Expand Up @@ -76,6 +76,7 @@ class MuonAssociatorByHits {
private:
MuonAssociatorByHitsHelper helper_;
edm::ParameterSet const conf_;
TrackerHitAssociator::Config trackerHitAssociatorConfig_;

std::unique_ptr<muonAssociatorByHitsDiagnostics::InputDumper> diagnostics_;
};
Expand Down
3 changes: 2 additions & 1 deletion SimMuon/MCTruth/interface/MuonToSimAssociatorByHits.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@
#include "SimMuon/MCTruth/interface/MuonToSimAssociatorBase.h"

#include "SimMuon/MCTruth/interface/MuonAssociatorByHitsHelper.h"
#include "SimTracker/TrackerHitAssociation/interface/TrackerHitAssociator.h"

class MuonToSimAssociatorByHits : public MuonToSimAssociatorBase {

public:

MuonToSimAssociatorByHits (const edm::ParameterSet& conf, edm::ConsumesCollector && iC);
MuonToSimAssociatorByHits (const edm::ParameterSet& conf);
~MuonToSimAssociatorByHits();


Expand All @@ -31,6 +31,7 @@ class MuonToSimAssociatorByHits : public MuonToSimAssociatorBase {

MuonAssociatorByHitsHelper helper_;
edm::ParameterSet const conf_;
TrackerHitAssociator::Config trackerHitAssociatorConfig_;

};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -178,14 +178,10 @@ class MuonToTrackingParticleAssociatorEDProducer : public edm::stream::EDProduce
// ----------member data ---------------------------
edm::ParameterSet const config_;
MuonAssociatorByHitsHelper helper_;
TrackerHitAssociator::Config trackerHitAssociatorConfig_;
TrackerMuonHitExtractor hitExtractor_;

std::unique_ptr<RPCHitAssociator> rpctruth_;
std::unique_ptr<DTHitAssociator> dttruth_;
std::unique_ptr<CSCHitAssociator> csctruth_;
std::unique_ptr<TrackerHitAssociator> trackertruth_;
std::unique_ptr<InputDumper> diagnostics_;

};

//
Expand All @@ -203,6 +199,7 @@ class MuonToTrackingParticleAssociatorEDProducer : public edm::stream::EDProduce
MuonToTrackingParticleAssociatorEDProducer::MuonToTrackingParticleAssociatorEDProducer(const edm::ParameterSet& iConfig):
config_(iConfig),
helper_(iConfig),
trackerHitAssociatorConfig_(iConfig,consumesCollector()),
hitExtractor_(iConfig,consumesCollector())
{
//register your products
Expand All @@ -212,7 +209,6 @@ MuonToTrackingParticleAssociatorEDProducer::MuonToTrackingParticleAssociatorEDPr
RPCHitAssociator rpctruth(iConfig,consumesCollector());
DTHitAssociator dttruth(iConfig,consumesCollector());
CSCHitAssociator cscruth(iConfig,consumesCollector());
TrackerHitAssociator trackertruth(iConfig,consumesCollector());

if( iConfig.getUntrackedParameter<bool>("dumpInputCollections") ) {
diagnostics_.reset( new InputDumper(iConfig, consumesCollector()) );
Expand Down Expand Up @@ -253,16 +249,16 @@ MuonToTrackingParticleAssociatorEDProducer::produce(edm::Event& iEvent, const ed
// the memory.

// Tracker hit association
trackertruth_.reset( new TrackerHitAssociator(iEvent, config_));
TrackerHitAssociator trackertruth(iEvent, trackerHitAssociatorConfig_);
// CSC hit association
csctruth_.reset(new CSCHitAssociator(iEvent,iSetup,config_));;
CSCHitAssociator csctruth(iEvent,iSetup,config_);;
// DT hit association
printRtS = false;
dttruth_.reset( new DTHitAssociator(iEvent,iSetup,config_,printRtS) );
DTHitAssociator dttruth(iEvent,iSetup,config_,printRtS);
// RPC hit association
rpctruth_.reset( new RPCHitAssociator(iEvent,iSetup,config_) );
RPCHitAssociator rpctruth(iEvent,iSetup,config_);

MuonAssociatorByHitsHelper::Resources resources = {tTopo, trackertruth_.get(), csctruth_.get(), dttruth_.get(), rpctruth_.get()};
MuonAssociatorByHitsHelper::Resources resources = {tTopo, &trackertruth, &csctruth, &dttruth, &rpctruth};

if(diagnostics_) {
diagnostics_->read(iEvent);
Expand Down
18 changes: 4 additions & 14 deletions SimMuon/MCTruth/src/MuonAssociatorByHits.cc
Original file line number Diff line number Diff line change
Expand Up @@ -137,28 +137,18 @@ namespace muonAssociatorByHitsDiagnostics {

MuonAssociatorByHits::MuonAssociatorByHits (const edm::ParameterSet& conf, edm::ConsumesCollector && iC) :
helper_(conf),
conf_(conf)
conf_(conf),
trackerHitAssociatorConfig_(conf, std::move(iC))
{
//hack for consumes
RPCHitAssociator rpctruth(conf,std::move(iC));
DTHitAssociator dttruth(conf,std::move(iC));
CSCHitAssociator muonTruth(conf,std::move(iC));
TrackerHitAssociator trackertruth(conf,std::move(iC));
if( conf.getUntrackedParameter<bool>("dumpInputCollections") ) {
diagnostics_.reset( new InputDumper(conf, std::move(iC)) );
}
}

//compatibility constructor - argh
MuonAssociatorByHits::MuonAssociatorByHits (const edm::ParameterSet& conf) :
helper_(conf),
conf_(conf)
{
if( conf.getUntrackedParameter<bool>("dumpInputCollections") ) {
diagnostics_.reset( new InputDumper(conf) );
}
}



MuonAssociatorByHits::~MuonAssociatorByHits()
Expand All @@ -183,7 +173,7 @@ MuonAssociatorByHits::associateRecoToSim( const edm::RefToBaseVector<reco::Track


// Tracker hit association
TrackerHitAssociator trackertruth(*e, conf_);
TrackerHitAssociator trackertruth(*e, trackerHitAssociatorConfig_);
// CSC hit association
CSCHitAssociator csctruth(*e,*setup,conf_);
// DT hit association
Expand Down Expand Up @@ -228,7 +218,7 @@ MuonAssociatorByHits::associateSimToReco( const edm::RefToBaseVector<reco::Track
const TrackerTopology *tTopo=tTopoHand.product();

// Tracker hit association
TrackerHitAssociator trackertruth(*e, conf_);
TrackerHitAssociator trackertruth(*e, trackerHitAssociatorConfig_);
// CSC hit association
CSCHitAssociator csctruth(*e,*setup,conf_);
// DT hit association
Expand Down
11 changes: 3 additions & 8 deletions SimMuon/MCTruth/src/MuonToSimAssociatorByHits.cc
Original file line number Diff line number Diff line change
Expand Up @@ -18,22 +18,17 @@ using namespace std;

MuonToSimAssociatorByHits::MuonToSimAssociatorByHits (const edm::ParameterSet& conf, edm::ConsumesCollector && iC) :
helper_(conf),
conf_(conf)
conf_(conf),
trackerHitAssociatorConfig_(conf,std::move(iC))
{
TrackerMuonHitExtractor hitExtractor(conf_,std::move(iC));

//hack for consumes
RPCHitAssociator rpctruth(conf,std::move(iC));
DTHitAssociator dttruth(conf,std::move(iC));
CSCHitAssociator muonTruth(conf,std::move(iC));
TrackerHitAssociator trackertruth(conf,std::move(iC));
}

//compatibility constructor - argh
MuonToSimAssociatorByHits::MuonToSimAssociatorByHits (const edm::ParameterSet& conf) :
helper_(conf),
conf_(conf)
{}

MuonToSimAssociatorByHits::~MuonToSimAssociatorByHits()
{
Expand Down Expand Up @@ -133,7 +128,7 @@ void MuonToSimAssociatorByHits::associateMuons(MuonToSimCollection & recToSim, S


// Tracker hit association
TrackerHitAssociator trackertruth(*event, conf_);
TrackerHitAssociator trackertruth(*event, trackerHitAssociatorConfig_);
// CSC hit association
CSCHitAssociator csctruth(*event,*setup,conf_);
// DT hit association
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,10 @@ class QuickTrackAssociatorByHitsProducer : public edm::global::EDProducer<> {
virtual void beginJob() override;
virtual void produce(edm::StreamID, edm::Event&, const edm::EventSetup&) const override;
virtual void endJob() override;
edm::ParameterSet makeHitAssociatorParameters(const edm::ParameterSet&);

// ----------member data ---------------------------
edm::ParameterSet hitAssociatorParameters_;
TrackerHitAssociator::Config trackerHitAssociatorConfig_;
edm::EDGetTokenT<ClusterTPAssociationList> cluster2TPToken_;
double qualitySimToReco_;
double puritySimToReco_;
Expand All @@ -81,6 +82,7 @@ class QuickTrackAssociatorByHitsProducer : public edm::global::EDProducer<> {
// constructors and destructor
//
QuickTrackAssociatorByHitsProducer::QuickTrackAssociatorByHitsProducer(const edm::ParameterSet& iConfig):
trackerHitAssociatorConfig_(makeHitAssociatorParameters(iConfig), consumesCollector()),
qualitySimToReco_( iConfig.getParameter<double>( "Quality_SimToReco" ) ),
puritySimToReco_( iConfig.getParameter<double>( "Purity_SimToReco" ) ),
cutRecoToSim_( iConfig.getParameter<double>( "Cut_RecoToSim" ) ),
Expand All @@ -98,18 +100,6 @@ QuickTrackAssociatorByHitsProducer::QuickTrackAssociatorByHitsProducer(const edm
else if( denominatorString=="reco" ) simToRecoDenominator_=QuickTrackAssociatorByHitsImpl::denomreco;
else throw cms::Exception( "QuickTrackAssociatorByHitsImpl" ) << "SimToRecoDenominator not specified as sim or reco";

//
// Set up the parameter set for the hit associator
//
hitAssociatorParameters_.addParameter<bool>( "associatePixel", iConfig.getParameter<bool>("associatePixel") );
hitAssociatorParameters_.addParameter<bool>( "associateStrip", iConfig.getParameter<bool>("associateStrip") );
// This is the important one, it stops the hit associator searching through the list of sim hits.
// I only want to use the hit associator methods that work on the hit IDs (i.e. the uint32_t trackId
// and the EncodedEventId eventId) so I'm not interested in matching that to the PSimHit objects.
hitAssociatorParameters_.addParameter<bool>("associateRecoTracks",true);

TrackerHitAssociator temp(hitAssociatorParameters_,consumesCollector());

//
// Do some checks on whether UseGrouped or UseSplitting have been set. They're not used
// unlike the standard TrackAssociatorByHits so show a warning.
Expand Down Expand Up @@ -150,6 +140,19 @@ QuickTrackAssociatorByHitsProducer::~QuickTrackAssociatorByHitsProducer()
//
// member functions
//

// Set up the parameter set for the hit associator
edm::ParameterSet
QuickTrackAssociatorByHitsProducer::makeHitAssociatorParameters(const edm::ParameterSet& iConfig) {
edm::ParameterSet hitAssociatorParameters;
hitAssociatorParameters.addParameter<bool>( "associatePixel", iConfig.getParameter<bool>("associatePixel") );
hitAssociatorParameters.addParameter<bool>( "associateStrip", iConfig.getParameter<bool>("associateStrip") );
// This is the important one, it stops the hit associator searching through the list of sim hits.
// I only want to use the hit associator methods that work on the hit IDs (i.e. the uint32_t trackId
// and the EncodedEventId eventId) so I'm not interested in matching that to the PSimHit objects.
hitAssociatorParameters.addParameter<bool>("associateRecoTracks",true);
return hitAssociatorParameters;
}

// ------------ method called to produce the data ------------
void
Expand All @@ -175,7 +178,7 @@ QuickTrackAssociatorByHitsProducer::produce(edm::StreamID, edm::Event& iEvent, c
if(not clusterAssoc) {
// If control got this far then either useClusterTPAssociation_ was false or getting the cluster
// to TrackingParticle association from the event failed. Either way I need to create a hit associator.
trackAssoc = std::make_shared<TrackerHitAssociator>(iEvent, hitAssociatorParameters_);
trackAssoc = std::make_shared<TrackerHitAssociator>(iEvent, trackerHitAssociatorConfig_);
}

std::unique_ptr<reco::TrackToTrackingParticleAssociatorBaseImpl> impl(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ class TrackAssociatorByHitsProducer : public edm::global::EDProducer<> {
virtual void endJob() override;

// ----------member data ---------------------------
edm::ParameterSet conf_;
TrackerHitAssociator::Config trackerHitAssociatorConfig_;
edm::EDGetTokenT<SimHitTPAssociationList> simHitTpMapToken_;
TrackAssociatorByHitsImpl::SimToRecoDenomType SimToRecoDenominator;
const double quality_SimToReco;
Expand All @@ -85,19 +85,19 @@ class TrackAssociatorByHitsProducer : public edm::global::EDProducer<> {
// constructors and destructor
//
TrackAssociatorByHitsProducer::TrackAssociatorByHitsProducer(const edm::ParameterSet& iConfig):
conf_(iConfig),
simHitTpMapToken_(consumes<SimHitTPAssociationList>(conf_.getParameter<edm::InputTag>("simHitTpMapTag"))),
trackerHitAssociatorConfig_(iConfig, consumesCollector()),
simHitTpMapToken_(consumes<SimHitTPAssociationList>(iConfig.getParameter<edm::InputTag>("simHitTpMapTag"))),
SimToRecoDenominator(TrackAssociatorByHitsImpl::denomnone),
quality_SimToReco(conf_.getParameter<double>("Quality_SimToReco")),
purity_SimToReco(conf_.getParameter<double>("Purity_SimToReco")),
cut_RecoToSim(conf_.getParameter<double>("Cut_RecoToSim")),
UsePixels(conf_.getParameter<bool>("UsePixels")),
UseGrouped(conf_.getParameter<bool>("UseGrouped")),
UseSplitting(conf_.getParameter<bool>("UseSplitting")),
ThreeHitTracksAreSpecial(conf_.getParameter<bool>("ThreeHitTracksAreSpecial")),
AbsoluteNumberOfHits(conf_.getParameter<bool>("AbsoluteNumberOfHits"))
quality_SimToReco(iConfig.getParameter<double>("Quality_SimToReco")),
purity_SimToReco(iConfig.getParameter<double>("Purity_SimToReco")),
cut_RecoToSim(iConfig.getParameter<double>("Cut_RecoToSim")),
UsePixels(iConfig.getParameter<bool>("UsePixels")),
UseGrouped(iConfig.getParameter<bool>("UseGrouped")),
UseSplitting(iConfig.getParameter<bool>("UseSplitting")),
ThreeHitTracksAreSpecial(iConfig.getParameter<bool>("ThreeHitTracksAreSpecial")),
AbsoluteNumberOfHits(iConfig.getParameter<bool>("AbsoluteNumberOfHits"))
{
std::string tmp = conf_.getParameter<std::string>("SimToRecoDenominator");
std::string tmp = iConfig.getParameter<std::string>("SimToRecoDenominator");
if (tmp=="sim") {
SimToRecoDenominator = TrackAssociatorByHitsImpl::denomsim;
} else if (tmp == "reco") {
Expand All @@ -110,8 +110,6 @@ TrackAssociatorByHitsProducer::TrackAssociatorByHitsProducer(const edm::Paramete

//register your products
produces<reco::TrackToTrackingParticleAssociator>();

TrackerHitAssociator temp(conf_, consumesCollector());
}


Expand All @@ -134,7 +132,7 @@ TrackAssociatorByHitsProducer::produce(edm::StreamID, edm::Event& iEvent, const
{
using namespace edm;

std::unique_ptr<TrackerHitAssociator> thAssoc( new TrackerHitAssociator(iEvent,conf_));
std::unique_ptr<TrackerHitAssociator> thAssoc( new TrackerHitAssociator(iEvent,trackerHitAssociatorConfig_));

edm::ESHandle<TrackerTopology> tTopoHand;
iSetup.get<IdealGeometryRecord>().get(tTopoHand);
Expand Down
6 changes: 3 additions & 3 deletions SimTracker/TrackHistory/interface/TrackQuality.h
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ class TrackQuality
/param[in] pset with the configuration values
*/
TrackQuality(const edm::ParameterSet &);
TrackQuality(const edm::ParameterSet &, edm::ConsumesCollector& iC);

//! Pre-process event information (for accessing reconstruction information)
void newEvent(const edm::Event &, const edm::EventSetup &);
Expand All @@ -90,8 +90,8 @@ class TrackQuality
}

private:
const edm::ParameterSet associatorPSet_;
std::auto_ptr<TrackerHitAssociator> associator_;
TrackerHitAssociator::Config trackerHitAssociatorConfig_;
std::unique_ptr<TrackerHitAssociator> associator_;

std::vector<Layer> layers_;
};
Expand Down
2 changes: 1 addition & 1 deletion SimTracker/TrackHistory/src/TrackClassifier.cc
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ TrackClassifier::TrackClassifier(edm::ParameterSet const & config,
hepMCLabel_( config.getUntrackedParameter<edm::InputTag>("hepMC") ),
beamSpotLabel_( config.getUntrackedParameter<edm::InputTag>("beamSpot") ),
tracer_(config,std::move(collector)),
quality_(config)
quality_(config, collector)
{
collector.consumes<edm::HepMCProduct>(hepMCLabel_);
collector.consumes<reco::BeamSpot>(beamSpotLabel_);
Expand Down
6 changes: 3 additions & 3 deletions SimTracker/TrackHistory/src/TrackQuality.cc
Original file line number Diff line number Diff line change
Expand Up @@ -141,14 +141,14 @@ DetLayer getDetLayer(DetId detId, const TrackerTopology *tTopo)
return DetLayer(det, layer);
}

TrackQuality::TrackQuality(const edm::ParameterSet &config) :
associatorPSet_(config.getParameter<edm::ParameterSet>("hitAssociator"))
TrackQuality::TrackQuality(const edm::ParameterSet &config, edm::ConsumesCollector& iC) :
trackerHitAssociatorConfig_(config.getParameter<edm::ParameterSet>("hitAssociator"), std::move(iC))
{
}

void TrackQuality::newEvent(const edm::Event &ev, const edm::EventSetup &es)
{
associator_.reset(new TrackerHitAssociator(ev, associatorPSet_));
associator_.reset(new TrackerHitAssociator(ev, trackerHitAssociatorConfig_));
}

void TrackQuality::evaluate(SimParticleTrail const &spt,
Expand Down
4 changes: 2 additions & 2 deletions SimTracker/TrackerHitAssociation/test/TestAssociator.cc
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ using namespace edm;
DetId detid = ((*it)->geographicalId());

//construct the associator object
TrackerHitAssociator associate(e,conf_);
TrackerHitAssociator associate(e,trackerHitAssociatorConfig_);

if(myid!=999999999){ //if is valid detector

Expand Down Expand Up @@ -237,7 +237,7 @@ using namespace edm;


TestAssociator::TestAssociator(edm::ParameterSet const& conf) :
conf_(conf),
trackerHitAssociatorConfig_(conf, consumesCollector()),
doPixel_( conf.getParameter<bool>("associatePixel") ),
doStrip_( conf.getParameter<bool>("associateStrip") ) {
cout << " Constructor " << endl;
Expand Down
2 changes: 1 addition & 1 deletion SimTracker/TrackerHitAssociation/test/TestAssociator.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ class TestAssociator : public edm::EDAnalyzer

private:

edm::ParameterSet conf_;
TrackerHitAssociator::Config trackerHitAssociatorConfig_;
const StripTopology* topol;
int numStrips; // number of strips in the module
bool doPixel_, doStrip_;
Expand Down

0 comments on commit f4dafce

Please sign in to comment.