Skip to content

Commit ce74f55

Browse files
authored
Merge pull request #29 from madbaron/matching_fix
protections against missing objects
2 parents d045c6d + 4935bfc commit ce74f55

2 files changed

Lines changed: 12 additions & 16 deletions

File tree

src/ACTSDuplicateRemoval.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ void ACTSDuplicateRemoval::processEvent(LCEvent* evt) {
103103
std::vector<EVENT::Track*> finalTracks;
104104
for (EVENT::Track* myTrk : sortedInput) {
105105
bool foundAnEqual = false;
106-
for (int i = (finalTracks.size() >= 10) ? finalTracks.size() - 10 : 0;
106+
for (size_t i = (finalTracks.size() >= 10) ? finalTracks.size() - 10 : 0;
107107
i < finalTracks.size(); ++i) {
108108
EVENT::Track* otherTrk = finalTracks[i];
109109

src/TrackTruthProc.cxx

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -57,17 +57,15 @@ void TrackTruthProc::processEvent(LCEvent* evt) {
5757
std::vector<std::shared_ptr<LCRelationNavigator>> hit2simhits;
5858
for (const std::string& name : _inColH2SH) {
5959
// Get the collection of tracker hit relations
60-
LCCollection* trackerHitRelationCollection =
61-
ACTSTracking::getCollection(evt, name);
62-
std::shared_ptr<LCRelationNavigator> hit2simhit =
63-
std::make_shared<LCRelationNavigator>(trackerHitRelationCollection);
60+
LCCollection* trackerHitRelationCollection = ACTSTracking::getCollection(evt, name);
61+
if (trackerHitRelationCollection == nullptr) continue;
62+
std::shared_ptr<LCRelationNavigator> hit2simhit = std::make_shared<LCRelationNavigator>(trackerHitRelationCollection);
6463
hit2simhits.push_back(hit2simhit);
6564
}
6665

6766
//
6867
// MC particles
69-
LCCollection* particleCollection =
70-
ACTSTracking::getCollection(evt, _inColMCP);
68+
LCCollection* particleCollection = ACTSTracking::getCollection(evt, _inColMCP);
7169
if (particleCollection == nullptr) return;
7270
int nParticles = particleCollection->getNumberOfElements();
7371

@@ -83,8 +81,7 @@ void TrackTruthProc::processEvent(LCEvent* evt) {
8381

8482
for (int itT = 0; itT < nTracks; ++itT) {
8583
// Get the track
86-
EVENT::Track* track =
87-
static_cast<EVENT::Track*>(trackCollection->getElementAt(itT));
84+
EVENT::Track* track = static_cast<EVENT::Track*>(trackCollection->getElementAt(itT));
8885

8986
// Loop over all hits in a track and associate it to a MC particle
9087
std::map<EVENT::MCParticle*, uint32_t> trackhit2mc;
@@ -99,20 +96,19 @@ void TrackTruthProc::processEvent(LCEvent* evt) {
9996
}
10097
}
10198

99+
if (simHit == nullptr) continue;
100+
102101
// Increment MC particle counter
103-
if (simHit->getMCParticle() != nullptr)
104-
trackhit2mc[simHit->getMCParticle()]++;
102+
if (simHit->getMCParticle() != nullptr) trackhit2mc[simHit->getMCParticle()]++;
103+
105104
}
106105

107106
// Update best matches
108-
for (const std::pair<EVENT::MCParticle*, uint32_t>& mchit : trackhit2mc) {
109-
float frac =
110-
static_cast<float>(mchit.second) / track->getTrackerHits().size();
107+
for (const std::pair<EVENT::MCParticle*, uint32_t>& mchit : trackhit2mc) { float frac = static_cast<float>(mchit.second) / track->getTrackerHits().size();
111108

112109
bool better =
113110
mcBestMatch_track.count(mchit.first) == 0 || // no best match exists
114-
mcBestMatch_frac[mchit.first] <
115-
frac; // this match is better (more hits on track)
111+
mcBestMatch_frac[mchit.first] < frac; // this match is better (more hits on track)
116112

117113
if (better) {
118114
mcBestMatch_track[mchit.first] = track;

0 commit comments

Comments
 (0)