MINT2
Public Member Functions | Protected Member Functions | Protected Attributes | Static Protected Attributes | Static Private Attributes | List of all members
ParticleProperties Class Reference

#include <ParticleProperties.h>

Public Member Functions

double mass () const
 
double mErrPlus () const
 
double mErrMinus () const
 
void setMass (double m) const
 
double width () const
 
double wErrPlus () const
 
double wErrMinus () const
 
std::string I () const
 
int G () const
 
std::string J () const
 
int P () const
 
int C () const
 
int pdg_id () const
 
std::string charge () const
 
int R () const
 
char S () const
 
std::string name () const
 
std::string quarks () const
 
const MultiQuarkContentnetQuarkContent () const
 
double lifetime () const
 
double ctau () const
 
double ctau_in_microns () const
 
double lifetime_in_ns () const
 
double lifetime_in_ps () const
 
double radius () const
 
std::string ScalarVectorPseudoAxialVectorTensor () const
 
std::string SVPAT () const
 
bool isVector () const
 
bool isScalar () const
 
bool isPseudoScalar () const
 
bool isAxialVector () const
 
bool isTensor () const
 
bool isPseudoTensor () const
 
bool isValid () const
 
bool hasDistinctAnti () const
 
bool isItsOwnAnti () const
 
 ParticleProperties (std::string pdg_string="")
 
void print (std::ostream &out=std::cout) const
 
bool operator== (const ParticleProperties &rhs) const
 
bool operator< (const ParticleProperties &rhs) const
 
bool operator> (const ParticleProperties &rhs) const
 
bool operator<= (const ParticleProperties &rhs) const
 
bool operator>= (const ParticleProperties &rhs) const
 
bool antiThis ()
 
ParticleProperties anti () const
 
bool isNonResonant () const
 

Protected Member Functions

void setRadius ()
 
void antiQuarks ()
 
void antiQuarkContent ()
 
void antiCharge ()
 

Protected Attributes

double _mass
 
double _mErrPlus
 
double _mErrMinus
 
double _width
 
double _wErrPlus
 
double _wErrMinus
 
std::string _Isospin
 
int _Gparity
 
std::string _JtotalSpin
 
int _Parity
 
int _Cqm
 
char _Aformat
 
int _pdg_id
 
std::string _charge
 
int _Rexist
 
char _Status
 
std::string _name
 
std::string _quarks
 
MultiQuarkContent _netQuarkContent
 
double _Radius
 
bool _isValid
 

Static Protected Attributes

static double _defaultRadius = 1.5/GeV
 
static double _defaultCharmRadius = 5.0/GeV
 

Static Private Attributes

static const char * pionString = "1.3957018E+02 ,3.5E-04,3.5E-04,2.5284E-14 ,5.0E-18,5.0E-18,1 ,-,0 ,-, ,B, 211, +, ,R,pi ,uD "
 

Detailed Description

Definition at line 13 of file ParticleProperties.h.

Constructor & Destructor Documentation

◆ ParticleProperties()

ParticleProperties::ParticleProperties ( std::string  pdg_string = "")

Definition at line 46 of file ParticleProperties.cpp.

