Classes | Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | List of all members
osc::OscCalcGeneral Class Referenceabstract

More generic (but probably slower) oscillation calculations. More...

#include "/cvmfs/nova.opensciencegrid.org/externals/osclib/v00.07/src/OscLib/OscCalcGeneral.h"

Inheritance diagram for osc::OscCalcGeneral:
osc::_IOscCalcAdjustable< T > osc::_IOscCalc< T >

Classes

struct  Priv
 

Public Member Functions

 OscCalcGeneral ()
 
virtual ~OscCalcGeneral ()
 
virtual IOscCalcAdjustableCopy () const override
 
virtual void SetL (double L) override
 
virtual void SetRho (double rho) override
 
virtual void SetDmsq21 (const double &dmsq21) override
 
virtual void SetDmsq32 (const double &dmsq32) override
 
virtual void SetTh12 (const double &th12) override
 
virtual void SetTh13 (const double &th13) override
 
virtual void SetTh23 (const double &th23) override
 
virtual void SetdCP (const double &dCP) override
 
void SetNSIEpsilonMuTau (double emutau)
 
double GetNSIEpsilonMuTau () const
 
virtual double P (int from, int to, double E) override
 E in GeV; flavors as PDG codes (so, neg==>antinu) More...
 
virtual TMD5 * GetParamsHash () const override
 Use to check two calculators are in the same state. More...
 
virtual void SetDmsq21 (const T &dmsq21)=0
 
virtual void SetDmsq32 (const T &dmsq32)=0
 
virtual void SetTh12 (const T &th12)=0
 
virtual void SetTh13 (const T &th13)=0
 
virtual void SetTh23 (const T &th23)=0
 
virtual void SetdCP (const T &dCP)=0
 
virtual double GetL () const
 
virtual double GetRho () const
 
virtual T GetDmsq21 () const
 
virtual T GetDmsq32 () const
 
virtual T GetTh12 () const
 
virtual T GetTh13 () const
 
virtual T GetTh23 () const
 
virtual T GetdCP () const
 
virtual void InvalidateCache ()
 Invalidate any caching used internally by the calculator. More...
 
virtual Eigen::Array< T, Eigen::Dynamic, 1 > P (int flavBefore, int flavAfter, const std::vector< double > &E)
 
virtual Eigen::Array< T, Eigen::Dynamic, 1 > P (int flavBefore, int flavAfter, const Eigen::ArrayXd &E)
 

Protected Member Functions

TMD5 * GetParamsHashDefault (const std::string &txt) const
 This is only a safe implementation if your calculator only depends on these eight parameters. More...
 

Protected Attributes

Privd
 
double fRho
 
double fL
 
T fDmsq21
 
T fDmsq32
 
T fTh12
 
T fTh13
 
T fTh23
 
T fdCP
 

Private Member Functions

 OscCalcGeneral (const OscCalcGeneral &)=default
 
OscCalcGeneraloperator= (const OscCalcGeneral &)=default
 

Detailed Description

More generic (but probably slower) oscillation calculations.

Calculates the oscillation probabilities from first principles (constructs the Hamiltonian and exponentiates it). The usual oscillation calculator (a power expansion of the exponentiation in alpha and sin(th13)) is probably faster, but this implementation has the advantages of simplicity and flexibility. A simple non-standard-interactions model is included. Addition of a general four-flavour sterile neutrino model, or inclusion of varying matter densities would be relatively trivial. Also, it's always nice to have cross-checks.

Definition at line 19 of file OscCalcGeneral.h.

Constructor & Destructor Documentation

osc::OscCalcGeneral::OscCalcGeneral ( )

Definition at line 60 of file OscCalcGeneral.cxx.

Referenced by Copy().

61  : d(new OscCalcGeneral::Priv)
62  {
63  }
osc::OscCalcGeneral::~OscCalcGeneral ( )
virtual

Definition at line 65 of file OscCalcGeneral.cxx.

References d.

66  {
67  delete d;
68  }
osc::OscCalcGeneral::OscCalcGeneral ( const OscCalcGeneral )
privatedefault

Member Function Documentation

IOscCalcAdjustable * osc::OscCalcGeneral::Copy ( ) const
overridevirtual

Implements osc::_IOscCalcAdjustable< T >.

Definition at line 70 of file OscCalcGeneral.cxx.

References d, OscCalcGeneral(), and runNovaSAM::ret.

71  {
72  OscCalcGeneral* ret = new OscCalcGeneral(*this);
73  ret->d = new Priv;
74  *ret->d = *d;
75  return ret;
76  }
template<typename T>
virtual T osc::_IOscCalcAdjustable< T >::GetdCP ( ) const
inlinevirtualinherited
template<typename T>
virtual T osc::_IOscCalcAdjustable< T >::GetDmsq21 ( ) const
inlinevirtualinherited
template<typename T>
virtual T osc::_IOscCalcAdjustable< T >::GetDmsq32 ( ) const
inlinevirtualinherited
template<typename T>
virtual double osc::_IOscCalcAdjustable< T >::GetL ( ) const
inlinevirtualinherited
double osc::OscCalcGeneral::GetNSIEpsilonMuTau ( ) const

Definition at line 125 of file OscCalcGeneral.cxx.

References d, and osc::OscCalcGeneral::Priv::emutau.

Referenced by SetDmsq32().

126  {
127  return d->emutau;
128  }
TMD5 * osc::OscCalcGeneral::GetParamsHash ( ) const
overridevirtual

Use to check two calculators are in the same state.

Returns
Null means not implemented for this calculator

Reimplemented from osc::_IOscCalc< T >.

Definition at line 130 of file OscCalcGeneral.cxx.

References d, osc::OscCalcGeneral::Priv::emutau, and osc::_IOscCalcAdjustable< double >::GetParamsHashDefault().

Referenced by SetDmsq32().

131  {
132  // Default isn't good enough if we need to consider NSI
133  if(d->emutau) return 0;
135  }
TMD5 * GetParamsHashDefault(const std::string &txt) const
This is only a safe implementation if your calculator only depends on these eight parameters...
template<typename T >
TMD5 * osc::_IOscCalcAdjustable< T >::GetParamsHashDefault ( const std::string txt) const
protectedinherited

This is only a safe implementation if your calculator only depends on these eight parameters.

Parameters
txtA string to uniquely identify your calculator class

Definition at line 49 of file IOscCalc.cxx.

References runNovaSAM::ret, and T.

Referenced by osc::_OscCalcPMNS< T >::GetParamsHash(), osc::_OscCalcPMNSOpt< T >::GetParamsHash(), and osc::analytic::_OscCalc< T >::GetParamsHash().

50  {
51  TMD5* ret = new TMD5;
52  ret->Update((unsigned char*)txt.c_str(), txt.size());
53  const int kNumParams = 8;
54  T buf[kNumParams] = {fRho, fL, fDmsq21, fDmsq32,
55  fTh12, fTh13, fTh23, fdCP};
56  ret->Update((unsigned char*)buf, sizeof(T)*kNumParams);
57  ret->Final();
58  return ret;
59  }
double T
Definition: Xdiff_gwt.C:5
template<typename T>
virtual double osc::_IOscCalcAdjustable< T >::GetRho ( ) const
inlinevirtualinherited

Reimplemented in osc::OscCalcCPT, and osc::OscCalcSterile.

Definition at line 89 of file IOscCalc.h.

Referenced by osc::CopyParams(), osc::OscCalcCPT::GetRho(), ana::ResetSterileCalcToDefault(), and ana::SaveTo().

89 { return fRho ; }
template<typename T>
virtual T osc::_IOscCalcAdjustable< T >::GetTh12 ( ) const
inlinevirtualinherited
template<typename T>
virtual T osc::_IOscCalcAdjustable< T >::GetTh13 ( ) const
inlinevirtualinherited
template<typename T>
virtual T osc::_IOscCalcAdjustable< T >::GetTh23 ( ) const
inlinevirtualinherited
template<typename T>
virtual void osc::_IOscCalcAdjustable< T >::InvalidateCache ( )
inlinevirtualinherited

Invalidate any caching used internally by the calculator.

Some calculators use a cache that can become stale in ways that the calculator may not know about (e.g., Stan var clearing). Default implementation does nothing.

Reimplemented in osc::_OscCalcDMP< T >.

Definition at line 102 of file IOscCalc.h.

