G4HadronDElasticPhysics Class Reference

#include <G4HadronDElasticPhysics.hh>

Inheritance diagram for G4HadronDElasticPhysics:

G4VPhysicsConstructor

Public Member Functions

 G4HadronDElasticPhysics (G4int ver=1)
virtual ~G4HadronDElasticPhysics ()
virtual void ConstructParticle ()
virtual void ConstructProcess ()

Detailed Description

Definition at line 45 of file G4HadronDElasticPhysics.hh.


Constructor & Destructor Documentation

G4HadronDElasticPhysics::G4HadronDElasticPhysics ( G4int  ver = 1  ) 

Definition at line 89 of file G4HadronDElasticPhysics.cc.

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

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

G4HadronDElasticPhysics::~G4HadronDElasticPhysics (  )  [virtual]

Definition at line 99 of file G4HadronDElasticPhysics.cc.

00100 {}


Member Function Documentation

void G4HadronDElasticPhysics::ConstructParticle (  )  [virtual]

Implements G4VPhysicsConstructor.

Definition at line 102 of file G4HadronDElasticPhysics.cc.

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

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

void G4HadronDElasticPhysics::ConstructProcess (  )  [virtual]

Implements G4VPhysicsConstructor.

Definition at line 116 of file G4HadronDElasticPhysics.cc.

References G4HadronicProcess::AddDataSet(), G4ProcessManager::AddDiscreteProcess(), G4ChipsKaonZeroElasticXS::Default_Name(), G4ChipsKaonPlusElasticXS::Default_Name(), G4ChipsKaonMinusElasticXS::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().

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


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