1#ifndef SIMCORE_EVENT_PHOTONUCLEARINTERACTION_H
2#define SIMCORE_EVENT_PHOTONUCLEARINTERACTION_H
94 double py,
double pz,
double x,
double y,
double z,
111 void setTarget(
int Z,
int A,
const std::string& material);
168 void addDescendant(
int immediate_secondary_id,
int final_state_track_id);
187 std::vector<int>
getDescendants(
int immediate_secondary_id)
const;
227 friend std::ostream&
operator<<(std::ostream& o,
Stores detailed information about a photonuclear interaction.
int getTargetZ() const
Get the target atomic number.
std::string target_material_
Target material name.
virtual ~PhotonuclearInteraction()=default
Destructor.
std::vector< ParticleInfo > getImmediateSecondaries() const
Get all immediate secondary particles.
friend std::ostream & operator<<(std::ostream &o, const PhotonuclearInteraction &pn)
Stream operator for printing.
void setProcessName(const std::string &process)
Set the process name.
void setInteractionVolume(const std::string &volume)
Set the volume where the interaction occurred.
int target_a_
Target mass number.
void addDescendant(int immediate_secondary_id, int final_state_track_id)
Add a final state descendant track for an immediate secondary.
void print() const
Print information about this interaction.
ParticleInfo incident_photon_
Incident photon information.
void clear()
Clear the interaction data.
std::vector< int > getDescendants(int immediate_secondary_id) const
Get descendants for a specific immediate secondary.
void addImmediateSecondary(const ParticleInfo &particle)
Add an immediate secondary particle from the PN interaction.
std::string process_name_
Process name (e.g., "photonNuclear")
void setIncidentPhoton(int track_id, int pdg_id, double energy, double px, double py, double pz, double x, double y, double z, double time)
Set the incident photon information.
std::map< int, std::vector< int > > getDescendantMap() const
Get the descendant map.
std::string interaction_volume_
Volume where interaction occurred.
std::string getTargetMaterial() const
Get the target material name.
std::string getProcessName() const
Get the process name.
PhotonuclearInteraction()=default
Constructor.
void setTarget(int Z, int A, const std::string &material)
Set the target nucleus information.
int getTargetA() const
Get the target mass number.
std::vector< ParticleInfo > immediate_secondaries_
Immediate secondary particles from the cascade.
std::map< int, std::vector< int > > descendant_map_
Maps immediate secondary track ID -> final state track IDs.
std::string getInteractionVolume() const
Get the interaction volume name.
int getNumImmediateSecondaries() const
Get the number of immediate secondary particles.
ClassDef(PhotonuclearInteraction, 1)
ROOT dictionary generation.
int target_z_
Target atomic number.
ParticleInfo getIncidentPhoton() const
Get the incident photon information.
Stores kinematic and identity information for a particle.
double px_
Momentum components [MeV].
ParticleInfo()=default
Default constructor.
double x_
Position components [mm].
ClassDef(ParticleInfo, 1)
ROOT dictionary generation.
double time_
Global time [ns].
int track_id_
Track ID from Geant4.
virtual ~ParticleInfo()=default
Virtual destructor (required by ClassDef)
int pdg_id_
PDG particle ID.
double energy_
Total energy [MeV].