LDMX Software
Public Member Functions | Private Attributes | List of all members
biasing::PrimaryToEcalFilter Class Reference

User stepping action used to filter events where the primary particle falls below a threshold before reaching the CalorimeterRegion. More...

#include <PrimaryToEcalFilter.h>

Public Member Functions

 PrimaryToEcalFilter (const std::string &name, framework::config::Parameters &parameters)
 Constructor.
 
 ~PrimaryToEcalFilter ()
 Destructor.
 
void stepping (const G4Step *step) override
 Only process if the track is a primary (parentID == 0) and if the event is not aborted and the particle is not in the CalorimeterRegion.
 
std::vector< simcore::TYPE > getTypes () override
 Retrieve the type of actions this class defines.
 
- Public Member Functions inherited from simcore::UserAction
 UserAction (const std::string &name, framework::config::Parameters &parameters)
 Constructor.
 
virtual ~UserAction ()=default
 Destructor.
 
virtual void BeginOfEventAction (const G4Event *)
 Method called at the beginning of every event.
 
virtual void EndOfEventAction (const G4Event *)
 Method called at the end of every event.
 
virtual void BeginOfRunAction (const G4Run *)
 Method called at the beginning of a run.
 
virtual void EndOfRunAction (const G4Run *)
 Method called at the end of a run.
 
virtual void PreUserTrackingAction (const G4Track *)
 Method called before the UserTrackingAction.
 
virtual void PostUserTrackingAction (const G4Track *)
 Method called after the UserTrackingAction.
 
virtual G4ClassificationOfNewTrack ClassifyNewTrack (const G4Track *, const G4ClassificationOfNewTrack &cl)
 Method called when a track is updated.
 
virtual void NewStage ()
 Method called at the beginning of a new stage.
 
virtual void PrepareNewEvent ()
 Method called at the beginning of a new event.
 

Private Attributes

double threshold_
 Energy [MeV] below which a primary should be vetoed.
 

Additional Inherited Members

- Public Types inherited from simcore::UserAction
using Factory = ::simcore::Factory< UserAction, std::shared_ptr< UserAction >, const std::string &, framework::config::Parameters & >
 factory for user actions
 
- Protected Member Functions inherited from simcore::UserAction
UserEventInformationgetEventInfo () const
 Get a handle to the event information.
 
const std::map< int, ldmx::SimParticle > & getCurrentParticleMap () const
 Get the current particle map.
 
- Protected Attributes inherited from simcore::UserAction
std::string name_ {""}
 Name of the UserAction.
 
framework::config::Parameters parameters_
 The set of parameters used to configure this class.
 

Detailed Description

User stepping action used to filter events where the primary particle falls below a threshold before reaching the CalorimeterRegion.

This is a simplistic filter designed similar to the TaggerVetoFilter.

Definition at line 25 of file PrimaryToEcalFilter.h.

Constructor & Destructor Documentation

◆ PrimaryToEcalFilter()

biasing::PrimaryToEcalFilter::PrimaryToEcalFilter ( const std::string &  name,
framework::config::Parameters parameters 
)

Constructor.

Parameters
[in]namethe name of the instance of this UserAction.
[in]parametersthe parameters used to configure this UserAction.

Definition at line 13 of file PrimaryToEcalFilter.cxx.

15 : simcore::UserAction(name, parameters) {
16 threshold_ = parameters.getParameter<double>("threshold");
17}
double threshold_
Energy [MeV] below which a primary should be vetoed.
T getParameter(const std::string &name) const
Retrieve the parameter of the given name.
Definition Parameters.h:89
Interface that defines a user action.
Definition UserAction.h:42

References framework::config::Parameters::getParameter(), and threshold_.

◆ ~PrimaryToEcalFilter()

biasing::PrimaryToEcalFilter::~PrimaryToEcalFilter ( )
inline

Destructor.

Definition at line 38 of file PrimaryToEcalFilter.h.

38{}

Member Function Documentation

◆ getTypes()

std::vector< simcore::TYPE > biasing::PrimaryToEcalFilter::getTypes ( )
inlineoverridevirtual

Retrieve the type of actions this class defines.

Implements simcore::UserAction.

Definition at line 53 of file PrimaryToEcalFilter.h.

53 {
54 return {simcore::TYPE::STEPPING};
55 }

◆ stepping()

void biasing::PrimaryToEcalFilter::stepping ( const G4Step *  step)
overridevirtual

Only process if the track is a primary (parentID == 0) and if the event is not aborted and the particle is not in the CalorimeterRegion.

If the energy of the particle is below the input threshold, then the event is aborted.

Parameters
[in]stepGeant4 step

Reimplemented from simcore::UserAction.

Definition at line 19 of file PrimaryToEcalFilter.cxx.

19 {
20 // Only process the primary electron track
21 if (int parentID{step->GetTrack()->GetParentID()}; parentID != 0) return;
22
23 if (G4EventManager::GetEventManager()->GetConstCurrentEvent()->IsAborted())
24 return;
25
26 // Get the region the particle is currently in. Continue processing
27 // the particle only if it's NOT in the calorimeter region
28 if (auto region{step->GetTrack()
29 ->GetVolume()
30 ->GetLogicalVolume()
31 ->GetRegion()
32 ->GetName()};
33 region.compareTo("CalorimeterRegion") == 0)
34 return;
35
36 // If the energy of the particle fell below threshold, stop processing the
37 // event.
38 if (auto energy{step->GetPostStepPoint()->GetTotalEnergy()};
39 energy < threshold_) {
40 /*
41 std::cout << "[ PrimaryToEcalFilter ] : Aborting "
42 <<
43 G4EventManager::GetEventManager()->GetConstCurrentEvent()->GetEventID() <<
44 std::endl;
45 */
46 step->GetTrack()->SetTrackStatus(fKillTrackAndSecondaries);
47 G4RunManager::GetRunManager()->AbortEvent();
48 return;
49 }
50}

References threshold_.

Member Data Documentation

◆ threshold_

double biasing::PrimaryToEcalFilter::threshold_
private

Energy [MeV] below which a primary should be vetoed.

Definition at line 59 of file PrimaryToEcalFilter.h.

Referenced by PrimaryToEcalFilter(), and stepping().


The documentation for this class was generated from the following files: