ATLAS Offline Software
Loading...
Searching...
No Matches
CustomPDGParser Class Reference

#include <CustomPDGParser.h>

Collaboration diagram for CustomPDGParser:

Static Public Member Functions

static bool s_isRHadron (int pdg)
static bool s_isSLepton (int pdg)
static bool s_isRBaryon (int pdg)
static bool s_isRMeson (int pdg)
static bool s_isMesonino (int pdg)
static bool s_isSbaryon (int pdg)
static bool s_isRGlueball (int pdg)
static double s_charge (int pdg)
static double s_spin (int pdg)
static std::vector< int > s_containedQuarks (int pdg)
static int s_containedQuarksCode (int pdg)

Static Private Member Functions

static bool s_isstopHadron (int pdg)
static bool s_issbottomHadron (int pdg)

Detailed Description

Definition at line 11 of file CustomPDGParser.h.

Member Function Documentation

◆ s_charge()

double CustomPDGParser::s_charge ( int pdg)
static

Definition at line 74 of file CustomPDGParser.cxx.

75{
76 float charge=0,sign=1;
77 int pdgAbs=abs(pdg);
78 if(pdg < 0 ) sign=-1;
79
80 if(s_isSLepton(pdg)) //Sleptons
81 {
82 if(pdgAbs %2 == 0)
83 return 0;
84 else
85 return -sign;
86 }
87
88 if(s_isRMeson(pdg))
89 {
90 std::vector<int> quarks = s_containedQuarks(pdg);
91 if((quarks[1] % 2 == 0 && quarks[0] % 2 == 1)||(quarks[1] % 2 == 1 && quarks[0] % 2 == 0 )) charge=1;
92 charge*=sign;
93 return charge;
94 }
95
96 if(s_isRBaryon(pdg))
97 {
98 int baryon = s_containedQuarksCode(pdg);
99 for(int q=1; q< 1000; q*=10)
100 {
101 if(baryon / q % 2 == 0) charge+=2; else charge -=1;
102 }
103 charge/=3;
104 charge*=sign;
105 return charge;
106 }
107
108 if(s_isMesonino(pdg))
109 {
110 int quark = s_containedQuarks(pdg)[0];
111 int squark = abs(pdg/100%10);
112 if (squark % 2 == 0 && quark % 2 == 1) charge = 1;
113 if (squark % 2 == 1 && quark % 2 == 0) charge = 1;
114 charge *= sign;
115 if(s_issbottomHadron(pdg)) charge*=-1;
116 return charge;
117 }
118
119 if(s_isSbaryon(pdg))
120 {
121 int baryon = s_containedQuarksCode(pdg)+100*(abs(pdg/1000%10));//Adding the squark back on
122 for(int q=1; q< 1000; q*=10)
123 if(baryon / q % 2 == 0) charge+=2; else charge -=1;
124 charge/=3;
125 charge*=sign;
126 if(s_issbottomHadron(pdg)) charge*=-1;
127 return charge;
128 }
129
130 return 0;
131}
double charge(const T &p)
Definition AtlasPID.h:997
int sign(int a)
static bool s_isRBaryon(int pdg)
static std::vector< int > s_containedQuarks(int pdg)
static bool s_issbottomHadron(int pdg)
static bool s_isSbaryon(int pdg)
static bool s_isSLepton(int pdg)
static bool s_isRMeson(int pdg)
static int s_containedQuarksCode(int pdg)
static bool s_isMesonino(int pdg)

◆ s_containedQuarks()

std::vector< int > CustomPDGParser::s_containedQuarks ( int pdg)
static

Definition at line 139 of file CustomPDGParser.cxx.

140{
141 std::vector<int> quarks;
142 for(int i=s_containedQuarksCode(pdg); i > 0; i /= 10)
143 quarks.push_back(i % 10);
144
145 return quarks;
146}

◆ s_containedQuarksCode()

