ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4ExcitedBaryonConstructor.cc
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4ExcitedBaryonConstructor.cc
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"
40 #include "G4ParticleDefinition.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);
63  ConstructAntiParticle(state);
64  }
65  } else if (idx < NumberOfStates) {
66  ConstructParticle(idx);
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;
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,
104  type, leptonNumber, baryonNumber, GetEncoding( iIso3,idx),
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;
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,
136  type, leptonNumber,
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 }