![]() |
NuOscillator
|
Oscillation calculation engine for linear and atmospheric propagation in CUDAProb3. More...
#include <OscProbCalcer_CUDAProb3.h>
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. | |
Oscillation calculation engine for linear and atmospheric propagation in CUDAProb3.
|
private |
|
private |
| OscProbCalcerCUDAProb3::OscProbCalcerCUDAProb3 | ( | YAML::Node | Config_ | ) |
Default constructor.
| Config_ | YAML::Node to setup the OscProbCalcerNuCUDAProb3() instance |
|
inline |
Constructor which takes a file path, creates a YAML::Node and calls the default constructor.
| ConfigName_ | File path to config |
|
virtual |
Destructor.
|
private |
Apply a new set of parameters to set the density model of the Earth in CUDAProb3.
|
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.
|
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.
Implements OscProbCalcerBase.
|
finalprivatevirtual |
Return implementation specific index in the weight array for a specific combination of neutrino oscillation channel, energy and cosine zenith.
| NuTypeIndex | The index in fNeutrinoTypes (neutrino/antinuetrino) to return the pointer for |
| OscChanIndex | The index in fOscillationChannels to return the pointer for |
| EnergyIndex | The index in fEnergyArray to return the pointer for |
| CosineZIndex | The index in fCosineZArray to return the pointer for |
Implements OscProbCalcerBase.
|
private |
Set the variables needed to use the production heights averaging.
|
finalprivatevirtual |
Setup CUDAProb3 specific variables.
Setup the cudaprob3::Propagator instance and set all of the variables that it needs like EarthModel etc.
Implements OscProbCalcerBase.
|
private |
Pointer to the array used for copying oscillation probabilities.
|
private |
Size of the array to be copied.
|
private |
The name of the Earth Density file being used in a particular instance of OscProbCalcerCUDAProb3()
|
private |
Number of Earth layers.
|
private |
The number of threads being used to perform the calculation.
|
private |
The mapping of the oscillation channels defined in fOscillationChannels to the CUDAProb3 constants.
|
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.
|
private |
The flavour suffixes strings of the TH3Ds in ProductionHeightsFile, read from the configuration file under [OscProbCalcerSetup][ProductionHeightsHistFlavourSuffixes] .
|
private |
The instance of the CUDAProb3 Propagator being used in a particular instance of OscProbCalcerCUDAProb3()
|
private |
Option to apply density model systematics in OscProbCalcerCUDAProb3()
|
private |
Option to use Production Heights averaging in a particular instance of OscProbCalcerCUDAProb3()