-
Notifications
You must be signed in to change notification settings - Fork 4.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
RecHit map and CaloParticle-LayerCluster associator #29844
Changes from 41 commits
1e5eaff
52c4dbd
0e8864e
bc9aca8
38f74b9
9c0eb23
ac5b114
d48b117
137ad0a
1338319
a79f6cd
c7e1dcd
368b73f
af1fe47
a8d5ea8
41236cd
68d1c1e
09f0197
296c547
8e6ada4
1c2f483
1b51dac
d5ade06
00bab1d
77557a9
5313d3d
0d8711a
5ad24dd
70f2ec8
117529f
5e7d00d
e284b25
90c6504
613be35
64e9a77
d9efe28
a896aff
3e3fdb8
f12af7c
c54086b
867c3d7
29e6718
28e696b
423d404
3a69473
585fe4d
d61c84c
fc6c8aa
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -0,0 +1,71 @@ | ||||||||||||||||||||||
#define __RecoLocalCalo_HGCRecProducers_HGCalRecHitMapProducer_H__ | ||||||||||||||||||||||
|
||||||||||||||||||||||
// user include files | ||||||||||||||||||||||
#include <map> | ||||||||||||||||||||||
|
||||||||||||||||||||||
#include "FWCore/Framework/interface/Frameworkfwd.h" | ||||||||||||||||||||||
#include "FWCore/Framework/interface/global/EDProducer.h" | ||||||||||||||||||||||
#include "FWCore/MessageLogger/interface/MessageLogger.h" | ||||||||||||||||||||||
|
||||||||||||||||||||||
#include "FWCore/Framework/interface/Event.h" | ||||||||||||||||||||||
#include "FWCore/Framework/interface/ESHandle.h" | ||||||||||||||||||||||
#include "FWCore/Framework/interface/MakerMacros.h" | ||||||||||||||||||||||
#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" | ||||||||||||||||||||||
#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" | ||||||||||||||||||||||
|
||||||||||||||||||||||
#include "DataFormats/HGCRecHit/interface/HGCRecHitCollections.h" | ||||||||||||||||||||||
|
||||||||||||||||||||||
class HGCalRecHitMapProducer : public edm::global::EDProducer<> { | ||||||||||||||||||||||
public: | ||||||||||||||||||||||
HGCalRecHitMapProducer(const edm::ParameterSet&); | ||||||||||||||||||||||
~HGCalRecHitMapProducer() override {} | ||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. is this empty impl really needed here? |
||||||||||||||||||||||
static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); | ||||||||||||||||||||||
|
||||||||||||||||||||||
void produce(edm::StreamID, edm::Event&, const edm::EventSetup&) const override; | ||||||||||||||||||||||
|
||||||||||||||||||||||
private: | ||||||||||||||||||||||
edm::EDGetTokenT<HGCRecHitCollection> hits_ee_token; | ||||||||||||||||||||||
edm::EDGetTokenT<HGCRecHitCollection> hits_fh_token; | ||||||||||||||||||||||
edm::EDGetTokenT<HGCRecHitCollection> hits_bh_token; | ||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||||||||||||
}; | ||||||||||||||||||||||
|
||||||||||||||||||||||
DEFINE_FWK_MODULE(HGCalRecHitMapProducer); | ||||||||||||||||||||||
|
||||||||||||||||||||||
HGCalRecHitMapProducer::HGCalRecHitMapProducer(const edm::ParameterSet& ps) { | ||||||||||||||||||||||
hits_ee_token = consumes<HGCRecHitCollection>(ps.getParameter<edm::InputTag>("HGCEEInput")); | ||||||||||||||||||||||
hits_fh_token = consumes<HGCRecHitCollection>(ps.getParameter<edm::InputTag>("HGCFHInput")); | ||||||||||||||||||||||
hits_bh_token = consumes<HGCRecHitCollection>(ps.getParameter<edm::InputTag>("HGCBHInput")); | ||||||||||||||||||||||
produces<std::map<DetId, const HGCRecHit*>>(); | ||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
|
||||||||||||||||||||||
} | ||||||||||||||||||||||
|
||||||||||||||||||||||
void HGCalRecHitMapProducer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { | ||||||||||||||||||||||
edm::ParameterSetDescription desc; | ||||||||||||||||||||||
|
||||||||||||||||||||||
desc.add<edm::InputTag>("HGCEEInput", edm::InputTag("HGCalRecHit", "HGCEERecHits")); | ||||||||||||||||||||||
desc.add<edm::InputTag>("HGCFHInput", edm::InputTag("HGCalRecHit", "HGCHEFRecHits")); | ||||||||||||||||||||||
desc.add<edm::InputTag>("HGCBHInput", edm::InputTag("HGCalRecHit", "HGCHEBRecHits")); | ||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. is "HGC" prefix needed? can this be confused with something else?
Suggested change
|
||||||||||||||||||||||
descriptions.add("hgcalRecHitMapProducer", desc); | ||||||||||||||||||||||
} | ||||||||||||||||||||||
|
||||||||||||||||||||||
void HGCalRecHitMapProducer::produce(edm::StreamID, edm::Event& evt, const edm::EventSetup& es) const { | ||||||||||||||||||||||
std::unique_ptr<std::map<DetId, const HGCRecHit*>> hitMap(new std::map<DetId, const HGCRecHit*>); | ||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. use |
||||||||||||||||||||||
edm::Handle<HGCRecHitCollection> ee_hits; | ||||||||||||||||||||||
edm::Handle<HGCRecHitCollection> fh_hits; | ||||||||||||||||||||||
edm::Handle<HGCRecHitCollection> bh_hits; | ||||||||||||||||||||||
|
||||||||||||||||||||||
evt.getByToken(hits_ee_token, ee_hits); | ||||||||||||||||||||||
evt.getByToken(hits_fh_token, fh_hits); | ||||||||||||||||||||||
evt.getByToken(hits_bh_token, bh_hits); | ||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. a shorter variant:
Suggested change
|
||||||||||||||||||||||
for (const auto& hit : *ee_hits.product()) { | ||||||||||||||||||||||
hitMap->emplace(hit.detid(), &hit); | ||||||||||||||||||||||
} | ||||||||||||||||||||||
|
||||||||||||||||||||||
for (const auto& hit : *fh_hits.product()) { | ||||||||||||||||||||||
hitMap->emplace(hit.detid(), &hit); | ||||||||||||||||||||||
} | ||||||||||||||||||||||
|
||||||||||||||||||||||
for (const auto& hit : *bh_hits.product()) { | ||||||||||||||||||||||
hitMap->emplace(hit.detid(), &hit); | ||||||||||||||||||||||
} | ||||||||||||||||||||||
evt.put(std::move(hitMap)); | ||||||||||||||||||||||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
#include "DataFormats/Common/interface/Wrapper.h" | ||
|
||
// Add includes for your classes here | ||
#include "DataFormats/HGCRecHit/interface/HGCRecHitCollections.h" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. shouldn't this be removed? |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
<lcgdict> | ||
<class name="std::map<DetId,const HGCRecHit*>" persistent="false"/> | ||
<class name="edm::Wrapper<std::map<DetId,const HGCRecHit*>>" persistent="false"/> | ||
<class name="std::pair<const DetId,const HGCRecHit*>" /> | ||
</lcgdict> | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. If I understand (well, guess actually) the meaning of the |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
<use name="FWCore/Framework"/> | ||
<use name="FWCore/PluginManager"/> | ||
<use name="FWCore/ParameterSet"/> | ||
<use name="SimDataFormats/Associations"/> | ||
<use name="RecoLocalCalo/HGCalRecAlgos"/> | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. A producer/plugin is an end-point in dependencies. |
||
<flags EDM_PLUGIN="1"/> | ||
|
Large diffs are not rendered by default.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
// Original Author: Marco Rovere | ||
|
||
#include <vector> | ||
#include <map> | ||
#include <unordered_map> | ||
#include <memory> // shared_ptr | ||
|
||
#include "DataFormats/ForwardDetId/interface/HGCalDetId.h" | ||
#include "DataFormats/HGCRecHit/interface/HGCRecHit.h" | ||
#include "SimDataFormats/Associations/interface/LayerClusterToCaloParticleAssociator.h" | ||
#include "RecoLocalCalo/HGCalRecAlgos/interface/RecHitTools.h" | ||
|
||
namespace edm { | ||
class EDProductGetter; | ||
} | ||
|
||
namespace hgcal { | ||
struct detIdInfoInCluster { | ||
bool operator==(const detIdInfoInCluster &o) const { return clusterId == o.clusterId; }; | ||
long unsigned int clusterId; | ||
float fraction; | ||
detIdInfoInCluster(long unsigned int cId, float fr) { | ||
clusterId = cId; | ||
fraction = fr; | ||
} | ||
}; | ||
|
||
struct detIdInfoInMultiCluster { | ||
bool operator==(const detIdInfoInMultiCluster &o) const { return multiclusterId == o.multiclusterId; }; | ||
unsigned int multiclusterId; | ||
long unsigned int clusterId; | ||
float fraction; | ||
}; | ||
|
||
struct caloParticleOnLayer { | ||
unsigned int caloParticleId; | ||
float energy = 0; | ||
std::vector<std::pair<DetId, float>> hits_and_fractions; | ||
std::unordered_map<int, std::pair<float, float>> layerClusterIdToEnergyAndScore; | ||
}; | ||
|
||
typedef std::vector<std::vector<std::pair<unsigned int, float>>> layerClusterToCaloParticle; | ||
typedef std::vector<std::vector<hgcal::caloParticleOnLayer>> caloParticleToLayerCluster; | ||
typedef std::tuple<layerClusterToCaloParticle, caloParticleToLayerCluster> association; | ||
} // namespace hgcal | ||
|
||
class LayerClusterAssociatorByEnergyScoreImpl : public hgcal::LayerClusterToCaloParticleAssociatorBaseImpl { | ||
public: | ||
explicit LayerClusterAssociatorByEnergyScoreImpl(edm::EDProductGetter const &, | ||
bool, | ||
std::shared_ptr<hgcal::RecHitTools>, | ||
const std::map<DetId, const HGCRecHit *> *&); | ||
|
||
hgcal::RecoToSimCollection associateRecoToSim(const edm::Handle<reco::CaloClusterCollection> &cCH, | ||
const edm::Handle<CaloParticleCollection> &cPCH) const override; | ||
|
||
hgcal::SimToRecoCollection associateSimToReco(const edm::Handle<reco::CaloClusterCollection> &cCH, | ||
const edm::Handle<CaloParticleCollection> &cPCH) const override; | ||
|
||
private: | ||
const bool hardScatterOnly_; | ||
std::shared_ptr<hgcal::RecHitTools> recHitTools_; | ||
const std::map<DetId, const HGCRecHit *> *hitMap_; | ||
unsigned layers_; | ||
edm::EDProductGetter const *productGetter_; | ||
hgcal::association makeConnections(const edm::Handle<reco::CaloClusterCollection> &cCH, | ||
const edm::Handle<CaloParticleCollection> &cPCH) const; | ||
}; |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
// Original author: Marco Rovere | ||
|
||
// user include files | ||
#include "FWCore/Framework/interface/Frameworkfwd.h" | ||
#include "FWCore/Framework/interface/global/EDProducer.h" | ||
|
||
#include "FWCore/Framework/interface/Event.h" | ||
#include "FWCore/Framework/interface/MakerMacros.h" | ||
|
||
#include "FWCore/ParameterSet/interface/ParameterSet.h" | ||
#include "FWCore/Utilities/interface/EDGetToken.h" | ||
|
||
#include "SimDataFormats/Associations/interface/LayerClusterToCaloParticleAssociator.h" | ||
#include "LayerClusterAssociatorByEnergyScoreImpl.h" | ||
|
||
class LayerClusterAssociatorByEnergyScoreProducer : public edm::global::EDProducer<> { | ||
public: | ||
explicit LayerClusterAssociatorByEnergyScoreProducer(const edm::ParameterSet &); | ||
~LayerClusterAssociatorByEnergyScoreProducer() override; | ||
|
||
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions); | ||
|
||
private: | ||
void produce(edm::StreamID, edm::Event &, const edm::EventSetup &) const override; | ||
edm::EDGetTokenT<std::map<DetId, const HGCRecHit *>> hitMapToken_; | ||
const bool hardScatterOnly_; | ||
std::shared_ptr<hgcal::RecHitTools> rhtools_; | ||
}; | ||
|
||
LayerClusterAssociatorByEnergyScoreProducer::LayerClusterAssociatorByEnergyScoreProducer(const edm::ParameterSet &ps) | ||
: hitMapToken_(consumes<std::map<DetId, const HGCRecHit *>>(ps.getParameter<edm::InputTag>("hitMapTag"))), | ||
hardScatterOnly_(ps.getParameter<bool>("hardScatterOnly")) { | ||
rhtools_.reset(new hgcal::RecHitTools()); | ||
|
||
// Register the product | ||
produces<hgcal::LayerClusterToCaloParticleAssociator>(); | ||
} | ||
|
||
LayerClusterAssociatorByEnergyScoreProducer::~LayerClusterAssociatorByEnergyScoreProducer() {} | ||
|
||
void LayerClusterAssociatorByEnergyScoreProducer::produce(edm::StreamID, | ||
edm::Event &iEvent, | ||
const edm::EventSetup &es) const { | ||
rhtools_->getEventSetup(es); | ||
edm::Handle<std::map<DetId, const HGCRecHit *>> hitMapHandle; | ||
iEvent.getByToken(hitMapToken_, hitMapHandle); | ||
const std::map<DetId, const HGCRecHit *> *hitMap = &*hitMapHandle; | ||
|
||
std::unique_ptr<hgcal::LayerClusterToCaloParticleAssociatorBaseImpl> impl( | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. use make_unique (avoid "new ") There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. to reduce verbosity, the code can be further simplified like this:
|
||
std::make_unique<LayerClusterAssociatorByEnergyScoreImpl>( | ||
iEvent.productGetter(), hardScatterOnly_, rhtools_, hitMap)); | ||
std::unique_ptr<hgcal::LayerClusterToCaloParticleAssociator> toPut( | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. use |
||
std::make_unique<hgcal::LayerClusterToCaloParticleAssociator>(std::move(impl))); | ||
iEvent.put(std::move(toPut)); | ||
} | ||
|
||
void LayerClusterAssociatorByEnergyScoreProducer::fillDescriptions(edm::ConfigurationDescriptions &cfg) { | ||
edm::ParameterSetDescription desc; | ||
desc.add<edm::InputTag>("hitMapTag", edm::InputTag("HGCRecHitMapProducer")); | ||
desc.add<bool>("hardScatterOnly", true); | ||
|
||
cfg.add("layerClusterAssociatorByEnergyScore", desc); | ||
} | ||
|
||
//define this as a plug-in | ||
DEFINE_FWK_MODULE(LayerClusterAssociatorByEnergyScoreProducer); |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
from SimCalorimetry.HGCalAssociatorProducers.layerClusterAssociatorByEnergyScore_cfi import layerClusterAssociatorByEnergyScore as LCAssocByEnergyScoreProducer | ||
|
||
from RecoLocalCalo.HGCalRecProducers.hgcalRecHitMapProducer_cfi import hgcalRecHitMapProducer as HGCRecHitMapProducer | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. this is a bit outside of reco, but still: the module instance names are expected to be start with lower case (same as the default module labels), unless there are some good reasons |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
#ifndef SimDataFormats_Associations_LayerClusterToCaloParticleAssociator_h | ||
#define SimDataFormats_Associations_LayerClusterToCaloParticleAssociator_h | ||
// Original Author: Marco Rovere | ||
|
||
// system include files | ||
#include <memory> | ||
|
||
// user include files | ||
|
||
#include "SimDataFormats/Associations/interface/LayerClusterToCaloParticleAssociatorBaseImpl.h" | ||
|
||
// forward declarations | ||
|
||
namespace hgcal { | ||
|
||
class LayerClusterToCaloParticleAssociator { | ||
public: | ||
LayerClusterToCaloParticleAssociator(std::unique_ptr<hgcal::LayerClusterToCaloParticleAssociatorBaseImpl>); | ||
LayerClusterToCaloParticleAssociator() = default; | ||
LayerClusterToCaloParticleAssociator(LayerClusterToCaloParticleAssociator &&) = default; | ||
LayerClusterToCaloParticleAssociator &operator=(LayerClusterToCaloParticleAssociator &&) = default; | ||
~LayerClusterToCaloParticleAssociator() = default; | ||
|
||
// ---------- const member functions --------------------- | ||
/// Associate a LayerCluster to CaloParticles | ||
hgcal::RecoToSimCollection associateRecoToSim(const edm::Handle<reco::CaloClusterCollection> &cCCH, | ||
const edm::Handle<CaloParticleCollection> &cPCH) const { | ||
return m_impl->associateRecoToSim(cCCH, cPCH); | ||
}; | ||
|
||
/// Associate a CaloParticle to LayerClusters | ||
hgcal::SimToRecoCollection associateSimToReco(const edm::Handle<reco::CaloClusterCollection> &cCCH, | ||
const edm::Handle<CaloParticleCollection> &cPCH) const { | ||
return m_impl->associateSimToReco(cCCH, cPCH); | ||
} | ||
|
||
private: | ||
LayerClusterToCaloParticleAssociator(const LayerClusterToCaloParticleAssociator &) = delete; // stop default | ||
|
||
const LayerClusterToCaloParticleAssociator &operator=(const LayerClusterToCaloParticleAssociator &) = | ||
delete; // stop default | ||
|
||
// ---------- member data -------------------------------- | ||
std::unique_ptr<LayerClusterToCaloParticleAssociatorBaseImpl> m_impl; | ||
}; | ||
} // namespace hgcal | ||
|
||
#endif |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
#ifndef SimDataFormats_Associations_LayerClusterToCaloParticleAssociatorBaseImpl_h | ||
#define SimDataFormats_Associations_LayerClusterToCaloParticleAssociatorBaseImpl_h | ||
|
||
/** \class LayerClusterToCaloParticleAssociatorBaseImpl | ||
* | ||
* Base class for LayerClusterToCaloParticleAssociators. Methods take as input | ||
* the handle of LayerClusters and the CaloParticle collections and return an | ||
* AssociationMap (oneToManyWithQuality) | ||
* | ||
* \author Marco Rovere | ||
*/ | ||
|
||
#include "DataFormats/Common/interface/Handle.h" | ||
#include "DataFormats/Common/interface/AssociationMap.h" | ||
#include "DataFormats/CaloRecHit/interface/CaloClusterFwd.h" | ||
|
||
#include "SimDataFormats/CaloAnalysis/interface/CaloParticleFwd.h" | ||
|
||
namespace hgcal { | ||
|
||
typedef edm::AssociationMap< | ||
edm::OneToManyWithQualityGeneric<CaloParticleCollection, reco::CaloClusterCollection, std::pair<float, float>>> | ||
SimToRecoCollection; | ||
typedef edm::AssociationMap< | ||
edm::OneToManyWithQualityGeneric<reco::CaloClusterCollection, CaloParticleCollection, float>> | ||
RecoToSimCollection; | ||
|
||
class LayerClusterToCaloParticleAssociatorBaseImpl { | ||
public: | ||
/// Constructor | ||
LayerClusterToCaloParticleAssociatorBaseImpl(); | ||
/// Destructor | ||
virtual ~LayerClusterToCaloParticleAssociatorBaseImpl(); | ||
|
||
/// Associate a LayerCluster to CaloParticles | ||
virtual hgcal::RecoToSimCollection associateRecoToSim(const edm::Handle<reco::CaloClusterCollection> &cCH, | ||
const edm::Handle<CaloParticleCollection> &cPCH) const; | ||
|
||
/// Associate a CaloParticle to LayerClusters | ||
virtual hgcal::SimToRecoCollection associateSimToReco(const edm::Handle<reco::CaloClusterCollection> &cCH, | ||
const edm::Handle<CaloParticleCollection> &cPCH) const; | ||
}; | ||
} // namespace hgcal | ||
|
||
#endif |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
// Original Author: Marco Rovere | ||
|
||
#include "SimDataFormats/Associations/interface/LayerClusterToCaloParticleAssociator.h" | ||
|
||
hgcal::LayerClusterToCaloParticleAssociator::LayerClusterToCaloParticleAssociator( | ||
std::unique_ptr<hgcal::LayerClusterToCaloParticleAssociatorBaseImpl> ptr) | ||
: m_impl(std::move(ptr)) {} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
// Original Author: Marco Rovere | ||
|
||
#include "SimDataFormats/Associations/interface/LayerClusterToCaloParticleAssociatorBaseImpl.h" | ||
|
||
namespace hgcal { | ||
LayerClusterToCaloParticleAssociatorBaseImpl::LayerClusterToCaloParticleAssociatorBaseImpl(){}; | ||
LayerClusterToCaloParticleAssociatorBaseImpl::~LayerClusterToCaloParticleAssociatorBaseImpl(){}; | ||
|
||
hgcal::RecoToSimCollection LayerClusterToCaloParticleAssociatorBaseImpl::associateRecoToSim( | ||
const edm::Handle<reco::CaloClusterCollection> &cCCH, const edm::Handle<CaloParticleCollection> &cPCH) const { | ||
return hgcal::RecoToSimCollection(); | ||
} | ||
|
||
hgcal::SimToRecoCollection LayerClusterToCaloParticleAssociatorBaseImpl::associateSimToReco( | ||
const edm::Handle<reco::CaloClusterCollection> &cCCH, const edm::Handle<CaloParticleCollection> &cPCH) const { | ||
return hgcal::SimToRecoCollection(); | ||
} | ||
|
||
} // namespace hgcal |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this is not a header; please remove the include guard remnant