rivet is hosted by Hepforge, IPPP Durham
Rivet  2.7.0
AnalysisInfo.hh
1 // -*- C++ -*-
2 #ifndef RIVET_AnalysisInfo_HH
3 #define RIVET_AnalysisInfo_HH
4 
5 #include "Rivet/Config/RivetCommon.hh"
6 #include <ostream>
7 
8 namespace Rivet {
9 
10 
11  class AnalysisInfo {
12  public:
13 
15  static unique_ptr<AnalysisInfo> make(const std::string& name);
16 
18 
19 
21  AnalysisInfo() { clear(); }
22 
25 
27 
28 
29  public:
30 
34 
35 
38  std::string name() const {
39  if (!_name.empty()) return _name;
40  if (!experiment().empty() && !year().empty()) {
41  if (!inspireId().empty()) {
42  return experiment() + "_" + year() + "_I" + inspireId();
43  } else if (!spiresId().empty()) {
44  return experiment() + "_" + year() + "_S" + spiresId();
45  }
46  }
47  return "";
48  }
49 
51  void setName(const std::string& name) { _name = name; }
52 
54  std::string getRefDataName() const {
55  if (!_refDataName.empty()) return _refDataName;
56  return name();
57  }
58 
60  void setRefDataName(const std::string& name) { _refDataName = name; }
61 
63  const std::string& inspireId() const { return _inspireId; }
64 
66  void setInspireId(const std::string& inspireId) { _inspireId = inspireId; }
67 
68 
70  const std::string& spiresId() const { return _spiresId; }
71 
73  void setSpiresId(const std::string& spiresId) { _spiresId = spiresId; }
74 
75 
79  const std::vector<std::string>& authors() const { return _authors; }
80 
82  void setAuthors(const std::vector<std::string>& authors) { _authors = authors; }
83 
84 
89  const std::string& summary() const { return _summary; }
90 
92  void setSummary(const std::string& summary) { _summary = summary; }
93 
94 
100  const std::string& description() const { return _description; }
101 
103  void setDescription(const std::string& description) { _description = description; }
104 
105 
110  const std::string& runInfo() const { return _runInfo; }
111 
113  void setRunInfo(const std::string& runInfo) { _runInfo = runInfo; }
114 
115 
117  const std::vector<PdgIdPair>& beams() const { return _beams; }
118 
120  void setBeams(const std::vector<PdgIdPair>& beams) { _beams = beams; }
121 
122 
124  const std::vector<std::pair<double,double> >& energies() const { return _energies; }
125 
127  void setEnergies(const std::vector<std::pair<double, double> >& energies) { _energies = energies; }
128 
129 
131  const std::string& experiment() const { return _experiment; }
132 
134  void setExperiment(const std::string& experiment) { _experiment = experiment; }
135 
136 
138  const std::string& collider() const { return _collider; }
139 
141  void setCollider(const std::string& collider) { _collider = collider; }
142 
143 
147  const std::string& year() const { return _year; }
148 
150  void setYear(const std::string& year) { _year = year; }
151 
153  const std::string& luminosityfb() const { return _luminosityfb; }
154 
156  void setLuminosityfb(const std::string& luminosityfb) { _luminosityfb = luminosityfb; }
157 
159  const std::vector<std::string>& references() const { return _references; }
160 
162  void setReferences(const std::vector<std::string>& references) { _references = references; }
163 
165  const std::vector<std::string>& keywords() const { return _keywords; }
166 
168  const std::string& bibKey() const { return _bibKey;}
169 
171  void setBibKey(const std::string& bibKey) { _bibKey = bibKey; }
172 
173 
175  const std::string& bibTeX() const { return _bibTeX; }
176 
178  void setBibTeX(const std::string& bibTeX) { _bibTeX = bibTeX; }
179 
180 
182  const std::string& status() const { return _status; }
183 
185  void setStatus(const std::string& status) { _status = status; }
186 
187 
189  const std::vector<std::string>& todos() const { return _todos; }
190 
192  void setTodos(const std::vector<std::string>& todos) { _todos = todos; }
193 
194 
196  const std::vector<std::string>& options() const { return _options; }
197 
199  bool validOption(std::string key, std::string val) const;
200 
202  void setOptions(const std::vector<std::string>& opts) {
203  _options = opts;
204  buildOptionMap();
205  }
206 
208  void buildOptionMap();
209 
210 
212  bool needsCrossSection() const { return _needsCrossSection; }
213 
215  void setNeedsCrossSection(bool needXsec) { _needsCrossSection = needXsec; }
216 
218  bool reentrant() const { return _reentrant; }
219 
221  void setReentrant(bool ree = true) { _reentrant = ree; }
222 
224 
225 
226  private:
227 
228  std::string _name;
229  std::string _refDataName;
230  std::string _spiresId, _inspireId;
231  std::vector<std::string> _authors;
232  std::string _summary;
233  std::string _description;
234  std::string _runInfo;
235  std::string _experiment;
236  std::string _collider;
237  std::vector<std::pair<PdgId, PdgId> > _beams;
238  std::vector<std::pair<double, double> > _energies;
239  std::string _year;
240  std::string _luminosityfb;
241  std::vector<std::string> _references;
242  std::vector<std::string> _keywords;
243  std::string _bibKey;
244  std::string _bibTeX;
245  //std::string _bibTeXBody; ///< Was thinking of avoiding duplication of BibKey...
246  std::string _status;
247  std::vector<std::string> _todos;
248  bool _needsCrossSection;
249 
250  std::vector<std::string> _options;
251  std::map< std::string, std::set<std::string> > _optionmap;
252 
253  bool _reentrant;
254 
255  void clear() {
256  _name = "";
257  _refDataName = "";
258  _spiresId = "";
259  _inspireId = "";
260  _authors.clear();
261  _summary = "";
262  _description = "";
263  _runInfo = "";
264  _experiment = "";
265  _collider = "";
266  _beams.clear();
267  _energies.clear();
268  _year = "";
269  _luminosityfb = "";
270  _references.clear();
271  _keywords.clear();
272  _bibKey = "";
273  _bibTeX = "";
274  //_bibTeXBody = "";
275  _status = "";
276  _todos.clear();
277  _needsCrossSection = false;
278  _options.clear();
279  _optionmap.clear();
280  _reentrant = false;
281  }
282 
283  };
284 
285 
287  std::string toString(const AnalysisInfo& ai);
288 
290  inline std::ostream& operator<<(std::ostream& os, const AnalysisInfo& ai) {
291  os << toString(ai);
292  return os;
293  }
294 
295 
296 }
297 
298 #endif
Definition: ALICE_2010_I880049.cc:13
const std::string & summary() const
Get a short description of the analysis. Short (one sentence) description used as an index entry...
Definition: AnalysisInfo.hh:89
AnalysisInfo()
The default constructor.
Definition: AnalysisInfo.hh:21
void setSpiresId(const std::string &spiresId)
Set the SPIRES ID code for this analysis.
Definition: AnalysisInfo.hh:73
void setNeedsCrossSection(bool needXsec)
Return true if this analysis needs to know the process cross-section.
Definition: AnalysisInfo.hh:215
Definition: AnalysisInfo.hh:11
void setReentrant(bool ree=true)
setReentrant
Definition: AnalysisInfo.hh:221
const std::string & status() const
Whether this analysis is trusted (in any way!)
Definition: AnalysisInfo.hh:182
void setDescription(const std::string &description)
Set the full description for this analysis.
Definition: AnalysisInfo.hh:103
~AnalysisInfo()
The destructor.
Definition: AnalysisInfo.hh:24
void setBibTeX(const std::string &bibTeX)
Set the BibTeX citation entry for this article.
Definition: AnalysisInfo.hh:178
void setRefDataName(const std::string &name)
Set the reference data name of the analysis (if different from plugin name).
Definition: AnalysisInfo.hh:60
const std::string & bibTeX() const
BibTeX citation entry for this article.
Definition: AnalysisInfo.hh:175
void setExperiment(const std::string &experiment)
Set the experiment which performed and published this analysis.
Definition: AnalysisInfo.hh:134
void setYear(const std::string &year)
Set the year in which the original experimental analysis was published.
Definition: AnalysisInfo.hh:150
const std::string & bibKey() const
BibTeX citation key for this article.
Definition: AnalysisInfo.hh:168
static unique_ptr< AnalysisInfo > make(const std::string &name)
Static factory method: returns null pointer if no metadata found.
Definition: AnalysisInfo.cc:26
std::string name() const
Definition: AnalysisInfo.hh:38
const std::vector< std::string > & todos() const
Any work to be done on this analysis.
Definition: AnalysisInfo.hh:189
void setRunInfo(const std::string &runInfo)
Set the full description for this analysis.
Definition: AnalysisInfo.hh:113
void setTodos(const std::vector< std::string > &todos)
Set the to-do list.
Definition: AnalysisInfo.hh:192
const std::vector< std::string > & authors() const
Names & emails of paper/analysis authors. Names and email of authors in &#39;NAME <EMAIL>&#39; format...
Definition: AnalysisInfo.hh:79
const std::vector< PdgIdPair > & beams() const
Beam particle types.
Definition: AnalysisInfo.hh:117
void setOptions(const std::vector< std::string > &opts)
Set the option list.
Definition: AnalysisInfo.hh:202
const std::vector< std::string > & options() const
Get the option list.
Definition: AnalysisInfo.hh:196
const std::string & experiment() const
Experiment which performed and published this analysis.
Definition: AnalysisInfo.hh:131
const std::string & spiresId() const
Get the SPIRES ID code for this analysis.
Definition: AnalysisInfo.hh:70
const std::vector< std::string > & keywords() const
Analysis Keywords for grouping etc.
Definition: AnalysisInfo.hh:165
void setStatus(const std::string &status)
Set the analysis code status.
Definition: AnalysisInfo.hh:185
bool validOption(std::string key, std::string val) const
Check if the given option is valid.
Definition: AnalysisInfo.cc:164
void setReferences(const std::vector< std::string > &references)
Set the journal and preprint reference list.
Definition: AnalysisInfo.hh:162
void setName(const std::string &name)
Set the name of the analysis.
Definition: AnalysisInfo.hh:51
bool reentrant() const
Return true if finalize() can be run multiple times for this analysis.
Definition: AnalysisInfo.hh:218
void buildOptionMap()
Build a map of options to facilitate checking.
Definition: AnalysisInfo.cc:154
void setInspireId(const std::string &inspireId)
Set the Inspire (SPIRES replacement) ID code for this analysis.
Definition: AnalysisInfo.hh:66
const std::string & luminosityfb() const
The integrated data luminosity of the data set.
Definition: AnalysisInfo.hh:153
void setCollider(const std::string &collider)
Set the collider on which the experiment ran.
Definition: AnalysisInfo.hh:141
const std::vector< std::string > & references() const
Journal and preprint references.
Definition: AnalysisInfo.hh:159
std::string getRefDataName() const
Get the reference data name of the analysis (if different from plugin name).
Definition: AnalysisInfo.hh:54
bool needsCrossSection() const
Return true if this analysis needs to know the process cross-section.
Definition: AnalysisInfo.hh:212
void setBibKey(const std::string &bibKey)
Set the BibTeX citation key for this article.
Definition: AnalysisInfo.hh:171
const std::string & year() const
When the original experimental analysis was published. When the refereed paper on which this is based...
Definition: AnalysisInfo.hh:147
const std::string & description() const
Get a full description of the analysis. Full textual description of this analysis, what it is useful for, what experimental techniques are applied, etc. Should be treated as a chunk of restructuredText (http://docutils.sourceforge.net/rst.html), with equations to be rendered as LaTeX with amsmath operators.
Definition: AnalysisInfo.hh:100
void setSummary(const std::string &summary)
Set the short description for this analysis.
Definition: AnalysisInfo.hh:92
std::string toString(const AnalysisInfo &ai)
String representation.
Definition: AnalysisInfo.cc:144
const std::string & runInfo() const
Information about the events needed as input for this analysis. Event types, energies, kinematic cuts, particles to be considered stable, etc. etc. Should be treated as a restructuredText bullet list (http://docutils.sourceforge.net/rst.html)
Definition: AnalysisInfo.hh:110
void setBeams(const std::vector< PdgIdPair > &beams)
Set beam particle types.
Definition: AnalysisInfo.hh:120
const std::string & inspireId() const
Get the Inspire (SPIRES replacement) ID code for this analysis.
Definition: AnalysisInfo.hh:63
const std::string & collider() const
Collider on which the experiment ran.
Definition: AnalysisInfo.hh:138
void setLuminosityfb(const std::string &luminosityfb)
Set the integrated data luminosity of the data set.
Definition: AnalysisInfo.hh:156
void setAuthors(const std::vector< std::string > &authors)
Set the author list.
Definition: AnalysisInfo.hh:82
void setEnergies(const std::vector< std::pair< double, double > > &energies)
Set the valid beam energies.
Definition: AnalysisInfo.hh:127
const std::vector< std::pair< double, double > > & energies() const
Sets of valid beam energies.
Definition: AnalysisInfo.hh:124