48 {
49  bool debugThis=false;
50 
51  _isValid=false;
52  if(pdg_string.empty()) return;
53  if(pdg_string[0] == '*') return;
54 
55  replace(pdg_string.begin(), pdg_string.end(), '\n', ','); // add a ',' to the end
56  remove(pdg_string.begin(), pdg_string.end(), ' '); // remove white space
57 
58  static const unsigned int nFields=18;
59  std::string s[nFields];
60  unsigned int first= 0;
61  unsigned int counter=0;
62  unsigned int charCounter=0;
63  while(counter < nFields){
64  if(pdg_string[charCounter] == ','){
65  int n=charCounter-first;
66  if(n<0)n=0;
67 
68  std::string tempString = " ";
69  if(n >= 1) tempString = pdg_string.substr(first, n);
70  if(debugThis){
71  cout << " tempString for charCounter = " << charCounter
72  << ", and counter = " << counter
73  << " is: " << tempString << endl;
74  }
75  if(tempString.empty()){
76  s[counter] = " ";
77  }else{
78  s[counter] = tempString;
79  }
80 
81  ++counter;
82  first = charCounter+1;
83  }
84  if(charCounter < pdg_string.size()-1) charCounter++;
85  }
86  if(counter != nFields) return; // sth wrong
87 
88  if(debugThis){
89  cout << "the strings : ";
90  for(unsigned int i=0; i<nFields; i++) cout << s[i] << "\n";
91  cout << endl;
92  }
93 
94  _mass = atof(s[0].c_str());
95  _mErrPlus = atof(s[1].c_str());
96  _mErrMinus = atof(s[2].c_str());
97  _width = atof(s[3].c_str());
98  _wErrPlus = atof(s[4].c_str());
99  _wErrMinus = atof(s[5].c_str());
100 
101  _Isospin = s[6];
102  char Gchar = s[7][0];
103  _JtotalSpin = s[8];
104  char Pchar = s[9][0];
105  char Cchar = s[10][0];
106  _Aformat = s[11][0];
107  _pdg_id = atoi(s[12].c_str());
108  _charge = s[13];
109  _Rexist = atoi(s[14].c_str());
110  _Status = s[15][0];
111  _name = s[16];
112  _quarks = s[17];
113 
115 
116  if(Gchar == '+') _Gparity= 1;
117  if(Gchar == '-') _Gparity= -1;
118  if(Gchar == ' ') _Gparity= 0;
119  if(Gchar == '0') _Gparity= 0;
120 
121  if(Cchar == '+') _Cqm= 1;
122  if(Cchar == '-') _Cqm= -1;
123  if(Cchar == ' ') _Cqm= 0;
124  if(Cchar == '0') _Cqm= 0;
125 
126  if(Pchar == '+') _Parity= 1;
127  if(Pchar == '-') _Parity= -1;
128  if(Pchar == ' ') _Parity= 0;
129  if(Pchar == '0') _Parity= 0;
130 
131  setRadius();
132 
133  if(debugThis){
134  cout << "ParticleProperties constructor: "
135  << "This is how I parsed the string: ";
136  this->print();
137  }
138 
139  _isValid=true;
140 }
MultiQuarkContent _netQuarkContent
bool initFromString(const std::string &str)
static const double s
void print(std::ostream &out=std::cout) const

Member Function Documentation

◆ anti()

ParticleProperties ParticleProperties::anti ( ) const

Definition at line 230 of file ParticleProperties.cpp.

230  {
231  ParticleProperties PP(*this);
232  PP.antiThis();
233  return PP;
234 }

◆ antiCharge()

void ParticleProperties::antiCharge ( )
protected

Definition at line 213 of file ParticleProperties.cpp.

213  {
214  replace(_charge.begin(), _charge.end(), '+', 'f');
215  replace(_charge.begin(), _charge.end(), '-', '+');
216  replace(_charge.begin(), _charge.end(), 'f', '-');
217 }

◆ antiQuarkContent()

void ParticleProperties::antiQuarkContent ( )
protected

Definition at line 209 of file ParticleProperties.cpp.

209  {
211 }
MultiQuarkContent _netQuarkContent

◆ antiQuarks()

void ParticleProperties::antiQuarks ( )
protected

Definition at line 178 of file ParticleProperties.cpp.

178  {
179  if(_quarks.empty()) return;
180 
181  replace(_quarks.begin(), _quarks.end(), 'U', 'h');
182  replace(_quarks.begin(), _quarks.end(), 'D', 'l');
183  replace(_quarks.begin(), _quarks.end(), 'C', 'i');
184  replace(_quarks.begin(), _quarks.end(), 'S', 'm');
185  replace(_quarks.begin(), _quarks.end(), 'T', 'j');
186  replace(_quarks.begin(), _quarks.end(), 'B', 'n');
187 
188  replace(_quarks.begin(), _quarks.end(), 'u', 'U');
189  replace(_quarks.begin(), _quarks.end(), 'd', 'D');
190  replace(_quarks.begin(), _quarks.end(), 'c', 'C');
191  replace(_quarks.begin(), _quarks.end(), 's', 'S');
192  replace(_quarks.begin(), _quarks.end(), 't', 'T');
193  replace(_quarks.begin(), _quarks.end(), 'b', 'B');
194 
195  replace(_quarks.begin(), _quarks.end(), 'h', 'u');
196  replace(_quarks.begin(), _quarks.end(), 'l', 'd');
197  replace(_quarks.begin(), _quarks.end(), 'i', 'c');
198  replace(_quarks.begin(), _quarks.end(), 'm', 's');
199  replace(_quarks.begin(), _quarks.end(), 'j', 't');
200  replace(_quarks.begin(), _quarks.end(), 'n', 'b');
201 
202  // since this also changes sqrt to sqrT, fix that:
203  unsigned int pos = _quarks.find("SqrT");
204  if(pos < _quarks.size()){
205  _quarks.replace(pos, 4, "sqrt");
206  }
207 }

