source: trunk/source/particles/shortlived/src/G4ExcitedBaryonConstructor.cc @ 1202

Last change on this file since 1202 was 1196, checked in by garnier, 15 years ago

update CVS release candidate geant4.9.3.01

File size: 6.2 KB
Line 
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// $Id: G4ExcitedBaryonConstructor.cc,v 1.7 2006/06/29 19:26:56 gunter Exp $
28// GEANT4 tag $Name: geant4-09-03-cand-01 $
29//
30//
31// --------------------------------------------------------------
32//      GEANT 4 class implementation file
33//
34//      History: first implementation, based on object model of
35//      10 oct 1998  H.Kurashige
36// ---------------------------------------------------------------
37
38
39#include "G4ExcitedBaryonConstructor.hh"
40
41#include "G4ParticleDefinition.hh"
42#include "G4ParticleTable.hh"
43#include "G4ShortLivedTable.hh"
44#include "G4PhaseSpaceDecayChannel.hh"
45#include "G4VDecayChannel.hh"
46#include "G4DecayTable.hh"
47
48
49G4ExcitedBaryonConstructor::G4ExcitedBaryonConstructor(G4int nStates,
50                                                       G4int isoSpin)
51    :    NumberOfStates(nStates), iIsoSpin(isoSpin), type("baryon"),
52         iConjugation(0), iGParity(0), leptonNumber(0), baryonNumber(1)
53{
54}
55
56G4ExcitedBaryonConstructor::~G4ExcitedBaryonConstructor()
57{
58}
59
60void G4ExcitedBaryonConstructor::Construct(G4int idx)
61{
62  if (idx < 0 ) {
63    for (G4int state=0; state< NumberOfStates; state +=1) {
64       ConstructParticle(state);
65       ConstructAntiParticle(state);
66     }
67  } else if (idx < NumberOfStates) {
68    ConstructParticle(idx);
69    ConstructAntiParticle(idx);
70  } else {
71#ifdef G4VERBOSE
72    if (G4ParticleTable::GetParticleTable()->GetVerboseLevel()>1) {
73      G4cerr << "G4ExcitedBaryonConstructor::Construct()";
74      G4cerr << "   illegal index os state = " << idx << G4endl;
75    }
76#endif
77  }
78}
79
80
81#include "G4ExcitedBaryons.hh"
82
83void G4ExcitedBaryonConstructor::ConstructParticle(G4int idx)
84{
85  if (!Exist(idx) ) return;
86
87  //    Construct Resonace particles as dynamic object
88  //    Arguments for constructor are as follows
89  //               name             mass          width         charge
90  //             2*spin           parity  C-conjugation
91  //          2*Isospin       2*Isospin3       G-parity
92  //               type    lepton number  baryon number   PDG encoding
93  //             stable         lifetime    decay table
94 
95 
96  G4String name;
97  G4ParticleDefinition* particle;
98 
99  for (G4int iIso3 = -1*iIsoSpin; iIso3 <= iIsoSpin; iIso3 +=2) {
100    name= GetName(iIso3, idx);
101
102    particle = new G4ExcitedBaryons(           
103                 name,    GetMass(idx), GetWidth(idx),    GetCharge(iIso3), 
104        GetiSpin(idx), GetiParity(idx),  iConjugation,       
105             iIsoSpin,           iIso3,      iGParity,
106                 type,    leptonNumber,  baryonNumber, GetEncoding( iIso3,idx),
107                false,             0.0,   NULL
108                                    );
109    ((G4ExcitedBaryons*)(particle))->SetMultipletName(GetMultipletName(idx));
110    particle->SetDecayTable(CreateDecayTable( name, iIso3, idx, false));
111  }
112}
113
114void G4ExcitedBaryonConstructor::ConstructAntiParticle(G4int idx)
115{
116  if (!Exist(idx) ) return;
117
118  //    Construct Resonace particles as dynamic object
119  //    Arguments for constructor are as follows
120  //               name             mass          width         charge
121  //             2*spin           parity  C-conjugation
122  //          2*Isospin       2*Isospin3       G-parity
123  //               type    lepton number  baryon number   PDG encoding
124  //             stable         lifetime    decay table
125 
126 
127  G4String name;
128  G4ParticleDefinition* particle;
129 
130  for (G4int iIso3 = -1*iIsoSpin; iIso3 <= iIsoSpin; iIso3 +=2) {
131    name = GetName(iIso3, idx);
132    name = "anti_" + name;
133
134    particle = new G4ExcitedBaryons(           
135                 name,    GetMass(idx), GetWidth(idx),  -1.0*GetCharge(iIso3), 
136        GetiSpin(idx), GetiParity(idx),  iConjugation,       
137             iIsoSpin,        -1*iIso3,      iGParity,
138                 type,    leptonNumber, 
139                                       -1*baryonNumber, 
140                                                   -1*GetEncoding( iIso3,idx),
141                false,         0.0,   NULL
142                                    );
143
144    ((G4ExcitedBaryons*)(particle))->SetMultipletName(GetMultipletName(idx));
145    particle->SetDecayTable(CreateDecayTable( name, iIso3, idx, true));
146  }
147   
148}
149
150G4double  G4ExcitedBaryonConstructor::GetCharge(G4int iIsoSpin3)
151{
152  G4double charge = 0.0;
153  static G4double quark_charge[7] = 
154  {
155    0., -1./3., +2./3., -1./3., +2./3., -1./3., +2./3.
156  };
157 
158  for (G4int idx=0; idx<3; idx+=1){
159    charge += quark_charge[GetQuarkContents(idx, iIsoSpin3)]*eplus;
160  }
161  return charge;
162}
163
164G4int     G4ExcitedBaryonConstructor::GetEncoding(G4int iIsoSpin3, G4int idxState)
165{
166  G4int encoding = GetEncodingOffset(idxState);
167  encoding += 1000*GetQuarkContents(0, iIsoSpin3);
168  encoding +=  100*GetQuarkContents(1, iIsoSpin3);
169  encoding +=   10*GetQuarkContents(2, iIsoSpin3);
170  if (GetiSpin(idxState) <9) {
171    encoding += GetiSpin(idxState) +1;
172  } else {
173    encoding += (GetiSpin(idxState) +1)*10000000;
174  }
175  return encoding;
176}
Note: See TracBrowser for help on using the repository browser.