ATLAS Offline Software
Loading...
Searching...
No Matches
iGeant4::ISFG4Helper Class Reference

#include <ISFG4Helper.h>

Collaboration diagram for iGeant4::ISFG4Helper:

Public Member Functions

 ISFG4Helper ()=delete

Static Public Member Functions

static ISF::ISFParticleconvertG4TrackToISFParticle (const G4Track &aTrack, const ISF::ISFParticle &parent, ISF::TruthBinding *truth=nullptr)
 convert the given G4Track into an ISFParticle
static VTrackInformationgetISFTrackInfo (const G4Track &aTrack)
 return a valid UserInformation object of the G4Track for use within the ISF
static void setG4TrackInfoFromBaseISFParticle (G4Track &aTrack, const ISF::ISFParticle &baseIsp, bool setReturnToISF=false)
 link the given G4Track to the given ISFParticle
static TrackInformationattachTrackInfoToNewG4Track (G4Track &aTrack, ISF::ISFParticle &baseIsp, VTrackInformation::TrackClassification classification, HepMC::GenParticlePtr generationZeroGenParticle=nullptr)
 attach a new TrackInformation object to the given new (!) G4Track (the G4Track must not have a UserInformation object attached to it)

Detailed Description

Definition at line 24 of file ISFG4Helper.h.

Constructor & Destructor Documentation

◆ ISFG4Helper()

iGeant4::ISFG4Helper::ISFG4Helper ( )
delete

Member Function Documentation

◆ attachTrackInfoToNewG4Track()

TrackInformation * iGeant4::ISFG4Helper::attachTrackInfoToNewG4Track ( G4Track & aTrack,
ISF::ISFParticle & baseIsp,
VTrackInformation::TrackClassification classification,
HepMC::GenParticlePtr generationZeroGenParticle = nullptr )
static

attach a new TrackInformation object to the given new (!) G4Track (the G4Track must not have a UserInformation object attached to it)

link the given G4Track to the given ISFParticle

Definition at line 75 of file ISFG4Helper.cxx.

79{
80 if ( aTrack.GetUserInformation() ) {
81 G4ExceptionDescription description;
82 description << G4String("ISFG4Helper::attachTrackInfoToNewG4Track: ")
83 << "Trying to attach new TrackInformation object to G4Track which already has a TrackUserInformation attached (trackID: "
84 << aTrack.GetTrackID() << ", track pos: "<<aTrack.GetPosition() << ", mom: "<<aTrack.GetMomentum()
85 << ", parentID " << aTrack.GetParentID() << ")";
86 G4Exception("ISFG4Helper::attachTrackInfoToNewG4Track", "TrackUserInformationAlreadyExists", FatalException, description);
87 return nullptr;
88 }
89
90 auto* truthBinding = baseIsp.getTruthBinding();
91 if ( !truthBinding ) {
92 G4ExceptionDescription description;
93 description << G4String("ISFG4Helper::attachTrackInfoToNewG4Track: ")
94 << "No TruthBinding present in base ISFParticle (trackID: "
95 << aTrack.GetTrackID() << ", track pos: "<<aTrack.GetPosition() << ", mom: "<<aTrack.GetMomentum()
96 << ", parentID " << aTrack.GetParentID() << ", ISFParticle: "<<baseIsp<<")";
97 G4Exception("ISFG4Helper::attachTrackInfoToNewG4Track", "NoISFTruthBinding", FatalException, description);
98 return nullptr;
99 }
100
101 TrackInformation *trackInfo = new TrackInformation( nullptr, &baseIsp );
102 trackInfo->SetPrimaryGenParticle( truthBinding->getPrimaryGenParticle() );
103 trackInfo->SetGenerationZeroGenParticle( generationZeroGenParticle );
104 if (classification != VTrackInformation::Secondary) {
105 trackInfo->SetCurrentGenParticle( truthBinding->getCurrentGenParticle() );
106 }
107 trackInfo->SetClassification( classification );
108 aTrack.SetUserInformation( trackInfo );
109
110 return trackInfo;
111}
const TruthBinding * getTruthBinding() const
pointer to the simulation truth - optional, can be 0
virtual void SetGenerationZeroGenParticle(HepMC::GenParticlePtr) override
set m_generationZeroGenParticle, the pointer to the simulation truth particle before any regeneration...
virtual void SetCurrentGenParticle(HepMC::GenParticlePtr) override
set m_currentGenParticle, the pointer to the GenParticle corresponding to the current G4Track.
void SetPrimaryGenParticle(HepMC::GenParticlePtr)
set the pointer to the GenParticle used to create the initial G4PrimaryParticle from which the curren...
void SetClassification(TrackClassification tc)
update the classification of the currently tracked particle, usually called when a new G4Track is cre...
std::string description
glabal timer - how long have I taken so far?
Definition hcg.cxx:93

