Public Member Functions | Private Attributes | List of all members
protoana::ThinSliceEvent Class Reference

#include <ThinSliceEvent.h>

Public Member Functions

 ThinSliceEvent (int event, int subrun, int run)
 
int GetSampleID () const
 
void SetSampleID (int s)
 
int GetSelectionID () const
 
void SetSelectionID (int s)
 
bool GetHasPi0Shower () const
 
void SetHasPi0Shower (bool s)
 
double GetTrueInteractingEnergy () const
 
void SetTrueInteractingEnergy (double e)
 
double GetRecoInteractingEnergy () const
 
void SetRecoInteractingEnergy (double e)
 
double GetTrueEndP () const
 
void SetTrueEndP (double p)
 
double GetTrueEndZ () const
 
void SetTrueEndZ (double z)
 
double GetRecoEndZ () const
 
void SetRecoEndZ (double p)
 
double GetTrueStartP () const
 
void SetTrueStartP (double p)
 
double GetTrueMass () const
 
void SetTrueMass (double m)
 
const std::vector< double > & GetRecoIncidentEnergies () const
 
void SetRecoIncidentEnergies (std::vector< double > v)
 
const std::vector< double > & GetTrueIncidentEnergies () const
 
void SetTrueIncidentEnergies (std::vector< double > v)
 
const std::vector< double > & GetTrueTrajZ () const
 
void SetTrueTrajZ (std::vector< double > v)
 
const std::vector< double > & GetTrueTrajKE () const
 
void SetTrueTrajKE (std::vector< double > v)
 
const std::vector< double > & GetRecoDaughterTrackThetas () const
 
void SetRecoDaughterTrackThetas (std::vector< double > v)
 
const std::vector< double > & GetRecoDaughterTrackScores () const
 
void SetRecoDaughterTrackScores (std::vector< double > v)
 
const std::vector< std::vector< double > > & GetRecoDaughterTrackResRanges () const
 
void AddRecoDaughterTrackResRange (std::vector< double > v)
 
const std::vector< std::vector< double > > & GetRecoDaughterTrackdQdXs () const
 
void AddRecoDaughterTrackdQdX (std::vector< double > v)
 
const std::vector< std::vector< double > > & GetRecoDaughterEFields () const
 
void AddRecoDaughterEField (std::vector< double > v)
 
const std::vector< int > & GetTrueSlices () const
 
void SetTrueSlices (std::vector< int > v)
 
const std::vector< double > & GetdQdXCalibrated () const
 
void SetdQdXCalibrated (std::vector< double > v)
 
const std::vector< double > & GetEField () const
 
void SetEField (std::vector< double > v)
 
const std::vector< double > & GetTrackPitch () const
 
void SetTrackPitch (std::vector< double > v)
 
void SetBeamInstP (double p)
 
double GetBeamInstP () const
 
void SetPDG (int p)
 
int GetPDG () const
 
void MakeG4RWBranch (const std::string &br, const std::vector< double > &ws)
 
double GetG4RWWeight (const std::string &br, size_t i) const
 
const std::map< std::string, std::vector< double > > & GetG4RWWeightMap () const
 
const std::vector< double > & GetG4RWBranch (const std::string &br) const
 
bool HasG4RWBranch (const std::string &br) const
 
void MakeG4RWSpline (const std::string &br)
 
int GetEventID () const
 
int GetSubrunID () const
 
int GetRunID () const
 

Private Attributes

int event_ID
 
int subrun_ID
 
int run_ID
 
int sample_ID
 
int selection_ID
 
int pdg
 
double true_beam_interactingEnergy
 
double reco_beam_interactingEnergy
 
double true_beam_endP
 
double true_beam_mass
 
double reco_beam_endZ
 
double true_beam_startP
 
double true_beam_endZ
 
double beam_inst_P
 
bool has_pi0_shower
 
std::vector< double > reco_beam_incidentEnergies
 
std::vector< double > true_beam_incidentEnergies
 
std::vector< double > true_beam_traj_Z
 
std::vector< double > true_beam_traj_KE
 
std::vector< double > reco_daughter_track_thetas
 
std::vector< double > reco_daughter_track_scores
 
std::vector< std::vector< double > > reco_daughter_track_dQdX
 
std::vector< std::vector< double > > reco_daughter_track_res_range
 
