24 auto hitsTags =
pset.getParameter<std::vector<edm::InputTag>>(
"hits");
25 for (
const auto &
tag : hitsTags) {
28 produces<ticl::AssociationMap<ticl::mapWithFraction>>(
"hitToSimClusterMap");
29 produces<ticl::AssociationMap<ticl::mapWithFraction>>(
"hitToCaloParticleMap");
56 auto hitToSimClusterMap = std::make_unique<ticl::AssociationMap<ticl::mapWithFraction>>(rechitManager.
size());
57 auto hitToCaloParticleMap = std::make_unique<ticl::AssociationMap<ticl::mapWithFraction>>(rechitManager.
size());
60 for (
unsigned int cpId = 0; cpId <
caloParticles.size(); ++cpId) {
63 for (
const auto &simCluster : caloParticle.simClusters()) {
65 for (
const auto &hitAndFraction : simCluster->hits_and_fractions()) {
66 auto hitMapIter = hitMap->find(hitAndFraction.first);
67 if (hitMapIter != hitMap->end()) {
68 unsigned int rechitIndex = hitMapIter->second;
69 float fraction = hitAndFraction.second;
70 hitToSimClusterMap->insert(rechitIndex, simCluster.key(),
fraction);
71 hitToCaloParticleMap->insert(rechitIndex, cpId,
fraction);
86 desc.add<std::vector<edm::InputTag>>(
"hits",
90 descriptions.
add(
"hitToSimClusterCaloParticleAssociator",
desc);
edm::EDGetTokenT< std::vector< CaloParticle > > caloParticleToken_
~HitToSimClusterCaloParticleAssociatorProducer() override
edm::EDGetTokenT< std::vector< SimCluster > > simClusterToken_
edm::EDGetTokenT< std::unordered_map< DetId, const unsigned int > > hitMapToken_
HitToSimClusterCaloParticleAssociatorProducer(const edm::ParameterSet &)
void produce(edm::StreamID, edm::Event &, const edm::EventSetup &) const override
Monte Carlo truth information used for tracking validation.
#define DEFINE_FWK_MODULE(type)
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
std::vector< edm::EDGetTokenT< HGCRecHitCollection > > hitsTokens_
void add(std::string const &label, ParameterSetDescription const &psetDescription)
void addVector(std::span< const T > vec)