NuOscillator
Loading...
Searching...
No Matches
OscProbCalcer_CHIC.h
Go to the documentation of this file.
1#ifndef __OSCILLATOR_CHIC_H__
2#define __OSCILLATOR_CHIC_H__
3
4#include "OscProbCalcerBase.h"
5
6class CHIC;
7class CHICEARTH;
16 public:
17
23 OscProbCalcerCHIC(YAML::Node Config_);
24
30 OscProbCalcerCHIC(std::string ConfigName_) : OscProbCalcerCHIC(YAML::LoadFile(ConfigName_)) {}
31
35 virtual ~OscProbCalcerCHIC();
36
37 // ========================================================================================================================================================================
38 // Functions which need implementation specific code
39
43 void SetupPropagator() final;
44
51 void CalculateProbabilities() final;
52
57
62
73 int ReturnWeightArrayIndex(int NuTypeIndex, int OscNuIndex, int EnergyIndex, int CosineZIndex=-1) final;
74
82 long DefineWeightArraySize() final;
83
87 int GetNCosineZ();
88
92 template <typename Propagator>
93 void SetPMNSParameters(Propagator* p);
94
95 // ========================================================================================================================================================================
96 // Functions which help setup implementation specific code
97
98 // ========================================================================================================================================================================
99 // Variables which are needed for implementation specific code
100
105
109 enum NuType{Nu=1,Nubar=-1};
110
114 std::unique_ptr<CHIC> chic_nu;
115
119 std::unique_ptr<CHIC> chic_nubar;
120
124 std::unique_ptr<CHICEARTH> chicearth_nu;
125
129 std::unique_ptr<CHICEARTH> chicearth_nubar;
130
131
135 std::string fPremName;
136
140 double fDetDepth;
141};
142
143#endif
Oscillation calculation engine (CUDAProb3, ProbGPU, Prob3++, etc.) implementation agnostic base class...
Definition OscProbCalcerBase.h:18
Oscillation calculation engine for linear propagation in CHIC.
Definition OscProbCalcer_CHIC.h:15
std::unique_ptr< CHIC > chic_nu
CHIC propagator for neutrinos.
Definition OscProbCalcer_CHIC.h:114
void CalculateProbabilities() final
Calculate some oscillation probabilities for a particular oscillation parameter set.
Definition OscProbCalcer_CHIC.cpp:134
int GetNCosineZ()
Auxiliary function to handle ignored cosineZ cases.
Definition OscProbCalcer_CHIC.cpp:150
OscProbCalcerCHIC(std::string ConfigName_)
Constructor which takes a file path, creates a YAML::Node and calls the default constructor.
Definition OscProbCalcer_CHIC.h:30
OscProbCalcerCHIC(YAML::Node Config_)
Default constructor.
Definition OscProbCalcer_CHIC.cpp:7
std::unique_ptr< CHIC > chic_nubar
CHIC propagator for antineutrinos.
Definition OscProbCalcer_CHIC.h:119
long DefineWeightArraySize() final
Define the size of fWeightArray.
Definition OscProbCalcer_CHIC.cpp:159
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 oscil...
Definition OscProbCalcer_CHIC.cpp:154
OscParams
Definition of oscillation parameters which are expected in this CHIC implementation.
Definition OscProbCalcer_CHIC.h:104
@ kDM23
Definition OscProbCalcer_CHIC.h:104
@ kNOscParams
Definition OscProbCalcer_CHIC.h:104
@ kDCP
Definition OscProbCalcer_CHIC.h:104
@ kTH13
Definition OscProbCalcer_CHIC.h:104
@ kDM12
Definition OscProbCalcer_CHIC.h:104
@ kTH23
Definition OscProbCalcer_CHIC.h:104
@ kTH12
Definition OscProbCalcer_CHIC.h:104
virtual ~OscProbCalcerCHIC()
Destructor.
Definition OscProbCalcer_CHIC.cpp:41
std::unique_ptr< CHICEARTH > chicearth_nubar
CHICEARTH propagator for antineutrinos (atmospheric)
Definition OscProbCalcer_CHIC.h:129
double fDetDepth
Double storing the detector depth in km.
Definition OscProbCalcer_CHIC.h:140
void CalculateProbabilitiesBeam()
Calculate oscillation probabilities using Beam.
Definition OscProbCalcer_CHIC.cpp:77
void SetupPropagator() final
Setup CHIC specific variables.
Definition OscProbCalcer_CHIC.cpp:45
void CalculateProbabilitiesAtm()
Calculate oscillation probabilities using ATM.
Definition OscProbCalcer_CHIC.cpp:110
void SetPMNSParameters(Propagator *p)
CHIC doesn't have cool inheritance so we need to use template to avoid copy pasting.
Definition OscProbCalcer_CHIC.cpp:65
std::unique_ptr< CHICEARTH > chicearth_nu
CHICEARTH propagator for neutrinos (atmospheric)
Definition OscProbCalcer_CHIC.h:124
NuType
Define the neutrino and antineutrino values expected by this implementation.
Definition OscProbCalcer_CHIC.h:109
@ Nu
Definition OscProbCalcer_CHIC.h:109
@ Nubar
Definition OscProbCalcer_CHIC.h:109
std::string fPremName
Name of earth model implemented in CHIC.
Definition OscProbCalcer_CHIC.h:135