Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/particles/shortlived/src/G4ExcitedBaryonConstructor.cc

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

  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 
 33 #include "G4ExcitedBaryonConstructor.hh"
 34 
 35 #include "G4ExcitedBaryons.hh"
 36 #include "G4ParticleDefinition.hh"
 37 #include "G4ParticleTable.hh"
 38 #include "G4SystemOfUnits.hh"
 39 
 40 G4ExcitedBaryonConstructor::G4ExcitedBaryonConstructor(G4int nStates, G4int isoSpin)
 41   : NumberOfStates(nStates), iIsoSpin(isoSpin), type("baryon")
 42 {}
 43 
 44 void G4ExcitedBaryonConstructor::Construct(G4int idx)
 45 {
 46   if (idx < 0) {
 47     for (G4int state = 0; state < NumberOfStates; state += 1) {
 48       ConstructParticle(state);
 49       ConstructAntiParticle(state);
 50     }
 51   }
 52   else if (idx < NumberOfStates) {
 53     ConstructParticle(idx);
 54     ConstructAntiParticle(idx);
 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 
 66 void G4ExcitedBaryonConstructor::ConstructParticle(G4int idx)
 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,
 89                  type,    leptonNumber,  baryonNumber, GetEncoding( iIso3,idx),
 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 
 99 void G4ExcitedBaryonConstructor::ConstructAntiParticle(G4int idx)
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,
123                  type,    leptonNumber, 
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 
135 G4double G4ExcitedBaryonConstructor::GetCharge(G4int iIsoSpin3)
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 
151 G4int G4ExcitedBaryonConstructor::GetEncoding(G4int iIsoSpin3, G4int idxState)
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 }
165