std::vector< std::vector< double > > reco_daughter_efield
 
std::vector< int > true_beam_slices
 
std::vector< double > calibrated_dQdX
 
std::vector< double > beam_EField
 
std::vector< double > track_pitch
 
std::map< std::string, std::vector< double > > g4rw_weights
 
std::map< std::string, TSpline3 * > g4rw_splines
 

Detailed Description

Definition at line 5 of file ThinSliceEvent.h.

Constructor & Destructor Documentation

protoana::ThinSliceEvent::ThinSliceEvent ( int  event,
int  subrun,
int  run 
)
inline

Definition at line 7 of file ThinSliceEvent.h.

8  : event_ID(event), subrun_ID(subrun), run_ID(run) {
9  sample_ID = -999;
10  selection_ID = -999;
13  true_beam_endP = -999;
14  true_beam_startP = -999;
15  true_beam_endZ = -999.;
16  true_beam_mass = -999;
17  reco_beam_endZ = -999;
18  beam_inst_P = -999;
19  pdg = -999;
20  reco_beam_incidentEnergies = std::vector<double>();
21  true_beam_incidentEnergies = std::vector<double>();
22  true_beam_traj_Z = std::vector<double>();
23  true_beam_traj_KE = std::vector<double>();
24  true_beam_slices = std::vector<int>();
25  calibrated_dQdX = std::vector<double>();
26  beam_EField = std::vector<double>();
27  track_pitch = std::vector<double>();
28  g4rw_weights = std::map<std::string, std::vector<double>>();
29  g4rw_splines = std::map<std::string, TSpline3*>();
30  reco_daughter_track_thetas = std::vector<double>();
31  reco_daughter_track_scores = std::vector<double>();
32  reco_daughter_track_dQdX = std::vector<std::vector<double>>();
33  reco_daughter_track_res_range = std::vector<std::vector<double>>();
34  reco_daughter_efield = std::vector<std::vector<double>>();
35  has_pi0_shower = false;
36  };
std::vector< int > true_beam_slices
std::map< std::string, std::vector< double > > g4rw_weights
std::vector< double > reco_daughter_track_thetas
std::vector< std::vector< double > > reco_daughter_track_res_range
std::vector< double > true_beam_incidentEnergies
std::vector< double > calibrated_dQdX
std::vector< double > true_beam_traj_Z
std::vector< std::vector< double > > reco_daughter_track_dQdX
std::vector< double > true_beam_traj_KE
std::vector< double > reco_beam_incidentEnergies
std::vector< std::vector< double > > reco_daughter_efield
std::map< std::string, TSpline3 * > g4rw_splines
std::vector< double > beam_EField
std::vector< double > reco_daughter_track_scores
std::vector< double > track_pitch
Event finding and building.

Member Function Documentation

void protoana::ThinSliceEvent::AddRecoDaughterEField ( std::vector< double >  v)
inline

Definition at line 189 of file ThinSliceEvent.h.

189  {
190  reco_daughter_efield.push_back(v);
191  };
std::vector< std::vector< double > > reco_daughter_efield
void protoana::ThinSliceEvent::AddRecoDaughterTrackdQdX ( std::vector< double >  v)
inline

Definition at line 181 of file ThinSliceEvent.h.

181  {
182  reco_daughter_track_dQdX.push_back(v);
183  };
std::vector< std::vector< double > > reco_daughter_track_dQdX
void protoana::ThinSliceEvent::AddRecoDaughterTrackResRange ( std::vector< double >  v)
inline

Definition at line 173 of file ThinSliceEvent.h.

173  {
174  reco_daughter_track_res_range.push_back(v);
175  };
std::vector< std::vector< double > > reco_daughter_track_res_range
double protoana::ThinSliceEvent::GetBeamInstP ( ) const
inline

Definition at line 224 of file ThinSliceEvent.h.

224  {
225  return beam_inst_P;
226  };
const std::vector<double>& protoana::ThinSliceEvent::GetdQdXCalibrated ( ) const
inline

Definition at line 200 of file ThinSliceEvent.h.

200  {
201  return calibrated_dQdX;
202  };
std::vector< double > calibrated_dQdX
const std::vector<double>& protoana::ThinSliceEvent::GetEField ( ) const
inline

Definition at line 207 of file ThinSliceEvent.h.

207  {
208  return beam_EField;
209  };
std::vector< double > beam_EField
int protoana::ThinSliceEvent::GetEventID ( ) const
inline

Definition at line 264 of file ThinSliceEvent.h.

264 {return event_ID;};
const std::vector<double>& protoana::ThinSliceEvent::GetG4RWBranch ( const std::string br) const
inline

Definition at line 245 of file ThinSliceEvent.h.

245  {
246  return g4rw_weights.at(br);
247  };
std::map< std::string, std::vector< double > > g4rw_weights
double protoana::ThinSliceEvent::GetG4RWWeight ( const std::string br,
size_t  i 
) const
inline

Definition at line 238 of file ThinSliceEvent.h.

238  {
239  if (g4rw_weights.at(br).size() == 0) return 1.;
240  return g4rw_weights.at(br).at(i);
241  };
std::map< std::string, std::vector< double > > g4rw_weights
const std::map<std::string, std::vector<double> >& protoana::ThinSliceEvent::GetG4RWWeightMap ( ) const
inline

Definition at line 242 of file ThinSliceEvent.h.

242  {
243  return g4rw_weights;
244  };
std::map< std::string, std::vector< double > > g4rw_weights
bool protoana::ThinSliceEvent::GetHasPi0Shower ( ) const
inline

Definition at line 71 of file ThinSliceEvent.h.

71  {
72  return has_pi0_shower;
73  };
int protoana::ThinSliceEvent::GetPDG ( ) const
inline

Definition at line 231 of file ThinSliceEvent.h.

231  {
232  return pdg;
233  };
const std::vector<std::vector<double> >& protoana::ThinSliceEvent::GetRecoDaughterEFields ( ) const
inline

Definition at line 186 of file ThinSliceEvent.h.

186  {
187  return reco_daughter_efield;
188  };
std::vector< std::vector< double > > reco_daughter_efield
const std::vector<std::vector<double> >& protoana::ThinSliceEvent::GetRecoDaughterTrackdQdXs ( ) const
inline

Definition at line 178 of file ThinSliceEvent.h.

178  {
180  };
std::vector< std::vector< double > > reco_daughter_track_dQdX
const std::vector<std::vector<double> >& protoana::ThinSliceEvent::GetRecoDaughterTrackResRanges ( ) const
inline

Definition at line 170 of file ThinSliceEvent.h.

170  {
172  };
std::vector< std::vector< double > > reco_daughter_track_res_range
const std::vector<double>& protoana::ThinSliceEvent::GetRecoDaughterTrackScores ( ) const
inline

Definition at line 162 of file ThinSliceEvent.h.

162  {
164  };
std::vector< double > reco_daughter_track_scores
const std::vector<double>& protoana::ThinSliceEvent::GetRecoDaughterTrackThetas ( ) const
inline

Definition at line 155 of file ThinSliceEvent.h.

155  {
157  };
std::vector< double > reco_daughter_track_thetas
double protoana::ThinSliceEvent::GetRecoEndZ ( ) const
inline

Definition at line 106 of file ThinSliceEvent.h.

106  {
107  return reco_beam_endZ;
108  };
const std::vector<double>& protoana::ThinSliceEvent::GetRecoIncidentEnergies ( ) const
inline

Definition at line 127 of file ThinSliceEvent.h.

127  {
129  };
std::vector< double > reco_beam_incidentEnergies
double protoana::ThinSliceEvent::GetRecoInteractingEnergy ( ) const
inline

Definition at line 85 of file ThinSliceEvent.h.

85  {
87  };
int protoana::ThinSliceEvent::GetRunID ( ) const
inline

Definition at line 266 of file ThinSliceEvent.h.

266 {return run_ID;};
int protoana::ThinSliceEvent::GetSampleID ( ) const
inline

Definition at line 57 of file ThinSliceEvent.h.

57  {
58  return sample_ID;
59  };
int protoana::ThinSliceEvent::GetSelectionID ( ) const
inline

Definition at line 64 of file ThinSliceEvent.h.

64  {
65  return selection_ID;
66  };
int protoana::ThinSliceEvent::GetSubrunID ( ) const
inline

Definition at line 265 of file ThinSliceEvent.h.

265 {return subrun_ID;};
const std::vector<double>& protoana::ThinSliceEvent::GetTrackPitch ( ) const
inline

