Import Geant4 11.3.0 source tree

This commit is contained in:
Gabriele Cosmo
2024-12-06 11:11:40 +01:00
parent e58e650b32
commit 32390e802b
1984 changed files with 98713 additions and 83996 deletions
@@ -37,70 +37,75 @@
#include "HistoManager.hh"
#include "Run.hh"
#include "G4PhysicalConstants.hh"
#include "G4Positron.hh"
#include "G4RunManager.hh"
#include "G4StepStatus.hh"
#include "G4Track.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
TrackingAction::TrackingAction(DetectorConstruction* det, EventAction* evt)
: fDetector(det), fEventAct(evt)
{}
TrackingAction::TrackingAction(DetectorConstruction* det,EventAction* evt)
:fDetector(det),fEventAct(evt)
{ }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void TrackingAction::PostUserTrackingAction(const G4Track* track)
{
G4int trackID = track->GetTrackID();
G4AnalysisManager* analysisManager = G4AnalysisManager::Instance();
Run* run = static_cast<Run*>(G4RunManager::GetRunManager()->GetNonConstCurrentRun());
// track length of primary particle or charged secondaries
Run* run
= static_cast<Run*>(
G4RunManager::GetRunManager()->GetNonConstCurrentRun());
//track length of primary particle or charged secondaries
//
G4double tracklen = track->GetTrackLength();
if (trackID == 1) {
run->AddTrackLength(tracklen);
analysisManager->FillH1(3, tracklen);
}
else if (track->GetDefinition()->GetPDGCharge() != 0.)
} else if (track->GetDefinition()->GetPDGCharge() != 0.)
analysisManager->FillH1(6, tracklen);
// extract projected range of primary particle
//extract projected range of primary particle
//
if (trackID == 1) {
G4double x = track->GetPosition().x() + 0.5 * fDetector->GetAbsorSizeX();
G4double x = track->GetPosition().x() + 0.5*fDetector->GetAbsorSizeX();
run->AddProjRange(x);
analysisManager->FillH1(5, x);
}
// mean step size of primary particle
//mean step size of primary particle
//
if (trackID == 1) {
G4int nbOfSteps = track->GetCurrentStepNumber();
G4double stepSize = tracklen / nbOfSteps;
run->AddStepSize(nbOfSteps, stepSize);
G4double stepSize = tracklen/nbOfSteps;
run->AddStepSize(nbOfSteps,stepSize);
}
// status of primary particle : absorbed, transmited, reflected ?
//status of primary particle : absorbed, transmited, reflected ?
//
if (trackID == 1) {
G4int flag = 0;
if (!track->GetNextVolume()) {
if (track->GetMomentumDirection().x() > 0.)
flag = 1;
else
flag = 2;
if (track->GetMomentumDirection().x() > 0.) flag = 1;
else flag = 2;
}
run->AddTrackStatus(flag);
}
// where are we ?
G4StepStatus status = track->GetStep()->GetPostStepPoint()->GetStepStatus();
if (status == fWorldBoundary) {
G4double energy = track->GetKineticEnergy();
fEventAct->AddEleak(energy);
G4double eleak = track->GetKineticEnergy();
if (track->GetDefinition() == G4Positron::Positron()) {
eleak += 2*electron_mass_c2;
}
fEventAct->AddEleak(eleak);
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......