G4HadronElasticPhysics Class Reference

#include <G4HadronElasticPhysics.hh>

Inheritance diagram for G4HadronElasticPhysics:

G4VPhysicsConstructor

Public Member Functions

 G4HadronElasticPhysics (G4int ver=0)
 G4HadronElasticPhysics (const G4String &name, G4int ver=0, G4bool hp=false, const G4String &type="")
virtual ~G4HadronElasticPhysics ()
virtual void ConstructParticle ()
virtual void ConstructProcess ()
G4HadronElasticGetNeutronModel ()
G4HadronicProcessGetNeutronProcess ()

Detailed Description

Definition at line 52 of file G4HadronElasticPhysics.hh.


Constructor & Destructor Documentation

G4HadronElasticPhysics::G4HadronElasticPhysics ( G4int  ver = 0  ) 

Definition at line 84 of file G4HadronElasticPhysics.cc.

References G4cout, G4endl, and G4VPhysicsConstructor::GetPhysicsName().

00085   : G4VPhysicsConstructor("hElasticWEL_CHIPS"), verbose(ver), 
00086     wasActivated(false)
00087 {
00088   if(verbose > 1) { 
00089     G4cout << "### G4HadronElasticPhysics: " << GetPhysicsName() 
00090            << G4endl; 
00091   }
00092   neutronProcess = 0;
00093   neutronModel = 0;
00094 }

G4HadronElasticPhysics::G4HadronElasticPhysics ( const G4String name,
G4int  ver = 0,
G4bool  hp = false,
const G4String type = "" 
)

Definition at line 96 of file G4HadronElasticPhysics.cc.

References G4cout, G4endl, and G4VPhysicsConstructor::GetPhysicsName().

00098   : G4VPhysicsConstructor("hElasticWEL_CHIPS"), verbose(ver), 
00099     wasActivated(false)
00100 {
00101   if(verbose > 1) { 
00102     G4cout << "### G4HadronElasticPhysics: " << GetPhysicsName() 
00103            << G4endl; 
00104   }
00105   neutronProcess = 0;
00106   neutronModel = 0;
00107 }

G4HadronElasticPhysics::~G4HadronElasticPhysics (  )  [virtual]

Definition at line 109 of file G4HadronElasticPhysics.cc.

00110 {}


Member Function Documentation

void G4HadronElasticPhysics::ConstructParticle (  )  [virtual]

Implements G4VPhysicsConstructor.

Definition at line 112 of file G4HadronElasticPhysics.cc.

References G4IonConstructor::ConstructParticle(), G4BaryonConstructor::ConstructParticle(), and G4MesonConstructor::ConstructParticle().

Referenced by G4HadronElasticPhysicsXS::ConstructParticle(), G4HadronElasticPhysicsLEND::ConstructParticle(), and G4HadronElasticPhysicsHP::ConstructParticle().

00113 {
00114   // G4cout << "G4HadronElasticPhysics::ConstructParticle" << G4endl;
00115   G4MesonConstructor pMesonConstructor;
00116   pMesonConstructor.ConstructParticle();
00117 
00118   G4BaryonConstructor pBaryonConstructor;
00119   pBaryonConstructor.ConstructParticle();
00120 
00121   G4IonConstructor pConstructor;
00122   pConstructor.ConstructParticle();  
00123 }

void G4HadronElasticPhysics::ConstructProcess (  )  [virtual]

Implements G4VPhysicsConstructor.

Definition at line 125 of file G4HadronElasticPhysics.cc.

References G4HadronicProcess::AddDataSet(), G4ProcessManager::AddDiscreteProcess(), G4ChipsNeutronElasticXS::Default_Name(), G4ChipsProtonElasticXS::Default_Name(), G4cout, G4endl, G4AntiNuclElastic::GetComponentCrossSection(), G4ParticleDefinition::GetParticleName(), G4ParticleDefinition::GetProcessManager(), G4VProcess::GetProcessName(), G4CrossSectionDataSetRegistry::Instance(), G4HadronicProcess::RegisterMe(), G4ParticleTableIterator< K, V >::reset(), G4HadronicInteraction::SetMaxEnergy(), G4HadronicInteraction::SetMinEnergy(), G4VPhysicsConstructor::theParticleIterator, and G4ParticleTableIterator< K, V >::value().

Referenced by G4HadronElasticPhysicsXS::ConstructProcess(), G4HadronElasticPhysicsLEND::ConstructProcess(), and G4HadronElasticPhysicsHP::ConstructProcess().

00126 {
00127   if(wasActivated) { return; }
00128   wasActivated = true;
00129 
00130   G4double elimitPi = 1.0*GeV;
00131   G4double elimitAntiNuc = 100*MeV;
00132   if(verbose > 1) {
00133     G4cout << "### HadronElasticPhysics Construct Processes with the limit for pi " 
00134            << elimitPi/GeV << " GeV" 
00135            << "                                                  for anti-neuclei " 
00136            << elimitAntiNuc/GeV << " GeV"          << G4endl;
00137   }
00138 
00139   G4AntiNuclElastic* anuc = new G4AntiNuclElastic();
00140   anuc->SetMinEnergy(elimitAntiNuc);
00141   G4CrossSectionElastic* anucxs = 
00142     new G4CrossSectionElastic(anuc->GetComponentCrossSection());
00143 
00144   G4HadronElastic* lhep0 = new G4HadronElastic();
00145   G4HadronElastic* lhep1 = new G4HadronElastic();
00146   G4HadronElastic* lhep2 = new G4HadronElastic();
00147   lhep1->SetMaxEnergy(elimitPi);
00148   lhep2->SetMaxEnergy(elimitAntiNuc);
00149 
00150   G4CHIPSElastic* chipsp = new G4CHIPSElastic();
00151   neutronModel = new G4CHIPSElastic();
00152 
00153   G4ElasticHadrNucleusHE* he = new G4ElasticHadrNucleusHE(); 
00154   he->SetMinEnergy(elimitPi);
00155 
00156   theParticleIterator->reset();
00157   while( (*theParticleIterator)() )
00158   {
00159     G4ParticleDefinition* particle = theParticleIterator->value();
00160     G4ProcessManager* pmanager = particle->GetProcessManager();
00161     G4String pname = particle->GetParticleName();
00162     if(pname == "anti_lambda"  ||
00163        pname == "anti_neutron" ||
00164        pname == "anti_omega-"  || 
00165        pname == "anti_sigma-"  || 
00166        pname == "anti_sigma+"  || 
00167        pname == "anti_xi-"  || 
00168        pname == "anti_xi0"  || 
00169        pname == "lambda"    || 
00170        pname == "omega-"    || 
00171        pname == "sigma-"    || 
00172        pname == "sigma+"    || 
00173        pname == "xi-"       || 
00174        pname == "alpha"     ||
00175        pname == "deuteron"  ||
00176        pname == "triton"   
00177        ) {
00178       
00179       G4HadronElasticProcess* hel = new G4HadronElasticProcess();
00180       hel->RegisterMe(lhep0);
00181       pmanager->AddDiscreteProcess(hel);
00182       if(verbose > 1) {
00183         G4cout << "### HadronElasticPhysics: " << hel->GetProcessName()
00184                << " added for " << particle->GetParticleName() << G4endl;
00185       }
00186 
00187     } else if(pname == "proton") {   
00188 
00189       G4HadronElasticProcess* hel = new G4HadronElasticProcess();
00190       //hel->AddDataSet(new G4BGGNucleonElasticXS(particle));
00191 
00192       //      hel->AddDataSet(new G4ChipsProtonElasticXS());
00193       hel->AddDataSet(G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4ChipsProtonElasticXS::Default_Name()));
00194      
00195       hel->RegisterMe(chipsp);
00196       pmanager->AddDiscreteProcess(hel);
00197       if(verbose > 1) {
00198         G4cout << "### HadronElasticPhysics: " << hel->GetProcessName()
00199                << " added for " << particle->GetParticleName() << G4endl;
00200       }
00201 
00202     } else if(pname == "neutron") {   
00203 
00204       neutronProcess = new G4HadronElasticProcess();
00205       //neutronProcess->AddDataSet(new G4BGGNucleonElasticXS(particle));
00206       neutronProcess->AddDataSet(G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4ChipsNeutronElasticXS::Default_Name()));
00207       neutronProcess->RegisterMe(neutronModel);
00208       pmanager->AddDiscreteProcess(neutronProcess);
00209       if(verbose > 1) {
00210         G4cout << "### HadronElasticPhysics: " 
00211                << neutronProcess->GetProcessName()
00212                << " added for " << particle->GetParticleName() << G4endl;
00213       }
00214 
00215     } else if (pname == "pi+" || pname == "pi-") { 
00216 
00217       G4HadronElasticProcess* hel = new G4HadronElasticProcess();
00218       hel->AddDataSet(new G4BGGPionElasticXS(particle));
00219       hel->RegisterMe(lhep1);
00220       hel->RegisterMe(he);
00221       pmanager->AddDiscreteProcess(hel);
00222       if(verbose > 1) {
00223         G4cout << "### HadronElasticPhysics: " << hel->GetProcessName()
00224                << " added for " << particle->GetParticleName() << G4endl;
00225       }
00226 
00227     } else if(pname == "kaon-"     || 
00228               pname == "kaon+"     || 
00229               pname == "kaon0S"    || 
00230               pname == "kaon0L" 
00231               ) {
00232       
00233       G4HadronElasticProcess* hel = new G4HadronElasticProcess();
00234       hel->RegisterMe(lhep0);
00235       pmanager->AddDiscreteProcess(hel);
00236       if(verbose > 1) {
00237         G4cout << "### HadronElasticPhysics: " << hel->GetProcessName()
00238                << " added for " << particle->GetParticleName() << G4endl;
00239       }
00240 
00241     } else if(
00242        pname == "anti_proton"    || 
00243        pname == "anti_alpha"     ||
00244        pname == "anti_deuteron"  ||
00245        pname == "anti_triton"    ||
00246        pname == "anti_He3"       ) {
00247 
00248       G4HadronElasticProcess* hel = new G4HadronElasticProcess();
00249       hel->AddDataSet(anucxs);
00250       hel->RegisterMe(lhep2);
00251       hel->RegisterMe(anuc);
00252       pmanager->AddDiscreteProcess(hel);
00253     }
00254   }
00255 }

G4HadronElastic * G4HadronElasticPhysics::GetNeutronModel (  )  [inline]

Definition at line 92 of file G4HadronElasticPhysics.hh.

Referenced by G4HadronElasticPhysicsLEND::ConstructProcess(), and G4HadronElasticPhysicsHP::ConstructProcess().

00093 {
00094   return neutronModel;
00095 }

G4HadronicProcess * G4HadronElasticPhysics::GetNeutronProcess (  )  [inline]

Definition at line 97 of file G4HadronElasticPhysics.hh.

Referenced by G4HadronElasticPhysicsXS::ConstructProcess(), G4HadronElasticPhysicsLEND::ConstructProcess(), and G4HadronElasticPhysicsHP::ConstructProcess().

00098 {
00099   return neutronProcess;
00100 }


The documentation for this class was generated from the following files:
Generated on Mon May 27 17:52:07 2013 for Geant4 by  doxygen 1.4.7