◆ antiThis()

bool ParticleProperties::antiThis ( )

Definition at line 221 of file ParticleProperties.cpp.

221  {
222  if(! hasDistinctAnti()) return false;
223  antiCharge();
224  antiQuarks();
226  _pdg_id *= -1;
227  return true;
228 }

◆ C()

int ParticleProperties::C ( ) const
inline

Definition at line 69 of file ParticleProperties.h.

69 {return _Cqm;} // Charge 'parity'

◆ charge()

std::string ParticleProperties::charge ( ) const
inline

Definition at line 71 of file ParticleProperties.h.

71 {return _charge;}

◆ ctau()

double ParticleProperties::ctau ( ) const

Definition at line 254 of file ParticleProperties.cpp.

254  {
255  return lifetime()*c_light;
256 }
static const double c_light

◆ ctau_in_microns()

double ParticleProperties::ctau_in_microns ( ) const

Definition at line 257 of file ParticleProperties.cpp.

257  {
258  return ctau()/micrometer;
259 }
static const double micrometer

◆ G()

int ParticleProperties::G ( ) const
inline

Definition at line 66 of file ParticleProperties.h.

66 {return _Gparity;}; // G-parity

◆ hasDistinctAnti()

bool ParticleProperties::hasDistinctAnti ( ) const

Definition at line 218 of file ParticleProperties.cpp.

218  {
219  return ! (_Aformat == ' ');
220 }

◆ I()

std::string ParticleProperties::I ( ) const
inline

Definition at line 65 of file ParticleProperties.h.

65 {return _Isospin;} // isospin

◆ isAxialVector()

bool ParticleProperties::isAxialVector ( ) const
inline

Definition at line 93 of file ParticleProperties.h.

93 {return ScalarVectorPseudoAxialVectorTensor() == "A";}
std::string ScalarVectorPseudoAxialVectorTensor() const

◆ isItsOwnAnti()

bool ParticleProperties::isItsOwnAnti ( ) const
inline

Definition at line 102 of file ParticleProperties.h.

102 {return ! hasDistinctAnti();}

◆ isNonResonant()

bool ParticleProperties::isNonResonant ( ) const

Definition at line 284 of file ParticleProperties.cpp.

284  {
285 return ( 9981 == abs(pdg_id())
286  || 9991 == abs(pdg_id())
287  || 9983 == abs(pdg_id())
288  || 9993 == abs(pdg_id())
289  || 9985 == abs(pdg_id())
290  || 9975 == abs(pdg_id())
291  || 99981 == abs(pdg_id())
292  || 99991 == abs(pdg_id())
293  || 99983 == abs(pdg_id())
294  || 99993 == abs(pdg_id())
295  || 99985 == abs(pdg_id())
296  || 99975 == abs(pdg_id())
297  || 999981 == abs(pdg_id())
298  || 999991 == abs(pdg_id())
299  || 999983 == abs(pdg_id())
300  || 999993 == abs(pdg_id())
301  || 999985 == abs(pdg_id())
302  || 999975 == abs(pdg_id())
303  );
304 }

◆ isPseudoScalar()

bool ParticleProperties::isPseudoScalar ( ) const
inline

Definition at line 92 of file ParticleProperties.h.

92 {return ScalarVectorPseudoAxialVectorTensor() == "P";}
std::string ScalarVectorPseudoAxialVectorTensor() const

◆ isPseudoTensor()

bool ParticleProperties::isPseudoTensor ( ) const
inline

Definition at line 95 of file ParticleProperties.h.

95 {return ScalarVectorPseudoAxialVectorTensor() == "PT";}
std::string ScalarVectorPseudoAxialVectorTensor() const

◆ isScalar()

bool ParticleProperties::isScalar ( ) const
inline

