Stable/Interacting particle filter for HepMC particles to be used in the stack filling process.
More...
#include <GenParticleSimAcceptList.h>
|
| StringArrayProperty | m_acceptLists {this, "AcceptLists", {"G4particle_acceptlist.txt"} } |
| | The location of the accept lists.
|
| std::vector< long int > | m_pdgId |
| | Allowed PDG IDs.
|
| BooleanProperty | m_qs {this, "QuasiStableSim", true} |
| | Switch for quasi-stable particle simulation.
|
| BooleanProperty | m_useShadowEvent {this, "UseShadowEvent", false, "New approach to selecting particles for simulation" } |
| DoubleProperty | m_minDecayRadiusQS {this, "MinimumDecayRadiusQS", 30.19*Gaudi::Units::mm} |
| | Decay radius below which QS particles should be ignored.
|
Stable/Interacting particle filter for HepMC particles to be used in the stack filling process.
Checks this particle and all daughters.
- Author
- ZLMarshall -at- lbl.gov
Definition at line 31 of file GenParticleSimAcceptList.h.
◆ GenParticleSimAcceptList()
| ISF::GenParticleSimAcceptList::GenParticleSimAcceptList |
( |
const std::string & | t, |
|
|
const std::string & | n, |
|
|
const IInterface * | p ) |
◆ ~GenParticleSimAcceptList()
| ISF::GenParticleSimAcceptList::~GenParticleSimAcceptList |
( |
| ) |
|
|
inline |
◆ finalize()
| StatusCode ISF::GenParticleSimAcceptList::finalize |
( |
| ) |
|
|
finaloverridevirtual |
◆ initialize()
| StatusCode ISF::GenParticleSimAcceptList::initialize |
( |
| ) |
|
|
finaloverridevirtual |
Athena algtool's Hooks.
Definition at line 31 of file GenParticleSimAcceptList.cxx.
32{
34
35
37
39
41 std::ifstream white_list;
42 white_list.open( resolvedFilename );
43 if (!white_list.is_open()){
45 return StatusCode::FAILURE;
46 }
47
48
49 std::string a_line;
50 char * pEnd;
51 while (!white_list.eof()){
52 getline( white_list , a_line );
53 long int pdg = strtol( a_line.c_str() , &pEnd , 10 );
56 } else {
57 ATH_MSG_DEBUG(
"pdgId " << pdg <<
" already in acceptlist. Will not add it again.");
58 }
59 }
60
61
63 }
64
65
66 return StatusCode::SUCCESS;
67}
StringArrayProperty m_acceptLists
The location of the accept lists.
std::vector< long int > m_pdgId
Allowed PDG IDs.
static std::string find_file(const std::string &logical_file_name, const std::string &search_path)
void sort(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of sort for DataVector/List.
◆ pass() [1/2]
passes through to the private version
passes through to the private version of the filter
Definition at line 70 of file GenParticleSimAcceptList.cxx.
71{
72
73 ATH_MSG_VERBOSE(
"Checking whether " << particle <<
" passes the filter." );
74
75 std::vector<int> vertices(500);
76 bool so_far_so_good =
pass( particle , vertices );
77
78
79 const int id_of_particle =
particle->id();
80 if (so_far_so_good &&
particle->production_vertex() &&
m_qs){
81 for (
auto& pit:
particle->production_vertex()->particles_in()){
82
83 if ( pit->id() == id_of_particle ) continue;
84
85 vertices.clear();
86 bool parent_all_clear =
pass( pit , vertices );
88 "\nIf true, will not pass the daughter because it should have been picked up through the parent already (to avoid multi-counting)." );
89 so_far_so_good = so_far_so_good && !parent_all_clear;
90 }
91 }
92
93 return so_far_so_good;
94}
virtual bool pass(const HepMC::ConstGenParticlePtr &particle) const override
passes through to the private version
BooleanProperty m_qs
Switch for quasi-stable particle simulation.
constexpr ParticleHypothesis particle[PARTICLEHYPOTHESES]
the array of masses
◆ pass() [2/2]
returns true if the the particle and all daughters are on the accept list
Definition at line 98 of file GenParticleSimAcceptList.cxx.
99{
100
102
104
106
107
108
109
111 if (passFilter) {
112
113 if ( std::find( used_vertices.begin() , used_vertices.end() ,
particle->end_vertex()->id() )==used_vertices.end() ){
114 used_vertices.push_back(
particle->end_vertex()->id() );
115 for (
auto& pit:
particle->end_vertex()->particles_out()){
117 if (!passFilter) {
119 break;
120 }
121 }
122 }
123 }
124 else {
126 }
127 }
129 ATH_MSG_ERROR(
"Found a particle with no end vertex that does not appear in the accept list." );
130 ATH_MSG_ERROR(
"This is VERY likely pointing to a problem with either the configuration you ");
131 ATH_MSG_ERROR(
"are using, or a bug in the generator. Either way it should be fixed. The");
132 ATH_MSG_ERROR(
"particle will come next, and then we will throw.");
134 throw std::runtime_error("GenParticleSimAcceptList: Particle with no end vertex and not in acceptlist");
135 }
136
138}
Scalar perp() const
perp method - perpendicular length
DoubleProperty m_minDecayRadiusQS
Decay radius below which QS particles should be ignored.
BooleanProperty m_useShadowEvent
bool isDecayed(const T &p)
Identify if the particle decayed.
bool isNucleus(const T &p)
PDG rule 16 Nuclear codes are given as 10-digit numbers ±10LZZZAAAI.
bool isPhysical(const T &p)
Identify if the particle is physical, i.e. is stable or decayed.
const Amg::Vector3D & position() const
Method to retrieve the position of the Intersection.
◆ m_acceptLists
| StringArrayProperty ISF::GenParticleSimAcceptList::m_acceptLists {this, "AcceptLists", {"G4particle_acceptlist.txt"} } |
|
private |
The location of the accept lists.
Definition at line 50 of file GenParticleSimAcceptList.h.
50{this, "AcceptLists", {"G4particle_acceptlist.txt"} };
◆ m_minDecayRadiusQS
| DoubleProperty ISF::GenParticleSimAcceptList::m_minDecayRadiusQS {this, "MinimumDecayRadiusQS", 30.19*Gaudi::Units::mm} |
|
private |
Decay radius below which QS particles should be ignored.
Definition at line 54 of file GenParticleSimAcceptList.h.
54{this, "MinimumDecayRadiusQS", 30.19*Gaudi::Units::mm};
◆ m_pdgId
| std::vector<long int> ISF::GenParticleSimAcceptList::m_pdgId |
|
private |
◆ m_qs
| BooleanProperty ISF::GenParticleSimAcceptList::m_qs {this, "QuasiStableSim", true} |
|
private |
◆ m_useShadowEvent
| BooleanProperty ISF::GenParticleSimAcceptList::m_useShadowEvent {this, "UseShadowEvent", false, "New approach to selecting particles for simulation" } |
|
private |
Definition at line 53 of file GenParticleSimAcceptList.h.
53{this, "UseShadowEvent", false, "New approach to selecting particles for simulation" };
The documentation for this class was generated from the following files: