Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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//
28//
29// --------------------------------------------------------------
30// GEANT 4 class implementation file
31//
32// History: first implementation, based on object model of
33// 10 oct 1998 H.Kurashige
34// ---------------------------------------------------------------
35
36
38
39#include "G4SystemOfUnits.hh"
41#include "G4ParticleTable.hh"
43#include "G4VDecayChannel.hh"
44#include "G4DecayTable.hh"
45
46
48 G4int isoSpin)
49 : NumberOfStates(nStates), iIsoSpin(isoSpin), type("baryon"),
50 iConjugation(0), iGParity(0), leptonNumber(0), baryonNumber(1)
51{
52}
53
55{
56}
57
59{
60 if (idx < 0 ) {
61 for (G4int state=0; state< NumberOfStates; state +=1) {
62 ConstructParticle(state);
64 }
65 } else if (idx < NumberOfStates) {
68 } else {
69#ifdef G4VERBOSE
70 if (G4ParticleTable::GetParticleTable()->GetVerboseLevel()>1) {
71 G4cerr << "G4ExcitedBaryonConstructor::Construct()";
72 G4cerr << " illegal index os state = " << idx << G4endl;
73 }
74#endif
75 }
76}
77
78
79#include "G4ExcitedBaryons.hh"
80
82{
83 if (!Exist(idx) ) return;
84
85 // Construct Resonace particles as dynamic object
86 // Arguments for constructor are as follows
87 // name mass width charge
88 // 2*spin parity C-conjugation
89 // 2*Isospin 2*Isospin3 G-parity
90 // type lepton number baryon number PDG encoding
91 // stable lifetime decay table
92
93
94 G4String name;
95 G4ParticleDefinition* particle;
96
97 for (G4int iIso3 = -1*iIsoSpin; iIso3 <= iIsoSpin; iIso3 +=2) {
98 name= GetName(iIso3, idx);
99
100 particle = new G4ExcitedBaryons(
101 name, GetMass(idx,iIso3), GetWidth(idx,iIso3), GetCharge(iIso3),
102 GetiSpin(idx), GetiParity(idx), iConjugation,
103 iIsoSpin, iIso3, iGParity,
105 false, 0.0, NULL
106 );
107 ((G4ExcitedBaryons*)(particle))->SetMultipletName(GetMultipletName(idx));
108 particle->SetDecayTable(CreateDecayTable( name, iIso3, idx, false));
109 }
110}
111
113{
114 if (!Exist(idx) ) return;
115
116 // Construct Resonace particles as dynamic object
117 // Arguments for constructor are as follows
118 // name mass width charge
119 // 2*spin parity C-conjugation
120 // 2*Isospin 2*Isospin3 G-parity
121 // type lepton number baryon number PDG encoding
122 // stable lifetime decay table
123
124
125 G4String name;
126 G4ParticleDefinition* particle;
127
128 for (G4int iIso3 = -1*iIsoSpin; iIso3 <= iIsoSpin; iIso3 +=2) {
129 name = GetName(iIso3, idx);
130 name = "anti_" + name;
131
132 particle = new G4ExcitedBaryons(
133 name, GetMass(idx,iIso3), GetWidth(idx,iIso3), -1.0*GetCharge(iIso3),
134 GetiSpin(idx), GetiParity(idx), iConjugation,
135 iIsoSpin, -1*iIso3, iGParity,
137 -1*baryonNumber,
138 -1*GetEncoding( iIso3,idx),
139 false, 0.0, NULL
140 );
141
142 ((G4ExcitedBaryons*)(particle))->SetMultipletName(GetMultipletName(idx));
143 particle->SetDecayTable(CreateDecayTable( name, iIso3, idx, true));
144 }
145
146}
147
149{
150 G4double charge = 0.0;
151 static const G4double quark_charge[7] =
152 {
153 0., -1./3., +2./3., -1./3., +2./3., -1./3., +2./3.
154 };
155
156 for (G4int idx=0; idx<3; idx+=1){
157 charge += quark_charge[GetQuarkContents(idx, iIsoSpin3)]*eplus;
158 }
159 return charge;
160}
161
163{
164 G4int encoding = GetEncodingOffset(idxState);
165 encoding += 1000*GetQuarkContents(0, iIsoSpin3);
166 encoding += 100*GetQuarkContents(1, iIsoSpin3);
167 encoding += 10*GetQuarkContents(2, iIsoSpin3);
168 if (GetiSpin(idxState) <9) {
169 encoding += GetiSpin(idxState) +1;
170 } else {
171 encoding += (GetiSpin(idxState) +1)*10000000;
172 }
173 return encoding;
174}
double G4double
Definition: G4Types.hh:83
int G4int
Definition: G4Types.hh:85
G4GLOB_DLL std::ostream G4cerr
#define G4endl
Definition: G4ios.hh:57
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()