MaCh3  2.2.3
Reference Guide
MaCh3Modes.h
Go to the documentation of this file.
1 #pragma once
2 
3 // C++ Includes
4 #include <cmath>
5 #include <map>
6 #include <string>
7 
8 //MaCh3 includes
9 #include "Manager/YamlHelper.h"
10 #include "Manager/Monitor.h"
11 #include "Manager/MaCh3Exception.h"
12 
14 using MaCh3Modes_t = int;
15 
17 struct MaCh3ModeInfo {
19  std::string Name;
21  std::string FancyName;
23  int PlotColor;
25  std::vector<int> GeneratorMaping;
27  bool IsNC;
29  std::string SplineSuffix;
31  inline bool IsMode(const int GenMode) {
32  bool exists = std::find(GeneratorMaping.begin(), GeneratorMaping.end(), GenMode) != GeneratorMaping.end();
33  return exists;
34  }
35 };
36 
41 class MaCh3Modes {
42  public:
44  MaCh3Modes(std::string const &filename);
46  MaCh3Modes(const YAML::Node& config);
48  virtual ~MaCh3Modes(){};
49 
51  void Print() const;
52 
54  inline int GetNModes() const {return NModes;}
57  MaCh3Modes_t GetMode(const std::string& name) const;
59  std::string GetMaCh3ModeName(const int Index) const;
61  int GetMaCh3ModePlotColor(const int Index) const;
63  std::string GetMaCh3ModeFancyName(const int Index) const;
65  bool IsMaCh3ModeNC(const int Index) const;
67  std::string GetSplineSuffixFromMaCh3Mode(const int Index);
69  MaCh3Modes_t GetModeFromGenerator(const int Index) const;
71  inline std::string GetName() const {return "MaCh3Modes";};
73  inline int GetNCCModes() const {return nCCModes;};
74 
75  private:
78  inline void Initialise(const YAML::Node& config);
79 
82  inline MaCh3Modes_t EnsureModeNameRegistered(std::string const &name);
83 
85  inline void DeclareNewMode(std::string const &name,
86  std::string const &fancyname,
87  int PlotColor,
88  std::vector<int> const &GenMap,
89  const bool IsNC,
90  const std::string& SplineSuffix);
91 
93  inline void PrepareMap();
94 
96  std::map<std::string, MaCh3Modes_t> Mode;
98  std::map<MaCh3Modes_t, MaCh3ModeInfo> fMode;
100  std::vector<int> ModeMap;
101 
103  std::string Title;
105  std::string Generator;
107  int NModes;
109  int nCCModes;
110 };
Color_t PlotColor[]
int MaCh3Modes_t
Enumerator of MaCh3Mode.
Definition: MaCh3Modes.h:14
System and monitoring utilities for printing system information and status updates.
std::string config
Definition: ProcessMCMC.cpp:29
Utility functions for handling YAML nodes.
KS: Class describing MaCh3 modes used in the analysis, it is being initialised from config.
Definition: MaCh3Modes.h:41
std::map< std::string, MaCh3Modes_t > Mode
KS: Handy map which helps find mode number based on string.
Definition: MaCh3Modes.h:96
int nCCModes
DB: Number of CC modes.
Definition: MaCh3Modes.h:109
bool IsMaCh3ModeNC(const int Index) const
DB: Get IsNC (a check whether the given MaCh3 corresponds to a Neutral Current mode)
Definition: MaCh3Modes.cpp:171
void Initialise(const YAML::Node &config)
KS: Initialise MaCh3 modes based on provided config.
Definition: MaCh3Modes.cpp:19
int GetNModes() const
KS: Get number of modes, keep in mind actual number is +1 greater due to unknown category.
Definition: MaCh3Modes.h:54
MaCh3Modes(std::string const &filename)
KS: Initialise MaCh3 modes using path to config.
Definition: MaCh3Modes.cpp:5
void DeclareNewMode(std::string const &name, std::string const &fancyname, int PlotColor, std::vector< int > const &GenMap, const bool IsNC, const std::string &SplineSuffix)
KS: Add new mode.
Definition: MaCh3Modes.cpp:107
int NModes
KS: Number of modes, keep in mind actual number is +1 greater due to unknown category.
Definition: MaCh3Modes.h:107
std::vector< int > ModeMap
KS: Handy map helping us find MaCh3 mode based on Generator mode value.
Definition: MaCh3Modes.h:100
void Print() const
KS: Print info about initialised modes.
Definition: MaCh3Modes.cpp:58
std::string Generator
KS: Name of generator like NEUT, NuWro etc. this is to make stuff fancy.
Definition: MaCh3Modes.h:105
MaCh3Modes_t GetMode(const std::string &name) const
Definition: MaCh3Modes.cpp:201
std::string GetSplineSuffixFromMaCh3Mode(const int Index)
DB: Get binned spline mode suffic from MaCh3 Mode.
Definition: MaCh3Modes.cpp:243
std::string Title
KS: Name of loaded modes.
Definition: MaCh3Modes.h:103
MaCh3Modes_t EnsureModeNameRegistered(std::string const &name)
Definition: MaCh3Modes.cpp:96
int GetNCCModes() const
Return count of CC modes.
Definition: MaCh3Modes.h:73
int GetMaCh3ModePlotColor(const int Index) const
KS: Get normal name of mode, if mode not known you will get UNKNOWN_BAD.
Definition: MaCh3Modes.cpp:228
std::string GetName() const
Get class name.
Definition: MaCh3Modes.h:71
void PrepareMap()
KS: Fill ModeMap.
Definition: MaCh3Modes.cpp:129
virtual ~MaCh3Modes()
KS: Empty destructor.
Definition: MaCh3Modes.h:48
std::string GetMaCh3ModeFancyName(const int Index) const
KS: Get fancy name of mode, if mode not known you will get UNKNOWN_BAD.
Definition: MaCh3Modes.cpp:186
std::map< MaCh3Modes_t, MaCh3ModeInfo > fMode
KS: Main map storing info about used modes.
Definition: MaCh3Modes.h:98
std::string GetMaCh3ModeName(const int Index) const
KS: Get normal name of mode, if mode not known you will get UNKNOWN_BAD.
Definition: MaCh3Modes.cpp:156
MaCh3Modes_t GetModeFromGenerator(const int Index) const
KS: Get MaCh3 mode from generator mode.
Definition: MaCh3Modes.cpp:213
KS: Class containing information for a single MaCh3Mode.
Definition: MaCh3Modes.h:17
std::vector< int > GeneratorMaping
Mapping between mode and generator integers.
Definition: MaCh3Modes.h:25
std::string SplineSuffix
Spline suffix.
Definition: MaCh3Modes.h:29
std::string FancyName
Mode fancy name.
Definition: MaCh3Modes.h:21
std::string Name
Mode name.
Definition: MaCh3Modes.h:19
bool IsMode(const int GenMode)
KS: Checks MaCh3 modes is associated with a given generator mode.
Definition: MaCh3Modes.h:31
bool IsNC
IsNC check.
Definition: MaCh3Modes.h:27
int PlotColor
Mode color for plotting purposes.
Definition: MaCh3Modes.h:23