Line data Source code
1 : /** 2 : \file slice.cpp 3 : Bojan Nikolic <bn204@mrao.cam.ac.uk>, <bojan@bnikolic.co.uk> 4 : Initial version February 2008 5 : Maintained by ESO since 2013. 6 : Renamed slice.cc 2023 7 : 8 : */ 9 : 10 : #include "slice.h" 11 : 12 : #include <cmath> 13 : 14 : #include "columns.h" 15 : 16 : 17 : namespace LibAIR2 { 18 : 19 162 : Slice::Slice( double T , double P, 20 162 : double scale): 21 162 : T(T), P(P), 22 162 : scale(scale) 23 : { 24 : 25 162 : } 26 : 27 162 : void Slice::AddColumn (const Column & c) 28 : { 29 162 : cols.push_back(& c); 30 162 : } 31 : 32 79505305 : void Slice::ComputeTx (const std::vector<double> & f, 33 : std::vector<double> & res) const 34 : { 35 79505305 : res.resize(f.size()); 36 : 37 79505305 : std::vector<double> scratch( f.size() , 0.0 ); 38 79505305 : std::vector<double> total ( f.size() , 0.0 ); 39 238515915 : for ( size_t cn =0 ; cn < cols.size() ; ++cn) 40 : { 41 159010610 : cols[cn]->ComputeTau(f, *this, scratch ); 42 6519435010 : for (size_t i =0 ; i < f.size() ; ++i ) 43 : { 44 6360424400 : total[i] += (scratch[i]*scale); 45 : } 46 : } 47 : 48 3259717505 : for (size_t i =0 ; i < f.size() ; ++i ) 49 : { 50 3180212200 : res[i] = exp( -1.0 * total[i] ); 51 : } 52 79505305 : } 53 : 54 81 : OpaqueSlice::OpaqueSlice( double T , double P): 55 81 : Slice(T,P) 56 : { 57 81 : } 58 : 59 81 : void OpaqueSlice::ComputeTx (const std::vector<double> & f, 60 : std::vector<double> & res) const 61 : { 62 81 : res.resize(f.size()); 63 3321 : for (size_t i =0 ; i < f.size() ; ++i ) 64 : { 65 3240 : res[i] = 0; 66 : } 67 81 : } 68 : 69 : 70 : 71 : } 72 : 73 :