Geant4 Cross Reference |
1 // 1 // 2 // ******************************************* 2 // ******************************************************************** 3 // * License and Disclaimer 3 // * License and Disclaimer * 4 // * 4 // * * 5 // * The Geant4 software is copyright of th 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/ 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. 9 // * include a list of copyright holders. * 10 // * 10 // * * 11 // * Neither the authors of this software syst 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing fin 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warran 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assum 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitatio 16 // * for the full disclaimer and the limitation of liability. * 17 // * 17 // * * 18 // * This code implementation is the result 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboratio 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distri 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you ag 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publicati 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Sof 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************* 24 // ******************************************************************** 25 // 25 // 26 //-------------------------------------------- 26 //--------------------------------------------------------------------------- 27 // ClassName: G4HyperonBuilder 27 // ClassName: G4HyperonBuilder 28 // Author: Alberto Ribon 28 // Author: Alberto Ribon 29 // Date: May 2020 29 // Date: May 2020 30 // Modified: 30 // Modified: 31 //-------------------------------------------- 31 //--------------------------------------------------------------------------- 32 32 33 #include "G4HyperonBuilder.hh" 33 #include "G4HyperonBuilder.hh" 34 #include "G4ParticleDefinition.hh" 34 #include "G4ParticleDefinition.hh" 35 #include "G4ParticleTable.hh" 35 #include "G4ParticleTable.hh" 36 #include "G4ProcessManager.hh" 36 #include "G4ProcessManager.hh" 37 #include "G4HadronInelasticProcess.hh" 37 #include "G4HadronInelasticProcess.hh" 38 38 39 39 40 G4HyperonBuilder::G4HyperonBuilder() { 40 G4HyperonBuilder::G4HyperonBuilder() { 41 theLambdaInelastic = new G4HadronIne 41 theLambdaInelastic = new G4HadronInelasticProcess( "lambdaInelastic", G4Lambda::Definition() ); 42 theAntiLambdaInelastic = new G4HadronIne 42 theAntiLambdaInelastic = new G4HadronInelasticProcess( "anti-lambdaInelastic", G4AntiLambda::Definition() ); 43 theSigmaMinusInelastic = new G4HadronIne 43 theSigmaMinusInelastic = new G4HadronInelasticProcess( "sigma-Inelastic", G4SigmaMinus::Definition() ); 44 theAntiSigmaMinusInelastic = new G4HadronIne 44 theAntiSigmaMinusInelastic = new G4HadronInelasticProcess( "anti_sigma-Inelastic", G4AntiSigmaMinus::Definition() ); 45 theSigmaPlusInelastic = new G4HadronIne 45 theSigmaPlusInelastic = new G4HadronInelasticProcess( "sigma+Inelastic", G4SigmaPlus::Definition() ); 46 theAntiSigmaPlusInelastic = new G4HadronIne 46 theAntiSigmaPlusInelastic = new G4HadronInelasticProcess( "anti_sigma+Inelastic", G4AntiSigmaPlus::Definition() ); 47 theXiMinusInelastic = new G4HadronIne 47 theXiMinusInelastic = new G4HadronInelasticProcess( "xi-Inelastic", G4XiMinus::Definition() ); 48 theAntiXiMinusInelastic = new G4HadronIne 48 theAntiXiMinusInelastic = new G4HadronInelasticProcess( "anti_xi-Inelastic", G4AntiXiMinus::Definition() ); 49 theXiZeroInelastic = new G4HadronIne 49 theXiZeroInelastic = new G4HadronInelasticProcess( "xi0Inelastic", G4XiZero::Definition() ); 50 theAntiXiZeroInelastic = new G4HadronIne 50 theAntiXiZeroInelastic = new G4HadronInelasticProcess( "anti_xi0Inelastic", G4AntiXiZero::Definition() ); 51 theOmegaMinusInelastic = new G4HadronIne 51 theOmegaMinusInelastic = new G4HadronInelasticProcess( "omega-Inelastic", G4OmegaMinus::Definition() ); 52 theAntiOmegaMinusInelastic = new G4HadronIne 52 theAntiOmegaMinusInelastic = new G4HadronInelasticProcess( "anti_omega-Inelastic", G4AntiOmegaMinus::Definition() ); 53 } 53 } 54 54 55 55 56 void G4HyperonBuilder::RegisterMe( G4PhysicsBu 56 void G4HyperonBuilder::RegisterMe( G4PhysicsBuilderInterface* aB ) { 57 auto bld = dynamic_cast< G4VHyperonBuilder* 57 auto bld = dynamic_cast< G4VHyperonBuilder* >( aB ); 58 if ( bld != nullptr ) theModelCollections.pu 58 if ( bld != nullptr ) theModelCollections.push_back( bld ); 59 else G4PhysicsBuilderInterf 59 else G4PhysicsBuilderInterface::RegisterMe( aB ); 60 } 60 } 61 61 62 62 63 void G4HyperonBuilder::Build() { 63 void G4HyperonBuilder::Build() { 64 for ( std::vector< G4VHyperonBuilder* >::ite 64 for ( std::vector< G4VHyperonBuilder* >::iterator i = theModelCollections.begin(); 65 i != theModelCollections.end(); ++i ) { 65 i != theModelCollections.end(); ++i ) { 66 (*i)->Build( theLambdaInelastic ); 66 (*i)->Build( theLambdaInelastic ); 67 (*i)->Build( theAntiLambdaInelastic ); 67 (*i)->Build( theAntiLambdaInelastic ); 68 (*i)->Build( theSigmaMinusInelastic ); 68 (*i)->Build( theSigmaMinusInelastic ); 69 (*i)->Build( theAntiSigmaMinusInelastic ); 69 (*i)->Build( theAntiSigmaMinusInelastic ); 70 (*i)->Build( theSigmaPlusInelastic ); 70 (*i)->Build( theSigmaPlusInelastic ); 71 (*i)->Build( theAntiSigmaPlusInelastic ); 71 (*i)->Build( theAntiSigmaPlusInelastic ); 72 (*i)->Build( theXiMinusInelastic ); 72 (*i)->Build( theXiMinusInelastic ); 73 (*i)->Build( theAntiXiMinusInelastic ); 73 (*i)->Build( theAntiXiMinusInelastic ); 74 (*i)->Build( theXiZeroInelastic ); 74 (*i)->Build( theXiZeroInelastic ); 75 (*i)->Build( theAntiXiZeroInelastic ); 75 (*i)->Build( theAntiXiZeroInelastic ); 76 (*i)->Build( theOmegaMinusInelastic ); 76 (*i)->Build( theOmegaMinusInelastic ); 77 (*i)->Build( theAntiOmegaMinusInelastic ); 77 (*i)->Build( theAntiOmegaMinusInelastic ); 78 } 78 } 79 G4ProcessManager* aProcMan = nullptr; 79 G4ProcessManager* aProcMan = nullptr; 80 aProcMan = G4Lambda::Lambda()->GetProcessMan 80 aProcMan = G4Lambda::Lambda()->GetProcessManager(); 81 aProcMan->AddDiscreteProcess( theLambdaInela 81 aProcMan->AddDiscreteProcess( theLambdaInelastic ); 82 aProcMan = G4AntiLambda::AntiLambda()->GetPr 82 aProcMan = G4AntiLambda::AntiLambda()->GetProcessManager(); 83 aProcMan->AddDiscreteProcess( theAntiLambdaI 83 aProcMan->AddDiscreteProcess( theAntiLambdaInelastic ); 84 aProcMan = G4SigmaMinus::SigmaMinus()->GetPr 84 aProcMan = G4SigmaMinus::SigmaMinus()->GetProcessManager(); 85 aProcMan->AddDiscreteProcess( theSigmaMinusI 85 aProcMan->AddDiscreteProcess( theSigmaMinusInelastic ); 86 aProcMan = G4AntiSigmaMinus::AntiSigmaMinus( 86 aProcMan = G4AntiSigmaMinus::AntiSigmaMinus()->GetProcessManager(); 87 aProcMan->AddDiscreteProcess( theAntiSigmaMi 87 aProcMan->AddDiscreteProcess( theAntiSigmaMinusInelastic ); 88 aProcMan = G4SigmaPlus::SigmaPlus()->GetProc 88 aProcMan = G4SigmaPlus::SigmaPlus()->GetProcessManager(); 89 aProcMan->AddDiscreteProcess( theSigmaPlusIn 89 aProcMan->AddDiscreteProcess( theSigmaPlusInelastic ); 90 aProcMan = G4AntiSigmaPlus::AntiSigmaPlus()- 90 aProcMan = G4AntiSigmaPlus::AntiSigmaPlus()->GetProcessManager(); 91 aProcMan->AddDiscreteProcess( theAntiSigmaPl 91 aProcMan->AddDiscreteProcess( theAntiSigmaPlusInelastic ); 92 aProcMan = G4XiMinus::XiMinus()->GetProcessM 92 aProcMan = G4XiMinus::XiMinus()->GetProcessManager(); 93 aProcMan->AddDiscreteProcess( theXiMinusInel 93 aProcMan->AddDiscreteProcess( theXiMinusInelastic ); 94 aProcMan = G4AntiXiMinus::AntiXiMinus()->Get 94 aProcMan = G4AntiXiMinus::AntiXiMinus()->GetProcessManager(); 95 aProcMan->AddDiscreteProcess( theAntiXiMinus 95 aProcMan->AddDiscreteProcess( theAntiXiMinusInelastic ); 96 aProcMan = G4XiZero::XiZero()->GetProcessMan 96 aProcMan = G4XiZero::XiZero()->GetProcessManager(); 97 aProcMan->AddDiscreteProcess( theXiZeroInela 97 aProcMan->AddDiscreteProcess( theXiZeroInelastic ); 98 aProcMan = G4AntiXiZero::AntiXiZero()->GetPr 98 aProcMan = G4AntiXiZero::AntiXiZero()->GetProcessManager(); 99 aProcMan->AddDiscreteProcess( theAntiXiZeroI 99 aProcMan->AddDiscreteProcess( theAntiXiZeroInelastic ); 100 aProcMan = G4OmegaMinus::OmegaMinus()->GetPr 100 aProcMan = G4OmegaMinus::OmegaMinus()->GetProcessManager(); 101 aProcMan->AddDiscreteProcess( theOmegaMinusI 101 aProcMan->AddDiscreteProcess( theOmegaMinusInelastic ); 102 aProcMan = G4AntiOmegaMinus::AntiOmegaMinus( 102 aProcMan = G4AntiOmegaMinus::AntiOmegaMinus()->GetProcessManager(); 103 aProcMan->AddDiscreteProcess( theAntiOmegaMi 103 aProcMan->AddDiscreteProcess( theAntiOmegaMinusInelastic ); 104 } 104 } 105 105