Definition at line 214 of file ThinSliceEvent.h.

214  {
215  return track_pitch;
216  };
std::vector< double > track_pitch
double protoana::ThinSliceEvent::GetTrueEndP ( ) const
inline

Definition at line 92 of file ThinSliceEvent.h.

92  {
93  return true_beam_endP;
94  };
double protoana::ThinSliceEvent::GetTrueEndZ ( ) const
inline

Definition at line 99 of file ThinSliceEvent.h.

99  {
100  return true_beam_endZ;
101  };
const std::vector<double>& protoana::ThinSliceEvent::GetTrueIncidentEnergies ( ) const
inline

Definition at line 134 of file ThinSliceEvent.h.

134  {
136  };
std::vector< double > true_beam_incidentEnergies
double protoana::ThinSliceEvent::GetTrueInteractingEnergy ( ) const
inline

Definition at line 78 of file ThinSliceEvent.h.

78  {
80  };
double protoana::ThinSliceEvent::GetTrueMass ( ) const
inline

Definition at line 120 of file ThinSliceEvent.h.

120  {
121  return true_beam_mass;
122  };
const std::vector<int>& protoana::ThinSliceEvent::GetTrueSlices ( ) const
inline

Definition at line 193 of file ThinSliceEvent.h.

193  {
194  return true_beam_slices;
195  };
std::vector< int > true_beam_slices
double protoana::ThinSliceEvent::GetTrueStartP ( ) const
inline

Definition at line 113 of file ThinSliceEvent.h.

113  {
114  return true_beam_startP;
115  };
const std::vector<double>& protoana::ThinSliceEvent::GetTrueTrajKE ( ) const
inline

Definition at line 148 of file ThinSliceEvent.h.

148  {
149  return true_beam_traj_KE;
150  };
std::vector< double > true_beam_traj_KE
const std::vector<double>& protoana::ThinSliceEvent::GetTrueTrajZ ( ) const
inline

Definition at line 141 of file ThinSliceEvent.h.

141  {
142  return true_beam_traj_Z;
143  };
std::vector< double > true_beam_traj_Z
bool protoana::ThinSliceEvent::HasG4RWBranch ( const std::string br) const
inline

Definition at line 248 of file ThinSliceEvent.h.

248  {
249  return (g4rw_weights.find(br) != g4rw_weights.end());
250  };
std::map< std::string, std::vector< double > > g4rw_weights
void protoana::ThinSliceEvent::MakeG4RWBranch ( const std::string br,
const std::vector< double > &  ws 
)
inline

Definition at line 235 of file ThinSliceEvent.h.

235  {
236  g4rw_weights[br] = ws;
237  };
std::map< std::string, std::vector< double > > g4rw_weights
void protoana::ThinSliceEvent::MakeG4RWSpline ( const std::string br)
inline

Definition at line 252 of file ThinSliceEvent.h.

252  {
253  std::vector<double> vars;
254  if (!g4rw_weights[br].size()) return;
255  for (size_t i = 0; i < g4rw_weights[br].size(); ++i) {
256  vars.push_back(.1*(1+i));
257  }
258  std::string name = "g4rw_spline_event_" + std::to_string(event_ID) + "_" +
260  g4rw_splines[br] = new TSpline3(name.c_str(), &vars[0],
261  &g4rw_weights[br][0], vars.size());
262  };
static QCString name
Definition: declinfo.cpp:673
std::string string
Definition: nybbler.cc:12
std::map< std::string, std::vector< double > > g4rw_weights
decltype(auto) constexpr size(T &&obj)
ADL-aware version of std::size.
Definition: StdUtils.h:92
std::map< std::string, TSpline3 * > g4rw_splines
std::string to_string(ModuleType const mt)
Definition: ModuleType.h:34
void protoana::ThinSliceEvent::SetBeamInstP ( double  p)
inline

Definition at line 221 of file ThinSliceEvent.h.

221  {
222  beam_inst_P = p;
223  };
p
Definition: test.py:223
void protoana::ThinSliceEvent::SetdQdXCalibrated ( std::vector< double >  v)
inline

Definition at line 203 of file ThinSliceEvent.h.

203  {
204  calibrated_dQdX = v;
205  };
std::vector< double > calibrated_dQdX
void protoana::ThinSliceEvent::SetEField ( std::vector< double >  v)
inline

