// // ******************************************************************** // * 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 // // //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... #include "Run.hh" #include "G4SystemOfUnits.hh" #include "G4Run.hh" #include "G4RunManager.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......