◆ convertG4TrackToISFParticle()

ISF::ISFParticle * iGeant4::ISFG4Helper::convertG4TrackToISFParticle ( const G4Track & aTrack,
const ISF::ISFParticle & parent,
ISF::TruthBinding * truth = nullptr )
static

convert the given G4Track into an ISFParticle

Definition at line 28 of file ISFG4Helper.cxx.

31{
32 const G4ThreeVector& g4pos = aTrack.GetPosition();
33 const double gTime = aTrack.GetGlobalTime();
34 const Amg::Vector3D position(g4pos.x(),g4pos.y(),g4pos.z());
35
36 const G4ThreeVector& g4mom = aTrack.GetMomentum();
37 const Amg::Vector3D momentum(g4mom.x(),g4mom.y(),g4mom.z());
38
39 const G4ParticleDefinition &particleDefinition = *aTrack.GetDefinition();
40 double mass = particleDefinition.GetPDGMass();
41 double charge = particleDefinition.GetPDGCharge();
42 int pdgID = particleDefinition.GetPDGEncoding();
43
44 int barcode = (truth && truth->getCurrentGenParticle() ) ? HepMC::barcode(truth->getCurrentGenParticle()) : HepMC::UNDEFINED_ID; // FIXME barcode-based
45 const int id = (truth && truth->getCurrentGenParticle() ) ? HepMC::uniqueID(truth->getCurrentGenParticle()) : HepMC::UNDEFINED_ID;
46 const int status = (truth && truth->getCurrentGenParticle() ) ? truth->getCurrentGenParticle()->status() : 1;
47 ISF::ISFParticle *isp = new ISF::ISFParticle( position,
48 momentum,
49 mass,
50 charge,
51 pdgID,
52 status,
53 gTime,
54 parent,
55 id,
56 barcode, // FIXME barcode-based
57 truth
58 );
59
60 return isp;
61}
double charge(const T &p)
Definition AtlasPID.h:997
HepMC::GenParticlePtr getCurrentGenParticle()
pointer to the particle in the simulation truth
Eigen::Matrix< double, 3, 1 > Vector3D
int barcode(const T *p)
Definition Barcode.h:15
int uniqueID(const T &p)
constexpr int UNDEFINED_ID
const Amg::Vector3D & position() const
Method to retrieve the position of the Intersection.
status
Definition merge.py:16

◆ getISFTrackInfo()

VTrackInformation * iGeant4::ISFG4Helper::getISFTrackInfo ( const G4Track & aTrack)
static

return a valid UserInformation object of the G4Track for use within the ISF

Definition at line 66 of file ISFG4Helper.cxx.

67{
68 VTrackInformation* trackInfo = static_cast<VTrackInformation*>(aTrack.GetUserInformation());
69 return trackInfo;
70}

◆ setG4TrackInfoFromBaseISFParticle()

void iGeant4::ISFG4Helper::setG4TrackInfoFromBaseISFParticle ( G4Track & aTrack,
const ISF::ISFParticle & baseIsp,
bool setReturnToISF = false )
static

link the given G4Track to the given ISFParticle


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