NuOscillator
Loading...
Searching...
No Matches
OscProbCalcerNuSQUIDSLinear Class Reference

Oscillation calculation engine for linear propagation in NuSQUIDS. More...

#include <OscProbCalcer_NuSQUIDSLinear.h>

Inheritance diagram for OscProbCalcerNuSQUIDSLinear:
[legend]
Collaboration diagram for OscProbCalcerNuSQUIDSLinear:
[legend]

Public Types

enum  OscParams_PMNS {
  kTH12 , kTH23 , kTH13 , kDM12 ,
  kDM23 , kDCP , kPATHL , kDENS ,
  kELECDENS , kNOscParams_PMNS
}
 Definition of Standard Model oscillation parameters (same as BSM Non-Standard Interactions parameters) which are expected in this ProbGPU implementation. More...
 
enum  OscParams_Decoh { kEnergyStrength =kNOscParams_PMNS , kEnergyDep , kEnergyScale , kNOscParams_Decoh }
 Definition of Standard Model oscillation parameters and additional parameters characterising the Beyond-the-Standard-Model physics (Decoherence) More...
 
enum  OscParams_LIV {
  kEMuReal =kNOscParams_PMNS , kEMuImg , kMuTauReal , kMuTauImg ,
  kEnergyPower , kNOscParams_LIV
}
 Definition of Standard Model oscillation parameters and additional parameters characterising the Beyond-the-Standard-Model physics (Lorentz-Violation Invariance) More...
 
enum  OscModels { kSM =0 , kDecoherence =1 , kLIV =2 , kNSI =3 }
 Set enums corresponding to BSM model. More...
 
enum  NuType { Nu =1 , Nubar =-1 }
 Define the neutrino and antineutrino values expected by this implementation. More...
 

Public Member Functions

 OscProbCalcerNuSQUIDSLinear (YAML::Node Config_)
 Default constructor.
 
 OscProbCalcerNuSQUIDSLinear (std::string ConfigName_)
 Constructor which takes a file path, creates a YAML::Node and calls the default constructor.
 
virtual ~OscProbCalcerNuSQUIDSLinear ()
 Destructor.
 
void SetupPropagator () final
 Setup NuSQUIDS specific variables.
 
void CalculateProbabilities () final
 Calculate some oscillation probabilities for a particular oscillation parameter set.
 
int ReturnWeightArrayIndex (int NuTypeIndex, int OscNuIndex, int EnergyIndex, int CosineZIndex=-1) final
 Return implementation specific index in the weight array for a specific combination of neutrino oscillation channel, energy and cosine zenith.
 
long DefineWeightArraySize () final
 Define the size of fWeightArray.
 
void SetOscParams (nusquids::nuSQUIDS *base)
 Set values of Osc parameters into NuSQUIDS object.
 
void CalculateNuSQUIDS (nusquids::nuSQUIDS *base, nusquids::marray< double, 2 > &inistate, int &index_counter)
 Extract oscillation probabilities form NuSQUIDS object.
 
int PMNS_StrToInt (const std::string &OscModel)
 Return the PMNS Matrix type corresponding to a particular string.
 
void SetOscParams (int OscType)
 Return number of parameters needed for a particular type of PMNS matrix.
 
- Public Member Functions inherited from OscProbCalcerBase
virtual ~OscProbCalcerBase ()
 Destructor.
 
void SetEnergyArray (std::vector< FLOAT_T > EnergyArray)
 Define the Energy which will be used when calculating the oscillation probabilities.
 
void SetCosineZArray (std::vector< FLOAT_T > CosineZArray)
 Define the CosineZ which will be used when calculating the oscillation probabilities.
 
const FLOAT_T * ReturnPointerToWeight (int InitNuFlav, int FinalNuFlav, FLOAT_T Energy, FLOAT_T CosineZ=DUMMYVAL)
 Return pointer to the weight array for a specific Energy and CosineZ.
 
void Reweight ()
 General function used to call the oscillation probability calculation.
 
void DefineParameter (const std::string &ParName, FLOAT_T *ParValue)
 Function to register an oscillation parameter name and pointer to a value that will be used when calculating the oscillation probabilities.
 
void Reweight (const std::vector< FLOAT_T > &OscParams_)
 Legacy implementation function of Reweight()
 
void Setup ()
 General function used to setup all variables used within the reweighting.
 
bool SanityCheck ()
 Ensures that the specific implementation has been correctly initialised.
 
void PrintWeights ()
 Print the calculated oscillation probabilities.
 
void PrintKnownOscillationChannels ()
 Print the oscillation channels which a particular instance has been configured with.
 
bool HasOscillationChannel (int GeneratedFlavour, int DetectedFlavour)
 Check whether a particular oscillation channel has been configured in a particular instance of OscProbCalcerBase::OscProbCalcerBase()
 
int ReturnNOscParams ()
 Return the number of oscillation parameters the specific implementation expects.
 
std::vector< NuOscillator::OscillationChannel > ReturnOscChannels ()
 Return the oscillation channels the specific implementation expects.
 
std::vector< int > ReturnNeutrinoTypes ()
 Return the neutrino types the specific implementation expects.
 
std::vector< FLOAT_T > ReturnOscParamsCurr ()
 Return the oscillation parameters which were used for the last calculation.
 
int ReturnNEnergyPoints ()
 Return the number of Energy points which are being used by the specific instance of OscProbCalcerBase::OscProbCalcerBase()
 
int ReturnNCosineZPoints ()
 Return the number of CosineZ points which are being used by the specific instance of OscProbCalcerBase::OscProbCalcerBase()
 
std::vector< FLOAT_T > ReturnEnergyArray ()
 Return the vector of Energy points which are being used by the specific instance of OscProbCalcerBase::OscProbCalcerBase()
 
std::vector< FLOAT_T > ReturnCosineZArray ()
 Return the vector of CosineZ points which are being used by the specific instance of OscProbCalcerBase::OscProbCalcerBase()
 
std::string ReturnImplementationName ()
 Return the specific implementation name.
 
bool ReturnCosineZIgnored ()
 Return a boolean which describes whether the specific implementation cares about CosineZ.
 
int ReturnNWeights ()
 Return the number of oscillation probabilities that are being calculated.
 
std::vector< FLOAT_T > ReturnWeightArray ()
 Return the vector of oscillation probabilites which have been calculated.
 
std::vector< NuOscillator::OscillationProbability > ReturnProbabilities ()
 Return vector of oscillation probabilities with associated neutrin type, oscillation channel, Energy and CosineZ.
 
bool ReturnHasSetEnergyArray ()
 Return whether the instance of OscProbCalcerBase() has already been assigned the Energy binning.
 
bool ReturnHasSetCosineZArray ()
 Return whether the instance of OscProbCalcerBase() has already been assigned the CosineZ binning.
 
int ReturnNuTypeFromFlavour (int NuFlav)
 Return the index in fNeutrinoTypes for a particular neutrino flavour (neutrino or antineutrino)
 
void PrintOscParamsCurr ()
 Print current oscillation parameters.
 

Public Attributes

int fOscModel
 Define the type for the PMNS matrix.
 
squids::Const units
 Define a Const object for handling the units.
 
nusquids::nuSQUIDS * nus_base
 Declaration of the NuSQUIDS base class object for neutrinos.
 
nusquids::nuSQUIDS * nubars_base
 Declaration of the NuSQUIDS base class object for anti-neutrinos.
 
std::string decoherence_model
 Declaration of the string to choose the decoherence model.
 
nusquids::nuSQUIDSDecoh::DecoherenceModel nusquids_decoherence_model
 Declaration of the NuSQUIDS BSM (Decoherence) model object.
 
FLOAT_T nsi_mutau_coupling
 Declaration of the muon-neutrino to tau-neutrino coupling for the NSI computation.
 
double integration_step
 Declaration of the integration step.
 
double rel_error
 Declaration of the relative error.
 
double abs_error
 Declaration of the absolute error.
 
int nNeutrinoFlavours
 Number of neutrino flavours considered in the analysis.
 

Additional Inherited Members

- Protected Member Functions inherited from OscProbCalcerBase
 OscProbCalcerBase (YAML::Node InputConfig_)
 Default constructor.
 
 OscProbCalcerBase (std::string ConfigName_)
 Wrapper Construct.
 
void IgnoreCosineZBinning (bool Ignore)
 Some implementations don't care about the CosineZ values, so this is a method to set fCosineZArraySet to true in those cases.
 
bool AreOscParamsChanged ()
 Check whether the oscillation parameters have changed since their previous value.
 
void SetCurrOscParams ()
 Save the oscillation parameters which have been requested.
 
void ResetCurrOscParams ()
 (Re-)Initialise the saved oscillation parameters in fOscParamsCurr
 
void InitialiseNeutrinoTypesArray (int Size)
 Initialise the fNeutrinoTypes mapping array to a particular size with dummy values.
 
void InitialiseOscillationChannelMapping ()
 Read the [OscProbCalcerSetup][Implementation][OscChannelMapping] YAML node and configure fOscillationChannels.
 
void CheckNuFlavourMapping ()
 Check that the NuType/NuFlav mapping is set correctly based on the inputs from the particular implementation.
 
void IntialiseWeightArray ()
 Initialise the array in which the oscillation probabilities will be stored with dummy values.
 
void SanitiseProbabilities ()
 Ensure that the oscillation probabilities are within [0.,1.] range, if not throw error.
 