int CustomPDGParser::s_containedQuarksCode ( int pdg)
static

Definition at line 148 of file CustomPDGParser.cxx.

149{
150 int pdgAbs=abs(pdg);
151 if(s_isRBaryon(pdg))
152 return pdgAbs / 10 % 1000;
153
154 if(s_isRMeson(pdg))
155 return pdgAbs / 10 % 100;
156
157 if(s_isMesonino(pdg))
158 return pdgAbs / 10 % 1000 % 10;
159
160 if(s_isSbaryon(pdg))
161 return pdgAbs / 10 % 1000 % 100;
162
163
164 return 0;
165}

◆ s_isMesonino()

bool CustomPDGParser::s_isMesonino ( int pdg)
static

Definition at line 59 of file CustomPDGParser.cxx.

60{
61 int pdgAbs=abs(pdg);
62 return ((pdgAbs % 10000 / 100 == 6) || (pdgAbs % 10000 / 100 == 5));
63
64}

◆ s_isRBaryon()

bool CustomPDGParser::s_isRBaryon ( int pdg)
static

Definition at line 38 of file CustomPDGParser.cxx.

39{
40 int pdgAbs=abs(pdg);
41 return (pdgAbs % 100000 / 10000 == 9);
42
43}

◆ s_isRGlueball()

bool CustomPDGParser::s_isRGlueball ( int pdg)
static

Definition at line 45 of file CustomPDGParser.cxx.

46{
47 int pdgAbs=abs(pdg);
48 return (pdgAbs % 100000 / 10 == 99);
49
50}

◆ s_isRHadron()

bool CustomPDGParser::s_isRHadron ( int pdg)
static

Definition at line 13 of file CustomPDGParser.cxx.

14{
15 int pdgAbs=abs(pdg);
16 return ( (pdgAbs % 100000 / 10000 == 9) || (pdgAbs % 10000 / 1000 == 9) || s_isRGlueball(pdg) );
17}
static bool s_isRGlueball(int pdg)

◆ s_isRMeson()

bool CustomPDGParser::s_isRMeson ( int pdg)
static

Definition at line 52 of file CustomPDGParser.cxx.

53{
54 int pdgAbs=abs(pdg);
55 return (pdgAbs % 10000 / 1000 == 9);
56
57}

◆ s_isSbaryon()

bool CustomPDGParser::s_isSbaryon ( int pdg)
static

Definition at line 66 of file CustomPDGParser.cxx.

67{
68 int pdgAbs=abs(pdg);
69 return ((pdgAbs % 10000 / 1000 == 6) || (pdgAbs % 10000 / 1000 == 5));
70
71}

◆ s_issbottomHadron()

bool CustomPDGParser::s_issbottomHadron ( int pdg)
staticprivate

Definition at line 25 of file CustomPDGParser.cxx.

26{
27 int pdgAbs=abs(pdg);
28 return ( (pdgAbs % 10000 / 1000 == 5) || (pdgAbs % 10000 / 100 == 5) );
29}

◆ s_isSLepton()

bool CustomPDGParser::s_isSLepton ( int pdg)
static

Definition at line 32 of file CustomPDGParser.cxx.

33{
34 int pdgAbs=abs(pdg);
35 return (pdgAbs / 100 % 10000 == 0 && pdgAbs / 10 % 10 == 1);
36}

◆ s_isstopHadron()

bool CustomPDGParser::s_isstopHadron ( int pdg)
staticprivate

Definition at line 19 of file CustomPDGParser.cxx.

20{
21 int pdgAbs=abs(pdg);
22 return ( (pdgAbs % 10000 / 1000 == 6) || (pdgAbs % 10000 / 100 == 6) );
23}

◆ s_spin()

double CustomPDGParser::s_spin ( int pdg)
static

Definition at line 133 of file CustomPDGParser.cxx.

134{
135 int pdgAbs=abs(pdg);
136 return pdgAbs % 10;
137}

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