diff --git a/Alignment/LaserAlignmentSimulation/src/LaserOpticalPhysicsList.cc b/Alignment/LaserAlignmentSimulation/src/LaserOpticalPhysicsList.cc index ffb9f2a5e5576..d84a8ba8f0609 100644 --- a/Alignment/LaserAlignmentSimulation/src/LaserOpticalPhysicsList.cc +++ b/Alignment/LaserAlignmentSimulation/src/LaserOpticalPhysicsList.cc @@ -56,14 +56,14 @@ LaserOpticalPhysicsList::~LaserOpticalPhysicsList() { delete theScintProcess; } if (verboseLevel > 0) - std::cout << " done " << std::endl; + G4cout << " done " << G4endl; } void LaserOpticalPhysicsList::ConstructParticle() { if (verboseLevel > 0) - std::cout << ": constructing " - "the optical photon ... " - << std::endl; + G4cout << ": constructing " + "the optical photon ... " + << G4endl; // optical photon G4OpticalPhoton::OpticalPhotonDefinition(); @@ -71,12 +71,11 @@ void LaserOpticalPhysicsList::ConstructParticle() { void LaserOpticalPhysicsList::ConstructProcess() { if (verboseLevel > 0) - std::cout << ": constructing " - "the physics ... " - << std::endl; + G4cout << ": constructing " + "the physics ... " + << G4endl; theScintProcess = new G4Scintillation(); - // theCerenkovProcess=new G4Cerenkov(); theAbsorptionProcess = new G4OpAbsorption(); theRayleighScattering = new G4OpRayleigh(); theBoundaryProcess = new G4OpBoundaryProcess("OpBoundary"); @@ -91,12 +90,10 @@ void LaserOpticalPhysicsList::ConstructProcess() { pManager = G4OpticalPhoton::OpticalPhoton()->GetProcessManager(); pManager->AddDiscreteProcess(theAbsorptionProcess); pManager->AddDiscreteProcess(theRayleighScattering); - // theBoundaryProcess->SetModel(unified); pManager->AddDiscreteProcess(theBoundaryProcess); pManager->AddDiscreteProcess(theWLSProcess); theScintProcess->SetScintillationYieldFactor(1.); - theScintProcess->SetScintillationExcitationRatio(0.0); theScintProcess->SetTrackSecondariesFirst(true); G4ParticleTable *table = G4ParticleTable::GetParticleTable(); diff --git a/SimG4Core/PhysicsLists/interface/CMSHadronPhysicsFTFP_BERT106.h b/SimG4Core/PhysicsLists/interface/CMSHadronPhysicsFTFP_BERT106.h deleted file mode 100644 index 91f360b379631..0000000000000 --- a/SimG4Core/PhysicsLists/interface/CMSHadronPhysicsFTFP_BERT106.h +++ /dev/null @@ -1,45 +0,0 @@ -//--------------------------------------------------------------------------- -// Author: Vladimir Ivanchenko -// Date: March 2018 -// -// Hadron physics for the new CMS physics list FTFP_BERT_EMM_TRK. -// The hadron physics of FTFP_BERT has the transition between Bertini -// (BERT) intra-nuclear cascade model and Fritiof (FTF) string model in the -// energy region [4, 5] GeV (instead of the default for Geant4 10.4). -//--------------------------------------------------------------------------- -// -#ifndef SimG4Core_PhysicsLists_CMSHadronPhysicsFTFP_BERT106_h -#define SimG4Core_PhysicsLists_CMSHadronPhysicsFTFP_BERT106_h - -#include "globals.hh" -#include "G4ios.hh" - -#include "G4VPhysicsConstructor.hh" - -class CMSHadronPhysicsFTFP_BERT106 : public G4VPhysicsConstructor { -public: - explicit CMSHadronPhysicsFTFP_BERT106(G4int verb); - explicit CMSHadronPhysicsFTFP_BERT106(G4double e1, G4double e2, G4double e3); - ~CMSHadronPhysicsFTFP_BERT106() override; - - void ConstructParticle() override; - void ConstructProcess() override; - -private: - //This calls the specific ones for the different particles in order - void CreateModels(); - void Neutron(); - void Proton(); - void Pion(); - void Kaon(); - void Others(); - void DumpBanner(); - //This contains extra configurataion specific to this PL - void ExtraConfiguration(); - - G4double minFTFP_; - G4double maxBERT_; - G4double maxBERTpi_; -}; - -#endif diff --git a/SimG4Core/PhysicsLists/interface/CMSHyperonFTFPBuilder.h b/SimG4Core/PhysicsLists/interface/CMSHyperonFTFPBuilder.h deleted file mode 100644 index 7c984b0a979fe..0000000000000 --- a/SimG4Core/PhysicsLists/interface/CMSHyperonFTFPBuilder.h +++ /dev/null @@ -1,25 +0,0 @@ -//--------------------------------------------------------------------------- -// Author: Vladimir Ivanchenko -// Date: June 2020 -// -// Hyperon physics for the new CMS physics list FTFP_BERT_EMM -// The hadron physics of FTFP_BERT has the transition between Bertini -// (BERT) intra-nuclear cascade model and Fritiof (FTF) string model in the -// energy region defined by hadronic parametes -//--------------------------------------------------------------------------- - -#ifndef SimG4Core_PhysicsLists_CMSHyperonFTFPBuilder_h -#define SimG4Core_PhysicsLists_CMSHyperonFTFPBuilder_h - -#include "G4PhysicsBuilderInterface.hh" -#include "globals.hh" - -class CMSHyperonFTFPBuilder : public G4PhysicsBuilderInterface { -public: - CMSHyperonFTFPBuilder(); - ~CMSHyperonFTFPBuilder() override; - - void Build() final; -}; - -#endif diff --git a/SimG4Core/PhysicsLists/interface/CMSmplIonisation.h b/SimG4Core/PhysicsLists/interface/CMSmplIonisation.h deleted file mode 100644 index 6928fac004a60..0000000000000 --- a/SimG4Core/PhysicsLists/interface/CMSmplIonisation.h +++ /dev/null @@ -1,61 +0,0 @@ -// -// ------------------------------------------------------------------- -// -// GEANT4 Class header file -// -// -// File name: CMSmplIonisation -// -// Author: Vladimir Ivanchenko copied from Geant4 10.5p01 -// -// Creation date: 02.03.2019 -// -// Class Description: -// -// This class manages the ionisation process for a magnetic monopole -// it inherites from G4VContinuousDiscreteProcess via G4VEnergyLossProcess. -// Magnetic charge of the monopole should be defined in the constructor of -// the process, unless it is assumed that it is classic Dirac monopole with -// the charge 67.5*eplus. The name of the particle should be "monopole". -// - -// ------------------------------------------------------------------- -// - -#ifndef CMSmplIonisation_h -#define CMSmplIonisation_h 1 - -#include "G4VEnergyLossProcess.hh" -#include "globals.hh" -#include "G4VEmModel.hh" - -class G4Material; -class G4VEmFluctuationModel; - -class CMSmplIonisation : public G4VEnergyLossProcess { -public: - explicit CMSmplIonisation(G4double mCharge = 0.0, const G4String& name = "mplIoni"); - - ~CMSmplIonisation() override; - - G4bool IsApplicable(const G4ParticleDefinition& p) override; - - G4double MinPrimaryEnergy(const G4ParticleDefinition* p, const G4Material*, G4double cut) final; - - // Print out of the class parameters - void PrintInfo() override; - - // print description in html - void ProcessDescription(std::ostream&) const override; - -protected: - void InitialiseEnergyLossProcess(const G4ParticleDefinition*, const G4ParticleDefinition*) override; - -private: - G4double magneticCharge; - G4bool isInitialised; -}; - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -#endif diff --git a/SimG4Core/PhysicsLists/interface/CMSmplIonisationWithDeltaModel.h b/SimG4Core/PhysicsLists/interface/CMSmplIonisationWithDeltaModel.h deleted file mode 100644 index 565437f923f1d..0000000000000 --- a/SimG4Core/PhysicsLists/interface/CMSmplIonisationWithDeltaModel.h +++ /dev/null @@ -1,99 +0,0 @@ -// -// ------------------------------------------------------------------- -// -// GEANT4 Class header file -// -// -// File name: CMSmplIonisationWithDeltaModel -// -// Author: Vladimir Ivanchenko copied from Geant4 10.5p01 -// -// Creation date: 02.03.2019 -// -// Class Description: -// -// Implementation of model of energy loss of the magnetic monopole - -// ------------------------------------------------------------------- -// - -#ifndef CMSmplIonisationWithDeltaModel_h -#define CMSmplIonisationWithDeltaModel_h 1 - -#include "G4VEmModel.hh" -#include "G4VEmFluctuationModel.hh" -#include - -class G4ParticleChangeForLoss; - -class CMSmplIonisationWithDeltaModel : public G4VEmModel, public G4VEmFluctuationModel { -public: - explicit CMSmplIonisationWithDeltaModel(G4double mCharge, const G4String& nam = "mplIonisationWithDelta"); - - ~CMSmplIonisationWithDeltaModel() override; - - void Initialise(const G4ParticleDefinition*, const G4DataVector&) override; - - G4double ComputeDEDXPerVolume(const G4Material*, - const G4ParticleDefinition*, - G4double kineticEnergy, - G4double cutEnergy) override; - - virtual G4double ComputeCrossSectionPerElectron(const G4ParticleDefinition*, - G4double kineticEnergy, - G4double cutEnergy, - G4double maxEnergy); - - G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition*, - G4double kineticEnergy, - G4double Z, - G4double A, - G4double cutEnergy, - G4double maxEnergy) override; - - void SampleSecondaries(std::vector*, - const G4MaterialCutsCouple*, - const G4DynamicParticle*, - G4double tmin, - G4double maxEnergy) override; - - G4double SampleFluctuations(const G4MaterialCutsCouple*, - const G4DynamicParticle*, - G4double tmax, - G4double length, - G4double meanLoss) override; - - G4double Dispersion(const G4Material*, const G4DynamicParticle*, G4double tmax, G4double length) override; - - G4double MinEnergyCut(const G4ParticleDefinition*, const G4MaterialCutsCouple* couple) override; - - void SetParticle(const G4ParticleDefinition* p); - -protected: - G4double MaxSecondaryEnergy(const G4ParticleDefinition*, G4double kinEnergy) override; - -private: - G4double ComputeDEDXAhlen(const G4Material* material, G4double bg2, G4double cut); - - const G4ParticleDefinition* monopole; - G4ParticleDefinition* theElectron; - G4ParticleChangeForLoss* fParticleChange; - - G4double mass; - G4double magCharge; - G4double twoln10; - G4double betalow; - G4double betalim; - G4double beta2lim; - G4double bg2lim; - G4double chargeSquare; - G4double dedxlim; - G4int nmpl; - G4double pi_hbarc2_over_mc2; - - static std::vector* dedx0; -}; - -#endif - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/SimG4Core/PhysicsLists/src/CMSHadronPhysicsFTFP_BERT106.cc b/SimG4Core/PhysicsLists/src/CMSHadronPhysicsFTFP_BERT106.cc deleted file mode 100644 index a16def236b433..0000000000000 --- a/SimG4Core/PhysicsLists/src/CMSHadronPhysicsFTFP_BERT106.cc +++ /dev/null @@ -1,192 +0,0 @@ - -#include - -#include "SimG4Core/PhysicsLists/interface/CMSHadronPhysicsFTFP_BERT106.h" -#include "SimG4Core/PhysicsLists/interface/CMSHyperonFTFPBuilder.h" - -#include "globals.hh" -#include "G4ios.hh" -#include "G4SystemOfUnits.hh" -#include "G4ParticleDefinition.hh" -#include "G4ParticleTable.hh" -#include "G4PionBuilder.hh" -#include "G4BertiniPionBuilder.hh" -#include "G4FTFPPionBuilder.hh" - -#include "G4KaonBuilder.hh" -#include "G4BertiniKaonBuilder.hh" -#include "G4FTFPKaonBuilder.hh" - -#include "G4ProtonBuilder.hh" -#include "G4BertiniProtonBuilder.hh" -#include "G4FTFPNeutronBuilder.hh" -#include "G4FTFPProtonBuilder.hh" - -#include "G4NeutronBuilder.hh" -#include "G4BertiniNeutronBuilder.hh" -#include "G4FTFPNeutronBuilder.hh" - -#include "G4HyperonFTFPBuilder.hh" -#include "G4AntiBarionBuilder.hh" -#include "G4FTFPAntiBarionBuilder.hh" - -#include "G4MesonConstructor.hh" -#include "G4BaryonConstructor.hh" -#include "G4ShortLivedConstructor.hh" - -#include "G4HadronCaptureProcess.hh" -#include "G4NeutronRadCapture.hh" -#include "G4NeutronInelasticXS.hh" -#include "G4NeutronCaptureXS.hh" - -#include "G4PhysListUtil.hh" -#include "G4Threading.hh" - -#include "G4DeexPrecoParameters.hh" -#include "G4NuclearLevelData.hh" - -#include "G4ProcessManager.hh" - -CMSHadronPhysicsFTFP_BERT106::CMSHadronPhysicsFTFP_BERT106(G4int) - : CMSHadronPhysicsFTFP_BERT106(3. * CLHEP::GeV, 6. * CLHEP::GeV, 12 * CLHEP::GeV) {} - -CMSHadronPhysicsFTFP_BERT106::CMSHadronPhysicsFTFP_BERT106(G4double e1, G4double e2, G4double e3) - : G4VPhysicsConstructor("hInelastic FTFP_BERT") { - minFTFP_ = e1; - maxBERT_ = e2; - maxBERTpi_ = e3; -} - -CMSHadronPhysicsFTFP_BERT106::~CMSHadronPhysicsFTFP_BERT106() {} - -void CMSHadronPhysicsFTFP_BERT106::ConstructParticle() { - G4MesonConstructor pMesonConstructor; - pMesonConstructor.ConstructParticle(); - - G4BaryonConstructor pBaryonConstructor; - pBaryonConstructor.ConstructParticle(); - - G4ShortLivedConstructor pShortLivedConstructor; - pShortLivedConstructor.ConstructParticle(); -} - -void CMSHadronPhysicsFTFP_BERT106::DumpBanner() { - G4cout << "### FTFP_BERT : transition between BERT and FTFP is over the interval " << minFTFP_ / CLHEP::GeV << " to " - << maxBERT_ / CLHEP::GeV << " GeV" - << " GeV; for pions up to " << maxBERTpi_ / CLHEP::GeV << " GeV" << G4endl; -} - -void CMSHadronPhysicsFTFP_BERT106::CreateModels() { - Neutron(); - Proton(); - Pion(); - Kaon(); - Others(); -} - -void CMSHadronPhysicsFTFP_BERT106::Neutron() { - //General schema: - // 1) Create a builder - // 2) Call AddBuilder - // 3) Configure the builder, possibly with sub-builders - // 4) Call builder->Build() - auto neu = new G4NeutronBuilder; - AddBuilder(neu); - auto ftfpn = new G4FTFPNeutronBuilder(false); - AddBuilder(ftfpn); - neu->RegisterMe(ftfpn); - ftfpn->SetMinEnergy(minFTFP_); - auto bertn = new G4BertiniNeutronBuilder; - AddBuilder(bertn); - neu->RegisterMe(bertn); - bertn->SetMinEnergy(0.0); - bertn->SetMaxEnergy(maxBERT_); - neu->Build(); -} - -void CMSHadronPhysicsFTFP_BERT106::Proton() { - auto pro = new G4ProtonBuilder; - AddBuilder(pro); - auto ftfpp = new G4FTFPProtonBuilder(false); - AddBuilder(ftfpp); - pro->RegisterMe(ftfpp); - ftfpp->SetMinEnergy(minFTFP_); - auto bertp = new G4BertiniProtonBuilder; - AddBuilder(bertp); - pro->RegisterMe(bertp); - bertp->SetMaxEnergy(maxBERT_); - pro->Build(); -} - -void CMSHadronPhysicsFTFP_BERT106::Pion() { - auto pi = new G4PionBuilder; - AddBuilder(pi); - auto ftfppi = new G4FTFPPionBuilder(false); - AddBuilder(ftfppi); - pi->RegisterMe(ftfppi); - ftfppi->SetMinEnergy(minFTFP_); - auto bertpi = new G4BertiniPionBuilder; - AddBuilder(bertpi); - pi->RegisterMe(bertpi); - bertpi->SetMaxEnergy(maxBERTpi_); - pi->Build(); -} - -void CMSHadronPhysicsFTFP_BERT106::Kaon() { - auto k = new G4KaonBuilder; - AddBuilder(k); - auto ftfpk = new G4FTFPKaonBuilder(false); - AddBuilder(ftfpk); - k->RegisterMe(ftfpk); - ftfpk->SetMinEnergy(minFTFP_); - auto bertk = new G4BertiniKaonBuilder; - AddBuilder(bertk); - k->RegisterMe(bertk); - bertk->SetMaxEnergy(maxBERT_); - k->Build(); -} - -void CMSHadronPhysicsFTFP_BERT106::Others() { - //===== Hyperons ====== // - auto hyp = new CMSHyperonFTFPBuilder; - AddBuilder(hyp); - hyp->Build(); - - ///===== Anti-barions==== // - auto abar = new G4AntiBarionBuilder; - AddBuilder(abar); - auto ftfpabar = new G4FTFPAntiBarionBuilder(false); - AddBuilder(ftfpabar); - abar->RegisterMe(ftfpabar); - abar->Build(); -} - -void CMSHadronPhysicsFTFP_BERT106::ConstructProcess() { - if (G4Threading::IsMasterThread()) { - DumpBanner(); - } - CreateModels(); - ExtraConfiguration(); -} - -void CMSHadronPhysicsFTFP_BERT106::ExtraConfiguration() { - const G4ParticleDefinition* neutron = G4Neutron::Neutron(); - G4HadronicProcess* inel = G4PhysListUtil::FindInelasticProcess(neutron); - if (inel) { - inel->AddDataSet(new G4NeutronInelasticXS()); - } - - G4HadronicProcess* capture = nullptr; - G4ProcessVector* pvec = neutron->GetProcessManager()->GetProcessList(); - size_t n = pvec->size(); - for (size_t i = 0; i < n; ++i) { - if (fCapture == ((*pvec)[i])->GetProcessSubType()) { - capture = static_cast((*pvec)[i]); - break; - } - } - if (capture) { - capture->RegisterMe(new G4NeutronRadCapture()); - capture->AddDataSet(new G4NeutronCaptureXS()); - } -} diff --git a/SimG4Core/PhysicsLists/src/CMSHyperonFTFPBuilder.cc b/SimG4Core/PhysicsLists/src/CMSHyperonFTFPBuilder.cc deleted file mode 100644 index 8bfcb150a8ab6..0000000000000 --- a/SimG4Core/PhysicsLists/src/CMSHyperonFTFPBuilder.cc +++ /dev/null @@ -1,170 +0,0 @@ -// -#include "SimG4Core/PhysicsLists/interface/CMSHyperonFTFPBuilder.h" - -#include "G4SystemOfUnits.hh" -#include "G4ParticleDefinition.hh" -#include "G4ParticleTable.hh" -#include "G4ProcessManager.hh" -#include "G4CrossSectionInelastic.hh" -#include "G4ComponentGGHadronNucleusXsc.hh" -#include "G4HadronicParameters.hh" - -#include "G4LambdaInelasticProcess.hh" -#include "G4AntiLambdaInelasticProcess.hh" -#include "G4SigmaPlusInelasticProcess.hh" -#include "G4SigmaMinusInelasticProcess.hh" -#include "G4AntiSigmaPlusInelasticProcess.hh" -#include "G4AntiSigmaMinusInelasticProcess.hh" -#include "G4XiZeroInelasticProcess.hh" -#include "G4XiMinusInelasticProcess.hh" -#include "G4AntiXiZeroInelasticProcess.hh" -#include "G4AntiXiMinusInelasticProcess.hh" -#include "G4OmegaMinusInelasticProcess.hh" -#include "G4AntiOmegaMinusInelasticProcess.hh" - -#include "G4TheoFSGenerator.hh" -#include "G4GeneratorPrecompoundInterface.hh" -#include "G4FTFModel.hh" -#include "G4LundStringFragmentation.hh" -#include "G4ExcitedStringDecay.hh" -#include "G4CascadeInterface.hh" - -CMSHyperonFTFPBuilder::CMSHyperonFTFPBuilder() {} - -CMSHyperonFTFPBuilder::~CMSHyperonFTFPBuilder() {} - -void CMSHyperonFTFPBuilder::Build() { - // Hyperon : Bertini at low energies, then FTFP - - auto HyperonFTFP = new G4TheoFSGenerator("FTFP"); - - HyperonFTFP->SetMinEnergy(G4HadronicParameters::Instance()->GetMinEnergyTransitionFTF_Cascade()); - HyperonFTFP->SetMaxEnergy(G4HadronicParameters::Instance()->GetMaxEnergy()); - - auto theStringModel = new G4FTFModel; - auto theStringDecay = new G4ExcitedStringDecay(new G4LundStringFragmentation()); - theStringModel->SetFragmentationModel(theStringDecay); - - auto theCascade = new G4GeneratorPrecompoundInterface; - - HyperonFTFP->SetTransport(theCascade); - HyperonFTFP->SetHighEnergyGenerator(theStringModel); - - auto theBertini = new G4CascadeInterface; - theBertini->SetMinEnergy(0.0); - theBertini->SetMaxEnergy(G4HadronicParameters::Instance()->GetMaxEnergyTransitionFTF_Cascade()); - - // AntiHyperons: Use FTFP for full energy range, starting at 0. - - auto AntiHyperonFTFP = new G4TheoFSGenerator("FTFP"); - AntiHyperonFTFP->SetMinEnergy(0.0); - AntiHyperonFTFP->SetMaxEnergy(G4HadronicParameters::Instance()->GetMaxEnergy()); - AntiHyperonFTFP->SetTransport(theCascade); - AntiHyperonFTFP->SetHighEnergyGenerator(theStringModel); - - // use Glauber-Gribov cross sections - auto theInelasticCrossSection = new G4CrossSectionInelastic(new G4ComponentGGHadronNucleusXsc); - - G4ProcessManager* aProcMan = nullptr; - - // Lambda - auto theLambdaInelastic = new G4LambdaInelasticProcess(); - theLambdaInelastic->RegisterMe(theBertini); - theLambdaInelastic->RegisterMe(HyperonFTFP); - theLambdaInelastic->AddDataSet(theInelasticCrossSection); - aProcMan = G4Lambda::Lambda()->GetProcessManager(); - aProcMan->AddDiscreteProcess(theLambdaInelastic); - - // AntiLambda - auto theAntiLambdaInelastic = new G4AntiLambdaInelasticProcess(); - theAntiLambdaInelastic->RegisterMe(AntiHyperonFTFP); - theAntiLambdaInelastic->AddDataSet(theInelasticCrossSection); - - aProcMan = G4AntiLambda::AntiLambda()->GetProcessManager(); - aProcMan->AddDiscreteProcess(theAntiLambdaInelastic); - - // SigmaMinus - auto theSigmaMinusInelastic = new G4SigmaMinusInelasticProcess(); - theSigmaMinusInelastic->RegisterMe(theBertini); - theSigmaMinusInelastic->RegisterMe(HyperonFTFP); - theSigmaMinusInelastic->AddDataSet(theInelasticCrossSection); - - aProcMan = G4SigmaMinus::SigmaMinus()->GetProcessManager(); - aProcMan->AddDiscreteProcess(theSigmaMinusInelastic); - - // anti-SigmaMinus - auto theAntiSigmaMinusInelastic = new G4AntiSigmaMinusInelasticProcess(); - theAntiSigmaMinusInelastic->RegisterMe(AntiHyperonFTFP); - theAntiSigmaMinusInelastic->AddDataSet(theInelasticCrossSection); - - aProcMan = G4AntiSigmaMinus::AntiSigmaMinus()->GetProcessManager(); - aProcMan->AddDiscreteProcess(theAntiSigmaMinusInelastic); - - // SigmaPlus - auto theSigmaPlusInelastic = new G4SigmaPlusInelasticProcess(); - theSigmaPlusInelastic->RegisterMe(theBertini); - theSigmaPlusInelastic->RegisterMe(HyperonFTFP); - theSigmaPlusInelastic->AddDataSet(theInelasticCrossSection); - - aProcMan = G4SigmaPlus::SigmaPlus()->GetProcessManager(); - aProcMan->AddDiscreteProcess(theSigmaPlusInelastic); - - // anti-SigmaPlus - auto theAntiSigmaPlusInelastic = new G4AntiSigmaPlusInelasticProcess(); - theAntiSigmaPlusInelastic->RegisterMe(AntiHyperonFTFP); - theAntiSigmaPlusInelastic->AddDataSet(theInelasticCrossSection); - - aProcMan = G4AntiSigmaPlus::AntiSigmaPlus()->GetProcessManager(); - aProcMan->AddDiscreteProcess(theAntiSigmaPlusInelastic); - - // XiMinus - auto theXiMinusInelastic = new G4XiMinusInelasticProcess(); - theXiMinusInelastic->RegisterMe(theBertini); - theXiMinusInelastic->RegisterMe(HyperonFTFP); - theXiMinusInelastic->AddDataSet(theInelasticCrossSection); - - aProcMan = G4XiMinus::XiMinus()->GetProcessManager(); - aProcMan->AddDiscreteProcess(theXiMinusInelastic); - - // anti-XiMinus - auto theAntiXiMinusInelastic = new G4AntiXiMinusInelasticProcess(); - theAntiXiMinusInelastic->RegisterMe(AntiHyperonFTFP); - theAntiXiMinusInelastic->AddDataSet(theInelasticCrossSection); - - aProcMan = G4AntiXiMinus::AntiXiMinus()->GetProcessManager(); - aProcMan->AddDiscreteProcess(theAntiXiMinusInelastic); - - // XiZero - auto theXiZeroInelastic = new G4XiZeroInelasticProcess(); - theXiZeroInelastic->RegisterMe(theBertini); - theXiZeroInelastic->RegisterMe(HyperonFTFP); - theXiZeroInelastic->AddDataSet(theInelasticCrossSection); - - aProcMan = G4XiZero::XiZero()->GetProcessManager(); - aProcMan->AddDiscreteProcess(theXiZeroInelastic); - - // anti-XiZero - auto theAntiXiZeroInelastic = new G4AntiXiZeroInelasticProcess(); - theAntiXiZeroInelastic->RegisterMe(AntiHyperonFTFP); - theAntiXiZeroInelastic->AddDataSet(theInelasticCrossSection); - - aProcMan = G4AntiXiZero::AntiXiZero()->GetProcessManager(); - aProcMan->AddDiscreteProcess(theAntiXiZeroInelastic); - - // OmegaMinus - auto theOmegaMinusInelastic = new G4OmegaMinusInelasticProcess(); - theOmegaMinusInelastic->RegisterMe(theBertini); - theOmegaMinusInelastic->RegisterMe(HyperonFTFP); - theOmegaMinusInelastic->AddDataSet(theInelasticCrossSection); - - aProcMan = G4OmegaMinus::OmegaMinus()->GetProcessManager(); - aProcMan->AddDiscreteProcess(theOmegaMinusInelastic); - - // anti-OmegaMinus - auto theAntiOmegaMinusInelastic = new G4AntiOmegaMinusInelasticProcess(); - theAntiOmegaMinusInelastic->RegisterMe(AntiHyperonFTFP); - theAntiOmegaMinusInelastic->AddDataSet(theInelasticCrossSection); - - aProcMan = G4AntiOmegaMinus::AntiOmegaMinus()->GetProcessManager(); - aProcMan->AddDiscreteProcess(theAntiOmegaMinusInelastic); -} diff --git a/SimG4Core/PhysicsLists/src/CMSMonopolePhysics.cc b/SimG4Core/PhysicsLists/src/CMSMonopolePhysics.cc index 8132a9cd500b6..5931c61724dfd 100644 --- a/SimG4Core/PhysicsLists/src/CMSMonopolePhysics.cc +++ b/SimG4Core/PhysicsLists/src/CMSMonopolePhysics.cc @@ -1,6 +1,5 @@ #include "SimG4Core/PhysicsLists/interface/CMSMonopolePhysics.h" #include "SimG4Core/PhysicsLists/interface/MonopoleTransportation.h" -#include "SimG4Core/PhysicsLists/interface/CMSmplIonisation.h" #include "FWCore/MessageLogger/interface/MessageLogger.h" #include "G4ParticleDefinition.hh" @@ -9,8 +8,8 @@ #include "G4StepLimiter.hh" #include "G4hMultipleScattering.hh" #include "G4hIonisation.hh" -#include "G4hhIonisation.hh" -#include "G4mplIonisationModel.hh" +#include "G4mplIonisation.hh" +#include "G4mplIonisationWithDeltaModel.hh" #include "CLHEP/Units/GlobalSystemOfUnits.h" @@ -110,9 +109,9 @@ void CMSMonopolePhysics::ConstructProcess() { ph->RegisterProcess(hioni, mpl); } if (magn != 0.0) { - CMSmplIonisation* mplioni = new CMSmplIonisation(magn); + G4mplIonisation* mplioni = new G4mplIonisation(magn); if (!deltaRay) { - G4mplIonisationModel* ion = new G4mplIonisationModel(magn, "PAI"); + G4mplIonisationWithDeltaModel* ion = new G4mplIonisationWithDeltaModel(magn, "PAI"); ion->SetParticle(mpl); mplioni->AddEmModel(0, ion, ion); } diff --git a/SimG4Core/PhysicsLists/src/CMSmplIonisation.cc b/SimG4Core/PhysicsLists/src/CMSmplIonisation.cc deleted file mode 100644 index bbe6247144916..0000000000000 --- a/SimG4Core/PhysicsLists/src/CMSmplIonisation.cc +++ /dev/null @@ -1,102 +0,0 @@ -// -// ------------------------------------------------------------------- -// -// GEANT4 Class file -// -// -// File name: CMSmplIonisation -// -// Author: Vladimir Ivanchenko copied from Geant4 10.5p01 -// -// Creation date: 02.03.2019 -// -// -// ------------------------------------------------------------------- -// -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -#include "SimG4Core/PhysicsLists/interface/CMSmplIonisation.h" -#include "SimG4Core/PhysicsLists/interface/CMSmplIonisationWithDeltaModel.h" -#include "G4PhysicalConstants.hh" -#include "G4SystemOfUnits.hh" -#include "G4Electron.hh" -#include "G4EmParameters.hh" - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -using namespace std; - -CMSmplIonisation::CMSmplIonisation(G4double mCharge, const G4String& name) - : G4VEnergyLossProcess(name), magneticCharge(mCharge), isInitialised(false) { - // By default classical magnetic charge is used - if (magneticCharge == 0.0) { - magneticCharge = eplus * 0.5 / fine_structure_const; - } - - SetVerboseLevel(0); - SetProcessSubType(fIonisation); - SetStepFunction(0.2, 1 * mm); - SetSecondaryParticle(G4Electron::Electron()); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -CMSmplIonisation::~CMSmplIonisation() {} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -G4bool CMSmplIonisation::IsApplicable(const G4ParticleDefinition&) { return true; } - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -G4double CMSmplIonisation::MinPrimaryEnergy(const G4ParticleDefinition* mpl, const G4Material*, G4double cut) { - G4double x = 0.5 * cut / electron_mass_c2; - G4double mass = mpl->GetPDGMass(); - G4double ratio = electron_mass_c2 / mass; - G4double gam = x * ratio + std::sqrt((1. + x) * (1. + x * ratio * ratio)); - return mass * (gam - 1.0); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void CMSmplIonisation::InitialiseEnergyLossProcess(const G4ParticleDefinition* p, const G4ParticleDefinition*) { - if (isInitialised) { - return; - } - - SetBaseParticle(nullptr); - - // monopole model is responsible both for energy loss and fluctuations - CMSmplIonisationWithDeltaModel* ion = new CMSmplIonisationWithDeltaModel(magneticCharge, "PAI"); - ion->SetParticle(p); - - // define size of dedx and range tables - G4EmParameters* param = G4EmParameters::Instance(); - G4double emin = std::min(param->MinKinEnergy(), ion->LowEnergyLimit()); - G4double emax = std::max(param->MaxKinEnergy(), ion->HighEnergyLimit()); - G4int bin = G4lrint(param->NumberOfBinsPerDecade() * std::log10(emax / emin)); - ion->SetLowEnergyLimit(emin); - ion->SetHighEnergyLimit(emax); - SetMinKinEnergy(emin); - SetMaxKinEnergy(emax); - SetDEDXBinning(bin); - - SetEmModel(ion); - AddEmModel(1, ion, ion); - - isInitialised = true; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void CMSmplIonisation::PrintInfo() {} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void CMSmplIonisation::ProcessDescription(std::ostream& out) const { - out << "No description available." << G4endl; - G4VEnergyLossProcess::ProcessDescription(out); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/SimG4Core/PhysicsLists/src/CMSmplIonisationWithDeltaModel.cc b/SimG4Core/PhysicsLists/src/CMSmplIonisationWithDeltaModel.cc deleted file mode 100644 index f3943cb4ab65b..0000000000000 --- a/SimG4Core/PhysicsLists/src/CMSmplIonisationWithDeltaModel.cc +++ /dev/null @@ -1,330 +0,0 @@ -// -// ------------------------------------------------------------------- -// -// -// File name: CMSmplIonisationWithDeltaModel -// -// Author: Vladimir Ivanchenko -// -// Creation date: 02.03.2019 copied from Geant4 10.5p01 -// -// -// ------------------------------------------------------------------- -// References -// [1] Steven P. Ahlen: Energy loss of relativistic heavy ionizing particles, -// S.P. Ahlen, Rev. Mod. Phys 52(1980), p121 -// [2] K.A. Milton arXiv:hep-ex/0602040 -// [3] S.P. Ahlen and K. Kinoshita, Phys. Rev. D26 (1982) 2347 - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -#include "SimG4Core/PhysicsLists/interface/CMSmplIonisationWithDeltaModel.h" -#include "Randomize.hh" -#include "G4PhysicalConstants.hh" -#include "G4SystemOfUnits.hh" -#include "G4ParticleChangeForLoss.hh" -#include "G4Electron.hh" -#include "G4DynamicParticle.hh" -#include "G4ProductionCutsTable.hh" -#include "G4MaterialCutsCouple.hh" -#include "G4Log.hh" -#include "G4Pow.hh" - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -using namespace std; - -std::vector* CMSmplIonisationWithDeltaModel::dedx0 = nullptr; - -CMSmplIonisationWithDeltaModel::CMSmplIonisationWithDeltaModel(G4double mCharge, const G4String& nam) - : G4VEmModel(nam), - G4VEmFluctuationModel(nam), - magCharge(mCharge), - twoln10(std::log(100.0)), - betalow(0.01), - betalim(0.1), - beta2lim(betalim * betalim), - bg2lim(beta2lim * (1.0 + beta2lim)) { - nmpl = G4lrint(std::abs(magCharge) * 2 * fine_structure_const); - if (nmpl > 6) { - nmpl = 6; - } else if (nmpl < 1) { - nmpl = 1; - } - pi_hbarc2_over_mc2 = pi * hbarc * hbarc / electron_mass_c2; - chargeSquare = magCharge * magCharge; - dedxlim = 45. * nmpl * nmpl * GeV * cm2 / g; - fParticleChange = nullptr; - theElectron = G4Electron::Electron(); - G4cout << "### Monopole ionisation model with d-electron production, Gmag= " << magCharge / eplus << G4endl; - monopole = nullptr; - mass = 0.0; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -CMSmplIonisationWithDeltaModel::~CMSmplIonisationWithDeltaModel() { - if (IsMaster()) { - delete dedx0; - } -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void CMSmplIonisationWithDeltaModel::SetParticle(const G4ParticleDefinition* p) { - monopole = p; - mass = monopole->GetPDGMass(); - G4double emin = std::min(LowEnergyLimit(), 0.1 * mass * (1. / sqrt(1. - betalow * betalow) - 1.)); - G4double emax = std::max(HighEnergyLimit(), 10 * mass * (1. / sqrt(1. - beta2lim) - 1.)); - SetLowEnergyLimit(emin); - SetHighEnergyLimit(emax); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void CMSmplIonisationWithDeltaModel::Initialise(const G4ParticleDefinition* p, const G4DataVector&) { - if (!monopole) { - SetParticle(p); - } - if (!fParticleChange) { - fParticleChange = GetParticleChangeForLoss(); - } - if (IsMaster()) { - if (!dedx0) { - dedx0 = new std::vector; - } - G4ProductionCutsTable* theCoupleTable = G4ProductionCutsTable::GetProductionCutsTable(); - G4int numOfCouples = theCoupleTable->GetTableSize(); - G4int n = dedx0->size(); - if (n < numOfCouples) { - dedx0->resize(numOfCouples); - } - G4Pow* g4calc = G4Pow::GetInstance(); - - // initialise vector - for (G4int i = 0; i < numOfCouples; ++i) { - const G4Material* material = theCoupleTable->GetMaterialCutsCouple(i)->GetMaterial(); - G4double eDensity = material->GetElectronDensity(); - G4double vF2 = 2 * electron_Compton_length * g4calc->A13(3. * pi * pi * eDensity); - (*dedx0)[i] = pi_hbarc2_over_mc2 * eDensity * nmpl * nmpl * (G4Log(vF2 / fine_structure_const) - 0.5) / vF2; - } - } -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... - -G4double CMSmplIonisationWithDeltaModel::MinEnergyCut(const G4ParticleDefinition*, const G4MaterialCutsCouple* couple) { - return couple->GetMaterial()->GetIonisation()->GetMeanExcitationEnergy(); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -G4double CMSmplIonisationWithDeltaModel::ComputeDEDXPerVolume(const G4Material* material, - const G4ParticleDefinition* p, - G4double kineticEnergy, - G4double maxEnergy) { - if (!monopole) { - SetParticle(p); - } - G4double tmax = MaxSecondaryEnergy(p, kineticEnergy); - G4double cutEnergy = std::min(tmax, maxEnergy); - cutEnergy = std::max(LowEnergyLimit(), cutEnergy); - G4double tau = kineticEnergy / mass; - G4double gam = tau + 1.0; - G4double bg2 = tau * (tau + 2.0); - G4double beta2 = bg2 / (gam * gam); - G4double beta = sqrt(beta2); - - // low-energy asymptotic formula - G4double dedx = (*dedx0)[CurrentCouple()->GetIndex()] * beta; - - // above asymptotic - if (beta > betalow) { - // high energy - if (beta >= betalim) { - dedx = ComputeDEDXAhlen(material, bg2, cutEnergy); - - } else { - G4double dedx1 = (*dedx0)[CurrentCouple()->GetIndex()] * betalow; - G4double dedx2 = ComputeDEDXAhlen(material, bg2lim, cutEnergy); - - // extrapolation between two formula - G4double kapa2 = beta - betalow; - G4double kapa1 = betalim - beta; - dedx = (kapa1 * dedx1 + kapa2 * dedx2) / (kapa1 + kapa2); - } - } - return dedx; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -G4double CMSmplIonisationWithDeltaModel::ComputeDEDXAhlen(const G4Material* material, - G4double bg2, - G4double cutEnergy) { - G4double eDensity = material->GetElectronDensity(); - G4double eexc = material->GetIonisation()->GetMeanExcitationEnergy(); - - // Ahlen's formula for nonconductors, [1]p157, f(5.7) - G4double dedx = 0.5 * (G4Log(2.0 * electron_mass_c2 * bg2 * cutEnergy / (eexc * eexc)) - 1.0); - - // Kazama et al. cross-section correction - G4double k = 0.406; - if (nmpl > 1) { - k = 0.346; - } - - // Bloch correction - const G4double B[7] = {0.0, 0.248, 0.672, 1.022, 1.243, 1.464, 1.685}; - - dedx += 0.5 * k - B[nmpl]; - - // density effect correction - G4double x = G4Log(bg2) / twoln10; - dedx -= material->GetIonisation()->DensityCorrection(x); - - // now compute the total ionization loss - dedx *= pi_hbarc2_over_mc2 * eDensity * nmpl * nmpl; - - dedx = std::max(dedx, 0.0); - return dedx; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... - -G4double CMSmplIonisationWithDeltaModel::ComputeCrossSectionPerElectron(const G4ParticleDefinition* p, - G4double kineticEnergy, - G4double cut, - G4double maxKinEnergy) { - if (!monopole) { - SetParticle(p); - } - G4double tmax = MaxSecondaryEnergy(p, kineticEnergy); - G4double maxEnergy = std::min(tmax, maxKinEnergy); - G4double cutEnergy = std::max(LowEnergyLimit(), cut); - G4double cross = - (cutEnergy < maxEnergy) ? (0.5 / cutEnergy - 0.5 / maxEnergy) * pi_hbarc2_over_mc2 * nmpl * nmpl : 0.0; - return cross; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... - -G4double CMSmplIonisationWithDeltaModel::ComputeCrossSectionPerAtom(const G4ParticleDefinition* p, - G4double kineticEnergy, - G4double Z, - G4double, - G4double cutEnergy, - G4double maxEnergy) { - G4double cross = Z * ComputeCrossSectionPerElectron(p, kineticEnergy, cutEnergy, maxEnergy); - return cross; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -void CMSmplIonisationWithDeltaModel::SampleSecondaries(vector* vdp, - const G4MaterialCutsCouple*, - const G4DynamicParticle* dp, - G4double minKinEnergy, - G4double maxEnergy) { - G4double kineticEnergy = dp->GetKineticEnergy(); - G4double tmax = MaxSecondaryEnergy(dp->GetDefinition(), kineticEnergy); - - G4double maxKinEnergy = std::min(maxEnergy, tmax); - if (minKinEnergy >= maxKinEnergy) { - return; - } - - //G4cout << "CMSmplIonisationWithDeltaModel::SampleSecondaries: E(GeV)= " - // << kineticEnergy/GeV << " M(GeV)= " << mass/GeV - // << " tmin(MeV)= " << minKinEnergy/MeV << G4endl; - - G4double totEnergy = kineticEnergy + mass; - G4double etot2 = totEnergy * totEnergy; - G4double beta2 = kineticEnergy * (kineticEnergy + 2.0 * mass) / etot2; - - // sampling without nuclear size effect - G4double q = G4UniformRand(); - G4double deltaKinEnergy = minKinEnergy * maxKinEnergy / (minKinEnergy * (1.0 - q) + maxKinEnergy * q); - - // delta-electron is produced - G4double totMomentum = totEnergy * sqrt(beta2); - G4double deltaMomentum = sqrt(deltaKinEnergy * (deltaKinEnergy + 2.0 * electron_mass_c2)); - G4double cost = deltaKinEnergy * (totEnergy + electron_mass_c2) / (deltaMomentum * totMomentum); - cost = std::min(cost, 1.0); - - G4double sint = sqrt((1.0 - cost) * (1.0 + cost)); - - G4double phi = twopi * G4UniformRand(); - - G4ThreeVector deltaDirection(sint * cos(phi), sint * sin(phi), cost); - const G4ThreeVector& direction = dp->GetMomentumDirection(); - deltaDirection.rotateUz(direction); - - // create G4DynamicParticle object for delta ray - G4DynamicParticle* delta = new G4DynamicParticle(theElectron, deltaDirection, deltaKinEnergy); - - vdp->push_back(delta); - - // Change kinematics of primary particle - kineticEnergy -= deltaKinEnergy; - G4ThreeVector finalP = direction * totMomentum - deltaDirection * deltaMomentum; - finalP = finalP.unit(); - - fParticleChange->SetProposedKineticEnergy(kineticEnergy); - fParticleChange->SetProposedMomentumDirection(finalP); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -G4double CMSmplIonisationWithDeltaModel::SampleFluctuations(const G4MaterialCutsCouple* couple, - const G4DynamicParticle* dp, - G4double tmax, - G4double length, - G4double meanLoss) { - G4double siga = Dispersion(couple->GetMaterial(), dp, tmax, length); - G4double loss = meanLoss; - siga = sqrt(siga); - G4double twomeanLoss = meanLoss + meanLoss; - - if (twomeanLoss < siga) { - G4double x; - do { - loss = twomeanLoss * G4UniformRand(); - x = (loss - meanLoss) / siga; - // Loop checking, 07-Aug-2015, Vladimir Ivanchenko - } while (1.0 - 0.5 * x * x < G4UniformRand()); - } else { - do { - loss = G4RandGauss::shoot(meanLoss, siga); - // Loop checking, 07-Aug-2015, Vladimir Ivanchenko - } while (0.0 > loss || loss > twomeanLoss); - } - return loss; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -G4double CMSmplIonisationWithDeltaModel::Dispersion(const G4Material* material, - const G4DynamicParticle* dp, - G4double tmax, - G4double length) { - G4double siga = 0.0; - G4double tau = dp->GetKineticEnergy() / mass; - if (tau > 0.0) { - G4double electronDensity = material->GetElectronDensity(); - G4double gam = tau + 1.0; - G4double invbeta2 = (gam * gam) / (tau * (tau + 2.0)); - siga = (invbeta2 - 0.5) * twopi_mc2_rcl2 * tmax * length * electronDensity * chargeSquare; - } - return siga; -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... - -G4double CMSmplIonisationWithDeltaModel::MaxSecondaryEnergy(const G4ParticleDefinition*, G4double kinEnergy) { - G4double tau = kinEnergy / mass; - return 2.0 * electron_mass_c2 * tau * (tau + 2.); -} - -//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... diff --git a/SimG4Core/PhysicsLists/src/MonopoleTransportation.cc b/SimG4Core/PhysicsLists/src/MonopoleTransportation.cc index afb832020ee07..6bae870e51fae 100644 --- a/SimG4Core/PhysicsLists/src/MonopoleTransportation.cc +++ b/SimG4Core/PhysicsLists/src/MonopoleTransportation.cc @@ -398,8 +398,7 @@ G4VParticleChange* MonopoleTransportation::AlongStepDoIt(const G4Track& track, c if ((verboseLevel > 1) || (endEnergy > fThreshold_Warning_Energy)) { G4cout << " MonopoleTransportation is killing track that is looping or stuck " << G4endl << " This track has " << track.GetKineticEnergy() / MeV << " MeV energy." << G4endl; - G4cout << " Number of trials = " << fNoLooperTrials << " No of calls to AlongStepDoIt = " << noCalls - << G4endl; + G4cout << " Number of trials = " << fNoLooperTrials << G4endl; } #endif fNoLooperTrials = 0; @@ -408,7 +407,7 @@ G4VParticleChange* MonopoleTransportation::AlongStepDoIt(const G4Track& track, c #ifdef G4VERBOSE if ((verboseLevel > 2)) { G4cout << " MonopoleTransportation::AlongStepDoIt(): Particle looping - " - << " Number of trials = " << fNoLooperTrials << " No of calls to = " << noCalls << G4endl; + << " Number of trials = " << fNoLooperTrials << G4endl; } #endif }