Line data Source code
1 : /** 2 : \file dipmodel_iface.cpp 3 : 4 : Bojan Nikolic <b.nikolic@mrao.cam.ac.uk>, <bojan@bnikolic.co.uk> 5 : 6 : Renamed dipmodel_iface.cc 2023 7 : 8 : */ 9 : 10 : #include "dipmodel_iface.h" 11 : 12 : #include <cmath> 13 : 14 : namespace LibAIR2 { 15 : 16 0 : PPDipModel::PPDipModel(WVRAtmoQuantModel * am): 17 0 : _n(0), 18 0 : _za(0), 19 0 : _nam(NULL), 20 0 : _am(am) 21 : { 22 0 : std::vector< Minim::DParamCtr > pars; 23 0 : am->AddParams(pars); 24 0 : for( size_t i =0 ; i < pars.size() ; ++i) 25 0 : if(pars[i].name == "n") 26 0 : _nam=pars[i].p; 27 0 : } 28 : 29 0 : PPDipModel::~PPDipModel() 30 : { 31 0 : } 32 : 33 0 : void PPDipModel::setPars(void) const 34 : { 35 0 : *_nam = ( _n / cos(_za) ); 36 0 : } 37 : 38 0 : void PPDipModel::setZA(double za) 39 : { 40 0 : _za=za; 41 0 : } 42 : 43 0 : double PPDipModel::eval(size_t ch) const 44 : { 45 0 : setPars(); 46 0 : return _am->eval(ch); 47 : } 48 : 49 0 : void PPDipModel::eval(std::vector<double> & res) const 50 : { 51 0 : setPars(); 52 0 : _am->eval(res); 53 0 : } 54 : 55 0 : double PPDipModel::dTdc (size_t ch) const 56 : { 57 0 : setPars(); 58 0 : return _am->dTdc(ch); 59 : } 60 : 61 0 : double PPDipModel::dTdL_ND (size_t ch) const 62 : { 63 0 : setPars(); 64 0 : return _am->dTdL_ND(ch); 65 : } 66 : 67 0 : void PPDipModel::dTdL_ND (std::vector<double> & res) const 68 : { 69 0 : setPars(); 70 0 : _am->dTdL_ND(res); 71 0 : } 72 : 73 : 74 0 : void PPDipModel::AddParams ( std::vector< Minim::DParamCtr > &pars ) 75 : { 76 0 : _am->AddParams(pars); 77 : // Swap the pointer in the column density parameter of the model 78 : // to be to our variable _n; We will update the model depending on 79 : // _za; 80 0 : for( size_t i =0 ; i < pars.size() ; ++i) 81 0 : if(pars[i].name == "n") 82 0 : pars[i].p= &_n; 83 0 : } 84 : 85 : } 86 : 87 : 88 :