CosmoBolognaLib
Free Software C++/Python libraries for cosmological calculations
Data1D_extra.h
Go to the documentation of this file.
1 /********************************************************************
2  * Copyright (C) 2014 by Federico Marulli *
3  * federico.marulli3@unibo.it *
4  * *
5  * This program is free software; you can redistribute it and/or *
6  * modify it under the terms of the GNU General Public License as *
7  * published by the Free Software Foundation; either version 2 of *
8  * the License, or (at your option) any later version. *
9  * *
10  * This program is distributed in the hope that it will be useful, *
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13  * GNU General Public License for more details. *
14  * *
15  * You should have received a copy of the GNU General Public *
16  * License along with this program; if not, write to the Free *
17  * Software Foundation, Inc., *
18  * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
19  ********************************************************************/
20 
33 #ifndef __DATA1D_EXTRA__
34 #define __DATA1D_EXTRA__
35 
36 #include "Data1D.h"
37 
38 namespace cbl {
39 
40  namespace data {
41 
51  class Data1D_extra : public Data1D
52  {
53 
54  protected:
55 
60 
62  std::vector<std::vector<double>> m_extra_info;
63 
65 
66 
67  public:
68 
73 
79 
118  Data1D_extra (const int n_extra_info, const std::string input_file, const int skip_nlines=0, const std::vector<int> column={1}, const std::vector<int> column_data={}, const std::vector<int> column_errors={}, const std::vector<int> column_edges={})
119  : Data1D()
120  { m_extra_info.resize(n_extra_info); read(input_file, skip_nlines, column, column_data, column_errors, column_edges); set_dataType(DataType::_1D_extra_); }
121 
134  Data1D_extra (const std::vector<double> x, const std::vector<double> data, const std::vector<std::vector<double>> extra_info, const std::vector<double> bin_edges_x={})
135  : Data1D(x, data, -1, bin_edges_x), m_extra_info(extra_info)
137 
153  Data1D_extra (const std::vector<double> x, const std::vector<double> data, const std::vector<double> error, const std::vector<std::vector<double>> extra_info, const std::vector<double> bin_edges_x={})
154  : Data1D(x, data, error, -1, bin_edges_x), m_extra_info(extra_info)
156 
172  Data1D_extra (const std::vector<double> x, const std::vector<double> data, const std::vector<std::vector<double>> covariance, const std::vector<std::vector<double>> extra_info, const std::vector<double> bin_edges_x={})
173  : Data1D(x, data, covariance, -1, bin_edges_x), m_extra_info(extra_info)
175 
179  virtual ~Data1D_extra () = default;
180 
186  std::shared_ptr<Data> as_factory () { return move(std::unique_ptr<Data1D_extra>(this)); }
187 
189 
190 
195 
202  double extra_info (const int i, const int j) const override { return m_extra_info[i][j]; }
203 
208  std::vector<std::vector<double>> extra_info () const override { return m_extra_info; }
209 
218  std::vector<std::vector<double>> IndipendentVariable (const int i=-1, const int j=-1) const
219  {
220  (void)j;
221  std::vector<std::vector<double>> iv;
222  iv.push_back(((i>0) ? m_extra_info[i] : m_x));
223  return iv;
224  }
225 
227 
228 
233 
239  void set_extra_info (const std::vector<std::vector<double>> extra_info) override { m_extra_info = extra_info; }
240 
242 
243 
248 
285  virtual void read (const std::string input_file, const int skip_nlines=0, const std::vector<int> column={1}, const std::vector<int> column_data={}, const std::vector<int> column_errors={}, const std::vector<int> column_edges={}) override;
286 
292  virtual void Print (const int precision=4) const override;
293 
304  virtual void write (const std::string dir, const std::string file, const std::string header, const int prec=4, const int ww=8, const int rank=0) const override;
305 
307 
308 
314 
321  std::shared_ptr<Data> cut (const double xmin, const double xmax) const override;
322 
328  std::shared_ptr<Data> cut (const std::vector<bool> mask) const;
329 
331 
332  };
333 
334  }
335 }
336 
337 #endif
The class Data1D.
The class Data1D_extra.
Definition: Data1D_extra.h:52
Data1D_extra(const std::vector< double > x, const std::vector< double > data, const std::vector< double > error, const std::vector< std::vector< double >> extra_info, const std::vector< double > bin_edges_x={})
constructor which gets both the data and the errors from input vectors
Definition: Data1D_extra.h:153
Data1D_extra(const std::vector< double > x, const std::vector< double > data, const std::vector< std::vector< double >> extra_info, const std::vector< double > bin_edges_x={})
constructor which gets the data from input vectors
Definition: Data1D_extra.h:134
Data1D_extra(const std::vector< double > x, const std::vector< double > data, const std::vector< std::vector< double >> covariance, const std::vector< std::vector< double >> extra_info, const std::vector< double > bin_edges_x={})
constructor which gets both the data and the covariance matrix from input vectors
Definition: Data1D_extra.h:172
virtual ~Data1D_extra()=default
default destructor
std::shared_ptr< Data > as_factory()
static factory used to construct objects of class Data1D_extra
Definition: Data1D_extra.h:186
Data1D_extra(const int n_extra_info, const std::string input_file, const int skip_nlines=0, const std::vector< int > column={1}, const std::vector< int > column_data={}, const std::vector< int > column_errors={}, const std::vector< int > column_edges={})
constructor which reads the data from file
Definition: Data1D_extra.h:118
std::shared_ptr< Data > cut(const double xmin, const double xmax) const override
cut the data
std::vector< std::vector< double > > m_extra_info
extra information
Definition: Data1D_extra.h:62
std::vector< std::vector< double > > extra_info() const override
return the m_exta_info vector
Definition: Data1D_extra.h:208
Data1D_extra()
default constructor
Definition: Data1D_extra.h:77
void set_extra_info(const std::vector< std::vector< double >> extra_info) override
set interval variable m_error_fx
Definition: Data1D_extra.h:239
std::vector< std::vector< double > > IndipendentVariable(const int i=-1, const int j=-1) const
get the independet variable, to be used in model computation
Definition: Data1D_extra.h:218
double extra_info(const int i, const int j) const override
return the value of the extra information at index i,j
Definition: Data1D_extra.h:202
virtual void Print(const int precision=4) const override
print the data on screen
virtual void read(const std::string input_file, const int skip_nlines=0, const std::vector< int > column={1}, const std::vector< int > column_data={}, const std::vector< int > column_errors={}, const std::vector< int > column_edges={}) override
read the data
virtual void write(const std::string dir, const std::string file, const std::string header, const int prec=4, const int ww=8, const int rank=0) const override
write the data
The class Data1D.
Definition: Data1D.h:51
std::vector< double > m_x
ordered x axis points
Definition: Data1D.h:61
Data1D()
default constructor
Definition: Data1D.h:78
void set_dataType(const DataType dataType)
set the data type
Definition: Data.h:121
virtual std::vector< double > data() const
get data
Definition: Data.h:376
virtual std::vector< double > error() const
get standard deviation
Definition: Data.h:389
virtual std::vector< std::vector< double > > covariance() const
get the m_covariance vector
Definition: Data.h:403
@ _1D_extra_
1D dataset with extra information
The global namespace of the CosmoBolognaLib
Definition: CAMB.h:38