This file is indexed.

/usr/include/Rivet/AnalysisInfo.hh is in librivet-dev 1.8.3-1.1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
// -*- C++ -*-
#ifndef RIVET_AnalysisInfo_HH
#define RIVET_AnalysisInfo_HH

#include "Rivet/Rivet.hh"
#include <ostream>

namespace Rivet {


  class AnalysisInfo {
  public:

    /// Static factory method: returns null pointer if no metadata found
    static AnalysisInfo* make(const std::string& name);

    /// @name Standard constructors and destructors.
    //@{

    /// The default constructor.
    AnalysisInfo() { clear(); }

    /// The destructor.
    ~AnalysisInfo() { }

    //@}


  public:

    /// @name Metadata
    /// Metadata is used for querying from the command line and also for
    /// building web pages and the analysis pages in the Rivet manual.
    //@{

    /// Get the name of the analysis. By default this is computed using the
    /// experiment, year and Inspire/Spires ID metadata methods.
    std::string name() const {
      if (!_name.empty()) return _name;
      if (!experiment().empty() && !year().empty()) {
        if (!inspireId().empty()) {
          return experiment() + "_" + year() + "_I" + inspireId();
        } else if (!spiresId().empty()) {
          return experiment() + "_" + year() + "_S" + spiresId();
        }
      }
      return "";
    }

    /// Set the name of the analysis.
    void setName(const std::string& name) { _name = name; }


    /// Get the Inspire (SPIRES replacement) ID code for this analysis.
    const std::string& inspireId() const { return _inspireId; }

    /// Set the Inspire (SPIRES replacement) ID code for this analysis.
    void setInspireId(const std::string& inspireId) { _inspireId = inspireId; }


    /// Get the SPIRES ID code for this analysis.
    const std::string& spiresId() const { return _spiresId; }

    /// Set the SPIRES ID code for this analysis.
    void setSpiresId(const std::string& spiresId) { _spiresId = spiresId; }


    /// @brief Names & emails of paper/analysis authors.
    /// Names and email of authors in 'NAME \<EMAIL\>' format. The first
    /// name in the list should be the primary contact person.
    const std::vector<std::string>& authors() const { return _authors; }

    /// Set the author list.
    void setAuthors(const std::vector<std::string>& authors) { _authors = authors; }


    /// @brief Get a short description of the analysis.
    /// Short (one sentence) description used as an index entry.
    /// Use @a description() to provide full descriptive paragraphs
    /// of analysis details.
    const std::string& summary() const { return _summary; }

    /// Set the short description for this analysis.
    void setSummary(const std::string& summary) { _summary = summary; }


    /// @brief 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.
    const std::string& description() const { return _description; }

    /// Set the full description for this analysis.
    void setDescription(const std::string& description) { _description = description; }


    /// @brief 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)
    const std::string& runInfo() const { return _runInfo; }

    /// Set the full description for this analysis.
    void setRunInfo(const std::string& runInfo) { _runInfo = runInfo; }


    /// Beam particle types
    const std::vector<PdgIdPair>& beams() const { return _beams; }

    /// Set beam particle types
    void setBeams(const std::vector<PdgIdPair>& beams) { _beams = beams; }


    /// Sets of valid beam energies
    const std::vector<std::pair<double,double> >& energies() const { return _energies; }

    /// Set the valid beam energies
    void setEnergies(const std::vector<std::pair<double, double> >& energies) { _energies = energies; }


    /// Experiment which performed and published this analysis.
    const std::string& experiment() const { return _experiment; }

    /// Set the experiment which performed and published this analysis.
    void setExperiment(const std::string& experiment) { _experiment = experiment; }


    /// Collider on which the experiment ran.
    const std::string& collider() const { return _collider; }

    /// Set the collider on which the experiment ran.
    void setCollider(const std::string& collider) { _collider = collider; }


    /// @brief When the original experimental analysis was published.
    /// When the refereed paper on which this is based was published,
    /// according to SPIRES.
    const std::string& year() const { return _year; }

    /// Set the year in which the original experimental analysis was published.
    void setYear(const std::string& year) { _year = year; }


    /// Journal and preprint references.
    const std::vector<std::string>& references() const { return _references; }

    /// Set the journal and preprint reference list.
    void setReferences(const std::vector<std::string>& references) { _references = references; }


    /// BibTeX citation key for this article.
    const std::string& bibKey() const { return _bibKey;}

    /// Set the BibTeX citation key for this article.
    void setBibKey(const std::string& bibKey) { _bibKey = bibKey; }


    /// BibTeX citation entry for this article.
    const std::string& bibTeX() const { return _bibTeX; }

    /// Set the BibTeX citation entry for this article.
    void setBibTeX(const std::string& bibTeX) { _bibTeX = bibTeX; }


    /// Whether this analysis is trusted (in any way!)
    const std::string& status() const { return _status; }

    /// Set the analysis code status.
    void setStatus(const std::string& status) { _status = status; }


    /// Any work to be done on this analysis.
    const std::vector<std::string>& todos() const { return _todos; }

    /// Set the to-do list.
    void setTodos(const std::vector<std::string>& todos) { _todos = todos; }


    /// Return true if this analysis needs to know the process cross-section.
    bool needsCrossSection() const { return _needsCrossSection; }

    /// Return true if this analysis needs to know the process cross-section.
    void setNeedsCrossSection(bool needXsec) { _needsCrossSection = needXsec; }

    //@}


  private:

    std::string _name;
    std::string _spiresId, _inspireId;
    std::vector<std::string> _authors;
    std::string _summary;
    std::string _description;
    std::string _runInfo;
    std::string _experiment;
    std::string _collider;
    std::vector<std::pair<PdgId, PdgId> > _beams;
    std::vector<std::pair<double, double> > _energies;
    std::string _year;
    std::vector<std::string> _references;
    std::string _bibKey;
    std::string _bibTeX;
    //std::string _bibTeXBody; //< Was thinking of avoiding duplication of BibKey...
    std::string _status;
    std::vector<std::string> _todos;
    bool _needsCrossSection;

    void clear() {
      _name = "";
      _spiresId = "";
      _inspireId = "";
      _authors.clear();
      _summary = "";
      _description = "";
      _runInfo = "";
      _experiment = "";
      _collider = "";
      _beams.clear();
      _energies.clear();
      _year = "";
      _references.clear();
      _bibKey = "";
      _bibTeX = "";
      //_bibTeXBody = "";
      _status = "";
      _todos.clear();
      _needsCrossSection = false;
    }

  };


  /// String representation
  std::string toString(const AnalysisInfo& ai);

  /// Stream an AnalysisInfo as a text description
  inline std::ostream& operator<<(std::ostream& os, const AnalysisInfo& ai) {
    os << toString(ai);
    return os;
  }


}

#endif