Definition at line 91 of file ParticleProperties.h.

91 {return ScalarVectorPseudoAxialVectorTensor() == "S";}
std::string ScalarVectorPseudoAxialVectorTensor() const

◆ isTensor()

bool ParticleProperties::isTensor ( ) const
inline

Definition at line 94 of file ParticleProperties.h.

94 {return ScalarVectorPseudoAxialVectorTensor() == "T";}
std::string ScalarVectorPseudoAxialVectorTensor() const

◆ isValid()

bool ParticleProperties::isValid ( ) const
inline

Definition at line 99 of file ParticleProperties.h.

99 {return _isValid;}

◆ isVector()

bool ParticleProperties::isVector ( ) const
inline

Definition at line 90 of file ParticleProperties.h.

90 {return ScalarVectorPseudoAxialVectorTensor() == "V";}
std::string ScalarVectorPseudoAxialVectorTensor() const

◆ J()

std::string ParticleProperties::J ( ) const
inline

Definition at line 67 of file ParticleProperties.h.

67 {return _JtotalSpin;} // total spin

◆ lifetime()

double ParticleProperties::lifetime ( ) const

Definition at line 243 of file ParticleProperties.cpp.

243  {
244  if(width()<0) return -9999.0;
245  if(width() == 0) return 9.9999e109;
246  return hbar_Planck/width();
247 }
static const double hbar_Planck
double width() const

◆ lifetime_in_ns()

double ParticleProperties::lifetime_in_ns ( ) const

Definition at line 248 of file ParticleProperties.cpp.

248  {
249  return lifetime()/ns;
250 }
static const double ns

◆ lifetime_in_ps()

double ParticleProperties::lifetime_in_ps ( ) const

Definition at line 251 of file ParticleProperties.cpp.

251  {
252  return lifetime()/picosecond;
253 }
static const double picosecond

◆ mass()

double ParticleProperties::mass ( ) const
inline

Definition at line 47 of file ParticleProperties.h.

47 {return _mass;}

◆ mErrMinus()

double ParticleProperties::mErrMinus ( ) const
inline

Definition at line 53 of file ParticleProperties.h.

53 {return _mErrMinus;}

◆ mErrPlus()

double ParticleProperties::mErrPlus ( ) const
inline

Definition at line 52 of file ParticleProperties.h.

52 {return _mErrPlus;}

◆ name()

std::string ParticleProperties::name ( ) const

Definition at line 236 of file ParticleProperties.cpp.

236  {
237  std::string fullName = _name;
238  if(_pdg_id < 0 && _Aformat == 'F') fullName += "bar";
239  fullName += _charge;
240  return fullName;
241 }

◆ netQuarkContent()

const MultiQuarkContent& ParticleProperties::netQuarkContent ( ) const
inline

Definition at line 76 of file ParticleProperties.h.

76 {return _netQuarkContent;}
MultiQuarkContent _netQuarkContent

◆ operator<()

bool ParticleProperties::operator< ( const ParticleProperties rhs) const
inline

Definition at line 114 of file ParticleProperties.h.

114  {
115  if(_pdg_id==0 || rhs._pdg_id==0){
116  return name() < rhs.name();
117  }
118  return _pdg_id < rhs._pdg_id;
119  }
std::string name() const

◆ operator<=()

bool ParticleProperties::operator<= ( const ParticleProperties rhs) const
inline

Definition at line 123 of file ParticleProperties.h.

123  {
124  return (*this < rhs || *this == rhs);
125  }

◆ operator==()

bool ParticleProperties::operator== ( const ParticleProperties rhs) const
inline

Definition at line 108 of file ParticleProperties.h.

108  {
109  if(_pdg_id==0 && rhs._pdg_id==0){
110  return name() == rhs.name();
111  }
112  return _pdg_id == rhs._pdg_id;
113  }
std::string name() const

◆ operator>()

bool ParticleProperties::operator> ( const ParticleProperties rhs) const
inline

Definition at line 120 of file ParticleProperties.h.

120  {
121  return ! (*this == rhs || *this < rhs);
122  }

◆ operator>=()

bool ParticleProperties::operator>= ( const ParticleProperties rhs) const
inline

Definition at line 126 of file ParticleProperties.h.

126  {
127  return (*this > rhs || *this == rhs);
128  }

◆ P()