102 {};
OscCalcGeneral& osc::OscCalcGeneral::operator= ( const OscCalcGeneral )
privatedefault
template<class T >
Eigen::Array< T, Eigen::Dynamic, 1 > osc::_IOscCalc< T >::P ( int  flavBefore,
int  flavAfter,
const std::vector< double > &  E 
)
virtualinherited

Default implementation forwards to non-vector version using a simple loop. Override if your calculator has a more efficient implementation.

Reimplemented in osc::analytic::_OscCalc< T >, osc::OscCalcPMNSOptEigen, and osc::_OscCalcDMP< T >.

Definition at line 27 of file IOscCalc.cxx.

References MECModelEnuComparisons::i, osc::_IOscCalc< T >::P(), runNovaSAM::ret, and submit_hadd::u.

Referenced by osc::_IOscCalc< T >::P().

28  {
29  Eigen::Matrix<T,Eigen::Dynamic,1> ret(E.size());
30  for(auto i = 0u; i < E.size(); i++) {
31  ret(i) = this->P(flavBefore, flavAfter, E[i]);
32  }
33  return ret.array().isNaN().select(0, ret);
34  }
Float_t E
Definition: plot.C:20
virtual T P(int flavBefore, int flavAfter, double E)=0
E in GeV; flavors as PDG codes (so, neg==>antinu)
template<class T >
Eigen::Array< T, Eigen::Dynamic, 1 > osc::_IOscCalc< T >::P ( int  flavBefore,
int  flavAfter,
const Eigen::ArrayXd &  E 
)
virtualinherited

Default implementation forawrds to vector<double> version. Override if your calculator has a more efficient implementation.

Reimplemented in osc::analytic::_OscCalc< T >.

Definition at line 37 of file IOscCalc.cxx.

References P.

38  {
39  return P(flavBefore, flavAfter, std::vector<double>(&E[0], &E[0]+E.size()));
40  }
Float_t E
Definition: plot.C:20
virtual T P(int flavBefore, int flavAfter, double E)=0
E in GeV; flavors as PDG codes (so, neg==>antinu)
double osc::OscCalcGeneral::P ( int  flavBefore,
int  flavAfter,
double  E 
)
overridevirtual

E in GeV; flavors as PDG codes (so, neg==>antinu)

Implements osc::_IOscCalc< T >.

Definition at line 234 of file OscCalcGeneral.cxx.

References abs(), ana::assert(), osc::conjugate_elements(), d, osc::OscCalcGeneral::Priv::emutau, osc::EvolveState(), osc::_IOscCalcAdjustable< T >::fDmsq21, osc::_IOscCalcAdjustable< T >::fDmsq32, osc::_IOscCalcAdjustable< T >::fL, osc::_IOscCalcAdjustable< T >::fRho, osc::GetPMNS(), osc::MatterHamiltonianComponent(), norm, and osc::VacuumHamiltonian().

Referenced by SetDmsq32().

235  {
236  const int af = abs(from);
237  const int at = abs(to);
238  assert(af == 12 || af == 14 || af == 16);
239  assert(at == 12 || at == 14 || at == 16);
240 
241  // No matter<->antimatter transitions
242  if(af*at < 0) return 0;
243 
244  ComplexMat U = GetPMNS(d);
245  // P(a->b|U) = P(abar->bbar|U*)
246  if(from < 0) conjugate_elements(U);
247 
248  ComplexVec initState = UnitVec(kNumFlavours, 1); // Display accelerator bias
249  if(af == 12) initState = UnitVec(kNumFlavours, 0);
250  if(af == 16) initState = UnitVec(kNumFlavours, 2);
251 
252  std::vector<long double> mSq;
253  mSq.push_back(0);
254  mSq.push_back(fDmsq21);
255  mSq.push_back(fDmsq21 + fDmsq32);
256 
257  ComplexMat H = VacuumHamiltonian(U, mSq, E);
259  // So far, contribution to the antineutrino Hamiltonian is just the negative
260  // If there were to be any complex stuff here, would have to think about
261  // how it transformed with antineutrinos.
262  if(from < 0) H += -1*Hm; else H += Hm;
263 
264  ComplexVec finalState = EvolveState(initState, H, fL);
265 
266  if(at == 12) return std::norm(finalState(0));
267  if(at == 14) return std::norm(finalState(1));
268  if(at == 16) return std::norm(finalState(2));
269 
270  assert(0 && "Not reached");
271 
272  // should never get to this point, but it quiets a compiler error
273  // a probability of 0 will be so obviously wrong that it should
274  // alert people - ie every probability will be 0
275  return 0.;
276  }
ComplexMat MatterHamiltonianComponent(long double Ne, long double emutau)
ComplexMat VacuumHamiltonian(const ComplexMat &U, const std::vector< long double > &mSq, long double E)
void conjugate_elements(ComplexMat &m)
void abs(TH1 *hist)
ublas::unit_vector< val_t, alloc_t > UnitVec
Float_t E
Definition: plot.C:20
ublas::bounded_matrix< val_t, kNumFlavours, kNumFlavours > ComplexMat
const unsigned int kNumFlavours
Float_t norm
assert(nhit_max >=nhit_nbins)
ublas::c_vector< val_t, kNumFlavours > ComplexVec
ComplexVec EvolveState(ComplexVec A, const ComplexMat &H, long double L)
ComplexMat GetPMNS(OscCalcGeneral::Priv *d)
void osc::OscCalcGeneral::SetdCP ( const double &  dCP)
overridevirtual

