ATLAS Offline Software
Loading...
Searching...
No Matches
FatrasG4 Class Reference

#include <FatrasG4.h>

Inheritance diagram for FatrasG4:
Collaboration diagram for FatrasG4:

Public Member Functions

 FatrasG4 (const std::string &name, G4Region *region, const PublicToolHandle< IActsFatrasG4Tool > &ActsFatrasG4Tool, FatrasG4Tool *FatrasG4Tool)
virtual ~FatrasG4 ()=default
virtual G4bool IsApplicable (const G4ParticleDefinition &) override final
virtual void DoIt (const G4FastTrack &, G4FastStep &) override final
virtual G4bool ModelTrigger (const G4FastTrack &) override final
 Determines the applicability of the fast sim model to this particular track.

Private Attributes

PublicToolHandle< IActsFatrasG4Tool > m_ActsFatrasG4Tool

Detailed Description

Definition at line 22 of file FatrasG4.h.

Constructor & Destructor Documentation

◆ FatrasG4()

FatrasG4::FatrasG4 ( const std::string & name,
G4Region * region,
const PublicToolHandle< IActsFatrasG4Tool > & ActsFatrasG4Tool,
FatrasG4Tool * FatrasG4Tool )

Definition at line 29 of file FatrasG4.cxx.

34: G4VFastSimulationModel(name, region),
35 m_ActsFatrasG4Tool(ActsFatrasG4Tool)
36{
37}
PublicToolHandle< IActsFatrasG4Tool > m_ActsFatrasG4Tool
Definition FatrasG4.h:41

◆ ~FatrasG4()

virtual FatrasG4::~FatrasG4 ( )
virtualdefault

Member Function Documentation

◆ DoIt()

void FatrasG4::DoIt ( const G4FastTrack & fastTrack,
G4FastStep & fastStep )
finaloverridevirtual

Definition at line 96 of file FatrasG4.cxx.

97{
98 #ifdef FATRASG4_DEBUG
99 G4cout<<"FatrasG4::DoIt called"<<G4endl;
100 #endif
101
102 if (!m_ActsFatrasG4Tool.isValid()) {
103 G4cerr << "ActsFatrasG4Tool not valid!" << G4endl;
104 fastStep.KillPrimaryTrack();
105 return;
106 }
107
108 m_ActsFatrasG4Tool->simulateFatrasTrack(fastTrack, fastStep);
109}

◆ IsApplicable()

G4bool FatrasG4::IsApplicable ( const G4ParticleDefinition & particleType)
finaloverridevirtual

Definition at line 39 of file FatrasG4.cxx.

40{
41 // Check whether we can simulate the particle with FatrasG4
42 bool isPhoton = &particleType == G4Gamma::GammaDefinition();
43 bool isElectron = &particleType == G4Electron::ElectronDefinition();
44 bool isPositron = &particleType == G4Positron::PositronDefinition();
45 bool isHadron = MC::isHadron(particleType.GetPDGEncoding());
46
47 // FatrasG4 is applicable if it is photon, electron, positron or any hadron
48 bool isApplicable = isPhoton || isElectron || isPositron || isHadron;
49
50 #ifdef FATRASG4_DEBUG
51 const std::string pName = particleType.GetParticleName();
52 G4cout<< "[FatrasG4::IsApplicable] Got " << pName <<G4endl;
53 if(isApplicable) G4cout<<"[FatrasG4::IsApplicable] APPLICABLE"<<G4endl;
54 else G4cout<<"[FatrasG4::IsApplicable] NOT APPLICABLE"<<G4endl;
55 #endif
56
57
58 return isApplicable;
59}
bool isElectron(const T &p)
Definition AtlasPID.h:208
bool isPhoton(const T &p)
Definition AtlasPID.h:382
bool isHadron(const T &p)
Definition AtlasPID.h:357
bool isHadron(const T &p)

◆ ModelTrigger()

G4bool FatrasG4::ModelTrigger ( const G4FastTrack & fastTrack)
finaloverridevirtual

Determines the applicability of the fast sim model to this particular track.

Checks that geometric location, energy, and particle type are within bounds

Definition at line 61 of file FatrasG4.cxx.

62{
63
64 #ifdef FATRASG4_DEBUG
65 G4cout<<"[FatrasG4::ModelTrigger] Got particle with " <<"\n"
66 <<" pdg=" <<fastTrack.GetPrimaryTrack() -> GetDefinition()->GetPDGEncoding() <<"\n"
67 <<" Ekin="<<fastTrack.GetPrimaryTrack() -> GetKineticEnergy() <<"\n"
68 <<" p=" <<fastTrack.GetPrimaryTrack() -> GetMomentum().mag() <<"\n"
69 <<" x=" <<fastTrack.GetPrimaryTrack() -> GetPosition().x() <<"\n"
70 <<" y=" <<fastTrack.GetPrimaryTrack() -> GetPosition().y() <<"\n"
71 <<" z=" <<fastTrack.GetPrimaryTrack() -> GetPosition().z() <<"\n"
72 <<" r=" <<fastTrack.GetPrimaryTrack() -> GetPosition().perp() <<"\n"
73 <<" eta=" <<fastTrack.GetPrimaryTrack() -> GetMomentum().eta() <<"\n"
74 <<" phi=" <<fastTrack.GetPrimaryTrack() -> GetMomentum().phi() <<"\n"
75 <<G4endl;
76 #endif
77
78 const G4ParticleDefinition * G4Particle = fastTrack.GetPrimaryTrack() -> GetDefinition();
79
80 // Check particle type
81 bool isPhoton = G4Particle == G4Gamma::Definition();
82 bool isElectron = G4Particle == G4Electron::Definition();
83 bool isPositron = G4Particle == G4Positron::Definition();
84
85 // Pass all photons, electrons and positrons to FatrasG4
86 if (isPhoton || isElectron || isPositron){
87 #ifdef FATRASG4_DEBUG
88 G4cout<<"[FatrasG4::ModelTrigger] Photons, electrons or positron. Model triggered."<<G4endl;
89 #endif
90 return true;
91 }
92 else return false;
93
94}

Member Data Documentation

◆ m_ActsFatrasG4Tool

PublicToolHandle<IActsFatrasG4Tool> FatrasG4::m_ActsFatrasG4Tool
private

Definition at line 41 of file FatrasG4.h.


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