Geant4 11.2.2
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4ExcitedBaryonConstructor.cc
Go to the documentation of this file.
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26// --------------------------------------------------------------
27// GEANT 4 class implementation file
28//
29// History: first implementation, based on object model of
30// 10 oct 1998 H.Kurashige
31// ---------------------------------------------------------------
32
34
35#include "G4ExcitedBaryons.hh"
37#include "G4ParticleTable.hh"
38#include "G4SystemOfUnits.hh"
39
41 : NumberOfStates(nStates), iIsoSpin(isoSpin), type("baryon")
42{}
43
45{
46 if (idx < 0) {
47 for (G4int state = 0; state < NumberOfStates; state += 1) {
48 ConstructParticle(state);
50 }
51 }
52 else if (idx < NumberOfStates) {
55 }
56 else {
57#ifdef G4VERBOSE
58 if (G4ParticleTable::GetParticleTable()->GetVerboseLevel() > 1) {
59 G4cerr << "G4ExcitedBaryonConstructor::Construct()";
60 G4cerr << " illegal index os state = " << idx << G4endl;
61 }
62#endif
63 }
64}
65
67{
68 if (!Exist(idx)) return;
69
70 // Construct Resonace particles as dynamic object
71 // Arguments for constructor are as follows
72 // name mass width charge
73 // 2*spin parity C-conjugation
74 // 2*Isospin 2*Isospin3 G-parity
75 // type lepton number baryon number PDG encoding
76 // stable lifetime decay table
77
78 G4String name;
79 G4ParticleDefinition* particle;
80
81 for (G4int iIso3 = -1 * iIsoSpin; iIso3 <= iIsoSpin; iIso3 += 2) {
82 name = GetName(iIso3, idx);
83
84 // clang-format off
85 particle = new G4ExcitedBaryons(
86 name, GetMass(idx,iIso3), GetWidth(idx,iIso3), GetCharge(iIso3),
87 GetiSpin(idx), GetiParity(idx), iConjugation,
88 iIsoSpin, iIso3, iGParity,
90 false, 0.0, nullptr
91 );
92 // clang-format on
93
94 ((G4ExcitedBaryons*)(particle))->SetMultipletName(GetMultipletName(idx));
95 particle->SetDecayTable(CreateDecayTable(name, iIso3, idx, false));
96 }
97}
98
100{
101 if (!Exist(idx)) return;
102
103 // Construct Resonace particles as dynamic object
104 // Arguments for constructor are as follows
105 // name mass width charge
106 // 2*spin parity C-conjugation
107 // 2*Isospin 2*Isospin3 G-parity
108 // type lepton number baryon number PDG encoding
109 // stable lifetime decay table
110
111 G4String name;
112 G4ParticleDefinition* particle;
113
114 for (G4int iIso3 = -1 * iIsoSpin; iIso3 <= iIsoSpin; iIso3 += 2) {
115 name = GetName(iIso3, idx);
116 name = "anti_" + name;
117
118 // clang-format off
119 particle = new G4ExcitedBaryons(
120 name, GetMass(idx,iIso3), GetWidth(idx,iIso3), -1.0*GetCharge(iIso3),
121 GetiSpin(idx), GetiParity(idx), iConjugation,
122 iIsoSpin, -1*iIso3, iGParity,
124 -1*baryonNumber,
125 -1*GetEncoding( iIso3,idx),
126 false, 0.0, nullptr
127 );
128 // clang-format on
129
130 ((G4ExcitedBaryons*)(particle))->SetMultipletName(GetMultipletName(idx));
131 particle->SetDecayTable(CreateDecayTable(name, iIso3, idx, true));
132 }
133}
134
136{
137 G4double charge = 0.0;
138 // clang-format off
139 static const G4double quark_charge[7] =
140 {
141 0., -1./3., +2./3., -1./3., +2./3., -1./3., +2./3.
142 };
143 // clang-format on
144
145 for (G4int idx = 0; idx < 3; idx += 1) {
146 charge += quark_charge[GetQuarkContents(idx, iIsoSpin3)] * eplus;
147 }
148 return charge;
149}
150
152{
153 G4int encoding = GetEncodingOffset(idxState);
154 encoding += 1000 * GetQuarkContents(0, iIsoSpin3);
155 encoding += 100 * GetQuarkContents(1, iIsoSpin3);
156 encoding += 10 * GetQuarkContents(2, iIsoSpin3);
157 if (GetiSpin(idxState) < 9) {
158 encoding += GetiSpin(idxState) + 1;
159 }
160 else {
161 encoding += (GetiSpin(idxState) + 1) * 10000000;
162 }
163 return encoding;
164}
double G4double
Definition G4Types.hh:83
int G4int
Definition G4Types.hh:85
G4GLOB_DLL std::ostream G4cerr
#define G4endl
Definition G4ios.hh:67
virtual void Construct(G4int indexOfState=-1)
virtual G4double GetCharge(G4int iIsoSpin3)
virtual G4int GetEncodingOffset(G4int)=0
virtual G4int GetiParity(G4int)=0
virtual G4int GetiSpin(G4int)=0
virtual void ConstructAntiParticle(G4int indexOfState)
virtual G4DecayTable * CreateDecayTable(const G4String &, G4int, G4int, G4bool)=0
virtual G4double GetMass(G4int state, G4int iso)=0
virtual G4bool Exist(G4int)=0
virtual void ConstructParticle(G4int indexOfState)
virtual G4String GetName(G4int, G4int)=0
virtual G4int GetQuarkContents(G4int, G4int)=0
virtual G4double GetWidth(G4int state, G4int iso)=0
G4ExcitedBaryonConstructor(G4int nStates=0, G4int isoSpin=0)
virtual G4String GetMultipletName(G4int)=0
virtual G4int GetEncoding(G4int iIsoSpin3, G4int idxState)
void SetDecayTable(G4DecayTable *aDecayTable)
static G4ParticleTable * GetParticleTable()