int ParticleProperties::P ( ) const
inline

Definition at line 68 of file ParticleProperties.h.

68 {return _Parity;} // Parity

◆ pdg_id()

int ParticleProperties::pdg_id ( ) const
inline

Definition at line 70 of file ParticleProperties.h.

70 {return _pdg_id;}

◆ print()

void ParticleProperties::print ( std::ostream &  out = std::cout) const

Definition at line 22 of file ParticleProperties.cpp.

22  {
23  out << "Mass " << mass() << " +" << mErrPlus() << " -" << mErrMinus()
24  << "\nWidth " << width() << " +" << wErrPlus() << " -" << wErrMinus()
25  << "\n I=" << I() << ", G=" << G()
26  << "\n J=" << J() << ", C=" << C() << ", P=" << P()
27  << "\n Q = " << charge()
28  << "\n pdg_id " << pdg_id()
29  << "\n name " << name()
30  << "\n quark content: " << quarks()
31  << "\n net-quark-content " << netQuarkContent()
32  << "\n is its own antiparticle? " << (isItsOwnAnti() ? "yes" : "no")
33  << "\n lifetime " << lifetime_in_ps() << " ps"
34  << "\n radius " << radius()*GeV << " /GeV"
35  << endl;
36 }
double wErrPlus() const
double mErrMinus() const
double lifetime_in_ps() const
std::string I() const
double mErrPlus() const
std::string J() const
std::string quarks() const
std::string charge() const
static const double GeV
std::string name() const
double wErrMinus() const
const MultiQuarkContent & netQuarkContent() const
double width() const

◆ quarks()

std::string ParticleProperties::quarks ( ) const
inline

Definition at line 75 of file ParticleProperties.h.

75 {return _quarks;}

◆ R()

int ParticleProperties::R ( ) const
inline

Definition at line 72 of file ParticleProperties.h.

72 {return _Rexist;} // likelihood of existence, baryons only

◆ radius()

double ParticleProperties::radius ( ) const

Definition at line 261 of file ParticleProperties.cpp.

261  {
262  return _Radius;
263  // not set in mass_width.csv, but in normal options file
264  // has default: 5/GeV for D0, 1.5/GeV otherwise
265  // Set in your usual options file like this (units: inverse GeV)
266  // <pdg_id>_Radius_invGeV <number in inverse GeV>
267  // for example:
268  // 421_Radius_invGeV 1.24
269  //
270 
271 }

◆ S()

char ParticleProperties::S ( ) const
inline

Definition at line 73 of file ParticleProperties.h.

73 {return _Status;} // status (estalished or not etc)

◆ ScalarVectorPseudoAxialVectorTensor()

std::string ParticleProperties::ScalarVectorPseudoAxialVectorTensor ( ) const

Definition at line 273 of file ParticleProperties.cpp.

273  {
274 
275  if(J()=="0" && P() == -1) return "P";
276  else if(J()=="1" && P() == -1) return "V";
277  else if(J()=="0" && P() == 1) return "S";
278  else if(J()=="1" && P() == 1) return "A";
279  else if(J()=="2" && P() == 1) return "T";
280  else if(J()=="2" && P() == -1) return "PT";
281  else return "?";
282 }
std::string J() const

◆ setMass()

void ParticleProperties::setMass ( double  m) const

Definition at line 174 of file ParticleProperties.cpp.

174  {
175  _mass = m;
176 }
static const double m

◆ setRadius()

void ParticleProperties::setRadius ( )
protected

Definition at line 142 of file ParticleProperties.cpp.

142  {
143  // set radius (not part of mass_width.csv):
144  if (abs(pdg_id()) == 421
145  || abs(pdg_id()) == 411
146  || abs(pdg_id()) == 431){
148  }else{
150  }
151 
152  string pdg_id_string = anythingToString(abs(pdg_id()));
153  string parName = pdg_id_string + "_Radius_invGeV";
154  NamedParameter<double> specificR( parName
155  , (double) -9999.0
156  , (const char*) 0
157  , NamedParameterBase::QUIET
158  );
159  if(specificR > -9998){
160  _Radius = specificR/GeV;
161  }else{
162  NamedParameter<double> genericR("Default_Radius_invGeV"
163  , (double) -9999.0
164  , (const char*) 0
165  , NamedParameterBase::QUIET);
166  if(genericR > -9998){
167  _Radius = genericR/GeV;
168  }
169  }
170 
171  return;
172 }
static double _defaultCharmRadius
static const double GeV
std::string anythingToString(const T &anything)
Definition: Utils.h:62
static double _defaultRadius