Definition at line 210 of file ThinSliceEvent.h.

210  {
211  beam_EField = v;
212  };
std::vector< double > beam_EField
void protoana::ThinSliceEvent::SetHasPi0Shower ( bool  s)
inline

Definition at line 74 of file ThinSliceEvent.h.

74  {
75  has_pi0_shower = s;
76  };
static QCString * s
Definition: config.cpp:1042
void protoana::ThinSliceEvent::SetPDG ( int  p)
inline

Definition at line 228 of file ThinSliceEvent.h.

228  {
229  pdg = p;
230  };
p
Definition: test.py:223
void protoana::ThinSliceEvent::SetRecoDaughterTrackScores ( std::vector< double >  v)
inline

Definition at line 165 of file ThinSliceEvent.h.

165  {
167  };
std::vector< double > reco_daughter_track_scores
void protoana::ThinSliceEvent::SetRecoDaughterTrackThetas ( std::vector< double >  v)
inline

Definition at line 158 of file ThinSliceEvent.h.

158  {
160  };
std::vector< double > reco_daughter_track_thetas
void protoana::ThinSliceEvent::SetRecoEndZ ( double  p)
inline

Definition at line 109 of file ThinSliceEvent.h.

109  {
110  reco_beam_endZ = p;
111  };
p
Definition: test.py:223
void protoana::ThinSliceEvent::SetRecoIncidentEnergies ( std::vector< double >  v)
inline

Definition at line 130 of file ThinSliceEvent.h.

130  {
132  };
std::vector< double > reco_beam_incidentEnergies
void protoana::ThinSliceEvent::SetRecoInteractingEnergy ( double  e)
inline

Definition at line 88 of file ThinSliceEvent.h.

88  {
90  };
const double e
void protoana::ThinSliceEvent::SetSampleID ( int  s)
inline

Definition at line 60 of file ThinSliceEvent.h.

60  {
61  sample_ID = s;
62  };
static QCString * s
Definition: config.cpp:1042
void protoana::ThinSliceEvent::SetSelectionID ( int  s)
inline

Definition at line 67 of file ThinSliceEvent.h.

67  {
68  selection_ID = s;
69  };
static QCString * s
Definition: config.cpp:1042
void protoana::ThinSliceEvent::SetTrackPitch ( std::vector< double >  v)
inline

Definition at line 217 of file ThinSliceEvent.h.

217  {
218  track_pitch = v;
219  };
std::vector< double > track_pitch
void protoana::ThinSliceEvent::SetTrueEndP ( double  p)
inline

Definition at line 95 of file ThinSliceEvent.h.

95  {
96  true_beam_endP = p;
97  };
p
Definition: test.py:223
void protoana::ThinSliceEvent::SetTrueEndZ ( double  z)
inline

Definition at line 102 of file ThinSliceEvent.h.

102  {
103  true_beam_endZ = z;
104  };
void protoana::ThinSliceEvent::SetTrueIncidentEnergies ( std::vector< double >  v)
inline

Definition at line 137 of file ThinSliceEvent.h.

137  {
139  };
std::vector< double > true_beam_incidentEnergies
void protoana::ThinSliceEvent::SetTrueInteractingEnergy ( double  e)
inline

Definition at line 81 of file ThinSliceEvent.h.

81  {
83  };
const double e
void protoana::ThinSliceEvent::SetTrueMass ( double  m)
inline

Definition at line 123 of file ThinSliceEvent.h.

123  {
124  true_beam_mass = m;
125  };
void protoana::ThinSliceEvent::SetTrueSlices ( std::vector< int >  v)
inline

Definition at line 196 of file ThinSliceEvent.h.

196  {
197  true_beam_slices = v;
198  };
std::vector< int > true_beam_slices
void protoana::ThinSliceEvent::SetTrueStartP ( double  p)
inline

Definition at line 116 of file ThinSliceEvent.h.

116  {
118  };
p
Definition: test.py:223
void protoana::ThinSliceEvent::SetTrueTrajKE ( std::vector< double >  v)
inline

Definition at line 151 of file ThinSliceEvent.h.

151  {
152  true_beam_traj_KE = v;
153  };
std::vector< double > true_beam_traj_KE
void protoana::ThinSliceEvent::SetTrueTrajZ ( std::vector< double >  v)
inline

