/
githubmirror
/
cmssw
Обзор
Документация
Войти
/
githubmirror
/
cmssw
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
SimG4Core/SaveSimTrackAction/src/SaveSimTrack.cc
38 строк
2 KB
Fabio Cossutti
update last stored ancestor for each setStoreTrack() call
16 дек 2024, 20:00
16 дек 2024, 20:00
ea61e47
Код
Авторство
О чём код?
#include "SimG4Core/SaveSimTrackAction/interface/SaveSimTrack.h" #include "SimG4Core/Notification/interface/BeginOfTrack.h" #include "SimG4Core/Notification/interface/TrackInformation.h" #include "FWCore/MessageLogger/interface/MessageLogger.h" #include "G4PhysicalConstants.hh" #include <CLHEP/Units/SystemOfUnits.h> #include "G4Track.hh" #include <algorithm> SaveSimTrack::SaveSimTrack(edm::ParameterSet const &p) { edm::ParameterSet ps = p.getParameter<edm::ParameterSet>("SaveSimTrack"); pdgs_ = ps.getUntrackedParameter<std::vector<int>>("PDGCodes"); edm::LogVerbatim("SaveSimTrack") << "SaveSimTrack:: Save Sim Track if PDG code " << "is one from the list of " << pdgs_.size() << " items"; for (unsigned int k = 0; k < pdgs_.size(); ++k) edm::LogVerbatim("SaveSimTrack") << "[" << k << "] " << pdgs_[k]; } SaveSimTrack::~SaveSimTrack() {} void SaveSimTrack::update(const BeginOfTrack *trk) { const G4Track *theTrack = (*trk)(); TrackInformation *trkInfo = reinterpret_cast<TrackInformation *>(theTrack->GetUserInformation()); if (nullptr != trkInfo) { int pdg = theTrack->GetDefinition()->GetPDGEncoding(); if (std::find(pdgs_.begin(), pdgs_.end(), pdg) != pdgs_.end()) { trkInfo->setStoreTrack(); trkInfo->setIdLastStoredAncestor(theTrack->GetTrackID()); LogDebug("SaveSimTrack") << "Save SimTrack the Track " << theTrack->GetTrackID() << " Type " << theTrack->GetDefinition()->GetParticleName() << " Momentum " << theTrack->GetMomentum() / CLHEP::MeV << " MeV/c"; } } }