/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Simulation/G4Svc/G4Svc-00-01-52/Physics_src/ExN04HadronPhysics.cxx

Go to the documentation of this file.
00001 //
00002 // ********************************************************************
00003 // * DISCLAIMER                                                       *
00004 // *                                                                  *
00005 // * The following disclaimer summarizes all the specific disclaimers *
00006 // * of contributors to this software. The specific disclaimers,which *
00007 // * govern, are listed with their locations in:                      *
00008 // *   http://cern.ch/geant4/license                                  *
00009 // *                                                                  *
00010 // * Neither the authors of this software system, nor their employing *
00011 // * institutes,nor the agencies providing financial support for this *
00012 // * work  make  any representation or  warranty, express or implied, *
00013 // * regarding  this  software system or assume any liability for its *
00014 // * use.                                                             *
00015 // *                                                                  *
00016 // * This  code  implementation is the  intellectual property  of the *
00017 // * GEANT4 collaboration.                                            *
00018 // * By copying,  distributing  or modifying the Program (or any work *
00019 // * based  on  the Program)  you indicate  your  acceptance of  this *
00020 // * statement, and all its terms.                                    *
00021 // ********************************************************************
00022 //
00023 //
00024 // $Id: ExN04HadronPhysics.cxx,v 1.1.1.1 2004/09/28 05:16:53 liwd Exp $
00025 // GEANT4 tag $Name: G4Svc-00-01-52 $
00026 //
00027 // 
00028 
00029 #include <cmath>
00030 #include "globals.hh"
00031 
00032 #include "Physics/ExN04HadronPhysics.hh"
00033 
00034 #include "G4ios.hh"
00035 
00036 ExN04HadronPhysics::ExN04HadronPhysics(const G4String& name)
00037                     :  G4VPhysicsConstructor(name)
00038 {
00039 }
00040 
00041 ExN04HadronPhysics::~ExN04HadronPhysics()
00042 {
00043 }
00044 
00045 #include "G4ParticleDefinition.hh"
00046 #include "G4ParticleTable.hh"
00047 
00048 // Nuclei
00049 #include "G4MesonConstructor.hh"
00050 #include "G4BaryonConstructor.hh"
00051 #include "G4ShortLivedConstructor.hh"
00052 
00053 void ExN04HadronPhysics::ConstructParticle()
00054 {
00055   //  Construct all mesons
00056   G4MesonConstructor pMesonConstructor;
00057   pMesonConstructor.ConstructParticle();
00058 
00059   //  Construct all barions
00060   G4BaryonConstructor pBaryonConstructor;
00061   pBaryonConstructor.ConstructParticle();
00062 
00063   //  Construct  resonaces and quarks
00064   G4ShortLivedConstructor pShortLivedConstructor;
00065   pShortLivedConstructor.ConstructParticle();  
00066 
00067 }
00068 
00069 
00070 #include "G4ProcessManager.hh"
00071 
00072 
00073 void ExN04HadronPhysics::ConstructProcess()
00074 {
00075   G4ProcessManager * pManager = 0;
00076   
00077   // Elastic Process
00078   theElasticModel = new G4LElastic();
00079   theElasticProcess.RegisterMe(theElasticModel);
00080 
00081   // PionPlus
00082   pManager = G4PionPlus::PionPlus()->GetProcessManager();
00083   // add process
00084   pManager->AddDiscreteProcess(&theElasticProcess);
00085 
00086   theLEPionPlusModel = new G4LEPionPlusInelastic();
00087   theHEPionPlusModel = new G4HEPionPlusInelastic();
00088   thePionPlusInelastic.RegisterMe(theLEPionPlusModel);
00089   thePionPlusInelastic.RegisterMe(theHEPionPlusModel);
00090   pManager->AddDiscreteProcess(&thePionPlusInelastic);
00091 
00092   pManager->AddProcess(&thePionPlusIonisation, ordInActive,2, 2);
00093 
00094   pManager->AddProcess(&thePionPlusMult);
00095   pManager->SetProcessOrdering(&thePionPlusMult, idxAlongStep, 1);
00096   pManager->SetProcessOrdering(&thePionPlusMult, idxPostStep, 1);
00097 
00098   // PionMinus
00099   pManager = G4PionMinus::PionMinus()->GetProcessManager();
00100   // add process
00101   pManager->AddDiscreteProcess(&theElasticProcess);
00102 
00103   theLEPionMinusModel = new G4LEPionMinusInelastic();
00104   theHEPionMinusModel = new G4HEPionMinusInelastic();
00105   thePionMinusInelastic.RegisterMe(theLEPionMinusModel);
00106   thePionMinusInelastic.RegisterMe(theHEPionMinusModel);
00107   pManager->AddDiscreteProcess(&thePionMinusInelastic);
00108 
00109   pManager->AddProcess(&thePionMinusIonisation, ordInActive,2, 2);
00110 
00111   pManager->AddProcess(&thePionMinusMult);
00112   pManager->SetProcessOrdering(&thePionMinusMult, idxAlongStep, 1);
00113   pManager->SetProcessOrdering(&thePionMinusMult, idxPostStep, 1);
00114 
00115   pManager->AddRestProcess(&thePionMinusAbsorption, ordDefault);
00116 
00117   // KaonPlus
00118   pManager = G4KaonPlus::KaonPlus()->GetProcessManager();
00119   // add process
00120   pManager->AddDiscreteProcess(&theElasticProcess);
00121 
00122   theLEKaonPlusModel = new G4LEKaonPlusInelastic();
00123   theHEKaonPlusModel = new G4HEKaonPlusInelastic();
00124   theKaonPlusInelastic.RegisterMe(theLEKaonPlusModel);
00125   theKaonPlusInelastic.RegisterMe(theHEKaonPlusModel);
00126   pManager->AddDiscreteProcess(&theKaonPlusInelastic);
00127 
00128   pManager->AddProcess(&theKaonPlusIonisation, ordInActive,2, 2);
00129 
00130   pManager->AddProcess(&theKaonPlusMult);
00131   pManager->SetProcessOrdering(&theKaonPlusMult, idxAlongStep, 1);
00132   pManager->SetProcessOrdering(&theKaonPlusMult, idxPostStep, 1);
00133 
00134   // KaonMinus
00135   pManager = G4KaonMinus::KaonMinus()->GetProcessManager();
00136   // add process
00137   pManager->AddDiscreteProcess(&theElasticProcess);
00138 
00139   theLEKaonMinusModel = new G4LEKaonMinusInelastic();
00140   theHEKaonMinusModel = new G4HEKaonMinusInelastic();
00141   theKaonMinusInelastic.RegisterMe(theLEKaonMinusModel);
00142   theKaonMinusInelastic.RegisterMe(theHEKaonMinusModel);
00143   pManager->AddDiscreteProcess(&theKaonMinusInelastic);
00144 
00145   pManager->AddProcess(&theKaonMinusIonisation, ordInActive,2, 2);
00146 
00147   pManager->AddProcess(&theKaonMinusMult);
00148   pManager->SetProcessOrdering(&theKaonMinusMult, idxAlongStep, 1);
00149   pManager->SetProcessOrdering(&theKaonMinusMult, idxPostStep, 1);
00150 
00151   pManager->AddRestProcess(&theKaonMinusAbsorption, ordDefault);
00152 
00153   // KaonZeroL
00154   pManager = G4KaonZeroLong::KaonZeroLong()->GetProcessManager();
00155   // add process
00156   pManager->AddDiscreteProcess(&theElasticProcess);
00157 
00158   theLEKaonZeroLModel = new G4LEKaonZeroLInelastic();
00159   theHEKaonZeroLModel = new G4HEKaonZeroInelastic();
00160   theKaonZeroLInelastic.RegisterMe(theLEKaonZeroLModel);
00161   theKaonZeroLInelastic.RegisterMe(theHEKaonZeroLModel);
00162   pManager->AddDiscreteProcess(&theKaonZeroLInelastic);
00163  
00164   // KaonZeroS
00165   pManager = G4KaonZeroShort::KaonZeroShort()->GetProcessManager();
00166   // add process
00167   pManager->AddDiscreteProcess(&theElasticProcess);
00168 
00169   theLEKaonZeroSModel = new G4LEKaonZeroSInelastic();
00170   theHEKaonZeroSModel = new G4HEKaonZeroInelastic();
00171   theKaonZeroSInelastic.RegisterMe(theLEKaonZeroSModel);
00172   theKaonZeroSInelastic.RegisterMe(theHEKaonZeroSModel);
00173   pManager->AddDiscreteProcess(&theKaonZeroSInelastic);
00174 
00175   // Proton
00176   pManager = G4Proton::Proton()->GetProcessManager();
00177   // add process
00178   pManager->AddDiscreteProcess(&theElasticProcess);
00179 
00180   theLEProtonModel = new G4LEProtonInelastic();
00181   theHEProtonModel = new G4HEProtonInelastic();
00182   theProtonInelastic.RegisterMe(theLEProtonModel);
00183   theProtonInelastic.RegisterMe(theHEProtonModel);
00184   pManager->AddDiscreteProcess(&theProtonInelastic);
00185 
00186   pManager->AddProcess(&theProtonIonisation, ordInActive,2, 2);
00187 
00188   pManager->AddProcess(&theProtonMult);
00189   pManager->SetProcessOrdering(&theProtonMult, idxAlongStep, 1);
00190   pManager->SetProcessOrdering(&theProtonMult, idxPostStep, 1);
00191 
00192   // anti-Proton
00193   pManager = G4AntiProton::AntiProton()->GetProcessManager();
00194   // add process
00195   pManager->AddDiscreteProcess(&theElasticProcess);
00196 
00197   theLEAntiProtonModel = new G4LEAntiProtonInelastic();
00198   theHEAntiProtonModel = new G4HEAntiProtonInelastic();
00199   theAntiProtonInelastic.RegisterMe(theLEAntiProtonModel);
00200   theAntiProtonInelastic.RegisterMe(theHEAntiProtonModel);
00201   pManager->AddDiscreteProcess(&theAntiProtonInelastic);
00202 
00203   pManager->AddProcess(&theAntiProtonIonisation, ordInActive,2, 2);
00204 
00205   pManager->AddProcess(&theAntiProtonMult);
00206   pManager->SetProcessOrdering(&theAntiProtonMult, idxAlongStep, 1);
00207   pManager->SetProcessOrdering(&theAntiProtonMult, idxPostStep, 1);
00208 
00209   pManager->AddRestProcess(&theAntiProtonAnnihilation);
00210 
00211   // Neutron
00212   pManager = G4Neutron::Neutron()->GetProcessManager();
00213   // add process
00214   pManager->AddDiscreteProcess(&theElasticProcess);
00215 
00216   theLENeutronModel = new G4LENeutronInelastic();
00217   theHENeutronModel = new G4HENeutronInelastic();
00218   theNeutronInelastic.RegisterMe(theLENeutronModel);
00219   theNeutronInelastic.RegisterMe(theHENeutronModel);
00220   pManager->AddDiscreteProcess(&theNeutronInelastic);
00221   
00222   //theNeutronFissionModel = new G4LFission();
00223   //theNeutronFission.RegisterMe(theNeutronFissionModel);
00224   //pManager->AddDiscreteProcess(&NeutronFission);
00225 
00226   //theNeutronCaptureModel = new G4LCapture();
00227   //theNeutronCapture.RegisterMe(theNeutronCaptureModel);
00228   //pManager->AddDiscreteProcess(&theNeutronCapture);
00229 
00230   // AntiNeutron
00231   pManager = G4AntiNeutron::AntiNeutron()->GetProcessManager();
00232   // add process
00233   pManager->AddDiscreteProcess(&theElasticProcess);
00234 
00235   theLEAntiNeutronModel = new G4LEAntiNeutronInelastic();
00236   theHEAntiNeutronModel = new G4HEAntiNeutronInelastic();
00237   theAntiNeutronInelastic.RegisterMe(theLEAntiNeutronModel);
00238   theAntiNeutronInelastic.RegisterMe(theHEAntiNeutronModel);
00239   pManager->AddDiscreteProcess(&theAntiNeutronInelastic);
00240     
00241   pManager->AddRestProcess(&theAntiNeutronAnnihilation);
00242 
00243   // Lambda
00244   pManager = G4Lambda::Lambda()->GetProcessManager();
00245   // add process
00246   pManager->AddDiscreteProcess(&theElasticProcess);
00247 
00248   theLELambdaModel = new G4LELambdaInelastic();
00249   theHELambdaModel = new G4HELambdaInelastic();
00250   theLambdaInelastic.RegisterMe(theLELambdaModel);
00251   theLambdaInelastic.RegisterMe(theHELambdaModel);
00252   pManager->AddDiscreteProcess(&theLambdaInelastic);
00253   
00254   // AntiLambda
00255   pManager = G4AntiLambda::AntiLambda()->GetProcessManager();
00256   // add process
00257   pManager->AddDiscreteProcess(&theElasticProcess);
00258 
00259   theLEAntiLambdaModel = new G4LEAntiLambdaInelastic();
00260   theHEAntiLambdaModel = new G4HEAntiLambdaInelastic();
00261   theAntiLambdaInelastic.RegisterMe(theLEAntiLambdaModel);
00262   theAntiLambdaInelastic.RegisterMe(theHEAntiLambdaModel);
00263   pManager->AddDiscreteProcess(&theAntiLambdaInelastic);
00264     
00265   // SigmaMinus
00266   pManager = G4SigmaMinus::SigmaMinus()->GetProcessManager();
00267   // add process
00268   pManager->AddDiscreteProcess(&theElasticProcess);
00269 
00270   theLESigmaMinusModel = new G4LESigmaMinusInelastic();
00271   theHESigmaMinusModel = new G4HESigmaMinusInelastic();
00272   theSigmaMinusInelastic.RegisterMe(theLESigmaMinusModel);
00273   theSigmaMinusInelastic.RegisterMe(theHESigmaMinusModel);
00274   pManager->AddDiscreteProcess(&theSigmaMinusInelastic);
00275 
00276   pManager->AddProcess(&theSigmaMinusIonisation, ordInActive,2, 2);
00277 
00278   pManager->AddProcess(&theSigmaMinusMult);
00279   pManager->SetProcessOrdering(&theSigmaMinusMult, idxAlongStep, 1);
00280   pManager->SetProcessOrdering(&theSigmaMinusMult, idxPostStep, 1);
00281 
00282   // anti-SigmaMinus
00283   pManager = G4AntiSigmaMinus::AntiSigmaMinus()->GetProcessManager();
00284   // add process
00285   pManager->AddDiscreteProcess(&theElasticProcess);
00286 
00287   theLEAntiSigmaMinusModel = new G4LEAntiSigmaMinusInelastic();
00288   theHEAntiSigmaMinusModel = new G4HEAntiSigmaMinusInelastic();
00289   theAntiSigmaMinusInelastic.RegisterMe(theLEAntiSigmaMinusModel);
00290   theAntiSigmaMinusInelastic.RegisterMe(theHEAntiSigmaMinusModel);
00291   pManager->AddDiscreteProcess(&theAntiSigmaMinusInelastic);
00292 
00293   pManager->AddProcess(&theAntiSigmaMinusIonisation, ordInActive,2, 2);
00294 
00295   pManager->AddProcess(&theAntiSigmaMinusMult);
00296   pManager->SetProcessOrdering(&theAntiSigmaMinusMult, idxAlongStep, 1);
00297   pManager->SetProcessOrdering(&theAntiSigmaMinusMult, idxPostStep, 1);
00298 
00299   // SigmaPlus
00300   pManager = G4SigmaPlus::SigmaPlus()->GetProcessManager();
00301   // add process
00302   pManager->AddDiscreteProcess(&theElasticProcess);
00303 
00304   theLESigmaPlusModel = new G4LESigmaPlusInelastic();
00305   theHESigmaPlusModel = new G4HESigmaPlusInelastic();
00306   theSigmaPlusInelastic.RegisterMe(theLESigmaPlusModel);
00307   theSigmaPlusInelastic.RegisterMe(theHESigmaPlusModel);
00308   pManager->AddDiscreteProcess(&theSigmaPlusInelastic);
00309 
00310   pManager->AddProcess(&theSigmaPlusIonisation, ordInActive,2, 2);
00311 
00312   pManager->AddProcess(&theSigmaPlusMult);
00313   pManager->SetProcessOrdering(&theSigmaPlusMult, idxAlongStep, 1);
00314   pManager->SetProcessOrdering(&theSigmaPlusMult, idxPostStep, 1);
00315 
00316   // anti-SigmaPlus
00317   pManager = G4AntiSigmaPlus::AntiSigmaPlus()->GetProcessManager();
00318   // add process
00319   pManager->AddDiscreteProcess(&theElasticProcess);
00320 
00321   theLEAntiSigmaPlusModel = new G4LEAntiSigmaPlusInelastic();
00322   theHEAntiSigmaPlusModel = new G4HEAntiSigmaPlusInelastic();
00323   theAntiSigmaPlusInelastic.RegisterMe(theLEAntiSigmaPlusModel);
00324   theAntiSigmaPlusInelastic.RegisterMe(theHEAntiSigmaPlusModel);
00325   pManager->AddDiscreteProcess(&theAntiSigmaPlusInelastic);
00326 
00327   pManager->AddProcess(&theAntiSigmaPlusIonisation, ordInActive,2, 2);
00328 
00329   pManager->AddProcess(&theAntiSigmaPlusMult);
00330   pManager->SetProcessOrdering(&theAntiSigmaPlusMult, idxAlongStep, 1);
00331   pManager->SetProcessOrdering(&theAntiSigmaPlusMult, idxPostStep, 1);
00332 
00333   // XiMinus
00334   pManager = G4XiMinus::XiMinus()->GetProcessManager();
00335   // add process
00336   pManager->AddDiscreteProcess(&theElasticProcess);
00337 
00338   theLEXiMinusModel = new G4LEXiMinusInelastic();
00339   theHEXiMinusModel = new G4HEXiMinusInelastic();
00340   theXiMinusInelastic.RegisterMe(theLEXiMinusModel);
00341   theXiMinusInelastic.RegisterMe(theHEXiMinusModel);
00342   pManager->AddDiscreteProcess(&theXiMinusInelastic);
00343 
00344   pManager->AddProcess(&theXiMinusIonisation, ordInActive,2, 2);
00345 
00346   pManager->AddProcess(&theXiMinusMult);
00347   pManager->SetProcessOrdering(&theXiMinusMult, idxAlongStep, 1);
00348   pManager->SetProcessOrdering(&theXiMinusMult, idxPostStep, 1);
00349 
00350   // anti-XiMinus
00351   pManager = G4AntiXiMinus::AntiXiMinus()->GetProcessManager();
00352   // add process
00353   pManager->AddDiscreteProcess(&theElasticProcess);
00354 
00355   theLEAntiXiMinusModel = new G4LEAntiXiMinusInelastic();
00356   theHEAntiXiMinusModel = new G4HEAntiXiMinusInelastic();
00357   theAntiXiMinusInelastic.RegisterMe(theLEAntiXiMinusModel);
00358   theAntiXiMinusInelastic.RegisterMe(theHEAntiXiMinusModel);
00359   pManager->AddDiscreteProcess(&theAntiXiMinusInelastic);
00360 
00361   pManager->AddProcess(&theAntiXiMinusIonisation, ordInActive,2, 2);
00362 
00363   pManager->AddProcess(&theAntiXiMinusMult);
00364   pManager->SetProcessOrdering(&theAntiXiMinusMult, idxAlongStep, 1);
00365   pManager->SetProcessOrdering(&theAntiXiMinusMult, idxPostStep, 1);
00366 
00367   // XiZero
00368   pManager = G4XiZero::XiZero()->GetProcessManager();
00369   // add process
00370   pManager->AddDiscreteProcess(&theElasticProcess);
00371 
00372   theLEXiZeroModel = new G4LEXiZeroInelastic();
00373   theHEXiZeroModel = new G4HEXiZeroInelastic();
00374   theXiZeroInelastic.RegisterMe(theLEXiZeroModel);
00375   theXiZeroInelastic.RegisterMe(theHEXiZeroModel);
00376   pManager->AddDiscreteProcess(&theXiZeroInelastic);
00377 
00378   // anti-XiZero
00379   pManager = G4AntiXiZero::AntiXiZero()->GetProcessManager();
00380   // add process
00381   pManager->AddDiscreteProcess(&theElasticProcess);
00382 
00383   theLEAntiXiZeroModel = new G4LEAntiXiZeroInelastic();
00384   theHEAntiXiZeroModel = new G4HEAntiXiZeroInelastic();
00385   theAntiXiZeroInelastic.RegisterMe(theLEAntiXiZeroModel);
00386   theAntiXiZeroInelastic.RegisterMe(theHEAntiXiZeroModel);
00387   pManager->AddDiscreteProcess(&theAntiXiZeroInelastic);
00388 
00389   // OmegaMinus
00390   pManager = G4OmegaMinus::OmegaMinus()->GetProcessManager();
00391   // add process
00392   pManager->AddDiscreteProcess(&theElasticProcess);
00393 
00394   theLEOmegaMinusModel = new G4LEOmegaMinusInelastic();
00395   theHEOmegaMinusModel = new G4HEOmegaMinusInelastic();
00396   theOmegaMinusInelastic.RegisterMe(theLEOmegaMinusModel);
00397   theOmegaMinusInelastic.RegisterMe(theHEOmegaMinusModel);
00398   pManager->AddDiscreteProcess(&theOmegaMinusInelastic);
00399 
00400   pManager->AddProcess(&theOmegaMinusIonisation, ordInActive,2, 2);
00401 
00402   pManager->AddProcess(&theOmegaMinusMult);
00403   pManager->SetProcessOrdering(&theOmegaMinusMult, idxAlongStep, 1);
00404   pManager->SetProcessOrdering(&theOmegaMinusMult, idxPostStep, 1);
00405 
00406   // anti-OmegaMinus
00407   pManager = G4AntiOmegaMinus::AntiOmegaMinus()->GetProcessManager();
00408   // add process
00409   pManager->AddDiscreteProcess(&theElasticProcess);
00410 
00411   theLEAntiOmegaMinusModel = new G4LEAntiOmegaMinusInelastic();
00412   theHEAntiOmegaMinusModel = new G4HEAntiOmegaMinusInelastic();
00413   theAntiOmegaMinusInelastic.RegisterMe(theLEAntiOmegaMinusModel);
00414   theAntiOmegaMinusInelastic.RegisterMe(theHEAntiOmegaMinusModel);
00415   pManager->AddDiscreteProcess(&theAntiOmegaMinusInelastic);
00416 
00417   pManager->AddProcess(&theAntiOmegaMinusIonisation, ordInActive,2, 2);
00418 
00419   pManager->AddProcess(&theAntiOmegaMinusMult);
00420   pManager->SetProcessOrdering(&theAntiOmegaMinusMult, idxAlongStep, 1);
00421   pManager->SetProcessOrdering(&theAntiOmegaMinusMult, idxPostStep, 1);
00422 
00423 }
00424 
00425 
00426 
00427 
00428 

Generated on Tue Nov 29 23:14:33 2016 for BOSS_7.0.2 by  doxygen 1.4.7