Definition at line 144 of file ThinSliceEvent.h.

144  {
145  true_beam_traj_Z = v;
146  };
std::vector< double > true_beam_traj_Z

Member Data Documentation

std::vector<double> protoana::ThinSliceEvent::beam_EField
private

Definition at line 289 of file ThinSliceEvent.h.

double protoana::ThinSliceEvent::beam_inst_P
private

Definition at line 276 of file ThinSliceEvent.h.

std::vector<double> protoana::ThinSliceEvent::calibrated_dQdX
private

Definition at line 289 of file ThinSliceEvent.h.

int protoana::ThinSliceEvent::event_ID
private

Definition at line 266 of file ThinSliceEvent.h.

std::map<std::string, TSpline3*> protoana::ThinSliceEvent::g4rw_splines
private

Definition at line 292 of file ThinSliceEvent.h.

std::map<std::string, std::vector<double> > protoana::ThinSliceEvent::g4rw_weights
private

Definition at line 291 of file ThinSliceEvent.h.

bool protoana::ThinSliceEvent::has_pi0_shower
private

Definition at line 277 of file ThinSliceEvent.h.

int protoana::ThinSliceEvent::pdg
private

Definition at line 272 of file ThinSliceEvent.h.

double protoana::ThinSliceEvent::reco_beam_endZ
private

Definition at line 275 of file ThinSliceEvent.h.

std::vector<double> protoana::ThinSliceEvent::reco_beam_incidentEnergies
private

Definition at line 278 of file ThinSliceEvent.h.

double protoana::ThinSliceEvent::reco_beam_interactingEnergy
private

Definition at line 273 of file ThinSliceEvent.h.

std::vector<std::vector<double> > protoana::ThinSliceEvent::reco_daughter_efield
private

Definition at line 284 of file ThinSliceEvent.h.

std::vector<std::vector<double> > protoana::ThinSliceEvent::reco_daughter_track_dQdX
private

Definition at line 284 of file ThinSliceEvent.h.

std::vector<std::vector<double> > protoana::ThinSliceEvent::reco_daughter_track_res_range
private

Definition at line 284 of file ThinSliceEvent.h.

std::vector<double> protoana::ThinSliceEvent::reco_daughter_track_scores
private

Definition at line 278 of file ThinSliceEvent.h.

std::vector<double> protoana::ThinSliceEvent::reco_daughter_track_thetas
private

Definition at line 278 of file ThinSliceEvent.h.

int protoana::ThinSliceEvent::run_ID
private

Definition at line 266 of file ThinSliceEvent.h.

int protoana::ThinSliceEvent::sample_ID
private

Definition at line 270 of file ThinSliceEvent.h.

int protoana::ThinSliceEvent::selection_ID
private

Definition at line 271 of file ThinSliceEvent.h.

int protoana::ThinSliceEvent::subrun_ID
private

Definition at line 266 of file ThinSliceEvent.h.

std::vector<double> protoana::ThinSliceEvent::track_pitch
private

Definition at line 289 of file ThinSliceEvent.h.

double protoana::ThinSliceEvent::true_beam_endP
private

Definition at line 274 of file ThinSliceEvent.h.

double protoana::ThinSliceEvent::true_beam_endZ
private

Definition at line 275 of file ThinSliceEvent.h.

std::vector<double> protoana::ThinSliceEvent::true_beam_incidentEnergies
private

Definition at line 278 of file ThinSliceEvent.h.

double protoana::ThinSliceEvent::true_beam_interactingEnergy
private

Definition at line 273 of file ThinSliceEvent.h.

double protoana::ThinSliceEvent::true_beam_mass
private

Definition at line 274 of file ThinSliceEvent.h.

std::vector<int> protoana::ThinSliceEvent::true_beam_slices
private

Definition at line 288 of file ThinSliceEvent.h.

double protoana::ThinSliceEvent::true_beam_startP
private

Definition at line 275 of file ThinSliceEvent.h.

std::vector<double> protoana::ThinSliceEvent::true_beam_traj_KE
private

Definition at line 278 of file ThinSliceEvent.h.

std::vector<double> protoana::ThinSliceEvent::true_beam_traj_Z
private

Definition at line 278 of file ThinSliceEvent.h.


The documentation for this class was generated from the following file: