Skip to content

Commit

Permalink
Merge pull request #21084 from davidcarbonis/phase1pixelValidation_94…
Browse files Browse the repository at this point in the history
…0_fixes_v1

Pixel Validation - Tracking Particle code fix.
  • Loading branch information
cmsbuild committed Nov 2, 2017
2 parents 2f95528 + 08e504e commit 044517a
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,11 @@ class SiPixelPhase1TrackingParticleV : public SiPixelPhase1Base {

public:
explicit SiPixelPhase1TrackingParticleV(const edm::ParameterSet& conf);
void analyze(const edm::Event&, const edm::EventSetup&);
void analyze(const edm::Event&, const edm::EventSetup&) override;

private:
edm::EDGetTokenT<TrackingParticleCollection> vec_TrackingParticle_Token_;
std::vector<edm::EDGetTokenT<std::vector<PSimHit> > > simHitTokens_;
std::vector<std::pair<unsigned int, const PSimHit *>> trackIdToHitPtr_;
};

#endif
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,18 +51,19 @@ void SiPixelPhase1TrackingParticleV::analyze(const edm::Event& iEvent, const edm
edm::Handle<TrackingParticleCollection> TruthTrackContainer;
iEvent.getByToken( vec_TrackingParticle_Token_, TruthTrackContainer );
const TrackingParticleCollection *tPC = TruthTrackContainer.product();
std::vector<std::pair<unsigned int, const PSimHit *>> trackIdToHitPtr;

// A multimap linking SimTrack::trackId() to a pointer to PSimHit
// Similar to TrackingTruthAccumulator
for(const auto& simHitToken: simHitTokens_) {
edm::Handle<std::vector<PSimHit> > hsimhits;
iEvent.getByToken(simHitToken, hsimhits);
trackIdToHitPtr_.reserve(trackIdToHitPtr_.size()+hsimhits->size());
trackIdToHitPtr.reserve(trackIdToHitPtr.size()+hsimhits->size());
for(const auto& simHit: *hsimhits) {
trackIdToHitPtr_.emplace_back(simHit.trackId(), &simHit);
trackIdToHitPtr.emplace_back(simHit.trackId(), &simHit);
}
}
std::stable_sort(trackIdToHitPtr_.begin(), trackIdToHitPtr_.end(), trackIdHitPairLessSort);
std::stable_sort(trackIdToHitPtr.begin(), trackIdToHitPtr.end(), trackIdHitPairLessSort);


// Loop over TrackingParticle's
Expand All @@ -75,7 +76,7 @@ void SiPixelPhase1TrackingParticleV::analyze(const edm::Event& iEvent, const edm

for(const SimTrack& simTrack: t->g4Tracks()) {
// Logic is from TrackingTruthAccumulator
auto range = std::equal_range(trackIdToHitPtr_.begin(), trackIdToHitPtr_.end(), std::pair<unsigned int, const PSimHit *>(simTrack.trackId(), nullptr), trackIdHitPairLess);
auto range = std::equal_range(trackIdToHitPtr.begin(), trackIdToHitPtr.end(), std::pair<unsigned int, const PSimHit *>(simTrack.trackId(), nullptr), trackIdHitPairLess);
if(range.first == range.second) continue;

auto iHitPtr = range.first;
Expand Down

0 comments on commit 044517a

Please sign in to comment.