#include <G4ChipsComponentXS.hh>
Inheritance diagram for G4ChipsComponentXS:
Public Member Functions | |
G4ChipsComponentXS () | |
virtual | ~G4ChipsComponentXS () |
virtual G4double | GetTotalElementCrossSection (const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4double N) |
virtual G4double | GetTotalIsotopeCrossSection (const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4int N) |
virtual G4double | GetInelasticElementCrossSection (const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4double N) |
virtual G4double | GetInelasticIsotopeCrossSection (const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4int N) |
virtual G4double | GetElasticElementCrossSection (const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4double N) |
virtual G4double | GetElasticIsotopeCrossSection (const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4int N) |
virtual void | BuildPhysicsTable (const G4ParticleDefinition &) |
virtual void | DumpPhysicsTable (const G4ParticleDefinition &) |
Definition at line 76 of file G4ChipsComponentXS.hh.
G4ChipsComponentXS::G4ChipsComponentXS | ( | ) |
Definition at line 45 of file G4ChipsComponentXS.cc.
References G4ChipsHyperonInelasticXS::Default_Name(), G4ChipsHyperonElasticXS::Default_Name(), G4ChipsKaonZeroInelasticXS::Default_Name(), G4ChipsKaonZeroElasticXS::Default_Name(), G4ChipsKaonMinusInelasticXS::Default_Name(), G4ChipsKaonMinusElasticXS::Default_Name(), G4ChipsKaonPlusInelasticXS::Default_Name(), G4ChipsKaonPlusElasticXS::Default_Name(), G4ChipsPionMinusInelasticXS::Default_Name(), G4ChipsPionMinusElasticXS::Default_Name(), G4ChipsPionPlusInelasticXS::Default_Name(), G4ChipsPionPlusElasticXS::Default_Name(), G4ChipsAntiBaryonInelasticXS::Default_Name(), G4ChipsAntiBaryonElasticXS::Default_Name(), G4ChipsNeutronInelasticXS::Default_Name(), G4ChipsNeutronElasticXS::Default_Name(), G4ChipsProtonInelasticXS::Default_Name(), G4ChipsProtonElasticXS::Default_Name(), G4CrossSectionDataSetRegistry::GetCrossSectionDataSet(), and G4CrossSectionDataSetRegistry::Instance().
00045 :G4VComponentCrossSection("G4ChipsComponentXS"), fUpperLimit( 10000 * GeV ), 00046 fLowerLimit( 10 * MeV ) 00047 { 00048 PxsManagerEl = (G4ChipsProtonElasticXS*)G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4ChipsProtonElasticXS::Default_Name()); 00049 PxsManagerInEl = (G4ChipsProtonInelasticXS*)G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4ChipsProtonInelasticXS::Default_Name()); 00050 00051 NxsManagerEl = (G4ChipsNeutronElasticXS*)G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4ChipsNeutronElasticXS::Default_Name()); 00052 NxsManagerInEl = (G4ChipsNeutronInelasticXS*)G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4ChipsNeutronInelasticXS::Default_Name()); 00053 00054 PBARxsManagerEl = (G4ChipsAntiBaryonElasticXS*)G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4ChipsAntiBaryonElasticXS::Default_Name()); 00055 PBARxsManagerInEl = (G4ChipsAntiBaryonInelasticXS*)G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4ChipsAntiBaryonInelasticXS::Default_Name()); 00056 00057 PIPxsManagerEl = (G4ChipsPionPlusElasticXS*)G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4ChipsPionPlusElasticXS::Default_Name()); 00058 PIPxsManagerInEl = (G4ChipsPionPlusInelasticXS*)G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4ChipsPionPlusInelasticXS::Default_Name()); 00059 00060 PIMxsManagerEl = (G4ChipsPionMinusElasticXS*)G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4ChipsPionMinusElasticXS::Default_Name()); 00061 PIMxsManagerInEl = (G4ChipsPionMinusInelasticXS*)G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4ChipsPionMinusInelasticXS::Default_Name()); 00062 00063 KPxsManagerEl = (G4ChipsKaonPlusElasticXS*)G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4ChipsKaonPlusElasticXS::Default_Name()); 00064 KPxsManagerInEl = (G4ChipsKaonPlusInelasticXS*)G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4ChipsKaonPlusInelasticXS::Default_Name()); 00065 00066 KMxsManagerEl = (G4ChipsKaonMinusElasticXS*)G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4ChipsKaonMinusElasticXS::Default_Name()); 00067 KMxsManagerInEl = (G4ChipsKaonMinusInelasticXS*)G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4ChipsKaonMinusInelasticXS::Default_Name()); 00068 00069 KZxsManagerEl = (G4ChipsKaonZeroElasticXS*)G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4ChipsKaonZeroElasticXS::Default_Name()); 00070 KZxsManagerInEl = (G4ChipsKaonZeroInelasticXS*)G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4ChipsKaonZeroInelasticXS::Default_Name()); 00071 00072 HxsManagerEl = (G4ChipsHyperonElasticXS*)G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4ChipsHyperonElasticXS::Default_Name()); 00073 HxsManagerInEl = (G4ChipsHyperonInelasticXS*)G4CrossSectionDataSetRegistry::Instance()->GetCrossSectionDataSet(G4ChipsHyperonInelasticXS::Default_Name()); 00074 }
G4ChipsComponentXS::~G4ChipsComponentXS | ( | ) | [virtual] |
virtual void G4ChipsComponentXS::BuildPhysicsTable | ( | const G4ParticleDefinition & | ) | [inline, virtual] |
virtual void G4ChipsComponentXS::DumpPhysicsTable | ( | const G4ParticleDefinition & | ) | [inline, virtual] |
G4double G4ChipsComponentXS::GetElasticElementCrossSection | ( | const G4ParticleDefinition * | aParticle, | |
G4double | kinEnergy, | |||
G4int | Z, | |||
G4double | N | |||
) | [virtual] |
Implements G4VComponentCrossSection.
Definition at line 191 of file G4ChipsComponentXS.cc.
References G4ParticleDefinition::GetPDGEncoding(), and G4ParticleDefinition::GetPDGMass().
00192 { 00193 G4double momentum = std::sqrt(kinEnergy*(kinEnergy+2.*aParticle->GetPDGMass())); 00194 G4int PDGcode=aParticle->GetPDGEncoding(); 00195 00196 G4double Xelastic(0.); 00197 00198 if (PDGcode == 2212) // Projectile is Proton 00199 { 00200 Xelastic=PxsManagerEl->GetChipsCrossSection(momentum,Z,(G4int)N,PDGcode); 00201 } else if(PDGcode == 2112) // Projectile is Neutron 00202 { 00203 Xelastic=NxsManagerEl->GetChipsCrossSection(momentum,Z,(G4int)N,PDGcode); 00204 } else if(PDGcode == -2212) // Projectile is Anti-Proton 00205 { 00206 Xelastic=PBARxsManagerEl->GetChipsCrossSection(momentum,Z,(G4int)N,PDGcode); 00207 } else if(PDGcode == -2112) // Projectile is Anti-Neutron 00208 { 00209 Xelastic=PBARxsManagerEl->GetChipsCrossSection(momentum,Z,(G4int)N,PDGcode); 00210 } else if(PDGcode == 211) // Projectile is Pi+ 00211 { 00212 Xelastic=PIPxsManagerEl->GetChipsCrossSection(momentum,Z,(G4int)N,PDGcode); 00213 } else if(PDGcode == -211) // Projectile is Pi- 00214 { 00215 Xelastic=PIMxsManagerEl->GetChipsCrossSection(momentum,Z,(G4int)N,PDGcode); 00216 } else if(PDGcode == 321) // Projectile is K+ 00217 { 00218 Xelastic=KPxsManagerEl->GetChipsCrossSection(momentum,Z,(G4int)N,PDGcode); 00219 } else if(PDGcode == -321) // Projectile is K- 00220 { 00221 Xelastic=KMxsManagerEl->GetChipsCrossSection(momentum,Z,(G4int)N,PDGcode); 00222 } 00223 return Xelastic; 00224 }
G4double G4ChipsComponentXS::GetElasticIsotopeCrossSection | ( | const G4ParticleDefinition * | aParticle, | |
G4double | kinEnergy, | |||
G4int | Z, | |||
G4int | N | |||
) | [virtual] |
Implements G4VComponentCrossSection.
Definition at line 228 of file G4ChipsComponentXS.cc.
00229 { return GetElasticElementCrossSection(aParticle, kinEnergy, Z, (G4double) A); }
G4double G4ChipsComponentXS::GetInelasticElementCrossSection | ( | const G4ParticleDefinition * | aParticle, | |
G4double | kinEnergy, | |||
G4int | Z, | |||
G4double | N | |||
) | [virtual] |
Implements G4VComponentCrossSection.
Definition at line 148 of file G4ChipsComponentXS.cc.
References G4ParticleDefinition::GetPDGEncoding(), and G4ParticleDefinition::GetPDGMass().
00149 { 00150 G4double momentum = std::sqrt(kinEnergy*(kinEnergy+2.*aParticle->GetPDGMass())); 00151 G4int PDGcode=aParticle->GetPDGEncoding(); 00152 00153 G4double Xinelastic(0.); 00154 00155 if (PDGcode == 2212) // Projectile is Proton 00156 { 00157 Xinelastic = PxsManagerInEl->GetChipsCrossSection(momentum,Z,(G4int)N,PDGcode); 00158 } else if(PDGcode == 2112) // Projectile is Neutron 00159 { 00160 Xinelastic = NxsManagerInEl->GetChipsCrossSection(momentum,Z,(G4int)N,PDGcode); 00161 } else if(PDGcode == -2212) // Projectile is Anti-Proton 00162 { 00163 Xinelastic = PBARxsManagerInEl->GetChipsCrossSection(momentum,Z,(G4int)N,PDGcode); 00164 } else if(PDGcode == -2112) // Projectile is Anti-Neutron 00165 { 00166 Xinelastic = PBARxsManagerInEl->GetChipsCrossSection(momentum,Z,(G4int)N,PDGcode); 00167 } else if(PDGcode == 211) // Projectile is Pi+ 00168 { 00169 Xinelastic = PIPxsManagerInEl->GetChipsCrossSection(momentum,Z,(G4int)N,PDGcode); 00170 } else if(PDGcode == -211) // Projectile is Pi- 00171 { 00172 Xinelastic = PIMxsManagerInEl->GetChipsCrossSection(momentum,Z,(G4int)N,PDGcode); 00173 } else if(PDGcode == 321) // Projectile is K+ 00174 { 00175 Xinelastic = KPxsManagerInEl->GetChipsCrossSection(momentum,Z,(G4int)N,PDGcode); 00176 } else if(PDGcode == -321) // Projectile is K- 00177 { 00178 Xinelastic = KMxsManagerInEl->GetChipsCrossSection(momentum,Z,(G4int)N,PDGcode);; 00179 } 00180 00181 return Xinelastic; 00182 }
G4double G4ChipsComponentXS::GetInelasticIsotopeCrossSection | ( | const G4ParticleDefinition * | aParticle, | |
G4double | kinEnergy, | |||
G4int | Z, | |||
G4int | N | |||
) | [virtual] |
Implements G4VComponentCrossSection.
Definition at line 186 of file G4ChipsComponentXS.cc.
00187 {return GetInelasticElementCrossSection(aParticle, kinEnergy, Z, (G4double) A); }
G4double G4ChipsComponentXS::GetTotalElementCrossSection | ( | const G4ParticleDefinition * | aParticle, | |
G4double | kinEnergy, | |||
G4int | Z, | |||
G4double | N | |||
) | [virtual] |
Implements G4VComponentCrossSection.
Definition at line 83 of file G4ChipsComponentXS.cc.
References G4ParticleDefinition::GetPDGEncoding(), and G4ParticleDefinition::GetPDGMass().
00084 { 00085 G4double momentum = std::sqrt(kinEnergy*(kinEnergy+2.*aParticle->GetPDGMass())); 00086 G4int PDGcode=aParticle->GetPDGEncoding(); 00087 00088 G4double Xelastic(0.), Xinelastic(0.); 00089 00090 if (PDGcode == 2212) // Projectile is Proton 00091 { 00092 Xelastic = PxsManagerEl->GetChipsCrossSection(momentum,Z,(G4int)N,PDGcode); 00093 Xinelastic = PxsManagerInEl->GetChipsCrossSection(momentum,Z,(G4int)N,PDGcode); 00094 } else if(PDGcode == 2112) // Projectile is Neutron 00095 { 00096 Xelastic = NxsManagerEl->GetChipsCrossSection(momentum,Z,(G4int)N,PDGcode); 00097 Xinelastic = NxsManagerInEl->GetChipsCrossSection(momentum,Z,(G4int)N,PDGcode); 00098 } else if(PDGcode == -2212) // Projectile is Anti-Proton 00099 { 00100 Xelastic = PBARxsManagerEl->GetChipsCrossSection(momentum,Z,(G4int)N,PDGcode); 00101 Xinelastic = PBARxsManagerInEl->GetChipsCrossSection(momentum,Z,(G4int)N,PDGcode); 00102 } else if(PDGcode == -2112) // Projectile is Anti-Neutron 00103 { 00104 Xelastic = PBARxsManagerEl->GetChipsCrossSection(momentum,Z,(G4int)N,PDGcode); 00105 Xinelastic = PBARxsManagerInEl->GetChipsCrossSection(momentum,Z,(G4int)N,PDGcode); 00106 }else if(PDGcode == -3122 || PDGcode == -3222 || PDGcode == -3212 || PDGcode == -3112 || PDGcode == -3322 00107 || PDGcode == -3312 || PDGcode == -3334) // Projectile is other Anti-baryon 00108 { 00109 Xelastic = PBARxsManagerEl->GetChipsCrossSection(momentum,Z,(G4int)N,PDGcode); 00110 Xinelastic = PBARxsManagerInEl->GetChipsCrossSection(momentum,Z,(G4int)N,PDGcode); 00111 } else if(PDGcode == 211) // Projectile is Pi+ 00112 { 00113 Xelastic = PIPxsManagerEl->GetChipsCrossSection(momentum,Z,(G4int)N,PDGcode); 00114 Xinelastic = PIPxsManagerInEl->GetChipsCrossSection(momentum,Z,(G4int)N,PDGcode); 00115 } else if(PDGcode == -211) // Projectile is Pi- 00116 { 00117 Xelastic = PIMxsManagerEl->GetChipsCrossSection(momentum,Z,(G4int)N,PDGcode); 00118 Xinelastic = PIMxsManagerInEl->GetChipsCrossSection(momentum,Z,(G4int)N,PDGcode); 00119 } else if(PDGcode == 321) // Projectile is K+ 00120 { 00121 Xelastic = KPxsManagerEl->GetChipsCrossSection(momentum,Z,(G4int)N,PDGcode); 00122 Xinelastic = KPxsManagerInEl->GetChipsCrossSection(momentum,Z,(G4int)N,PDGcode); 00123 } else if(PDGcode == -321) // Projectile is K- 00124 { 00125 Xelastic = KMxsManagerEl->GetChipsCrossSection(momentum,Z,(G4int)N,PDGcode); 00126 Xinelastic = KMxsManagerInEl->GetChipsCrossSection(momentum,Z,(G4int)N,PDGcode); 00127 } else if(PDGcode == 130 || PDGcode == 310 || PDGcode == 311 || PDGcode == -311) // Projectile is K0 00128 { 00129 Xelastic = KZxsManagerEl->GetChipsCrossSection(momentum,Z,(G4int)N,PDGcode); 00130 Xinelastic = KZxsManagerInEl->GetChipsCrossSection(momentum,Z,(G4int)N,PDGcode); 00131 }else if(PDGcode == 3122 || PDGcode == 3222 || PDGcode == 3112 || PDGcode == 3212 00132 || PDGcode == 3312 || PDGcode == 3322 || PDGcode == 3334) // Projectile is hyperon 00133 { 00134 Xelastic = HxsManagerEl->GetChipsCrossSection(momentum,Z,(G4int)N,PDGcode); 00135 Xinelastic = HxsManagerInEl->GetChipsCrossSection(momentum,Z,(G4int)N,PDGcode); 00136 } 00137 00138 return Xelastic+Xinelastic; 00139 }
G4double G4ChipsComponentXS::GetTotalIsotopeCrossSection | ( | const G4ParticleDefinition * | aParticle, | |
G4double | kinEnergy, | |||
G4int | Z, | |||
G4int | N | |||
) | [virtual] |
Implements G4VComponentCrossSection.
Definition at line 143 of file G4ChipsComponentXS.cc.
00144 { return GetTotalElementCrossSection(aParticle, kinEnergy, Z, (G4double) A); }