add geant4 scene and gcompose app
This commit is contained in:
50
src/HEP/Geant/EmitterPrimary.cpp
Normal file
50
src/HEP/Geant/EmitterPrimary.cpp
Normal file
@@ -0,0 +1,50 @@
|
||||
#include "EmitterPrimary.hh"
|
||||
|
||||
#include "G4Box.hh"
|
||||
#include "G4LogicalVolume.hh"
|
||||
#include "G4LogicalVolumeStore.hh"
|
||||
#include "G4ParticleDefinition.hh"
|
||||
#include "G4ParticleGun.hh"
|
||||
#include "G4ParticleTable.hh"
|
||||
#include "G4RunManager.hh"
|
||||
#include "G4SystemOfUnits.hh"
|
||||
#include "Randomize.hh"
|
||||
|
||||
EmitterPrimary::EmitterPrimary()
|
||||
: G4VUserPrimaryGeneratorAction(), fParticleGun(nullptr) {
|
||||
// Creiamo il ParticleGun impostandolo per sparare 1 particella alla volta
|
||||
G4int n_particle = 1;
|
||||
fParticleGun = new G4ParticleGun(n_particle);
|
||||
|
||||
// Otteniamo la tabella delle particelle di Geant4
|
||||
G4ParticleTable *particleTable = G4ParticleTable::GetParticleTable();
|
||||
|
||||
// Cerchiamo il muone negativo (usa "mu+" per l'antimuone)
|
||||
G4String particleName = "mu-";
|
||||
G4ParticleDefinition *particle = particleTable->FindParticle(particleName);
|
||||
|
||||
// Configuriamo le proprietà iniziali della particella
|
||||
fParticleGun->SetParticleDefinition(particle);
|
||||
|
||||
// Impostiamo la direzione della quantità di moto (es. lungo l'asse Z)
|
||||
fParticleGun->SetParticleMomentumDirection(G4ThreeVector(0., 0., -1.));
|
||||
|
||||
// Impostiamo l'energia cinetica a 1 GeV
|
||||
fParticleGun->SetParticleEnergy(1.0 * GeV);
|
||||
|
||||
// Impostiamo la posizione di partenza (origine)
|
||||
fParticleGun->SetParticlePosition(G4ThreeVector(0., 0., 10. * m));
|
||||
}
|
||||
|
||||
EmitterPrimary::~EmitterPrimary() {
|
||||
// Importante: liberare la memoria
|
||||
delete fParticleGun;
|
||||
}
|
||||
|
||||
void EmitterPrimary::GeneratePrimaries(G4Event *anEvent) {
|
||||
// Questo metodo viene invocato all'inizio di ogni evento.
|
||||
// Qui potresti anche aggiungere una randomizzazione della posizione o
|
||||
// dell'energia.
|
||||
|
||||
fParticleGun->GeneratePrimaryVertex(anEvent);
|
||||
}
|
||||
Reference in New Issue
Block a user