Skip to content

Commit

Permalink
match regular expression in particle name
Browse files Browse the repository at this point in the history
  • Loading branch information
jalimena committed Sep 9, 2017
1 parent 3043808 commit b7ce399
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 11 deletions.
13 changes: 6 additions & 7 deletions SimG4Core/CustomPhysics/interface/RHStopTracer.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,12 @@ class RHStopTracer : public SimProducer,
{
public:
RHStopTracer(edm::ParameterSet const & p);
virtual ~RHStopTracer();
void update(const BeginOfRun *);
void update(const BeginOfEvent *);
void update(const BeginOfTrack *);
void update(const EndOfTrack *);
void produce(edm::Event&, const edm::EventSetup&);
~RHStopTracer() override;
void update(const BeginOfRun *) override;
void update(const BeginOfEvent *) override;
void update(const BeginOfTrack *) override;
void update(const EndOfTrack *) override;
void produce(edm::Event&, const edm::EventSetup&) override;
private:
struct StopPoint {
StopPoint (const std::string& fName, double fX, double fY, double fZ, double fT, int fId, double fMass, double fCharge)
Expand All @@ -44,7 +44,6 @@ class RHStopTracer : public SimProducer,
bool mStopRegular;
double mTraceEnergy;
std::string mTraceParticleName;
const G4ParticleDefinition* mParticle;
std::vector <StopPoint> mStopPoints;
};

Expand Down
16 changes: 12 additions & 4 deletions SimG4Core/CustomPhysics/plugins/RHStopTracer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
#include "G4ParticleTable.hh"
#include "G4ParticleDefinition.hh"

#include <regex>

RHStopTracer::RHStopTracer(edm::ParameterSet const & p) {
edm::ParameterSet parameters = p.getParameter<edm::ParameterSet>("RHStopTracer");
mStopRegular = parameters.getUntrackedParameter<bool>("stopRegularParticles", false);
Expand All @@ -31,8 +33,6 @@ RHStopTracer::RHStopTracer(edm::ParameterSet const & p) {
produces< std::vector<float> >("StoppedParticlesMass");
produces< std::vector<float> >("StoppedParticlesCharge");

mParticle = G4ParticleTable::GetParticleTable()->FindParticle(mTraceParticleName);

edm::LogInfo("SimG4CoreCustomPhysics")
<< "RHStopTracer::RHStopTracer " << mTraceParticleName
<< " Eth(GeV)= " << mTraceEnergy;
Expand All @@ -55,7 +55,10 @@ void RHStopTracer::update (const BeginOfEvent * fEvent) {
void RHStopTracer::update (const BeginOfTrack * fTrack) {
const G4Track* track = (*fTrack)();
const G4ParticleDefinition* part = track->GetDefinition();
if(part && part == mParticle && track->GetKineticEnergy() > mTraceEnergy) {
std::string stringPartName = part->GetParticleName();
std::regex rePartName(mTraceParticleName);
bool matched = std::regex_match(stringPartName,rePartName);
if((part && matched) || track->GetKineticEnergy() > mTraceEnergy) {
LogDebug("SimG4CoreCustomPhysics")
<< "RHStopTracer::update-> new track: ID/Name/pdgId/mass/charge/Parent: "
<< track->GetTrackID() << '/' << part->GetParticleName() << '/'
Expand All @@ -73,7 +76,10 @@ void RHStopTracer::update (const BeginOfTrack * fTrack) {
void RHStopTracer::update (const EndOfTrack * fTrack) {
const G4Track* track = (*fTrack)();
const G4ParticleDefinition* part = track->GetDefinition();
if(part && part == mParticle && track->GetKineticEnergy() > mTraceEnergy) {
std::string stringPartName = part->GetParticleName();
std::regex rePartName(mTraceParticleName);
bool matched = std::regex_match(stringPartName,rePartName);
if((part && matched) || track->GetKineticEnergy() > mTraceEnergy) {
LogDebug("SimG4CoreCustomPhysics") <<
"RHStopTracer::update-> stop track: ID/Name/pdgId/mass/charge/Parent: "
<< track->GetTrackID() << '/' << part->GetParticleName() << '/'
Expand All @@ -84,6 +90,8 @@ void RHStopTracer::update (const EndOfTrack * fTrack) {
<< " R/phi: " << track->GetPosition().perp() << '/' << track->GetPosition().phi()
<< " 4vec " << track->GetMomentum();
if (track->GetMomentum().mag () < 0.001) {
LogDebug("SimG4CoreCustomPhysics") <<
"RHStopTracer:: track has stopped, so making StopPoint";
mStopPoints.push_back (StopPoint (track->GetDefinition()->GetParticleName(),
track->GetPosition().x(),
track->GetPosition().y(),
Expand Down

0 comments on commit b7ce399

Please sign in to comment.