Files
geant4/examples/extended/hadronic/Hadr10/src/Run.cc
T
2025-12-05 08:54:02 +01:00

713 lines
30 KiB
C++

//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file Run.cc
/// \brief Implementation of the Run class
#include "Run.hh"
#include "G4Run.hh"
#include "G4RunManager.hh"
#include "G4SystemOfUnits.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
Run::Run()
: G4Run(),
fNumEvents(0),
fPrimaryParticleId(0),
fPrimaryParticleInitialKineticEnergy(0.0),
fPrimaryParticleInitialTotalEnergy(0.0),
fPrimaryParticleInitialMomentum(0.0),
fPrimaryParticleInitialBeta(0.0),
fPrimaryParticleInitialGamma(0.0),
fPrimaryParticleInitial3Momentum(G4ThreeVector()),
fPrimaryParticleInitialPosition(G4ThreeVector()),
fToleranceEPviolations(0.0),
fToleranceDeltaDecayRadius(0.0),
fIsPreassignedDecayEnabled(true),
fIsBoostToLabEnabled(true),
fNumDecays(0),
fNumBadDecays(0),
fNumUnexpectedDecays(0),
fNumEviolations(0),
fNumPviolations(0),
fNum_mc_truth_rPos_deltaMax_above(0),
fNum_underestimated_mc_truth_rPos_delta_above(0),
fNum_overestimated_mc_truth_rPos_delta_above(0),
fNumLargeUnderestimates(0),
fNumLargeOverestimates(0),
fDecayT(0.0),
fSumDecayT(0.0),
fMinDecayT(999999.9),
fMaxDecayT(-999999.9),
fDecayR_mc_truth(0.0),
fDecayR(0.0),
fSumDecayR(0.0),
fMinDecayR(999999.9),
fMaxDecayR(-999999.9),
fDecayX(0.0),
fSumDecayX(0.0),
fMinDecayX(999999.9),
fMaxDecayX(-999999.9),
fDecayY(0.0),
fSumDecayY(0.0),
fMinDecayY(999999.9),
fMaxDecayY(-999999.9),
fDecayZ(0.0),
fSumDecayZ(0.0),
fMinDecayZ(999999.9),
fMaxDecayZ(-999999.9),
fDeltaDecayR(0.0),
fSumDeltaDecayR(0.0),
fMinDeltaDecayR(999999.9),
fMaxDeltaDecayR(-999999.9),
fDeflectionAngle(0.0),
fSumDeflectionAngle(0.0),
fMinDeflectionAngle(999999.9),
fMaxDeflectionAngle(-999999.9),
fDeltaEkin(0.0),
fSumDeltaEkin(0.0),
fMinDeltaEkin(999999.9),
fMaxDeltaEkin(-999999.9),
fDecayEkin(0.0),
fSumDecayEkin(0.0),
fMinDecayEkin(999999.9),
fMaxDecayEkin(-999999.9),
fDecayPx(0.0),
fSumDecayPx(0.0),
fMinDecayPx(999999.9),
fMaxDecayPx(-999999.9),
fDecayPy(0.0),
fSumDecayPy(0.0),
fMinDecayPy(999999.9),
fMaxDecayPy(-999999.9),
fDecayPz(0.0),
fSumDecayPz(0.0),
fMinDecayPz(999999.9),
fMaxDecayPz(-999999.9),
fDecayEtotViolation(0.0),
fSumDecayEtotViolation(0.0),
fMinDecayEtotViolation(999999.9),
fMaxDecayEtotViolation(-999999.9),
fDecayPxViolation(0.0),
fSumDecayPxViolation(0.0),
fMinDecayPxViolation(999999.9),
fMaxDecayPxViolation(-999999.9),
fDecayPyViolation(0.0),
fSumDecayPyViolation(0.0),
fMinDecayPyViolation(999999.9),
fMaxDecayPyViolation(-999999.9),
fDecayPzViolation(0.0),
fSumDecayPzViolation(0.0),
fMinDecayPzViolation(999999.9),
fMaxDecayPzViolation(-999999.9),
fMaxEkin_deltaMax(0.0),
fMaxEtot_deltaMax(0.0),
fMaxP_deltaMax(0.0),
fMaxPdir_deltaMax(0.0),
fMaxMass_deltaMax1(0.0),
fMaxMass_deltaMax2(0.0),
fSumMass_deltaMax3(0.0),
fMaxMass_deltaMax3(0.0),
fMaxBeta_deltaMax1(0.0),
fMaxBeta_deltaMax2(0.0),
fMaxGamma_deltaMax1(0.0),
fMaxGamma_deltaMax2(0.0),
fMaxGamma_deltaMax3(0.0),
fMaxT_proper_deltaMax(0.0),
fMaxT_lab_deltaMax(0.0),
fSumMc_truth_rPos_deltaMax(0.0),
fMaxMc_truth_rPos_deltaMax(0.0),
fSumUnderestimated_mc_truth_rPos_delta(0.0),
fMinUnderestimated_mc_truth_rPos_delta(999999.9),
fSumOverestimated_mc_truth_rPos_delta(0.0),
fMaxOverestimated_mc_truth_rPos_delta(-999999.9),
fSumUnderestimated_rDeltaPos(0.0),
fMinUnderestimated_rDeltaPos(999999.9),
fSumOverestimated_rDeltaPos(0.0),
fMaxOverestimated_rDeltaPos(-999999.9),
fMaxFloat_rDeltaPos_deltaMax(-999999.9)
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
Run::~Run() {}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Run::RecordEvent(const G4Event* anEvent)
{
// This method is called automatically by the Geant4 kernel (not by the user!)
// at the end of each event : in MT-mode, it is called only for the Working thread
// that handled that event.
G4int nEvt = anEvent->GetEventID();
if (nEvt % 1000 == 0) {
G4cout << std::setprecision(6) << " Event#=" << nEvt << " ; t[ns]=" << fDecayT
<< " ; r[mm]=" << fDecayR
<< " ; deltaR[mum]=" << (fDecayR_mc_truth - fDecayR) / CLHEP::micrometer
<< " ; deltaEkin[MeV]=" << fDeltaEkin << " ; deltaAngle(deg)=" << fDeflectionAngle
<< G4endl;
}
G4Run::RecordEvent(anEvent);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Run::Merge(const G4Run* aRun)
{
// This method is called automatically by the Geant4 kernel (not by the user!)
// only in the case of multithreaded mode and only for Working threads.
const Run* localRun = static_cast<const Run*>(aRun);
fNumEvents += localRun->GetNumberOfEvent();
fPrimaryParticleId = localRun->GetPrimaryParticleId();
fPrimaryParticleInitialKineticEnergy = localRun->GetPrimaryParticleInitialKineticEnergy();
fPrimaryParticleInitialTotalEnergy = localRun->GetPrimaryParticleInitialTotalEnergy();
fPrimaryParticleInitialMomentum = localRun->GetPrimaryParticleInitialMomentum();
fPrimaryParticleInitialBeta = localRun->GetPrimaryParticleInitialBeta();
fPrimaryParticleInitialGamma = localRun->GetPrimaryParticleInitialGamma();
fPrimaryParticleInitial3Momentum = localRun->GetPrimaryParticleInitial3Momentum();
fPrimaryParticleInitialPosition = localRun->GetPrimaryParticleInitialPosition();
fToleranceEPviolations = localRun->GetToleranceEPviolations();
fToleranceDeltaDecayRadius = localRun->GetToleranceDeltaDecayRadius();
fIsPreassignedDecayEnabled = localRun->GetIsPreassignedDecayEnabled();
fIsBoostToLabEnabled = localRun->GetIsBoostToLabEnabled();
fNumDecays += localRun->GetNumberDecays();
fNumBadDecays += localRun->GetNumberBadDecays();
fNumUnexpectedDecays += localRun->GetNumberUnexpectedDecays();
fNumEviolations += localRun->GetNumberEviolations();
fNumPviolations += localRun->GetNumberPviolations();
fNum_mc_truth_rPos_deltaMax_above += localRun->GetNumber_mc_truth_rPos_deltaMax_above();
fNum_underestimated_mc_truth_rPos_delta_above +=
localRun->GetNumberUnderestimated_mc_truth_rPos_delta_above();
fNum_overestimated_mc_truth_rPos_delta_above +=
localRun->GetNumberOverestimated_mc_truth_rPos_delta_above();
fNumLargeUnderestimates += localRun->GetNumberLargeUnderestimates();
fNumLargeOverestimates += localRun->GetNumberLargeOverestimates();
fSumDecayT += localRun->GetSumDecayT();
fMinDecayT = std::min(fMinDecayT, localRun->GetMinDecayT());
fMaxDecayT = std::max(fMaxDecayT, localRun->GetMaxDecayT());
fSumDecayR += localRun->GetSumDecayR();
fMinDecayR = std::min(fMinDecayR, localRun->GetMinDecayR());
fMaxDecayR = std::max(fMaxDecayR, localRun->GetMaxDecayR());
fSumDecayX += localRun->GetSumDecayX();
fMinDecayX = std::min(fMinDecayX, localRun->GetMinDecayX());
fMaxDecayX = std::max(fMaxDecayX, localRun->GetMaxDecayX());
fSumDecayY += localRun->GetSumDecayY();
fMinDecayY = std::min(fMinDecayY, localRun->GetMinDecayY());
fMaxDecayY = std::max(fMaxDecayY, localRun->GetMaxDecayY());
fSumDecayZ += localRun->GetSumDecayZ();
fMinDecayZ = std::min(fMinDecayZ, localRun->GetMinDecayZ());
fMaxDecayZ = std::max(fMaxDecayZ, localRun->GetMaxDecayZ());
fSumDeltaDecayR += localRun->GetSumDeltaDecayR();
fMinDeltaDecayR = std::min(fMinDeltaDecayR, localRun->GetMinDeltaDecayR());
fMaxDeltaDecayR = std::max(fMaxDeltaDecayR, localRun->GetMaxDeltaDecayR());
fSumDeflectionAngle += localRun->GetSumDeflectionAngle();
fMinDeflectionAngle = std::min(fMinDeflectionAngle, localRun->GetMinDeflectionAngle());
fMaxDeflectionAngle = std::max(fMaxDeflectionAngle, localRun->GetMaxDeflectionAngle());
fSumDeltaEkin += localRun->GetSumDeltaEkin();
fMinDeltaEkin = std::min(fMinDeltaEkin, localRun->GetMinDeltaEkin());
fMaxDeltaEkin = std::max(fMaxDeltaEkin, localRun->GetMaxDeltaEkin());
fSumDecayEkin += localRun->GetSumDecayEkin();
fMinDecayEkin = std::min(fMinDecayEkin, localRun->GetMinDecayEkin());
fMaxDecayEkin = std::max(fMaxDecayEkin, localRun->GetMaxDecayEkin());
fSumDecayPx += localRun->GetSumDecayPx();
fMinDecayPx = std::min(fMinDecayPx, localRun->GetMinDecayPx());
fMaxDecayPx = std::max(fMaxDecayPx, localRun->GetMaxDecayPx());
fSumDecayPy += localRun->GetSumDecayPy();
fMinDecayPy = std::min(fMinDecayPy, localRun->GetMinDecayPy());
fMaxDecayPy = std::max(fMaxDecayPy, localRun->GetMaxDecayPy());
fSumDecayPz += localRun->GetSumDecayPz();
fMinDecayPz = std::min(fMinDecayPz, localRun->GetMinDecayPz());
fMaxDecayPz = std::max(fMaxDecayPz, localRun->GetMaxDecayPz());
fSumDecayEtotViolation += localRun->GetSumDecayEtotViolation();
fMinDecayEtotViolation = std::min(fMinDecayEtotViolation, localRun->GetMinDecayEtotViolation());
fMaxDecayEtotViolation = std::max(fMaxDecayEtotViolation, localRun->GetMaxDecayEtotViolation());
fSumDecayPxViolation += localRun->GetSumDecayPxViolation();
fMinDecayPxViolation = std::min(fMinDecayPxViolation, localRun->GetMinDecayPxViolation());
fMaxDecayPxViolation = std::max(fMaxDecayPxViolation, localRun->GetMaxDecayPxViolation());
fSumDecayPyViolation += localRun->GetSumDecayPyViolation();
fMinDecayPyViolation = std::min(fMinDecayPyViolation, localRun->GetMinDecayPyViolation());
fMaxDecayPyViolation = std::max(fMaxDecayPyViolation, localRun->GetMaxDecayPyViolation());
fSumDecayPzViolation += localRun->GetSumDecayPzViolation();
fMinDecayPzViolation = std::min(fMinDecayPzViolation, localRun->GetMinDecayPzViolation());
fMaxDecayPzViolation = std::max(fMaxDecayPzViolation, localRun->GetMaxDecayPzViolation());
fMaxEkin_deltaMax = std::max(fMaxEkin_deltaMax, localRun->GetMaxEkin_deltaMax());
fMaxEtot_deltaMax = std::max(fMaxEtot_deltaMax, localRun->GetMaxEtot_deltaMax());
fMaxP_deltaMax = std::max(fMaxP_deltaMax, localRun->GetMaxP_deltaMax());
fMaxPdir_deltaMax = std::max(fMaxPdir_deltaMax, localRun->GetMaxPdir_deltaMax());
fMaxMass_deltaMax1 = std::max(fMaxMass_deltaMax1, localRun->GetMaxMass_deltaMax1());
fMaxMass_deltaMax2 = std::max(fMaxMass_deltaMax2, localRun->GetMaxMass_deltaMax2());
fMaxMass_deltaMax3 = std::max(fMaxMass_deltaMax3, localRun->GetMaxMass_deltaMax3());
fSumMass_deltaMax3 += localRun->GetSumMass_deltaMax3();
fMaxBeta_deltaMax1 = std::max(fMaxBeta_deltaMax1, localRun->GetMaxBeta_deltaMax1());
fMaxBeta_deltaMax2 = std::max(fMaxBeta_deltaMax2, localRun->GetMaxBeta_deltaMax2());
fMaxGamma_deltaMax1 = std::max(fMaxGamma_deltaMax1, localRun->GetMaxGamma_deltaMax1());
fMaxGamma_deltaMax2 = std::max(fMaxGamma_deltaMax2, localRun->GetMaxGamma_deltaMax2());
fMaxGamma_deltaMax3 = std::max(fMaxGamma_deltaMax3, localRun->GetMaxGamma_deltaMax3());
fMaxT_proper_deltaMax = std::max(fMaxT_proper_deltaMax, localRun->GetMaxT_proper_deltaMax());
fMaxT_lab_deltaMax = std::max(fMaxT_lab_deltaMax, localRun->GetMaxT_lab_deltaMax());
fMaxMc_truth_rPos_deltaMax =
std::max(fMaxMc_truth_rPos_deltaMax, localRun->GetMaxMc_truth_rPos_deltaMax());
fSumMc_truth_rPos_deltaMax += localRun->GetSumMc_truth_rPos_deltaMax();
fMinUnderestimated_mc_truth_rPos_delta = std::min(
fMinUnderestimated_mc_truth_rPos_delta, localRun->GetMinUnderestimated_mc_truth_rPos_delta());
fSumUnderestimated_mc_truth_rPos_delta += localRun->GetSumUnderestimated_mc_truth_rPos_delta();
fMaxOverestimated_mc_truth_rPos_delta = std::max(
fMaxOverestimated_mc_truth_rPos_delta, localRun->GetMaxOverestimated_mc_truth_rPos_delta());
fSumOverestimated_mc_truth_rPos_delta += localRun->GetSumOverestimated_mc_truth_rPos_delta();
fMinUnderestimated_rDeltaPos =
std::min(fMinUnderestimated_rDeltaPos, localRun->GetMinUnderestimated_rDeltaPos());
fSumUnderestimated_rDeltaPos += localRun->GetSumUnderestimated_rDeltaPos();
fMaxOverestimated_rDeltaPos =
std::max(fMaxOverestimated_rDeltaPos, localRun->GetMaxOverestimated_rDeltaPos());
fSumOverestimated_rDeltaPos += localRun->GetSumOverestimated_rDeltaPos();
fMaxFloat_rDeltaPos_deltaMax =
std::max(fMaxFloat_rDeltaPos_deltaMax, localRun->GetMaxFloat_rDeltaPos_deltaMax());
G4Run::Merge(aRun);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Run::PrintInfo() const
{
// This method is called by RunAction::EndOfRunAction.
// In MT-mode, only the master thread calls it.
const G4double femtosecond = 0.001 * CLHEP::picosecond;
const G4double NN = (fNumDecays > 0 ? G4double(fNumDecays) : 1.0);
G4cout
<< std::setprecision(6) << G4endl << G4endl
<< " ============ Run::printInfo() =============== \t RunID = " << GetRunID() << G4endl
<< " primary PDG code = " << fPrimaryParticleId << G4endl
<< " primary initial kinetic energy [GeV] = "
<< fPrimaryParticleInitialKineticEnergy / CLHEP::GeV << G4endl
<< " primary initial total energy [GeV] = " << fPrimaryParticleInitialTotalEnergy / CLHEP::GeV
<< G4endl
<< " primary initial momentum [GeV] = " << fPrimaryParticleInitialMomentum / CLHEP::GeV
<< G4endl << " primary initial Lorentz beta = " << fPrimaryParticleInitialBeta << G4endl
<< " primary initial Lorentz gamma = " << fPrimaryParticleInitialGamma << G4endl
<< " primary initial 3 momentum [GeV] = " << fPrimaryParticleInitial3Momentum / CLHEP::GeV
<< G4endl << " primary initial position [mm] = " << fPrimaryParticleInitialPosition
<< G4endl << " toleranceEPviolations [eV] = " << fToleranceEPviolations / CLHEP::eV
<< G4endl
<< " toleranceDeltaDecayRadius [mum] = " << fToleranceDeltaDecayRadius / CLHEP::micrometer
<< G4endl << " isPreassignedDecayEnabled = " << fIsPreassignedDecayEnabled << G4endl
<< " isBoostToLabEnabled = " << fIsBoostToLabEnabled << G4endl
<< " # Events = " << (fNumEvents > 0 ? fNumEvents : GetNumberOfEvent()) << G4endl
<< " # Decays = " << fNumDecays << G4endl
<< " (# Bad decays = " << fNumBadDecays << " )" << G4endl
<< " (# Unexpected decays = " << fNumUnexpectedDecays << " )" << G4endl
<< " # E violations = " << fNumEviolations << G4endl
<< " # P violations = " << fNumPviolations << G4endl
<< " decay T [ns] : min=" << fMinDecayT << "\t mean=" << fSumDecayT / NN
<< "\t max=" << fMaxDecayT << G4endl << " decay R [mm] : min=" << fMinDecayR
<< "\t mean=" << fSumDecayR / NN << "\t max=" << fMaxDecayR << G4endl
<< " decay X [mm] : min=" << fMinDecayX << "\t mean=" << fSumDecayX / NN
<< "\t max=" << fMaxDecayX << G4endl << " decay Y [mm] : min=" << fMinDecayY
<< "\t mean=" << fSumDecayY / NN << "\t max=" << fMaxDecayY << G4endl
<< " decay Z [mm] : min=" << fMinDecayZ << "\t mean=" << fSumDecayZ / NN
<< "\t max=" << fMaxDecayZ << G4endl << " Delta decay R [mm] : min=" << fMinDeltaDecayR
<< "\t mean=" << fSumDeltaDecayR / NN << "\t max=" << fMaxDeltaDecayR << G4endl
<< " deflection angle [deg] : min=" << fMinDeflectionAngle
<< "\t mean=" << fSumDeflectionAngle / NN << "\t max=" << fMaxDeflectionAngle << G4endl
<< " Delta Ekin [MeV] : min=" << fMinDeltaEkin << "\t mean=" << fSumDeltaEkin / NN
<< "\t max=" << fMaxDeltaEkin << G4endl
<< " decay Ekin [GeV] : min=" << fMinDecayEkin / CLHEP::GeV
<< "\t mean=" << fSumDecayEkin / NN / CLHEP::GeV << "\t max=" << fMaxDecayEkin / CLHEP::GeV
<< G4endl << " decay Px [GeV] : min=" << fMinDecayPx / CLHEP::GeV
<< "\t mean=" << fSumDecayPx / NN / CLHEP::GeV << "\t max=" << fMaxDecayPx / CLHEP::GeV
<< G4endl << " decay Py [GeV] : min=" << fMinDecayPy / CLHEP::GeV
<< "\t mean=" << fSumDecayPy / NN / CLHEP::GeV << "\t max=" << fMaxDecayPy / CLHEP::GeV
<< G4endl << " decay Pz [GeV] : min=" << fMinDecayPz / CLHEP::GeV
<< "\t mean=" << fSumDecayPz / NN / CLHEP::GeV << "\t max=" << fMaxDecayPz / CLHEP::GeV
<< G4endl << " decay Etot violation [MeV] : min=" << fMinDecayEtotViolation
<< "\t mean=" << fSumDecayEtotViolation / NN << "\t max=" << fMaxDecayEtotViolation << G4endl
<< " decay Px violation [MeV] : min=" << fMinDecayPxViolation
<< "\t mean=" << fSumDecayPxViolation / NN << "\t max=" << fMaxDecayPxViolation << G4endl
<< " decay Py violation [MeV] : min=" << fMinDecayPyViolation
<< "\t mean=" << fSumDecayPyViolation / NN << "\t max=" << fMaxDecayPyViolation << G4endl
<< " decay Pz violation [MeV] : min=" << fMinDecayPzViolation
<< "\t mean=" << fSumDecayPzViolation / NN << "\t max=" << fMaxDecayPzViolation << G4endl
<< " --- Consistency checks --- " << G4endl
<< " maxEkin_deltaMax [eV] = " << fMaxEkin_deltaMax / CLHEP::eV << G4endl
<< " maxEtot_deltaMax [eV] = " << fMaxEtot_deltaMax / CLHEP::eV << G4endl
<< " maxP_deltaMax [eV] = " << fMaxP_deltaMax / CLHEP::eV << G4endl
<< " maxPdir_deltaMax = " << fMaxPdir_deltaMax << G4endl
<< " maxMass_deltaMax{1,2,3} [eV] = " << fMaxMass_deltaMax1 / CLHEP::eV << " , "
<< fMaxMass_deltaMax2 / CLHEP::eV << " , " << fMaxMass_deltaMax3 / CLHEP::eV
<< " (mean=" << fSumMass_deltaMax3 / NN / CLHEP::eV << ")" << G4endl
<< " maxBeta_deltaMax{1,2} = " << fMaxBeta_deltaMax1 << " , " << fMaxBeta_deltaMax2
<< G4endl << " maxGamma_deltaMax{1,2,3} = " << fMaxGamma_deltaMax1 << " , "
<< fMaxGamma_deltaMax2 << " , " << fMaxGamma_deltaMax3 << G4endl
<< " maxT_proper_deltaMax [fs] = " << fMaxT_proper_deltaMax / femtosecond << G4endl
<< " maxT_lab_deltaMax [fs] = " << fMaxT_lab_deltaMax / femtosecond << G4endl
<< " maxMc_truth_rPos_deltaMax [mum] = " << fMaxMc_truth_rPos_deltaMax / CLHEP::micrometer
<< " (mean=" << fSumMc_truth_rPos_deltaMax / NN / CLHEP::micrometer
<< ")\t (# above threshold = " << fNum_mc_truth_rPos_deltaMax_above << ")" << G4endl
<< " --- Extra checks --- " << G4endl << " minUnderestimated_mc_truth_rPos_delta [mum] = "
<< fMinUnderestimated_mc_truth_rPos_delta / CLHEP::micrometer
<< " (mean=" << fSumUnderestimated_mc_truth_rPos_delta / NN / CLHEP::micrometer
<< ")\t (#above threshold = " << fNum_underestimated_mc_truth_rPos_delta_above << ")" << G4endl
<< " maxOverestimated_mc_truth_rPos_delta [mum] = "
<< fMaxOverestimated_mc_truth_rPos_delta / CLHEP::micrometer
<< " (mean=" << fSumOverestimated_mc_truth_rPos_delta / NN / CLHEP::micrometer
<< ")\t (#above threshold = " << fNum_overestimated_mc_truth_rPos_delta_above << ")" << G4endl
<< " minUnderestimated_rDeltaPos [mum] = "
<< fMinUnderestimated_rDeltaPos / CLHEP::micrometer
<< " (mean=" << fSumUnderestimated_rDeltaPos / NN / CLHEP::micrometer
<< ")\t (#above threshold = " << fNumLargeUnderestimates << ")" << G4endl
<< " maxOverestimated_rDeltaPos [mum] = "
<< fMaxOverestimated_rDeltaPos / CLHEP::micrometer
<< " (mean=" << fSumOverestimated_rDeltaPos / NN / CLHEP::micrometer
<< ")\t (#above threshold = " << fNumLargeOverestimates << ")" << G4endl
<< " --- float instead of double --- " << G4endl
<< " fMaxFloat_rDeltaPos_deltaMax [mum] = " << fMaxFloat_rDeltaPos_deltaMax / CLHEP::micrometer
<< G4endl << " ============================================= " << G4endl << G4endl;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Run::SetDecayT(const G4double inputValue)
{
fDecayT = inputValue;
fSumDecayT += inputValue;
fMinDecayT = std::min(fMinDecayT, inputValue);
fMaxDecayT = std::max(fMaxDecayT, inputValue);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Run::SetDecayR_mc_truth(const G4double inputValue)
{
fDecayR_mc_truth = inputValue;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Run::SetDecayR(const G4double inputValue)
{
fDecayR = inputValue;
fSumDecayR += inputValue;
fMinDecayR = std::min(fMinDecayR, inputValue);
fMaxDecayR = std::max(fMaxDecayR, inputValue);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Run::SetDecayX(const G4double inputValue)
{
fDecayX = inputValue;
fSumDecayX += inputValue;
fMinDecayX = std::min(fMinDecayX, inputValue);
fMaxDecayX = std::max(fMaxDecayX, inputValue);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Run::SetDecayY(const G4double inputValue)
{
fDecayY = inputValue;
fSumDecayY += inputValue;
fMinDecayY = std::min(fMinDecayY, inputValue);
fMaxDecayY = std::max(fMaxDecayY, inputValue);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Run::SetDecayZ(const G4double inputValue)
{
fDecayZ = inputValue;
fSumDecayZ += inputValue;
fMinDecayZ = std::min(fMinDecayZ, inputValue);
fMaxDecayZ = std::max(fMaxDecayZ, inputValue);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Run::SetDeltaDecayR(const G4double inputValue)
{
fDeltaDecayR = inputValue;
fSumDeltaDecayR += inputValue;
fMinDeltaDecayR = std::min(fMinDeltaDecayR, inputValue);
fMaxDeltaDecayR = std::max(fMaxDeltaDecayR, inputValue);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Run::SetDeflectionAngle(const G4double inputValue)
{
fDeflectionAngle = inputValue;
fSumDeflectionAngle += inputValue;
fMinDeflectionAngle = std::min(fMinDeflectionAngle, inputValue);
fMaxDeflectionAngle = std::max(fMaxDeflectionAngle, inputValue);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Run::SetDeltaEkin(const G4double inputValue)
{
fDeltaEkin = inputValue;
fSumDeltaEkin += inputValue;
fMinDeltaEkin = std::min(fMinDeltaEkin, inputValue);
fMaxDeltaEkin = std::max(fMaxDeltaEkin, inputValue);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Run::SetDecayEkin(const G4double inputValue)
{
fDecayEkin = inputValue;
fSumDecayEkin += inputValue;
fMinDecayEkin = std::min(fMinDecayEkin, inputValue);
fMaxDecayEkin = std::max(fMaxDecayEkin, inputValue);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Run::SetDecayPx(const G4double inputValue)
{
fDecayPx = inputValue;
fSumDecayPx += inputValue;
fMinDecayPx = std::min(fMinDecayPx, inputValue);
fMaxDecayPx = std::max(fMaxDecayPx, inputValue);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Run::SetDecayPy(const G4double inputValue)
{
fDecayPy = inputValue;
fSumDecayPy += inputValue;
fMinDecayPy = std::min(fMinDecayPy, inputValue);
fMaxDecayPy = std::max(fMaxDecayPy, inputValue);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Run::SetDecayPz(const G4double inputValue)
{
fDecayPz = inputValue;
fSumDecayPz += inputValue;
fMinDecayPz = std::min(fMinDecayPz, inputValue);
fMaxDecayPz = std::max(fMaxDecayPz, inputValue);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Run::SetDecayEtotViolation(const G4double inputValue)
{
fDecayEtotViolation = inputValue;
fSumDecayEtotViolation += inputValue;
fMinDecayEtotViolation = std::min(fMinDecayEtotViolation, inputValue);
fMaxDecayEtotViolation = std::max(fMaxDecayEtotViolation, inputValue);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Run::SetDecayPxViolation(const G4double inputValue)
{
fDecayPxViolation = inputValue;
fSumDecayPxViolation += inputValue;
fMinDecayPxViolation = std::min(fMinDecayPxViolation, inputValue);
fMaxDecayPxViolation = std::max(fMaxDecayPxViolation, inputValue);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Run::SetDecayPyViolation(const G4double inputValue)
{
fDecayPyViolation = inputValue;
fSumDecayPyViolation += inputValue;
fMinDecayPyViolation = std::min(fMinDecayPyViolation, inputValue);
fMaxDecayPyViolation = std::max(fMaxDecayPyViolation, inputValue);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Run::SetDecayPzViolation(const G4double inputValue)
{
fDecayPzViolation = inputValue;
fSumDecayPzViolation += inputValue;
fMinDecayPzViolation = std::min(fMinDecayPzViolation, inputValue);
fMaxDecayPzViolation = std::max(fMaxDecayPzViolation, inputValue);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Run::SetMaxEkin_deltaMax(const G4double inputValue)
{
fMaxEkin_deltaMax = std::max(fMaxEkin_deltaMax, inputValue);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Run::SetMaxEtot_deltaMax(const G4double inputValue)
{
fMaxEtot_deltaMax = std::max(fMaxEtot_deltaMax, inputValue);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Run::SetMaxP_deltaMax(const G4double inputValue)
{
fMaxP_deltaMax = std::max(fMaxP_deltaMax, inputValue);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Run::SetMaxPdir_deltaMax(const G4double inputValue)
{
fMaxPdir_deltaMax = std::max(fMaxPdir_deltaMax, inputValue);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Run::SetMaxMass_deltaMax1(const G4double inputValue)
{
fMaxMass_deltaMax1 = std::max(fMaxMass_deltaMax1, inputValue);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Run::SetMaxMass_deltaMax2(const G4double inputValue)
{
fMaxMass_deltaMax2 = std::max(fMaxMass_deltaMax2, inputValue);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Run::SetMaxMass_deltaMax3(const G4double inputValue)
{
fSumMass_deltaMax3 += inputValue;
fMaxMass_deltaMax3 = std::max(fMaxMass_deltaMax3, inputValue);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Run::SetMaxBeta_deltaMax1(const G4double inputValue)
{
fMaxBeta_deltaMax1 = std::max(fMaxBeta_deltaMax1, inputValue);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Run::SetMaxBeta_deltaMax2(const G4double inputValue)
{
fMaxBeta_deltaMax2 = std::max(fMaxBeta_deltaMax2, inputValue);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Run::SetMaxGamma_deltaMax1(const G4double inputValue)
{
fMaxGamma_deltaMax1 = std::max(fMaxGamma_deltaMax1, inputValue);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Run::SetMaxGamma_deltaMax2(const G4double inputValue)
{
fMaxGamma_deltaMax2 = std::max(fMaxGamma_deltaMax2, inputValue);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Run::SetMaxGamma_deltaMax3(const G4double inputValue)
{
fMaxGamma_deltaMax3 = std::max(fMaxGamma_deltaMax3, inputValue);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Run::SetMaxT_proper_deltaMax(const G4double inputValue)
{
fMaxT_proper_deltaMax = std::max(fMaxT_proper_deltaMax, inputValue);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Run::SetMaxT_lab_deltaMax(const G4double inputValue)
{
fMaxT_lab_deltaMax = std::max(fMaxT_lab_deltaMax, inputValue);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Run::SetMaxMc_truth_rPos_deltaMax(const G4double inputValue)
{
fSumMc_truth_rPos_deltaMax += inputValue;
fMaxMc_truth_rPos_deltaMax = std::max(fMaxMc_truth_rPos_deltaMax, inputValue);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Run::SetMinUnderestimated_mc_truth_rPos_delta(const G4double inputValue)
{
fSumUnderestimated_mc_truth_rPos_delta += inputValue;
fMinUnderestimated_mc_truth_rPos_delta =
std::min(fMinUnderestimated_mc_truth_rPos_delta, inputValue);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Run::SetMaxOverestimated_mc_truth_rPos_delta(const G4double inputValue)
{
fSumOverestimated_mc_truth_rPos_delta += inputValue;
fMaxOverestimated_mc_truth_rPos_delta =
std::max(fMaxOverestimated_mc_truth_rPos_delta, inputValue);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Run::SetMinUnderestimated_rDeltaPos(const G4double inputValue)
{
fSumUnderestimated_rDeltaPos += inputValue;
fMinUnderestimated_rDeltaPos = std::min(fMinUnderestimated_rDeltaPos, inputValue);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Run::SetMaxOverestimated_rDeltaPos(const G4double inputValue)
{
fSumOverestimated_rDeltaPos += inputValue;
fMaxOverestimated_rDeltaPos = std::max(fMaxOverestimated_rDeltaPos, inputValue);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Run::SetMaxFloat_rDeltaPos_deltaMax(const G4double inputValue)
{
fMaxFloat_rDeltaPos_deltaMax = std::max(fMaxFloat_rDeltaPos_deltaMax, inputValue);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......