![]() |
NuOscillator
|
Oscillation calculation engine for linear propagation in CHIC. More...
#include <OscProbCalcer_CHIC.h>
Public Types | |
| enum | OscParams { kTH12 , kTH23 , kTH13 , kDM12 , kDM23 , kDCP , kNOscParams } |
| Definition of oscillation parameters which are expected in this CHIC implementation. More... | |
| enum | NuType { Nu =1 , Nubar =-1 } |
| Define the neutrino and antineutrino values expected by this implementation. More... | |
Public Member Functions | |
| OscProbCalcerCHIC (YAML::Node Config_) | |
| Default constructor. | |
| OscProbCalcerCHIC (std::string ConfigName_) | |
| Constructor which takes a file path, creates a YAML::Node and calls the default constructor. | |
| virtual | ~OscProbCalcerCHIC () |
| Destructor. | |
| void | SetupPropagator () final |
| Setup CHIC specific variables. | |
| void | CalculateProbabilities () final |
| Calculate some oscillation probabilities for a particular oscillation parameter set. | |
| void | CalculateProbabilitiesBeam () |
| Calculate oscillation probabilities using Beam. | |
| void | CalculateProbabilitiesAtm () |
| Calculate oscillation probabilities using ATM. | |
| 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. | |
| int | GetNCosineZ () |
| Auxiliary function to handle ignored cosineZ cases. | |
| template<typename Propagator > | |
| void | SetPMNSParameters (Propagator *p) |
| CHIC doesn't have cool inheritance so we need to use template to avoid copy pasting. | |
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 | |
| std::unique_ptr< CHIC > | chic_nu |
| CHIC propagator for neutrinos. | |
| std::unique_ptr< CHIC > | chic_nubar |
| CHIC propagator for antineutrinos. | |
| std::unique_ptr< CHICEARTH > | chicearth_nu |
| CHICEARTH propagator for neutrinos (atmospheric) | |
| std::unique_ptr< CHICEARTH > | chicearth_nubar |
| CHICEARTH propagator for antineutrinos (atmospheric) | |
| std::string | fPremName |
| Name of earth model implemented in CHIC. | |
| double | fDetDepth |
| Double storing the detector depth in km. | |
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 propagation in CHIC.
| OscProbCalcerCHIC::OscProbCalcerCHIC | ( | YAML::Node | Config_ | ) |
Default constructor.
| Config_ | YAML::Node to setup the OscProbCalcerCHIC() instance |
|
inline |
Constructor which takes a file path, creates a YAML::Node and calls the default constructor.
| ConfigName_ | File path to config |
|
virtual |
Destructor.
|
finalvirtual |
Calculate some oscillation probabilities for a particular oscillation parameter set.
Calculator oscillation probabilities in CHIC. This function both calculates and stores the oscillation probabilities in fWeightArray.
Implements OscProbCalcerBase.
| void OscProbCalcerCHIC::CalculateProbabilitiesAtm | ( | ) |
Calculate oscillation probabilities using ATM.
| void OscProbCalcerCHIC::CalculateProbabilitiesBeam | ( | ) |
Calculate oscillation probabilities using Beam.
|
finalvirtual |
Define the size of fWeightArray.
This is implementation specific because because CHIC is setup to calculate all oscillation channels together, whilst others calculate only a single oscillation channel.
Implements OscProbCalcerBase.
| int OscProbCalcerCHIC::GetNCosineZ | ( | ) |
Auxiliary function to handle ignored cosineZ cases.
|
finalvirtual |
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.
| void OscProbCalcerCHIC::SetPMNSParameters | ( | Propagator * | p | ) |
CHIC doesn't have cool inheritance so we need to use template to avoid copy pasting.
|
finalvirtual |
Setup CHIC specific variables.
Implements OscProbCalcerBase.
| std::unique_ptr<CHIC> OscProbCalcerCHIC::chic_nu |
CHIC propagator for neutrinos.
| std::unique_ptr<CHIC> OscProbCalcerCHIC::chic_nubar |
CHIC propagator for antineutrinos.
| std::unique_ptr<CHICEARTH> OscProbCalcerCHIC::chicearth_nu |
CHICEARTH propagator for neutrinos (atmospheric)
| std::unique_ptr<CHICEARTH> OscProbCalcerCHIC::chicearth_nubar |
CHICEARTH propagator for antineutrinos (atmospheric)
| double OscProbCalcerCHIC::fDetDepth |
Double storing the detector depth in km.
| std::string OscProbCalcerCHIC::fPremName |
Name of earth model implemented in CHIC.