00001
00002
00003
00004
00005
00006
00007
00008
00009 #include "HepPDT/defs.h"
00010 #include "HepPDT/ParticleID.hh"
00011
00012 namespace HepPDT {
00013
00014 Quarks ParticleID::quarks( ) const
00015 {
00016 struct Quarks q;
00017 q.nq1 = q.nq2 = q.nq3 = 0;
00018 if( abspid() <= 100 || extraBits() > 0 ) { return q; }
00019 if( fundamentalID() <= 100 && fundamentalID() > 0 ) { return q; }
00020 q.nq1 = digit(nq1);
00021 q.nq2 = digit(nq2);
00022 q.nq3 = digit(nq3);
00023 int js = abspid()%10;
00024 if( abspid() == 130 || abspid() == 310 ) {
00025 if ( itsPID < 0 ) {
00026 q.nq3=-q.nq3;
00027 } else {
00028 q.nq2=-q.nq2;
00029 }
00030 return q;
00031 }
00032 if( js == 0 ) { return q; }
00033 if( q.nq3 > 0 && q.nq2 > 0 && q.nq1 == 0 ) {
00034 if( q.nq2 == 3 || q.nq2 == 5 ) {
00035 if ( itsPID < 0 ) {
00036 q.nq3=-q.nq3;
00037 } else {
00038 q.nq2=-q.nq2;
00039 }
00040 } else {
00041 if ( itsPID < 0 ) {
00042 q.nq2=-q.nq2;
00043 } else {
00044 q.nq3=-q.nq3;
00045 }
00046 }
00047 return q;
00048 } else if( q.nq3 == 0 && q.nq2 > 0 && q.nq1 > 0 ) {
00049 if ( itsPID < 0 ) {
00050 q.nq2=-q.nq2;
00051 q.nq1=-q.nq1;
00052 }
00053 return q;
00054 } else if( q.nq1 > 0 && q.nq2 > 0 && q.nq3 > 0 ) {
00055 if ( itsPID < 0 ) {
00056 q.nq1=-q.nq1;
00057 q.nq2=-q.nq2;
00058 q.nq3=-q.nq3;
00059 }
00060 }
00061 return q;
00062 }
00063
00064 }