/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Simulation/BOOST/PhySim/PhySim-00-00-10/src/BesHadronPhysics.cc

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

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