int ReturnCosineZIndexFromValue (FLOAT_T CosineZVal)
 Return the index in fCosineZArray for a particular value of CosineZ. If it's not found, throws an error.
 
int ReturnEnergyIndexFromValue (FLOAT_T EnergyVal)
 Return the index in fEnergyArray for a particular value of Energy. If it's not found, throws an error.
 
int ReturnOscChannelIndexFromFlavours (int InitNuFlav, int FinalNuFlav)
 Loop through fOscillationChannels and determine which index corresponds to the requested flavours.
 
void SetExpectedParameterNames (const std::vector< std::string > &ExpectedOscParNames_)
 Define the list of parameter names that a particular instance of OscProbCalcer expects.
 
void PrintExpectedParameterNames ()
 Print the expected parameter names.
 
FLOAT_T GetOscillationParameter (int Index)
 Return the value of the oscillation parameter associated with the index.
 
void CheckOscillationParametersDefined ()
 Check that all the expected oscillation parameters have been assigned a value.
 
- Protected Attributes inherited from OscProbCalcerBase
int fNNeutrinoTypes
 The number of neutrino types (neutrino and antineutrino)
 
std::vector< int > fNeutrinoTypes
 The mapping of neutrino types to uniquely defined integers (i.e. index)
 
int fNOscillationChannels
 The number of oscillation channels which have been configured.
 
std::vector< NuOscillator::OscillationChannel > fOscillationChannels
 The mapping of oscillation channels which have been requested from the YAML config.
 
int fNEnergyPoints
 The number of Energy points which are being evaluated by the oscillation probability engine.
 
int fNCosineZPoints
 The number of CosineZ points which are being evaluated by the oscillation probability engine.
 
std::vector< FLOAT_T > fEnergyArray
 The vector of Energy values being evaluated by the oscillation probability engine.
 
std::vector< FLOAT_T > fCosineZArray
 The vector of CosineZ values being evaluated by the oscillation probability engine.
 
int fNWeights
 The number of oscillation probabilities being calculated.
 
std::vector< FLOAT_T > fWeightArray
 Vector which stores the oscillation probabilities.
 
int fVerbose
 Define the verbosity of the console output.
 
std::string fImplementationName
 Define the implementation name - Can be used for recasting later (similar to TObject::InheritsFrom() etc.)
 
bool fCosineZIgnored
 Flag to define whether the CosineZ binning has been ignored in the specific implementation.
 
YAML::Node Config
 YAML Config object used to get runtime specific variables.
 

Detailed Description

Oscillation calculation engine for linear propagation in NuSQUIDS.

Member Enumeration Documentation

◆ NuType

Define the neutrino and antineutrino values expected by this implementation.

Enumerator
Nu 
Nubar 

◆ OscModels

Set enums corresponding to BSM model.

Parameters
BSMModelString to convert to enum value
Returns
Enum value describing the BSMModel to use
Enumerator
kSM 
kDecoherence 
kLIV 
kNSI 

◆ OscParams_Decoh

Definition of Standard Model oscillation parameters and additional parameters characterising the Beyond-the-Standard-Model physics (Decoherence)

Enumerator
kEnergyStrength 
kEnergyDep 
kEnergyScale 
kNOscParams_Decoh 

◆ OscParams_LIV

Definition of Standard Model oscillation parameters and additional parameters characterising the Beyond-the-Standard-Model physics (Lorentz-Violation Invariance)

Enumerator
kEMuReal 
kEMuImg 
kMuTauReal 
kMuTauImg 
kEnergyPower 
kNOscParams_LIV 

◆ OscParams_PMNS

Definition of Standard Model oscillation parameters (same as BSM Non-Standard Interactions parameters) which are expected in this ProbGPU implementation.

Enumerator
kTH12 
kTH23 
kTH13 
kDM12 
kDM23 
kDCP 
kPATHL 
kDENS 
kELECDENS 
kNOscParams_PMNS 

Constructor & Destructor Documentation

◆ OscProbCalcerNuSQUIDSLinear() [1/2]

OscProbCalcerNuSQUIDSLinear::OscProbCalcerNuSQUIDSLinear ( YAML::Node Config_)

Default constructor.

Parameters
Config_YAML::Node to setup the OscProbCalcerNuSQUIDSLinear() instance

◆ OscProbCalcerNuSQUIDSLinear() [2/2]

OscProbCalcerNuSQUIDSLinear::OscProbCalcerNuSQUIDSLinear ( std::string ConfigName_)
inline

Constructor which takes a file path, creates a YAML::Node and calls the default constructor.

Parameters
ConfigName_File path to config

◆ ~OscProbCalcerNuSQUIDSLinear()

