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

Oscillation calculation engine for linear and atmospheric propagation in CUDAProb3. More...

#include <OscProbCalcer_CUDAProb3.h>

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

Public Member Functions

 OscProbCalcerCUDAProb3 (YAML::Node Config_)
 Default constructor.
 
 OscProbCalcerCUDAProb3 (std::string ConfigName_)
 Constructor which takes a file path, creates a YAML::Node and calls the default constructor.
 
virtual ~OscProbCalcerCUDAProb3 ()
 Destructor.
 
- 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.
 

Private Types

enum  OscParams {
  kTH12 , kTH23 , kTH13 , kDM12 ,
  kDM23 , kDCP , kPRODH , kNOscParams
}
 Definition of oscillation parameters which are expected in this CUDAProb3 implementation. More...
 
enum  NuType { Nubar =-1 , Nu =1 }
 Define the neutrino and antineutrino values expected by this implementation. More...
 

Private Member Functions

void SetupPropagator () final
 Setup CUDAProb3 specific variables.
 
void CalculateProbabilities () final
 Calculate some oscillation probabilities for a particular oscillation parameter set.
 
int ReturnWeightArrayIndex (int NuTypeIndex, int OscChanIndex, 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 SetProductionHeightsAveraging ()
 Set the variables needed to use the production heights averaging.
 
void ApplyEarthModelSystematics ()
 Apply a new set of parameters to set the density model of the Earth in CUDAProb3.
 

Private Attributes

std::vector< int > OscChannels
 The mapping of the oscillation channels defined in fOscillationChannels to the CUDAProb3 constants.
 
int nThreads
 The number of threads being used to perform the calculation.
 
std::unique_ptr< cudaprob3::Propagator< FLOAT_T > > propagator
 The instance of the CUDAProb3 Propagator being used in a particular instance of OscProbCalcerCUDAProb3()
 
std::string EarthDensityFile
 The name of the Earth Density file being used in a particular instance of OscProbCalcerCUDAProb3()
 
bool UseProductionHeightsAve
 Option to use Production Heights averaging in a particular instance of OscProbCalcerCUDAProb3()
 
std::string ProductionHeightsFile
 The name of the Production Heights file being used in a particular instance of OscProbCalcerCUDAProb3()
 
std::vector< std::string > ProductionHeightsHistFlavourSuffixes
 The flavour suffixes strings of the TH3Ds in ProductionHeightsFile, read from the configuration file under [OscProbCalcerSetup][ProductionHeightsHistFlavourSuffixes] .
 
bool UseEarthModelSystematics
 Option to apply density model systematics in OscProbCalcerCUDAProb3()
 
int nLayers
 Number of Earth layers.
 
int CopyArrSize
 Size of the array to be copied.
 
FLOAT_T * CopyArr
 Pointer to the array used for copying oscillation probabilities.
 

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 and atmospheric propagation in CUDAProb3.

Member Enumeration Documentation

◆ NuType

Define the neutrino and antineutrino values expected by this implementation.

Enumerator
Nubar 
Nu 

◆ OscParams

Definition of oscillation parameters which are expected in this CUDAProb3 implementation.

Enumerator
kTH12 
kTH23 
kTH13 
kDM12 
kDM23 
kDCP 
kPRODH 
kNOscParams 

Constructor & Destructor Documentation

◆ OscProbCalcerCUDAProb3() [1/2]

OscProbCalcerCUDAProb3::OscProbCalcerCUDAProb3 ( YAML::Node Config_)

Default constructor.

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

◆ OscProbCalcerCUDAProb3() [2/2]

OscProbCalcerCUDAProb3::OscProbCalcerCUDAProb3 ( 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

◆ ~OscProbCalcerCUDAProb3()

OscProbCalcerCUDAProb3::~OscProbCalcerCUDAProb3 ( )
virtual

Destructor.

Member Function Documentation

◆ ApplyEarthModelSystematics()

void OscProbCalcerCUDAProb3::ApplyEarthModelSystematics ( )
private

Apply a new set of parameters to set the density model of the Earth in CUDAProb3.

◆ CalculateProbabilities()

void OscProbCalcerCUDAProb3::CalculateProbabilities ( )
finalprivatevirtual

Calculate some oscillation probabilities for a particular oscillation parameter set.

Calculator oscillation probabilities in CUDAProb3. This links to Propagator->getProbability in CUDAProb3. This function both calculates and stores the oscillation probabilities in fWeightArray.

Implements OscProbCalcerBase.

◆ DefineWeightArraySize()

long OscProbCalcerCUDAProb3::DefineWeightArraySize ( )
finalprivatevirtual

Define the size of fWeightArray.

This is implementation specific because because CUDAProb3 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.

◆ ReturnWeightArrayIndex()

int OscProbCalcerCUDAProb3::ReturnWeightArrayIndex ( int NuTypeIndex,
int OscChanIndex,
int EnergyIndex,
int CosineZIndex = -1 )
finalprivatevirtual

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.

◆ SetProductionHeightsAveraging()

void OscProbCalcerCUDAProb3::SetProductionHeightsAveraging ( )
private

Set the variables needed to use the production heights averaging.

◆ SetupPropagator()

void OscProbCalcerCUDAProb3::SetupPropagator ( )
finalprivatevirtual

Setup CUDAProb3 specific variables.

Setup the cudaprob3::Propagator instance and set all of the variables that it needs like EarthModel etc.

Implements OscProbCalcerBase.

Member Data Documentation

◆ CopyArr

FLOAT_T* OscProbCalcerCUDAProb3::CopyArr
private

Pointer to the array used for copying oscillation probabilities.

◆ CopyArrSize

int OscProbCalcerCUDAProb3::CopyArrSize
private

Size of the array to be copied.

◆ EarthDensityFile

std::string OscProbCalcerCUDAProb3::EarthDensityFile
private

The name of the Earth Density file being used in a particular instance of OscProbCalcerCUDAProb3()

◆ nLayers

int OscProbCalcerCUDAProb3::nLayers
private

Number of Earth layers.

◆ nThreads

int OscProbCalcerCUDAProb3::nThreads
private

The number of threads being used to perform the calculation.

◆ OscChannels

std::vector<int> OscProbCalcerCUDAProb3::OscChannels
private

The mapping of the oscillation channels defined in fOscillationChannels to the CUDAProb3 constants.

◆ ProductionHeightsFile

std::string OscProbCalcerCUDAProb3::ProductionHeightsFile
private

The name of the Production Heights file being used in a particular instance of OscProbCalcerCUDAProb3()

The file should contain a collection of TH3Ds named "ProductionHeight_" + flavour suffixes, to be defined in [OscProbCalcerSetup][ProductionHeightsHistFlavourSuffixes]. The binning in x (Energy) and y (CosineZ) must be the same specified in the config file under [Binned][FileName]. The heights used for the average correspond to the lower edges of the z-axis bins.

◆ ProductionHeightsHistFlavourSuffixes

std::vector<std::string> OscProbCalcerCUDAProb3::ProductionHeightsHistFlavourSuffixes
private

The flavour suffixes strings of the TH3Ds in ProductionHeightsFile, read from the configuration file under [OscProbCalcerSetup][ProductionHeightsHistFlavourSuffixes] .

◆ propagator

std::unique_ptr< cudaprob3::Propagator< FLOAT_T > > OscProbCalcerCUDAProb3::propagator
private

The instance of the CUDAProb3 Propagator being used in a particular instance of OscProbCalcerCUDAProb3()

◆ UseEarthModelSystematics

bool OscProbCalcerCUDAProb3::UseEarthModelSystematics
private

Option to apply density model systematics in OscProbCalcerCUDAProb3()

◆ UseProductionHeightsAve

bool OscProbCalcerCUDAProb3::UseProductionHeightsAve
private

Option to use Production Heights averaging in a particular instance of OscProbCalcerCUDAProb3()


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