Definition at line 108 of file OscCalcGeneral.cxx.

References osc::OscCalcGeneral::Priv::c13, d, delta, osc::OscCalcGeneral::Priv::dirty, osc::_IOscCalcAdjustable< T >::fdCP, osc::OscCalcGeneral::Priv::phase, osc::OscCalcGeneral::Priv::react, and osc::OscCalcGeneral::Priv::s13.

Referenced by SetDmsq32().

109  {
110  fdCP = delta;
111 
112  d->phase = std::polar((long double)1, -(long double)delta);
113 
114  d->react(2, 2) = d->react(0, 0) = d->c13;
115  d->react(0, 2) = d->s13*d->phase;
116  d->react(2, 0) = -std::conj(d->react(0, 2));
117  d->dirty = true;
118  }
double delta
Definition: runWimpSim.h:98
std::complex< long double > phase
template<typename T>
virtual void osc::_IOscCalcAdjustable< T >::SetdCP ( const T dCP)
pure virtualinherited
virtual void osc::OscCalcGeneral::SetDmsq21 ( const double &  dmsq21)
inlineoverridevirtual

Definition at line 33 of file OscCalcGeneral.h.

References osc::_IOscCalcAdjustable< T >::fDmsq21.

33 {fDmsq21 = dmsq21;}
template<typename T>
virtual void osc::_IOscCalcAdjustable< T >::SetDmsq21 ( const T dmsq21)
pure virtualinherited
virtual void osc::OscCalcGeneral::SetDmsq32 ( const double &  dmsq32)
inlineoverridevirtual
template<typename T>
virtual void osc::_IOscCalcAdjustable< T >::SetDmsq32 ( const T dmsq32)
pure virtualinherited

Implemented in osc::analytic::_OscCalc< T >, osc::OscCalcPMNSOptEigen, osc::OscCalcCPT, osc::OscCalcSterile, osc::_OscCalcDMP< T >, osc::_OscCalcPMNSOpt< T >, osc::_OscCalcPMNS< T >, and osc::OscCalcPMNS_NSI.

