gambit is hosted by Hepforge, IPPP Durham
GAMBIT  v1.5.0-2191-ga4742ac
a Global And Modular Bsm Inference Tool
subspectrum_contents.hpp
Go to the documentation of this file.
1 // GAMBIT: Global and Modular BSM Inference Tool
2 // *********************************************
18 
19 #ifndef __subspectrum_contents_hpp__
20 #define __subspectrum_contents_hpp__
21 
24 
25 namespace Gambit {
26 
27  class SubSpectrum;
28 
31  {
32  private:
34  const std::string my_name;
35  const std::vector<int> my_shape;
36 
37  const std::string my_blockname;
38  const int my_blockname_index;
39 
40  public:
41  SpectrumParameter(const Par::Tags tag, const std::string label, const std::vector<int> shape, const std::string blockname, const int blockindex)
42  : my_tag(tag)
43  , my_name(label)
44  , my_shape(shape)
45  , my_blockname(blockname)
46  , my_blockname_index(blockindex)
47  {}
48 
49  Par::Tags tag() const { return my_tag; }
50  std::string name() const { return my_name; }
51  std::vector<int> shape() const { return my_shape; }
52 
53  std::string blockname() const { return my_blockname; }
54  int blockindex() const { return my_blockname_index; }
55  };
56 
59  {
60  private:
62  std::vector<SpectrumParameter> parameters;
63 
65  std::string my_name;
66 
67  protected:
68  void addParameter(const Par::Tags tag, const std::string& name, const std::vector<int>& shape = initVector(1), const std::string& blockname="", const int index=0);
69  void setName(const std::string& name);
70 
71  public:
72  std::string getName() const {return my_name;}
73 
75  std::vector<SpectrumParameter> all_parameters() const;
76 
78  std::vector<SpectrumParameter> all_parameters_with_tag(Par::Tags tag) const;
79 
81  std::vector<SpectrumParameter> all_parameters_with_tag_and_shape(Par::Tags tag, std::vector<int>& shape) const;
82 
84  std::vector<SpectrumParameter> all_BSM_parameters() const;
85 
87  void verify_contents(const SubSpectrum& spec) const;
88  };
89 
90 }
91 
92 #endif
Simple class to contain information defining how some parameter in a SubSpectrum object can be access...
const std::vector< int > my_shape
SpectrumParameter(const Par::Tags tag, const std::string label, const std::vector< int > shape, const std::string blockname, const int blockindex)
std::vector< int > shape() const
std::string my_name
Name of SubSpectrumContents class (for more helpful error messages)
std::vector< SpectrumParameter > parameters
Vector defining what parameters a wrapper must contain.
Variadic utilty functions.
std::vector< T > initVector(std::vector< T > vector)
Virtual base class for interacting with spectrum generator output.
Definition: subspectrum.hpp:87
Base class for defining the required contents of a SubSpectrum object.
Helpers for using the spectrum and subspectrum classes.
TODO: see if we can use this one:
Definition: Analysis.hpp:33