diff --git a/inc/TRestGeant4PrimaryGeneratorInfo.h b/inc/TRestGeant4PrimaryGeneratorInfo.h index 75eab77..927e66f 100644 --- a/inc/TRestGeant4PrimaryGeneratorInfo.h +++ b/inc/TRestGeant4PrimaryGeneratorInfo.h @@ -52,7 +52,8 @@ enum class EnergyDistributionFormulas { COSMIC_NEUTRONS, COSMIC_GAMMAS, FISSION_NEUTRONS_U238, - ENVIRONMENTAL_GAMMAS + ENVIRONMENTAL_GAMMAS, + ENVIRONMENTAL_NEUTRONS, }; std::string EnergyDistributionFormulasToString(const EnergyDistributionFormulas&); diff --git a/src/TRestGeant4PrimaryGeneratorInfo.cxx b/src/TRestGeant4PrimaryGeneratorInfo.cxx index 512393c..34812c1 100644 --- a/src/TRestGeant4PrimaryGeneratorInfo.cxx +++ b/src/TRestGeant4PrimaryGeneratorInfo.cxx @@ -178,6 +178,8 @@ string TRestGeant4PrimaryGeneratorTypes::EnergyDistributionFormulasToString( return "FissionNeutronsU238"; case EnergyDistributionFormulas::ENVIRONMENTAL_GAMMAS: return "EnvironmentalGammas"; + case EnergyDistributionFormulas::ENVIRONMENTAL_NEUTRONS: + return "EnvironmentalNeutrons"; } cout << "TRestGeant4PrimaryGeneratorTypes::EnergyDistributionFormulasToString - Error - Unknown energy " "distribution formula" @@ -202,6 +204,10 @@ EnergyDistributionFormulas TRestGeant4PrimaryGeneratorTypes::StringToEnergyDistr EnergyDistributionFormulasToString(EnergyDistributionFormulas::ENVIRONMENTAL_GAMMAS), TString::ECaseCompare::kIgnoreCase)) { return EnergyDistributionFormulas::ENVIRONMENTAL_GAMMAS; + } else if (TString(type).EqualTo( + EnergyDistributionFormulasToString(EnergyDistributionFormulas::ENVIRONMENTAL_NEUTRONS), + TString::ECaseCompare::kIgnoreCase)) { + return EnergyDistributionFormulas::ENVIRONMENTAL_NEUTRONS; } else { cout << "TRestGeant4PrimaryGeneratorTypes::StringToEnergyDistributionFormulas - Error - Unknown " "energyDistributionFormulas: " @@ -250,6 +256,15 @@ TF1 TRestGeant4PrimaryGeneratorTypes::EnergyDistributionFormulasToRootFormula( distribution.GetXaxis()->SetTitle("Energy (keV)"); return distribution; } + case EnergyDistributionFormulas::ENVIRONMENTAL_NEUTRONS: { + // Environmental neutron radiation approximation + const char* title = "Environmental Neutrons"; + auto distribution = TF1(title, "TMath::Exp(-x * 0.0005)", 0, 10000); // keV + distribution.SetNormalized(true); + distribution.SetTitle(title); + distribution.GetXaxis()->SetTitle("Energy (keV)"); + return distribution; + } } cout << "TRestGeant4PrimaryGeneratorTypes::EnergyDistributionFormulasToRootFormula - Error - Unknown " "energy distribution formula"