Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4DecayKineticTracks Class Reference

#include <G4DecayKineticTracks.hh>

Public Member Functions

 G4DecayKineticTracks (G4KineticTrackVector *tracks=0)
 
void Decay (G4KineticTrackVector *tracks) const
 

Detailed Description

Definition at line 38 of file G4DecayKineticTracks.hh.

Constructor & Destructor Documentation

◆ G4DecayKineticTracks()

G4DecayKineticTracks::G4DecayKineticTracks ( G4KineticTrackVector tracks = 0)

Definition at line 39 of file G4DecayKineticTracks.cc.

39 {
40
41 if (tracks) Decay(tracks);
42}
void Decay(G4KineticTrackVector *tracks) const

Member Function Documentation

◆ Decay()

void G4DecayKineticTracks::Decay ( G4KineticTrackVector tracks) const

Definition at line 44 of file G4DecayKineticTracks.cc.

44 {
45
46 if (!tracks) return;
47
48 G4KineticTrackVector* daughters = 0;
49 for (size_t i=0; i<tracks->size(); ++i) {
50 G4KineticTrack* track = (*tracks)[i];
51 if (!track) continue;
52
53 // Select decay of current track, put daughters at end of vector
54 daughters = track->GetDefinition()->IsShortLived() ? track->Decay() : 0;
55
56 if (daughters) {
57 // Use the integer round mass in keV to get an unique ID for the parent resonance
58 G4int uniqueID = static_cast< G4int >( round( track->Get4Momentum().mag() / CLHEP::keV ) );
59
60 // Assign to the daughters the creator model ID of their parent
61 for (size_t k=0; k<daughters->size(); ++k) {
62 G4KineticTrack* aDaughter = (*daughters)[k];
63 if (aDaughter) {
64 aDaughter->SetCreatorModelID(track->GetCreatorModelID());
65 aDaughter->SetParentResonanceDef(track->GetDefinition());
66 aDaughter->SetParentResonanceID(uniqueID);
67 }
68 }
69
70 tracks->insert(tracks->end(), daughters->begin(), daughters->end());
71 delete track; // Remove parent track
72 delete daughters;
73 (*tracks)[i] = nullptr; // Flag parent's slot for removal
74 }
75 }
76
77 // Find and remove null pointers created by decays above
78 for (G4int j=(G4int)tracks->size()-1; j>=0; --j) {
79 if (nullptr == (*tracks)[j]) tracks->erase(tracks->begin()+j);
80 }
81}
int G4int
Definition: G4Types.hh:85
G4KineticTrackVector * Decay()
void SetCreatorModelID(G4int id)
G4int GetCreatorModelID() const
const G4ParticleDefinition * GetDefinition() const
void SetParentResonanceID(const G4int parentID)
const G4LorentzVector & Get4Momentum() const
void SetParentResonanceDef(const G4ParticleDefinition *parent)

Referenced by G4DecayKineticTracks().


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