◆ SVPAT()

std::string ParticleProperties::SVPAT ( ) const
inline

Definition at line 87 of file ParticleProperties.h.

87  {
89  }
std::string ScalarVectorPseudoAxialVectorTensor() const

◆ wErrMinus()

double ParticleProperties::wErrMinus ( ) const
inline

Definition at line 63 of file ParticleProperties.h.

63 {return _wErrMinus;}

◆ wErrPlus()

double ParticleProperties::wErrPlus ( ) const
inline

Definition at line 62 of file ParticleProperties.h.

62 {return _wErrPlus;}

◆ width()

double ParticleProperties::width ( ) const
inline

Definition at line 57 of file ParticleProperties.h.

57 { return _width;}

Member Data Documentation

◆ _Aformat

char ParticleProperties::_Aformat
protected

Definition at line 25 of file ParticleProperties.h.

◆ _charge

std::string ParticleProperties::_charge
protected

Definition at line 27 of file ParticleProperties.h.

◆ _Cqm

int ParticleProperties::_Cqm
protected

Definition at line 24 of file ParticleProperties.h.

◆ _defaultCharmRadius

double ParticleProperties::_defaultCharmRadius = 5.0/GeV
staticprotected

Definition at line 37 of file ParticleProperties.h.

◆ _defaultRadius

double ParticleProperties::_defaultRadius = 1.5/GeV
staticprotected

Definition at line 36 of file ParticleProperties.h.

◆ _Gparity

int ParticleProperties::_Gparity
protected

Definition at line 21 of file ParticleProperties.h.

◆ _Isospin

std::string ParticleProperties::_Isospin
protected

Definition at line 20 of file ParticleProperties.h.

◆ _isValid

bool ParticleProperties::_isValid
protected

Definition at line 39 of file ParticleProperties.h.

◆ _JtotalSpin

std::string ParticleProperties::_JtotalSpin
protected

Definition at line 22 of file ParticleProperties.h.

◆ _mass

double ParticleProperties::_mass
mutableprotected

Definition at line 17 of file ParticleProperties.h.

◆ _mErrMinus

double ParticleProperties::_mErrMinus
mutableprotected

Definition at line 17 of file ParticleProperties.h.

◆ _mErrPlus

double ParticleProperties::_mErrPlus
mutableprotected

Definition at line 17 of file ParticleProperties.h.

◆ _name

std::string ParticleProperties::_name
protected

Definition at line 30 of file ParticleProperties.h.

◆ _netQuarkContent

MultiQuarkContent ParticleProperties::_netQuarkContent
protected

Definition at line 33 of file ParticleProperties.h.

◆ _Parity

int ParticleProperties::_Parity
protected

Definition at line 23 of file ParticleProperties.h.

◆ _pdg_id

int ParticleProperties::_pdg_id
protected

Definition at line 26 of file ParticleProperties.h.

◆ _quarks

std::string ParticleProperties::_quarks
protected

Definition at line 31 of file ParticleProperties.h.

◆ _Radius

double ParticleProperties::_Radius
protected

Definition at line 35 of file ParticleProperties.h.

◆ _Rexist

int ParticleProperties::_Rexist
protected

Definition at line 28 of file ParticleProperties.h.

◆ _Status

char ParticleProperties::_Status
protected

Definition at line 29 of file ParticleProperties.h.

◆ _wErrMinus

double ParticleProperties::_wErrMinus
protected

Definition at line 19 of file ParticleProperties.h.

◆ _wErrPlus

double ParticleProperties::_wErrPlus
protected

Definition at line 19 of file ParticleProperties.h.

◆ _width

double ParticleProperties::_width
protected

Definition at line 19 of file ParticleProperties.h.

◆ pionString

const char * ParticleProperties::pionString = "1.3957018E+02 ,3.5E-04,3.5E-04,2.5284E-14 ,5.0E-18,5.0E-18,1 ,-,0 ,-, ,B, 211, +, ,R,pi ,uD "
staticprivate

Definition at line 14 of file ParticleProperties.h.


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