Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions inc/TRestWimpNucleus.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,10 @@
#ifndef RestCore_TRestWimpNucleus
#define RestCore_TRestWimpNucleus

#include <iostream>

#include <TString.h>

#include <iostream>

/// A class to store different nucleus parameters
class TRestWimpNucleus {
public:
Expand Down
9 changes: 4 additions & 5 deletions inc/TRestWimpSensitivity.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,10 @@
#ifndef RestCore_TRestWimpSensitivity
#define RestCore_TRestWimpSensitivity

#include <TH1D.h>
#include <TRestMetadata.h>
#include <TRestWimpNucleus.h>

#include <TH1D.h>

/// Container class for WIMP metadata
///
class TRestWimpSensitivity : public TRestMetadata {
Expand Down Expand Up @@ -60,7 +59,7 @@ class TRestWimpSensitivity : public TRestMetadata {
std::map<std::string, TH1D*> quenchingFactor; //!

public:
TRestWimpSensitivity(const char* configFilename, const std::string& name = "");
explicit TRestWimpSensitivity(const char* configFilename, const std::string& name = "");

~TRestWimpSensitivity();

Expand All @@ -69,11 +68,11 @@ class TRestWimpSensitivity : public TRestMetadata {
void PrintMetadata() override;

void ReadNuclei();
const Double_t GetSensitivity(const double wimpMass);
const Double_t GetSensitivity(double wimpMass);
void CalculateQuenchingFactor();
const std::string BuildOutputFileName(const std::string& extension = ".txt");

std::map<std::string, TH1D*> GetRecoilSpectra(const double wimpMass, const double crossSection);
std::map<std::string, TH1D*> GetRecoilSpectra(double wimpMass, double crossSection);
std::map<std::string, TH1D*> GetFormFactor();
inline auto GetQuenchingFactor() { return quenchingFactor; }

Expand Down
24 changes: 11 additions & 13 deletions inc/TRestWimpUtils.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,19 +39,17 @@ constexpr double CM2_PER_MBARN = 1e-27;
constexpr double FERMI_CONSTANT = 1.16639e-5; // GeV-2

/// Generic functions for different calculations
const double GetRelativeNuclearCS(const double wimpMass, const double Anum);
const double GetReducedMass(const double wimpMass, const double Anum);
const double GetHelmFormFactor(const double recoilEnergy, const double Anum);
const double Bessel(const double x);
const double GetVMin(const double wimpMass, const double Anum, const double recoilEnergy);
const double GetVelocityDistribution(const double v, const double vLab, const double vRMS,
const double vEscape);
const double GetDifferentialCrossSection(const double wimpMass, const double crossSection,
const double velocity, const double recoilEnergy, const double Anum);
const double GetRecoilRate(const double wimpMass, const double crossSection, const double recoilEnergy,
const double Anum, const double vLab, const double vRMS, const double vEscape,
const double wimpDensity, const double abundance);
const double GetQuenchingFactor(const double recoilEnergy, const double Anum, const double Znum);
double GetRelativeNuclearCS(double wimpMass, double Anum);
double GetReducedMass(double wimpMass, double Anum);
double GetHelmFormFactor(double recoilEnergy, double Anum);
double Bessel(double x);
double GetVMin(double wimpMass, double Anum, double recoilEnergy);
double GetVelocityDistribution(double v, double vLab, double vRMS, double vEscape);
double GetDifferentialCrossSection(double wimpMass, double crossSection, double velocity, double recoilEnergy,
double Anum);
double GetRecoilRate(double wimpMass, double crossSection, double recoilEnergy, double Anum, double vLab,
double vRMS, double vEscape, double wimpDensity, double abundance);
double GetQuenchingFactor(double recoilEnergy, double Anum, double Znum);

} // namespace TRestWimpUtils

Expand Down
3 changes: 2 additions & 1 deletion src/TRestWimpNucleus.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,8 @@
///

#include "TRestWimpNucleus.h"
#include "TRestMetadata.h"

#include <TRestMetadata.h>

ClassImp(TRestWimpNucleus);

Expand Down
34 changes: 17 additions & 17 deletions src/TRestWimpUtils.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -42,15 +42,16 @@
/// <hr>
///

#include "TRestWimpUtils.h"

#include <TMath.h>
#include <TRestWimpUtils.h>

//////////////////////////////////////////////////
/// \brief Get relative nuclear cross section
/// within a WIMP and a nucleon, assuming
/// SCALAR INTERACION
/// SCALAR INTERACTION
///
const double TRestWimpUtils::GetRelativeNuclearCS(const double wimpMass, const double Anum) {
double TRestWimpUtils::GetRelativeNuclearCS(const double wimpMass, const double Anum) {
const double reducedMass = GetReducedMass(wimpMass, Anum);
const double reducedMassSingle = GetReducedMass(wimpMass, 1.);
return pow(Anum * GEV_PER_UMA * reducedMass / reducedMassSingle, 2.);
Expand All @@ -60,7 +61,7 @@ const double TRestWimpUtils::GetRelativeNuclearCS(const double wimpMass, const d
/// \brief Get WIMP-nucleon reduced mass
/// (WIMP mass in GeV)
///
const double TRestWimpUtils::GetReducedMass(const double wimpMass, const double Anum) {
double TRestWimpUtils::GetReducedMass(const double wimpMass, const double Anum) {
// WIMP mass in GeV
return wimpMass * GEV_PER_UMA * Anum / (wimpMass + Anum * GEV_PER_UMA);
}
Expand All @@ -70,7 +71,7 @@ const double TRestWimpUtils::GetReducedMass(const double wimpMass, const double
/// energy and nucleous target, mass recoil
/// energy in keV
///
const double TRestWimpUtils::GetHelmFormFactor(const double recoilEnergy, const double Anum) {
double TRestWimpUtils::GetHelmFormFactor(const double recoilEnergy, const double Anum) {
// Momentum transfer in keV
const double q = sqrt(2. * Anum * GEV_PER_UMA * 1E6 * recoilEnergy);
const double s = 0.9; // Femtometers-Skin thickness of the nucleus
Expand All @@ -92,7 +93,7 @@ const double TRestWimpUtils::GetHelmFormFactor(const double recoilEnergy, const
/// for a WIMP to create a recoil energy (keV)
/// higher than recoilEnergy
///
const double TRestWimpUtils::GetVMin(const double wimpMass, const double Anum, const double recoilEnergy) {
double TRestWimpUtils::GetVMin(const double wimpMass, const double Anum, const double recoilEnergy) {
const double reducedMass = GetReducedMass(wimpMass, Anum);
return sqrt(Anum * GEV_PER_UMA * recoilEnergy * 1E-6 / (2. * reducedMass * reducedMass)) * LIGHT_SPEED;
}
Expand All @@ -101,8 +102,8 @@ const double TRestWimpUtils::GetVMin(const double wimpMass, const double Anum, c
/// \brief Get velocity distribution for a given
/// WIMP velocity
///
const double TRestWimpUtils::GetVelocityDistribution(const double v, const double vLab, const double vRMS,
const double vEscape) {
double TRestWimpUtils::GetVelocityDistribution(const double v, const double vLab, const double vRMS,
const double vEscape) {
const double vAdim = vRMS / vLab;
const double Nesc = erf(vAdim) - (2. / sqrt(TMath::Pi())) * (vAdim)*exp(-vAdim * vAdim);
const double xMax = std::min(1., (vEscape * vEscape - vLab * vLab - v * v) / (2. * vLab * v));
Expand All @@ -118,9 +119,9 @@ const double TRestWimpUtils::GetVelocityDistribution(const double v, const doubl
/// nucleon in cm^2, Anum in atomic units (amu)
/// (or atomic weight)
///
const double TRestWimpUtils::GetDifferentialCrossSection(const double wimpMass, const double crossSection,
const double velocity, const double recoilEnergy,
const double Anum) {
double TRestWimpUtils::GetDifferentialCrossSection(const double wimpMass, const double crossSection,
const double velocity, const double recoilEnergy,
const double Anum) {
const double cs = GetRelativeNuclearCS(wimpMass, Anum) * crossSection;
const double reducedMass = GetReducedMass(wimpMass, Anum);
const double Emax = 1E6 / LIGHT_SPEED / LIGHT_SPEED * 2. * reducedMass * reducedMass * velocity *
Expand All @@ -135,10 +136,10 @@ const double TRestWimpUtils::GetDifferentialCrossSection(const double wimpMass,
/// and recoil energy, note that the recoil rate
/// is normalized by c/kg/day
///
const double TRestWimpUtils::GetRecoilRate(const double wimpMass, const double crossSection,
const double recoilEnergy, const double Anum, const double vLab,
const double vRMS, const double vEscape, const double wimpDensity,
const double abundance) {
double TRestWimpUtils::GetRecoilRate(const double wimpMass, const double crossSection,
const double recoilEnergy, const double Anum, const double vLab,
const double vRMS, const double vEscape, const double wimpDensity,
const double abundance) {
const double vMin = GetVMin(wimpMass, Anum, recoilEnergy);
const double vMax = vEscape + vLab;
const double nNuclei = abundance * N_AVOGADRO * 1E3 / Anum; // Number of atoms
Expand All @@ -163,8 +164,7 @@ const double TRestWimpUtils::GetRecoilRate(const double wimpMass, const double c
/// \brief Get Lindhard quenching factor for a
/// given recoil energy (keV) and target
///
const double TRestWimpUtils::GetQuenchingFactor(const double recoilEnergy, const double Anum,
const double Znum) {
double TRestWimpUtils::GetQuenchingFactor(const double recoilEnergy, const double Anum, const double Znum) {
const double deltaE = 0.0001, Emin = 0.1, resolution = 0.1; // keV
double g, Er = recoilEnergy, Ev;

Expand Down