44 const G4String G4ComponentSAIDTotalXS::fnames[13] = {
45 "",
"pp",
"np",
"pip",
"pim",
47 "gp_pi0p",
"gp_pi+n",
"gn_pi-p",
"gn_pi0n",
"gp_etap",
"gp_etapp"
67 delete inelastdata[i];
78 PrintWarning(part,0,Z,
G4lrint(N),
79 "G4ComponentSAIDTotalXS::GetTotalElementCrossSection",
80 "Method is not implemented");
98 PrintWarning(part,0,Z,
G4lrint(N),
99 "G4ComponentSAIDTotalXS::GetTotalElementCrossSection",
100 "Method is not implemented");
113 if(!inelastdata[idx]) { Initialise(tp); }
114 if(inelastdata[idx]) {
115 cross = (inelastdata[idx])->Value(kinEnergy);
126 PrintWarning(part,0,Z,
G4lrint(N),
127 "G4ComponentSAIDTotalXS::GetTotalElementCrossSection",
128 "Method is not implemented");
141 if(!elastdata[idx]) { Initialise(tp); }
143 cross = (elastdata[idx])->Value(kinEnergy);
159 if(!inelastdata[idx]) { Initialise(tp); }
160 if(inelastdata[idx]) {
161 cross = (inelastdata[idx])->Value(kinEnergy);
182 if(0 == Z && sec && 22 == code) {
195 }
else if(22 == code) {
202 if(2212 == code) { type =
saidPP; }
203 else if(2112 == code) { type =
saidNP; }
204 else if(211 == code) { type =
saidPIPP; }
205 else if(-211 == code) { type =
saidPINP; }
218 char* path = getenv(
"G4SAIDXSDATA");
220 G4Exception(
"G4ComponentSAIDTotalXS::Initialise(..)",
"had013",
222 "Environment variable G4SAIDXSDATA is not defined");
228 ReadData(idx,elastdata[idx],path,
"_el.dat");
229 ReadData(idx,inelastdata[idx],path,
"_in.dat");
232 ReadData(idx,inelastdata[idx],path,
".dat");
236 void G4ComponentSAIDTotalXS::ReadData(
G4int index,
241 std::ostringstream ost;
242 ost << ss1 <<
"/" << fnames[index] << ss2;
243 std::ifstream filein(ost.str().c_str());
246 ed <<
"Data file <" << ost.str().c_str()
247 <<
"> is not opened!";
248 G4Exception(
"G4ComponentSAIDTotalXS::ReadData(..)",
"had014",
252 G4cout <<
"File " << ost.str()
253 <<
" is opened by G4ComponentSAIDTotalXS" <<
G4endl;
270 G4cout <<
"For Z= " << Z <<
" N= " << N <<
" of ";
virtual G4double GetTotalElementCrossSection(const G4ParticleDefinition *, G4double kinEnergy, G4int, G4double)
virtual G4double GetInelasticIsotopeCrossSection(const G4ParticleDefinition *, G4double kinEnergy, G4int, G4int)
std::ostringstream G4ExceptionDescription
static constexpr double millibarn
G4int GetVerboseLevel() const
virtual G4double GetElasticIsotopeCrossSection(const G4ParticleDefinition *, G4double kinEnergy, G4int, G4int)
G4int GetPDGEncoding() const
const G4String & GetParticleName() const
virtual void Description() const
virtual G4double GetInelasticElementCrossSection(const G4ParticleDefinition *, G4double kinEnergy, G4int, G4double)
G4GLOB_DLL std::ostream G4cout
static constexpr double MeV
virtual void ScaleVector(G4double factorE, G4double factorV)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
virtual G4double GetTotalIsotopeCrossSection(const G4ParticleDefinition *, G4double kinEnergy, G4int, G4int)
virtual G4bool Retrieve(std::ifstream &fIn, G4bool ascii=false)
virtual ~G4ComponentSAIDTotalXS()
virtual G4double GetElasticElementCrossSection(const G4ParticleDefinition *, G4double kinEnergy, G4int, G4double)
G4double GetChargeExchangeCrossSection(const G4ParticleDefinition *prim, const G4ParticleDefinition *sec, G4double kinEnergy, G4int, G4int)