Geant4  10.03.p03
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4BlinePrimaryGeneratorAction Class Reference

#include <G4BlinePrimaryGeneratorAction.hh>

Inheritance diagram for G4BlinePrimaryGeneratorAction:
Collaboration diagram for G4BlinePrimaryGeneratorAction:

Public Member Functions

 G4BlinePrimaryGeneratorAction ()
 
virtual ~G4BlinePrimaryGeneratorAction ()
 
virtual void GeneratePrimaries (G4Event *anEvent)
 
void SetUserPrimaryAction (G4VUserPrimaryGeneratorAction *anAction)
 
- Public Member Functions inherited from G4VUserPrimaryGeneratorAction
 G4VUserPrimaryGeneratorAction ()
 
virtual ~G4VUserPrimaryGeneratorAction ()
 

Detailed Description

Definition at line 60 of file G4BlinePrimaryGeneratorAction.hh.

Constructor & Destructor Documentation

G4BlinePrimaryGeneratorAction::G4BlinePrimaryGeneratorAction ( )

Definition at line 51 of file G4BlinePrimaryGeneratorAction.cc.

52 {
53  fUserPrimaryAction = 0;
54  fFirstPartOfBline = true;
55 }
G4BlinePrimaryGeneratorAction::~G4BlinePrimaryGeneratorAction ( )
virtual

Definition at line 59 of file G4BlinePrimaryGeneratorAction.cc.

60 {
61 }

Member Function Documentation

void G4BlinePrimaryGeneratorAction::GeneratePrimaries ( G4Event anEvent)
virtual

Implements G4VUserPrimaryGeneratorAction.

Definition at line 65 of file G4BlinePrimaryGeneratorAction.cc.

66 {
67  if (!fUserPrimaryAction)
68  {
69  G4Exception("G4BlinePrimaryGeneratorAction::GeneratePrimaries()",
70  "NullPointer", JustWarning,
71  "Primary generator action not defined !");
72  return;
73  }
74 
75  // For the first part of a bline the start position and time are defined
76  // by using the USER primary action while for the second part the previous
77  // values are taken.
78 
79  if (fFirstPartOfBline)
80  {
81  // set the position and time defined by using the USER primary action
82 
83  G4Event* tmpEvent = new G4Event();
84  fUserPrimaryAction->GeneratePrimaries(tmpEvent);
85  fBlineStartPosition = tmpEvent->GetPrimaryVertex()->GetPosition();
86  fT0 = tmpEvent->GetPrimaryVertex()->GetT0();
87  delete tmpEvent;
88  }
89  fFirstPartOfBline = false;
90 
91  G4PrimaryVertex* primary_vertex =
92  new G4PrimaryVertex(fBlineStartPosition, fT0);
93 
94  // Define the particle to be tracked as Charged Geantino
95 
97 
98  G4double mass = pdef->GetPDGMass();
99  G4double energy = 10000.*MeV + mass;
100  G4double pmom = std::sqrt(energy*energy-mass*mass);
101 
102  // The momentum direction and energy do not have an effect in tracing of
103  // bline but still need to be defined.
104 
105  G4double px = 0.;
106  G4double py = 0.;
107  G4double pz = pmom;
108 
109  G4PrimaryParticle* particle = new G4PrimaryParticle(pdef,px,py,pz);
110  particle->SetMass( mass );
111  particle->SetCharge(pdef->GetPDGCharge());
112  primary_vertex->SetPrimary( particle );
113 
114  anEvent->AddPrimaryVertex( primary_vertex );
115 }
G4ThreeVector GetPosition() const
void AddPrimaryVertex(G4PrimaryVertex *aPrimaryVertex)
Definition: G4Event.hh:154
static G4ChargedGeantino * ChargedGeantino()
G4double GetT0() const
void SetMass(G4double mas)
G4PrimaryVertex * GetPrimaryVertex(G4int i=0) const
Definition: G4Event.hh:167
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
virtual void GeneratePrimaries(G4Event *anEvent)=0
G4double GetPDGMass() const
G4double energy(const ThreeVector &p, const G4double m)
void SetCharge(G4double chg)
void SetPrimary(G4PrimaryParticle *pp)
static constexpr double MeV
Definition: G4SIunits.hh:214
double G4double
Definition: G4Types.hh:76
G4double GetPDGCharge() const

Here is the call graph for this function:

void G4BlinePrimaryGeneratorAction::SetUserPrimaryAction ( G4VUserPrimaryGeneratorAction anAction)
inline

Definition at line 68 of file G4BlinePrimaryGeneratorAction.hh.

69  { fUserPrimaryAction=anAction; }

Here is the caller graph for this function:


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