// // ******************************************************************** // * 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(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......