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 #include "G4NeutronLENDBuilder.hh" 27 #include "G4SystemOfUnits.hh" 28 #include "G4ParticleDefinition.hh" 29 #include "G4ParticleTable.hh" 30 #include "G4ProcessManager.hh" 31 32 G4NeutronLENDBuilder:: 33 G4NeutronLENDBuilder(const G4String& eva ) 34 { 35 theLENDElastic = 0; 36 theLENDElasticCrossSection = 0; 37 38 theLENDFission = 0; 39 theLENDFissionCrossSection = 0; 40 41 theLENDCapture = 0; 42 theLENDCaptureCrossSection = 0; 43 44 theLENDInelastic = 0; 45 theLENDInelasticCrossSection = 0; 46 47 theMin = 0; 48 theIMin = theMin; 49 theMax = 20*MeV; 50 theIMax = theMax; 51 evaluation = eva; 52 53 } 54 void G4NeutronLENDBuilder:: 55 Build(G4HadronElasticProcess * aP) 56 { 57 if(theLENDElastic==0) theLENDElastic = new G4LENDElastic( G4Neutron::Neutron() ); 58 theLENDElastic->SetMinEnergy(theMin); 59 theLENDElastic->SetMaxEnergy(theMax); 60 61 if ( evaluation != "" ) theLENDElastic->ChangeDefaultEvaluation( evaluation ); 62 theLENDElastic->AllowNaturalAbundanceTarget(); 63 //theLENDElastic->AllowAnyCandidateTarget(); 64 if(theLENDElasticCrossSection == 0) theLENDElasticCrossSection = new G4LENDElasticCrossSection( G4Neutron::Neutron() ); 65 if ( evaluation != "" ) theLENDElasticCrossSection->ChangeDefaultEvaluation( evaluation ); 66 theLENDElasticCrossSection->AllowNaturalAbundanceTarget(); 67 //theLENDElasticCrossSection->AllowAnyCandidateTarget(); 68 aP->AddDataSet(theLENDElasticCrossSection); 69 aP->RegisterMe(theLENDElastic); 70 } 71 72 void G4NeutronLENDBuilder:: 73 Build(G4NeutronFissionProcess * aP) 74 { 75 if(theLENDFission == 0) theLENDFission = new G4LENDFission( G4Neutron::Neutron() ); 76 theLENDFission->SetMinEnergy(theMin); 77 theLENDFission->SetMaxEnergy(theMax); 78 if ( evaluation != "" ) theLENDFission->ChangeDefaultEvaluation( evaluation ); 79 //theLENDFission->AllowNaturalAbundanceTarget(); 80 //theLENDFission->AllowAnyCandidateTarget(); 81 if(theLENDFissionCrossSection==0) theLENDFissionCrossSection=new G4LENDFissionCrossSection( G4Neutron::Neutron() ); 82 if ( evaluation != "" ) theLENDFissionCrossSection->ChangeDefaultEvaluation( evaluation ); 83 //theLENDFissionCrossSection->AllowNaturalAbundanceTarget(); 84 //theLENDFissionCrossSection->AllowAnyCandidateTarget(); 85 aP->AddDataSet(theLENDFissionCrossSection); 86 aP->RegisterMe(theLENDFission); 87 } 88 89 void G4NeutronLENDBuilder:: 90 Build(G4NeutronCaptureProcess * aP) 91 { 92 if(theLENDCapture==0) theLENDCapture = new G4LENDCapture( G4Neutron::Neutron() ); 93 theLENDCapture->SetMinEnergy(theMin); 94 theLENDCapture->SetMaxEnergy(theMax); 95 if ( evaluation != "" ) theLENDCapture->ChangeDefaultEvaluation( evaluation ); 96 theLENDCapture->AllowNaturalAbundanceTarget(); 97 //theLENDCapture->AllowAnyCandidateTarget(); 98 if(theLENDCaptureCrossSection==0) theLENDCaptureCrossSection = new G4LENDCaptureCrossSection( G4Neutron::Neutron() ); 99 if ( evaluation != "" ) theLENDCaptureCrossSection->ChangeDefaultEvaluation( evaluation ); 100 theLENDCaptureCrossSection->AllowNaturalAbundanceTarget(); 101 //theLENDCaptureCrossSection->AllowAnyCandidateTarget(); 102 aP->AddDataSet(theLENDCaptureCrossSection); 103 aP->RegisterMe(theLENDCapture); 104 } 105 106 void G4NeutronLENDBuilder:: 107 Build(G4HadronInelasticProcess * aP) 108 { 109 if(theLENDInelastic==0) theLENDInelastic = new G4LENDInelastic( G4Neutron::Neutron() ); 110 theLENDInelastic->SetMinEnergy(theIMin); 111 theLENDInelastic->SetMaxEnergy(theIMax); 112 if ( evaluation != "" ) theLENDInelastic->ChangeDefaultEvaluation( evaluation ); 113 theLENDInelastic->AllowNaturalAbundanceTarget(); 114 //theLENDInelastic->AllowAnyCandidateTarget(); 115 if(theLENDInelasticCrossSection==0) theLENDInelasticCrossSection = new G4LENDInelasticCrossSection( G4Neutron::Neutron() ); 116 if ( evaluation != "" ) theLENDInelasticCrossSection->ChangeDefaultEvaluation( evaluation ); 117 theLENDInelasticCrossSection->AllowNaturalAbundanceTarget(); 118 //theLENDInelasticCrossSection->AllowAnyCandidateTarget(); 119 aP->AddDataSet(theLENDInelasticCrossSection); 120 aP->RegisterMe(theLENDInelastic); 121 } 122 123