@@ -123,13 +123,7 @@ void AllTracksterToSimTracksterAssociatorsByHitsProducer::produce(edm::StreamID,
123123 << " No valid HGCRecHitCollections found. Association maps will be empty." ;
124124
125125 for (const auto & tracksterToken : tracksterCollectionTokens_) {
126- Handle<std::vector<ticl::Trackster>> recoTrackstersHandle;
127- iEvent.getByToken (tracksterToken.second , recoTrackstersHandle);
128-
129126 for (const auto & simTracksterToken : simTracksterCollectionTokens_) {
130- Handle<std::vector<ticl::Trackster>> simTrackstersHandle;
131- iEvent.getByToken (simTracksterToken.second , simTrackstersHandle);
132-
133127 iEvent.put (std::make_unique<ticl::AssociationMap<ticl::mapWithSharedEnergyAndScore,
134128 std::vector<ticl::Trackster>,
135129 std::vector<ticl::Trackster>>>(),
@@ -163,7 +157,6 @@ void AllTracksterToSimTracksterAssociatorsByHitsProducer::produce(edm::StreamID,
163157 << " No valid Trackster collection found. Association maps will be empty." ;
164158 for (const auto & simTracksterToken : simTracksterCollectionTokens_) {
165159 Handle<std::vector<ticl::Trackster>> simTrackstersHandle;
166- iEvent.getByToken (simTracksterToken.second , simTrackstersHandle);
167160
168161 iEvent.put (std::make_unique<ticl::AssociationMap<ticl::mapWithSharedEnergyAndScore,
169162 std::vector<ticl::Trackster>,
@@ -199,11 +192,30 @@ void AllTracksterToSimTracksterAssociatorsByHitsProducer::produce(edm::StreamID,
199192 if (tracksterToHitMapTokenIter != tracksterToHitMapTokens_.end ()) {
200193 iEvent.getByToken (tracksterToHitMapTokenIter->second , tracksterToHitMapHandle);
201194 }
195+
196+ if (!tracksterToHitMapHandle.isValid ()) {
197+ edm::LogError (" AllTracksterToSimTracksterAssociatorsByHitsProducer" ) << " tracksterToHitMapHandle is invalid" ;
198+ continue ;
199+ }
200+
202201 const auto & tracksterToHitMap = *tracksterToHitMapHandle;
203202
204203 for (const auto & simTracksterToken : simTracksterCollectionTokens_) {
205204 Handle<std::vector<ticl::Trackster>> simTrackstersHandle;
206205 iEvent.getByToken (simTracksterToken.second , simTrackstersHandle);
206+
207+ if (!simTrackstersHandle.isValid ()) {
208+ iEvent.put (std::make_unique<ticl::AssociationMap<ticl::mapWithSharedEnergyAndScore,
209+ std::vector<ticl::Trackster>,
210+ std::vector<ticl::Trackster>>>(),
211+ tracksterToken.first + " To" + simTracksterToken.first );
212+ iEvent.put (std::make_unique<ticl::AssociationMap<ticl::mapWithSharedEnergyAndScore,
213+ std::vector<ticl::Trackster>,
214+ std::vector<ticl::Trackster>>>(),
215+ simTracksterToken.first + " To" + tracksterToken.first );
216+ continue ;
217+ }
218+
207219 const auto & simTracksters = *simTrackstersHandle;
208220
209221 // Retrieve the correct HitToSimTracksterMap for the current simTrackster collection
@@ -240,11 +252,17 @@ void AllTracksterToSimTracksterAssociatorsByHitsProducer::produce(edm::StreamID,
240252
241253 for (unsigned int tracksterIndex = 0 ; tracksterIndex < recoTracksters.size (); ++tracksterIndex) {
242254 edm::Ref<std::vector<ticl::Trackster>> recoTracksterRef (recoTrackstersHandle, tracksterIndex);
255+
243256 float recoToSimScoresDenominator = 0 .f ;
244257 const auto & recoTracksterHitsAndFractions = tracksterToHitMap[tracksterIndex];
258+
259+ if (tracksterToHitMap.size () == 0 )
260+ continue ;
261+
245262 ticl::AssociationMap<ticl::mapWithFraction> hitToAssociatedSimTracksterMap (
246263 recoTracksterHitsAndFractions.size ());
247264 std::vector<unsigned int > associatedSimTracksterIndices;
265+
248266 for (unsigned int i = 0 ; i < recoTracksterHitsAndFractions.size (); ++i) {
249267 const auto & hitElement = recoTracksterHitsAndFractions[i];
250268 unsigned int hitIndex = hitElement.index ();
@@ -261,6 +279,7 @@ void AllTracksterToSimTracksterAssociatorsByHitsProducer::produce(edm::StreamID,
261279 const auto & simTrackster = simTracksters[simTracksterIndex];
262280 auto & seed = simTrackster.seedID ();
263281 float simFraction = 0 ;
282+
264283 if (seed == caloParticlesHandle.id ()) {
265284 unsigned int caloParticleIndex = simTrackster.seedIndex ();
266285 auto it =
@@ -279,6 +298,7 @@ void AllTracksterToSimTracksterAssociatorsByHitsProducer::produce(edm::StreamID,
279298 simFraction = it->fraction ();
280299 }
281300 }
301+
282302 hitToAssociatedSimTracksterMap.insert (i, simTracksterIndex, simFraction);
283303 associatedSimTracksterIndices.push_back (simTracksterIndex);
284304 }
0 commit comments