Referenced by CAF_makeCAFSensitivities_for_FNEX(), CalcRWithSystsNus17(), ComparePredictions(), osc::CopyParams(), default_calc(), demoFitContours(), demoFitSlices(), demoPlotSystBands(), genie_contours(), getContProf(), getContProf_Sensitivity(), getHists_FNEX(), joint_fit_2017_contours(), joint_fit_2017_slices(), joint_fit_2018_contours(), joint_fit_2018_slices(), joint_fit_2019_bestfit(), joint_fit_2019_contours(), joint_fit_2019_slices(), joint_fit_future_contour_univ(), jointsensitivity(), ana::LoadFrom< osc::IOscCalcAdjustable >(), make_extrap_figure(), make_extrap_figure_hists(), make_prediction_extrap(), make_prediction_noextrap(), make_prediction_tables(), make_surfprof(), make_surfprof_sensitivity(), MakeCAFSensitivities_for_FNEX(), makePredTables(), monoprob(), plot_datamcpred(), plot_nue_xsec_pred(), plot_oscprob(), plot_predictions(), plotDataPred(), plotDataPred_SplitCanvas(), Plotting_DataAndPrediction(), PredRatioToNom(), resetCalc(), ResetCalc(), mcmc_ana::ResetCalculator(), test::ResetCalculator(), mcmc::ResetCalculator(), ana::ResetOscCalcToDefault(), ana::ResetOscCalcToDefaultIH(), ResetOscCalcToMyDefault(), ana::ResetOscCalcToTemplate(), RestartCalculator(), run_joint_fit_2020_bestfit(), run_joint_fit_2020_contours(), run_joint_fit_2020_slices(), saveFDMCHists(), sensitivity2018(), sensitivity2020(), osc::OscCalcCPT::SetDmsq32(), SetHierarchy(), SetOscillationParameters(), cmf::ShifterAndWeighter::SetOscillationVals(), ana::FitDmSq32::SetValue(), ana::FitDmSq32Scaled::SetValue(), ana::FitDmSq32NormalHierarchy::SetValue(), ana::FitDmSq32ScaledNH::SetValue(), ana::FitDmSq32ScaledIH::SetValue(), ana::FitDmSq32InvertedHierarchy::SetValue(), systematics_extrap_comp_from_pred_interp(), systematics_summary_from_pred_interp(), Tutorial2019FitContours(), and Tutorial2019FitSlices().

virtual void osc::OscCalcGeneral::SetL ( double  L)
inlineoverridevirtual

Implements osc::_IOscCalcAdjustable< T >.

Definition at line 29 of file OscCalcGeneral.h.

References osc::_IOscCalcAdjustable< T >::fL, and CLHEP::L.

29 {fL = L;}
static constexpr double L
void osc::OscCalcGeneral::SetNSIEpsilonMuTau ( double  emutau)

Definition at line 120 of file OscCalcGeneral.cxx.

References d, and osc::OscCalcGeneral::Priv::emutau.

Referenced by SetDmsq32().

121  {
122  d->emutau = emutau;
123  }
virtual void osc::OscCalcGeneral::SetRho ( double  rho)
inlineoverridevirtual

Implements osc::_IOscCalcAdjustable< T >.

Definition at line 31 of file OscCalcGeneral.h.

References osc::_IOscCalcAdjustable< T >::fRho.

31 {fRho = rho;}
void osc::OscCalcGeneral::SetTh12 ( const double &  th12)
overridevirtual

Definition at line 99 of file OscCalcGeneral.cxx.

References std::cos(), d, osc::OscCalcGeneral::Priv::dirty, osc::_IOscCalcAdjustable< T >::fTh12, std::sin(), osc::OscCalcGeneral::Priv::solar, and th12.

Referenced by SetDmsq32().

100  {
101  fTh12 = th12;
102  d->solar(1, 1) = d->solar(0, 0) = cos(th12);
103  d->solar(0, 1) = sin(th12);
104  d->solar(1, 0) = -d->solar(0, 1);
105  d->dirty = true;
106  }
double th12
Definition: runWimpSim.h:98
T sin(T number)
Definition: d0nt_math.hpp:132
T cos(T number)
Definition: d0nt_math.hpp:78
template<typename T>
virtual void osc::_IOscCalcAdjustable< T >::SetTh12 ( const T th12)
pure virtualinherited
void osc::OscCalcGeneral::SetTh13 ( const double &  th13)
overridevirtual

Definition at line 87 of file OscCalcGeneral.cxx.

References osc::OscCalcGeneral::Priv::c13, std::cos(), d, osc::OscCalcGeneral::Priv::dirty, osc::_IOscCalcAdjustable< T >::fTh13, osc::OscCalcGeneral::Priv::phase, osc::OscCalcGeneral::Priv::react, osc::OscCalcGeneral::Priv::s13, std::sin(), and th13.

Referenced by SetDmsq32().

88  {
89  fTh13 = th13;
90  d->c13 = cos(th13);
91  d->s13 = sin(th13);
92 
93  d->react(2, 2) = d->react(0, 0) = d->c13;
94  d->react(0, 2) = d->s13*d->phase;
95  d->react(2, 0) = -std::conj(d->react(0, 2));
96  d->dirty = true;
97  }
std::complex< long double > phase
T sin(T number)
Definition: d0nt_math.hpp:132
T cos(T number)
Definition: d0nt_math.hpp:78
double th13
Definition: runWimpSim.h:98
template<typename T>
virtual void osc::_IOscCalcAdjustable< T >::SetTh13 ( const T th13)
pure virtualinherited
void osc::OscCalcGeneral::SetTh23 ( const double &  th23)
overridevirtual

