Loading...
Searching...
No Matches
Public Member Functions | Private Attributes | List of all members
OpNovicePrimaryGeneratorAction Class Reference

#include <Doxymodules_optical.h>

Inheritance diagram for OpNovicePrimaryGeneratorAction:
G4VUserPrimaryGeneratorAction

Public Member Functions

 OpNovicePrimaryGeneratorAction ()
 
 ~OpNovicePrimaryGeneratorAction () override
 
void GeneratePrimaries (G4Event *) override
 
void SetOptPhotonPolar ()
 
void SetOptPhotonPolar (G4double)
 
G4ParticleGunGetParticleGun ()
 

Private Attributes

G4ParticleGunfParticleGun = nullptr
 
OpNovicePrimaryGeneratorMessengerfGunMessenger = nullptr
 

Detailed Description

Definition at line 22 of file Doxymodules_optical.h.

Constructor & Destructor Documentation

◆ OpNovicePrimaryGeneratorAction()

OpNovicePrimaryGeneratorAction::OpNovicePrimaryGeneratorAction ( )

Definition at line 44 of file OpNovicePrimaryGeneratorAction.cc.

46 , fParticleGun(nullptr)
47{
48 G4int n_particle = 1;
49 fParticleGun = new G4ParticleGun(n_particle);
50 // create a messenger for this class
52 // default kinematic
53 //
54 G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable();
55 G4ParticleDefinition* particle = particleTable->FindParticle("e+");
56
57 fParticleGun->SetParticleDefinition(particle);
58 fParticleGun->SetParticleTime(0.0 * ns);
59 fParticleGun->SetParticlePosition(G4ThreeVector(0., 0., 0.));
60 fParticleGun->SetParticleMomentumDirection(G4ThreeVector(1., 0., 0.));
61 fParticleGun->SetParticleEnergy(500.0 * keV);
62}
OpNovicePrimaryGeneratorMessenger * fGunMessenger

◆ ~OpNovicePrimaryGeneratorAction()

OpNovicePrimaryGeneratorAction::~OpNovicePrimaryGeneratorAction ( )
override

Definition at line 65 of file OpNovicePrimaryGeneratorAction.cc.

66{
67 delete fParticleGun;
68 delete fGunMessenger;
69}

Member Function Documentation

◆ GeneratePrimaries()

void OpNovicePrimaryGeneratorAction::GeneratePrimaries ( G4Event anEvent)
override

Definition at line 72 of file OpNovicePrimaryGeneratorAction.cc.

73{
74 fParticleGun->GeneratePrimaryVertex(anEvent);
75}

◆ SetOptPhotonPolar() [1/2]

void OpNovicePrimaryGeneratorAction::SetOptPhotonPolar ( )

Definition at line 78 of file OpNovicePrimaryGeneratorAction.cc.

79{
80 G4double angle = G4UniformRand() * 360.0 * deg;
81 SetOptPhotonPolar(angle);
82}

◆ SetOptPhotonPolar() [2/2]

void OpNovicePrimaryGeneratorAction::SetOptPhotonPolar ( G4double  angle)

Definition at line 85 of file OpNovicePrimaryGeneratorAction.cc.

86{
87 if(fParticleGun->GetParticleDefinition()->GetParticleName() !=
88 "opticalphoton")
89 {
90 G4ExceptionDescription ed;
91 ed << "Warning: the particleGun is not an opticalphoton";
92 G4Exception("OpNovicePrimaryGeneratorAction::SetOptPhotonPolar()",
93 "OpNovice_010", JustWarning, ed);
94 return;
95 }
96
97 G4ThreeVector normal(1., 0., 0.);
98 G4ThreeVector kphoton = fParticleGun->GetParticleMomentumDirection();
99 G4ThreeVector product = normal.cross(kphoton);
100 G4double modul2 = product * product;
101
102 G4ThreeVector e_perpend(0., 0., 1.);
103 if(modul2 > 0.)
104 e_perpend = (1. / std::sqrt(modul2)) * product;
105 G4ThreeVector e_paralle = e_perpend.cross(kphoton);
106
107 G4ThreeVector polar =
108 std::cos(angle) * e_paralle + std::sin(angle) * e_perpend;
109 fParticleGun->SetParticlePolarization(polar);
110}

◆ GetParticleGun()

G4ParticleGun * OpNovicePrimaryGeneratorAction::GetParticleGun ( )
inline

Definition at line 57 of file OpNovicePrimaryGeneratorAction.hh.

57{ return fParticleGun; }

Member Data Documentation

◆ fParticleGun

G4ParticleGun* OpNovicePrimaryGeneratorAction::fParticleGun = nullptr
private

Definition at line 60 of file OpNovicePrimaryGeneratorAction.hh.

◆ fGunMessenger

OpNovicePrimaryGeneratorMessenger* OpNovicePrimaryGeneratorAction::fGunMessenger = nullptr
private

Definition at line 61 of file OpNovicePrimaryGeneratorAction.hh.


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

Applications | User Support | Publications | Collaboration