Macro to compare masses in ROOT data base to the values from pdg pdg.
The ROOT values are read in by TDatabasePDG from $ROOTSYS/etc/pdg_table.txt
a_00 10111 pdg mass 1.474000E+00 pdg err 1.900000E-02 root Mass 9.835000E-01 >> deltaM 4.905000E-01 = 33.277%
a_0+ 10211 pdg mass 1.474000E+00 pdg err 1.900000E-02 root Mass 9.835000E-01 >> deltaM 4.905000E-01 = 33.277%
void CompareMasses()
{
massWidthFile.
ReplaceAll(
"CompareMasses.C",
"mass_width_2008.mc.txt");
FILE*
file = fopen(massWidthFile.
Data(),
"r");
Printf(
"Could not open PDG particle file %s", massWidthFile.
Data());
return;
}
char cempty;
while (fgets(
c, 200,
file)) {
if (
c[0] !=
'*' &&
c[0] !=
'W') {
sscanf(&
c[1],
"%8d", &pdg[0]);
pdg[1] = 0;
for(int i = 0;i<8;i++){
sscanf(&
c[9+i],
"%c",&cempty);
if(cempty !=
' ')sscanf(&
c[9],
"%8d",&pdg[1]);
}
pdg[2] = 0;
for(int i = 0;i<8;i++){
sscanf(&
c[17+i],
"%c",&cempty);
if(cempty !=
' ')sscanf(&
c[17],
"%8d",&pdg[2]);
}
pdg[3] = 0;
for(int i = 0;i<8;i++){
sscanf(&
c[25+i],
"%c",&cempty);
if(cempty !=
' ')sscanf(&
c[25],
"%8d",&pdg[3]);
}
sscanf(&
c[35],
"%14f",&mass);
sscanf(&
c[50],
"%8f",&err1);
sscanf(&
c[50],
"%8f",&err2);
for(int ipdg = 0;ipdg < 4;ipdg++){
if(pdg[ipdg]==0)continue;
if(partRoot){
if (mass != 0.0 && deltaM/mass>1
E-05){
ndiff++;
Printf(
"%10s %8d pdg mass %E pdg err %E root Mass %E >> deltaM %E = %3.3f%%",partRoot->
GetName(),pdg[ipdg],mass,err,massRoot,deltaM,100.*deltaM/mass);
}
}
}
}
}
if (ndiff == 0)
Printf(
"Crongratulations !! All particles in ROOT and PDG have identical masses");
}
R__EXTERN TSystem * gSystem
static TDatabasePDG * Instance()
static function
TParticlePDG * GetParticle(Int_t pdgCode) const
Get a pointer to the particle object according to the MC code number.
virtual const char * GetName() const
Returns name of object.
Description of the static properties of a particle.
const char * Data() const
TString & ReplaceAll(const TString &s1, const TString &s2)
virtual const char * UnixPathName(const char *unixpathname)
Convert from a Unix pathname to a local pathname.
Short_t Max(Short_t a, Short_t b)
constexpr Double_t E()
Base of natural log:
- Author
- Christian.Klein-Boesing
Definition in file CompareMasses.C.