NuOscillator
Loading...
Searching...
No Matches
OscProbCalcer_CUDAProb3.h
Go to the documentation of this file.
1#ifndef __OSCILLATOR_CUDAPROB3_H__
2#define __OSCILLATOR_CUDAPROB3_H__
3
4#include "OscProbCalcerBase.h"
5#include "TH2D.h"
6#include "TH3D.h"
7#include "TFile.h"
8
9#include <memory>
10
11// ==================================================================
15namespace cudaprob3 { template<typename T> class Propagator;}
16// ==================================================================
17
26 public:
32 OscProbCalcerCUDAProb3(YAML::Node Config_);
33
39 OscProbCalcerCUDAProb3(std::string ConfigName_) : OscProbCalcerCUDAProb3(YAML::LoadFile(ConfigName_)) {}
40
45
46 private:
47 // ========================================================================================================================================================================
48 // Functions which need implementation specific code
49
55 void SetupPropagator() final;
56
63 void CalculateProbabilities() final;
64
75 int ReturnWeightArrayIndex(int NuTypeIndex, int OscChanIndex, int EnergyIndex, int CosineZIndex=-1) final;
76
84 long DefineWeightArraySize() final;
85
86 // ========================================================================================================================================================================
87 //Functions which help setup implementation specific code
88
93
98 // ========================================================================================================================================================================
99 // Variables which are needed for implementation specific code
100
105
109 enum NuType{Nubar=-1, Nu=1};
110
114 std::vector<int> OscChannels;
115
120
124 std::unique_ptr< cudaprob3::Propagator< FLOAT_T > > propagator;
125
129 std::string EarthDensityFile;
130
135
144
148 std::vector<std::string> ProductionHeightsHistFlavourSuffixes;
149
154
159
164
169
170};
171
172#endif
float FLOAT_T
Definition OscillatorConstants.h:16
Oscillation calculation engine (CUDAProb3, ProbGPU, Prob3++, etc.) implementation agnostic base class...
Definition OscProbCalcerBase.h:18
Oscillation calculation engine for linear and atmospheric propagation in CUDAProb3.
Definition OscProbCalcer_CUDAProb3.h:25
void CalculateProbabilities() final
Calculate some oscillation probabilities for a particular oscillation parameter set.
Definition OscProbCalcer_CUDAProb3.cpp:126
int CopyArrSize
Size of the array to be copied.
Definition OscProbCalcer_CUDAProb3.h:163
std::vector< int > OscChannels
The mapping of the oscillation channels defined in fOscillationChannels to the CUDAProb3 constants.
Definition OscProbCalcer_CUDAProb3.h:114
std::string ProductionHeightsFile
The name of the Production Heights file being used in a particular instance of OscProbCalcerCUDAProb3...
Definition OscProbCalcer_CUDAProb3.h:143
int nLayers
Number of Earth layers.
Definition OscProbCalcer_CUDAProb3.h:158
long DefineWeightArraySize() final
Define the size of fWeightArray.
Definition OscProbCalcer_CUDAProb3.cpp:185
bool UseEarthModelSystematics
Option to apply density model systematics in OscProbCalcerCUDAProb3()
Definition OscProbCalcer_CUDAProb3.h:153
std::vector< std::string > ProductionHeightsHistFlavourSuffixes
The flavour suffixes strings of the TH3Ds in ProductionHeightsFile, read from the configuration file ...
Definition OscProbCalcer_CUDAProb3.h:148
bool UseProductionHeightsAve
Option to use Production Heights averaging in a particular instance of OscProbCalcerCUDAProb3()
Definition OscProbCalcer_CUDAProb3.h:134
void ApplyEarthModelSystematics()
Apply a new set of parameters to set the density model of the Earth in CUDAProb3.
Definition OscProbCalcer_CUDAProb3.cpp:304
OscParams
Definition of oscillation parameters which are expected in this CUDAProb3 implementation.
Definition OscProbCalcer_CUDAProb3.h:104
@ kDM23
Definition OscProbCalcer_CUDAProb3.h:104
@ kPRODH
Definition OscProbCalcer_CUDAProb3.h:104
@ kTH13
Definition OscProbCalcer_CUDAProb3.h:104
@ kDM12
Definition OscProbCalcer_CUDAProb3.h:104
@ kTH12
Definition OscProbCalcer_CUDAProb3.h:104
@ kDCP
Definition OscProbCalcer_CUDAProb3.h:104
@ kTH23
Definition OscProbCalcer_CUDAProb3.h:104
@ kNOscParams
Definition OscProbCalcer_CUDAProb3.h:104
void SetupPropagator() final
Setup CUDAProb3 specific variables.
Definition OscProbCalcer_CUDAProb3.cpp:92
std::unique_ptr< cudaprob3::Propagator< FLOAT_T > > propagator
The instance of the CUDAProb3 Propagator being used in a particular instance of OscProbCalcerCUDAProb...
Definition OscProbCalcer_CUDAProb3.h:124
virtual ~OscProbCalcerCUDAProb3()
Destructor.
Definition OscProbCalcer_CUDAProb3.cpp:88
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 oscil...
Definition OscProbCalcer_CUDAProb3.cpp:180
NuType
Define the neutrino and antineutrino values expected by this implementation.
Definition OscProbCalcer_CUDAProb3.h:109
@ Nu
Definition OscProbCalcer_CUDAProb3.h:109
@ Nubar
Definition OscProbCalcer_CUDAProb3.h:109
void SetProductionHeightsAveraging()
Set the variables needed to use the production heights averaging.
Definition OscProbCalcer_CUDAProb3.cpp:190
int nThreads
The number of threads being used to perform the calculation.
Definition OscProbCalcer_CUDAProb3.h:119
OscProbCalcerCUDAProb3(YAML::Node Config_)
Default constructor.
Definition OscProbCalcer_CUDAProb3.cpp:16
FLOAT_T * CopyArr
Pointer to the array used for copying oscillation probabilities.
Definition OscProbCalcer_CUDAProb3.h:168
std::string EarthDensityFile
The name of the Earth Density file being used in a particular instance of OscProbCalcerCUDAProb3()
Definition OscProbCalcer_CUDAProb3.h:129
OscProbCalcerCUDAProb3(std::string ConfigName_)
Constructor which takes a file path, creates a YAML::Node and calls the default constructor.
Definition OscProbCalcer_CUDAProb3.h:39
Definition OscProbCalcer_CUDAProb3.h:15
Includes specific to CUDAProb3 implementation.
Definition OscProbCalcer_CUDAProb3.h:15