00001
00002
00003
00004
00005
00006
00007
00008
00009 #include <fstream>
00010 #include <iostream>
00011 #include <iomanip>
00012 #include <cstdlib>
00013
00014 #include "HepPID/ParticleIDMethods.hh"
00015 #include "HepPID/ParticleName.hh"
00016
00017 using std::setw;
00018
00019 int main()
00020 {
00021
00022
00023 const char outfile[] = "testParticleIDMethods.out";
00024 std::ofstream os( outfile );
00025 if( !os ) {
00026 std::cerr << "cannot open " << outfile << std::endl;
00027 exit(-1);
00028 }
00029
00030 int id[40] = { 5, 25, 15, 213, -3214, 10213, 9050225, -200543, 129050225,
00031 2000025, 3101, 3301, -2212, 1000020040, -1000060120, 555,
00032 5000040, 5100005, 24, 5100024, 5100025, 9221132,
00033 4111370, -4120240, 4110050, 10013730,
00034 1000993, 1000612, 1000622, 1000632, 1006213, 1000652,
00035 1009113, 1009213, 1009323,
00036 1093114, 1009333, 1006313, 1092214, 1006223 };
00037 int it;
00038 int nr, nx;
00039 int chg, sid, extra;
00040 int js, ls;
00041 for( it=0; it < 40; it++ ) {
00042 int pid = id[it];
00043 nx = HepPID::digit(HepPID::n,pid);
00044 nr = HepPID::digit(HepPID::nr,pid);
00045 extra = HepPID::extraBits(pid);
00046 os << std::endl;
00047 os << setw(21) << pid << ": " << nx << " " << nr
00048 << " " << HepPID::digit(HepPID::nl,pid)
00049 << " " << HepPID::digit(HepPID::nq1,pid)
00050 << " " << HepPID::digit(HepPID::nq2,pid)
00051 << " " << HepPID::digit(HepPID::nq3,pid)
00052 << " " << HepPID::digit(HepPID::nj,pid)
00053 << " extra bits " << extra << std::endl;
00054 js = HepPID::jSpin(pid);
00055 ls = HepPID::lSpin(pid);
00056 sid = HepPID::fundamentalID(pid);
00057 chg = HepPID::threeCharge(pid);
00058 if( !HepPID::isValid(pid) ) {
00059 os << "**** Invalid PID: " << pid << " ****" << std::endl;
00060 } else {
00061 if( HepPID::isHadron(pid) ) {
00062 if( HepPID::isMeson(pid) ) {
00063 os << "meson " << setw(10) << pid << ": " << nx
00064 << " " << nr << " " << ls << " "
00065 << js << " " << sid << " " << chg
00066 << " extra bits " << extra << std::endl;
00067 } else if( HepPID::isBaryon(pid) ) {
00068 os << "baryon " << setw(10) << pid << ": " << nx
00069 << " " << nr << " " << ls << " "
00070 << js << " " << sid << " " << chg
00071 << " extra bits " << extra << std::endl;
00072 } else if( HepPID::isRhadron(pid) ) {
00073 os << "Rhadron " << setw(10) << pid << ": " << nx
00074 << " " << nr << " " << ls << " "
00075 << js << " " << sid << " " << chg
00076 << " extra bits " << extra << std::endl;
00077 } else if( HepPID::isPentaquark(pid) ) {
00078 os << "pentaquark " << setw(10) << pid << ": " << nx
00079 << " " << nr << " " << ls << " "
00080 << js << " " << sid << " " << chg
00081 << " extra bits " << extra << std::endl;
00082 } else {
00083 os << "**** undefined hadron: " << pid
00084 << " ****" << std::endl;
00085 }
00086 } else if( HepPID::isLepton(pid) ) {
00087 os << "lepton " << setw(10) << pid << ": " << nx
00088 << " " << nr << " " << ls << " "
00089 << js << " " << sid << " " << chg
00090 << " extra bits " << extra << std::endl;
00091 } else if( HepPID::isDiQuark(pid) ) {
00092 os << "diquark " << setw(10) << pid << ": " << nx
00093 << " " << nr << " " << ls << " "
00094 << js << " " << sid << " " << chg
00095 << " extra bits " << extra << std::endl;
00096 } else if( HepPID::isSUSY(pid) ) {
00097 os << "SUSY " << setw(10) << pid << ": " << nx
00098 << " " << nr << " " << ls << " "
00099 << js << " " << sid << " " << chg
00100 << " extra bits " << extra << std::endl;
00101 } else if( HepPID::isDyon(pid) ) {
00102 os << "Dyon " << setw(10) << pid << ": " << nx
00103 << " " << nr << " " << ls << " "
00104 << js << " " << sid << " " << chg
00105 << " extra bits " << extra << std::endl;
00106 } else if( HepPID::isQBall(pid) ) {
00107 os << "QBall " << setw(10) << pid << ": " << nx
00108 << " " << nr << " " << ls << " "
00109 << js << " " << sid << " " << chg
00110 << " extra bits " << extra << std::endl;
00111 } else if( HepPID::isNucleus(pid) ) {
00112 os << "ion " << setw(11) << pid
00113 << ": " << HepPID::digit(HepPID::n10,pid)
00114 << " " << setw(3) << HepPID::A(pid)
00115 << " " << setw(3) << HepPID::Z(pid)
00116 << " " << setw(3) << HepPID::lambda(pid)
00117 << " " << js << " " << sid << " " << chg
00118 << " extra bits " << extra << std::endl;
00119 } else if( sid > 0 && HepPID::abspid(pid) < 100 ) {
00120 os << "quark/lepton/boson " << setw(2) << pid << ": " << nx
00121 << " " << nr << " " << ls << " "
00122 << js << " " << sid << " " << chg
00123 << " extra bits " << extra << std::endl;
00124 } else {
00125 os << "unknown " << setw(10) << pid << ": " << nx
00126 << " " << nr << " " << ls << " "
00127 << js << " " << sid << " " << chg
00128 << " extra bits " << extra << std::endl;
00129 }
00130
00131 if( HepPID::isNucleus(pid) && HepPID::isBaryon(pid)) {
00132 os << "ion " << setw(11) << pid
00133 << ": " << HepPID::digit(HepPID::n10,pid)
00134 << " " << setw(3) << HepPID::A(pid)
00135 << " " << setw(3) << HepPID::Z(pid)
00136 << " " << setw(3) << HepPID::lambda(pid)
00137 << " " << js << " " << sid << " " << chg
00138 << " extra bits " << extra << std::endl;
00139 }
00140 }
00141 if( HepPID::isValid(pid) ) {
00142 os << "total spin: " << HepPID::jSpin(pid) ;
00143 os << " orbital angular momentum: " << HepPID::lSpin(pid) ;
00144 os << " spin: " << HepPID::sSpin(pid) ;
00145 os << " charge: " << HepPID::threeCharge(pid)
00146 << " " << HepPID::charge(pid) << std::endl;
00147 os << "Particle " << HepPID::particleName(pid) << std::endl;
00148
00149 if( HepPID::hasUp(pid) ) {
00150 os << "Particle " << HepPID::particleName(pid) << " " << pid
00151 << " has an up quark" << std::endl;
00152 }
00153 if( HepPID::hasDown(pid) ) {
00154 os << "Particle " << HepPID::particleName(pid) << " " << pid
00155 << " has a down quark" << std::endl;
00156 }
00157 if( HepPID::hasStrange(pid) ) {
00158 os << "Particle " << HepPID::particleName(pid) << " " << pid
00159 << " has a strange quark" << std::endl;
00160 }
00161 if( HepPID::hasCharm(pid) ) {
00162 os << "Particle " << HepPID::particleName(pid) << " " << pid
00163 << " has a charm quark" << std::endl;
00164 }
00165 if( HepPID::hasBottom(pid) ) {
00166 os << "Particle " << HepPID::particleName(pid) << " " << pid
00167 << " has a bottom quark" << std::endl;
00168 }
00169 if( HepPID::hasTop(pid) ) {
00170 os << "Particle " << HepPID::particleName(pid) << " " << pid
00171 << " has a top quark" << std::endl;
00172 }
00173 }
00174
00175 int apid = HepPID::abspid(pid);
00176 int abpid = abs(pid);
00177 if( apid != abpid ) {
00178 os << "Error: Abspid returns " << apid
00179 << " instead of " << abpid
00180 << " for " << pid << std::endl;
00181 }
00182 }
00183 return 0;
00184 }