Definition at line 78 of file OscCalcGeneral.cxx.

References osc::OscCalcGeneral::Priv::atmos, std::cos(), d, osc::OscCalcGeneral::Priv::dirty, osc::_IOscCalcAdjustable< T >::fTh23, std::sin(), and th23.

Referenced by SetDmsq32().

79  {
80  fTh23 = th23;
81  d->atmos(2, 2) = d->atmos(1, 1) = cos(th23);
82  d->atmos(1, 2) = sin(th23);
83  d->atmos(2, 1) = -d->atmos(1, 2);
84  d->dirty = true;
85  }
double th23
Definition: runWimpSim.h:98
T sin(T number)
Definition: d0nt_math.hpp:132
T cos(T number)
Definition: d0nt_math.hpp:78
template<typename T>
virtual void osc::_IOscCalcAdjustable< T >::SetTh23 ( const T th23)
pure virtualinherited

Implemented in osc::analytic::_OscCalc< T >, osc::OscCalcPMNSOptEigen, osc::OscCalcCPT, osc::OscCalcSterile, osc::_OscCalcDMP< T >, osc::_OscCalcPMNSOpt< T >, osc::_OscCalcPMNS< T >, and osc::OscCalcPMNS_NSI.

Referenced by CalcRWithSystsNus17(), ComparePredictions(), osc::CopyParams(), default_calc(), demoPlotSystBands(), genie_contours(), getContProf(), getContProf_Sensitivity(), joint_fit_2018_slices(), joint_fit_2019_bestfit(), joint_fit_2019_slices(), jointsensitivity(), ana::LoadFrom< osc::IOscCalcAdjustable >(), make_extrap_figure(), make_extrap_figure_hists(), make_prediction_extrap(), make_prediction_noextrap(), make_prediction_tables(), make_surfprof(), make_surfprof_sensitivity(), makePredTables(), monoprob(), plot_datamcpred(), plot_nue_xsec_pred(), plot_oscprob(), plot_predictions(), plotDataPred(), plotDataPred_SplitCanvas(), Plotting_DataAndPrediction(), PredRatioToNom(), resetCalc(), ResetCalc(), mcmc_ana::ResetCalculator(), test::ResetCalculator(), mcmc::ResetCalculator(), ana::ResetOscCalcToDefault(), ResetOscCalcToMyDefault(), ana::ResetOscCalcToTemplate(), RestartCalculator(), run_joint_fit_2020_bestfit(), saveFDMCHists(), sensitivity2018(), sensitivity2020(), SetOscillationParameters(), cmf::ShifterAndWeighter::SetOscillationVals(), osc::OscCalcCPT::SetTh23(), ana::FitSinSqTheta23::SetValue(), FitSinSqTheta23UO::SetValue(), ana::FitSinSqTheta23UpperOctant::SetValue(), FitSinSqTheta23LO::SetValue(), ana::FitSinSqTheta23LowerOctant::SetValue(), ana::FitSinSq2Theta23::SetValue(), FitSinSqTheta23MaxMix::SetValue(), FitSinSqTheta23LowerOctant::SetValue(), FitSinSqTheta23UpperOctant::SetValue(), systematics_extrap_comp_from_pred_interp(), and systematics_summary_from_pred_interp().

Member Data Documentation

Priv* osc::OscCalcGeneral::d
protected
template<typename T>
T osc::_IOscCalcAdjustable< T >::fdCP
protectedinherited
template<typename T>
T osc::_IOscCalcAdjustable< T >::fDmsq21
protectedinherited
template<typename T>
T osc::_IOscCalcAdjustable< T >::fDmsq32
protectedinherited
template<typename T>
double osc::_IOscCalcAdjustable< T >::fL
protectedinherited
template<typename T>
double osc::_IOscCalcAdjustable< T >::fRho
protectedinherited
template<typename T>
T osc::_IOscCalcAdjustable< T >::fTh12
protectedinherited
template<typename T>
T osc::_IOscCalcAdjustable< T >::fTh13
protectedinherited
template<typename T>
T osc::_IOscCalcAdjustable< T >::fTh23
protectedinherited

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