OscProbCalcerNuSQUIDSLinear::~OscProbCalcerNuSQUIDSLinear ( )
virtual

Destructor.

Member Function Documentation

◆ CalculateNuSQUIDS()

void OscProbCalcerNuSQUIDSLinear::CalculateNuSQUIDS ( nusquids::nuSQUIDS * base,
nusquids::marray< double, 2 > & inistate,
int & index_counter )

Extract oscillation probabilities form NuSQUIDS object.

◆ CalculateProbabilities()

void OscProbCalcerNuSQUIDSLinear::CalculateProbabilities ( )
finalvirtual

Calculate some oscillation probabilities for a particular oscillation parameter set.

Calculator oscillation probabilities in NuSQUIDS. This function both calculates and stores the oscillation probabilities in fWeightArray.

Implements OscProbCalcerBase.

◆ DefineWeightArraySize()

long OscProbCalcerNuSQUIDSLinear::DefineWeightArraySize ( )
finalvirtual

Define the size of fWeightArray.

This is implementation specific because because NuSQUIDS is setup to calculate all oscillation channels together, whilst others calculate only a single oscillation channel.

Returns
Length that fWeightArray should be initialised to

Implements OscProbCalcerBase.

◆ PMNS_StrToInt()

int OscProbCalcerNuSQUIDSLinear::PMNS_StrToInt ( const std::string & OscModel)

Return the PMNS Matrix type corresponding to a particular string.

Parameters
PMNSTypeString to convert to enum value
Returns
Enum value describing the PMNS Matrix to use

◆ ReturnWeightArrayIndex()

int OscProbCalcerNuSQUIDSLinear::ReturnWeightArrayIndex ( int NuTypeIndex,
int OscNuIndex,
int EnergyIndex,
int CosineZIndex = -1 )
finalvirtual

Return implementation specific index in the weight array for a specific combination of neutrino oscillation channel, energy and cosine zenith.

Parameters
NuTypeIndexThe index in fNeutrinoTypes (neutrino/antinuetrino) to return the pointer for
OscChanIndexThe index in fOscillationChannels to return the pointer for
EnergyIndexThe index in fEnergyArray to return the pointer for
CosineZIndexThe index in fCosineZArray to return the pointer for
Returns
Index in fWeightArray which corresponds to the given inputs

Implements OscProbCalcerBase.

◆ SetOscParams() [1/2]

void OscProbCalcerNuSQUIDSLinear::SetOscParams ( int OscType)

Return number of parameters needed for a particular type of PMNS matrix.

Parameters
OscTypeint value corresponding to type of PMNS matrix

◆ SetOscParams() [2/2]

void OscProbCalcerNuSQUIDSLinear::SetOscParams ( nusquids::nuSQUIDS * base)

Set values of Osc parameters into NuSQUIDS object.

◆ SetupPropagator()

void OscProbCalcerNuSQUIDSLinear::SetupPropagator ( )
finalvirtual

Setup NuSQUIDS specific variables.

Implements OscProbCalcerBase.

Member Data Documentation

◆ abs_error

double OscProbCalcerNuSQUIDSLinear::abs_error

Declaration of the absolute error.

◆ decoherence_model

std::string OscProbCalcerNuSQUIDSLinear::decoherence_model

Declaration of the string to choose the decoherence model.

◆ fOscModel

int OscProbCalcerNuSQUIDSLinear::fOscModel

Define the type for the PMNS matrix.

◆ integration_step

double OscProbCalcerNuSQUIDSLinear::integration_step

Declaration of the integration step.

◆ nNeutrinoFlavours

int OscProbCalcerNuSQUIDSLinear::nNeutrinoFlavours

Number of neutrino flavours considered in the analysis.

◆ nsi_mutau_coupling

FLOAT_T OscProbCalcerNuSQUIDSLinear::nsi_mutau_coupling

Declaration of the muon-neutrino to tau-neutrino coupling for the NSI computation.

◆ nubars_base

nusquids::nuSQUIDS* OscProbCalcerNuSQUIDSLinear::nubars_base

Declaration of the NuSQUIDS base class object for anti-neutrinos.

◆ nus_base

nusquids::nuSQUIDS* OscProbCalcerNuSQUIDSLinear::nus_base

Declaration of the NuSQUIDS base class object for neutrinos.

◆ nusquids_decoherence_model

nusquids::nuSQUIDSDecoh::DecoherenceModel OscProbCalcerNuSQUIDSLinear::nusquids_decoherence_model

Declaration of the NuSQUIDS BSM (Decoherence) model object.

◆ rel_error

double OscProbCalcerNuSQUIDSLinear::rel_error

Declaration of the relative error.

◆ units

squids::Const OscProbCalcerNuSQUIDSLinear::units

Define a Const object for handling the units.


The documentation for this class was generated from the following files: