G4HadronHElasticPhysics Class Reference

#include <G4HadronHElasticPhysics.hh>

Inheritance diagram for G4HadronHElasticPhysics:

G4VPhysicsConstructor

Public Member Functions

 G4HadronHElasticPhysics (G4int ver=0)
 G4HadronHElasticPhysics (G4int ver, G4bool hp, const G4String &type="")
virtual ~G4HadronHElasticPhysics ()
virtual void ConstructParticle ()
virtual void ConstructProcess ()

Detailed Description

Definition at line 45 of file G4HadronHElasticPhysics.hh.


Constructor & Destructor Documentation

G4HadronHElasticPhysics::G4HadronHElasticPhysics ( G4int  ver = 0  ) 

Definition at line 78 of file G4HadronHElasticPhysics.cc.

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

00079   : G4VPhysicsConstructor("hElasticWEL_CHIPS"), verbose(ver), 
00080     wasActivated(false)
00081 {
00082   //  if(verbose > 1) { 
00083   G4cout << "### G4HadronHElasticPhysics: " << GetPhysicsName() 
00084          << " is obsolete and soon will be removed" << G4endl; 
00085 }

G4HadronHElasticPhysics::G4HadronHElasticPhysics ( G4int  ver,
G4bool  hp,
const G4String type = "" 
)

Definition at line 87 of file G4HadronHElasticPhysics.cc.

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

00089   : G4VPhysicsConstructor("hElasticWEL_CHIPS"), verbose(ver), 
00090     wasActivated(false)
00091 {
00092   if(verbose > 1) { 
00093     G4cout << "### G4HadronHElasticPhysics: " << GetPhysicsName() 
00094            << G4endl; 
00095   }
00096 }

G4HadronHElasticPhysics::~G4HadronHElasticPhysics (  )  [virtual]

Definition at line 98 of file G4HadronHElasticPhysics.cc.

00099 {}


Member Function Documentation

void G4HadronHElasticPhysics::ConstructParticle (  )  [virtual]

Implements G4VPhysicsConstructor.

Definition at line 101 of file G4HadronHElasticPhysics.cc.

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

00102 {
00103   // G4cout << "G4HadronElasticPhysics::ConstructParticle" << G4endl;
00104   G4MesonConstructor pMesonConstructor;
00105   pMesonConstructor.ConstructParticle();
00106 
00107   G4BaryonConstructor pBaryonConstructor;
00108   pBaryonConstructor.ConstructParticle();
00109 
00110   //  Construct light ions
00111   G4IonConstructor pConstructor;
00112   pConstructor.ConstructParticle();  
00113 }

void G4HadronHElasticPhysics::ConstructProcess (  )  [virtual]

Implements G4VPhysicsConstructor.

Definition at line 115 of file G4HadronHElasticPhysics.cc.

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

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


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