Geant4 Cross Reference |
1 // 2 // ******************************************************************** 3 // * License and Disclaimer * 4 // * * 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. * 10 // * * 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitation of liability. * 17 // * * 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************************************** 25 // 26 //--------------------------------------------------------------------------- 27 // 28 // ClassName: G4IonElasticPhysics 29 // 30 // Author: 23 October 2013 T. Koi 31 // 32 // Modified: 33 // 34 //---------------------------------------------------------------------------- 35 // 36 37 #include "G4IonElasticPhysics.hh" 38 39 #include "G4SystemOfUnits.hh" 40 #include "G4ParticleDefinition.hh" 41 #include "G4ProcessManager.hh" 42 43 #include "G4GenericIon.hh" 44 45 #include "G4HadronElasticProcess.hh" 46 #include "G4NuclNuclDiffuseElastic.hh" 47 #include "G4ComponentGGNuclNuclXsc.hh" 48 #include "G4CrossSectionElastic.hh" 49 #include "G4HadronicParameters.hh" 50 51 // factory 52 #include "G4PhysicsConstructorFactory.hh" 53 // 54 G4_DECLARE_PHYSCONSTR_FACTORY(G4IonElasticPhysics); 55 // 56 57 G4IonElasticPhysics::G4IonElasticPhysics(G4int ver) 58 : G4VPhysicsConstructor("IonElasticPhysics") 59 { 60 // because it is an addition, the type of this constructor is 0 61 G4HadronicParameters::Instance()->SetVerboseLevel(ver); 62 if(ver > 1) { 63 G4cout << "### G4IonElasticPhysics: " << GetPhysicsName() 64 << G4endl; 65 } 66 } 67 68 G4IonElasticPhysics::~G4IonElasticPhysics() 69 {} 70 71 void G4IonElasticPhysics::ConstructParticle() 72 { 73 G4GenericIon::GenericIon(); 74 } 75 76 void G4IonElasticPhysics::ConstructProcess() 77 { 78 // Elastic process for other ions 79 G4HadronElasticProcess* ionElasticProcess = new G4HadronElasticProcess("ionElastic"); 80 81 //Model 82 G4NuclNuclDiffuseElastic* ionElastic = new G4NuclNuclDiffuseElastic; 83 ionElastic->SetMinEnergy(0.0); 84 ionElasticProcess->RegisterMe(ionElastic); 85 86 //Cross Section 87 G4ComponentGGNuclNuclXsc* ionElasticXS = new G4ComponentGGNuclNuclXsc; 88 G4VCrossSectionDataSet* ionElasticXSDataSet = new G4CrossSectionElastic(ionElasticXS); 89 ionElasticXSDataSet->SetMinKinEnergy(0.0); 90 ionElasticProcess->AddDataSet(ionElasticXSDataSet); 91 92 G4ProcessManager* ionManager = G4GenericIon::GenericIon()->GetProcessManager(); 93 ionManager->AddDiscreteProcess( ionElasticProcess ); 94 95 if (G4HadronicParameters::Instance()->GetVerboseLevel() > 1 ) { 96 G4cout << "### IonElasticPhysics: " << ionElasticProcess->GetProcessName() 97 << " added for " << G4GenericIon::GenericIon()->GetParticleName() 98 << G4endl; 99 } 100 } 101