Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:58:15

0001 //
0002 // ********************************************************************
0003 // * License and Disclaimer                                           *
0004 // *                                                                  *
0005 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
0006 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
0007 // * conditions of the Geant4 Software License,  included in the file *
0008 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
0009 // * include a list of copyright holders.                             *
0010 // *                                                                  *
0011 // * Neither the authors of this software system, nor their employing *
0012 // * institutes,nor the agencies providing financial support for this *
0013 // * work  make  any representation or  warranty, express or implied, *
0014 // * regarding  this  software system or assume any liability for its *
0015 // * use.  Please see the license in the file  LICENSE  and URL above *
0016 // * for the full disclaimer and the limitation of liability.         *
0017 // *                                                                  *
0018 // * This  code  implementation is the result of  the  scientific and *
0019 // * technical work of the GEANT4 collaboration.                      *
0020 // * By using,  copying,  modifying or  distributing the software (or *
0021 // * any work based  on the software)  you  agree  to acknowledge its *
0022 // * use  in  resulting  scientific  publications,  and indicate your *
0023 // * acceptance of all terms of the Geant4 Software license.          *
0024 // ********************************************************************
0025 //
0026 // --------------------------------------------------------------
0027 //  GEANT 4 class implementation file
0028 //
0029 //      History: first implementation, based on object model of
0030 //      10 oct 1998  H.Kurashige
0031 // ---------------------------------------------------------------
0032 #ifndef G4ExcitedSigmaConstructor_h
0033 #define G4ExcitedSigmaConstructor_h 1
0034 
0035 #include "G4ExcitedBaryonConstructor.hh"
0036 #include "globals.hh"
0037 
0038 class G4ExcitedSigmaConstructor : public G4ExcitedBaryonConstructor
0039 {
0040     // This class is a utility class for construction
0041     // short lived particles
0042   public:
0043     enum
0044     {
0045       NStates = 8
0046     };
0047 
0048     enum
0049     {
0050       NumberOfDecayModes = 8
0051     };
0052 
0053   public:
0054     G4ExcitedSigmaConstructor();
0055     ~G4ExcitedSigmaConstructor() override = default;
0056 
0057   protected:
0058     G4bool Exist(G4int) override { return true; }
0059 
0060     G4int GetQuarkContents(G4int, G4int) override;
0061     G4String GetName(G4int iIso3, G4int iState) override;
0062     G4String GetMultipletName(G4int iState) override;
0063     G4double GetMass(G4int state, G4int iso) override;
0064     G4double GetWidth(G4int state, G4int iso) override;
0065     G4int GetiSpin(G4int iState) override;
0066     G4int GetiParity(G4int iState) override;
0067     G4int GetEncodingOffset(G4int iState) override;
0068 
0069     G4DecayTable* CreateDecayTable(const G4String& name, G4int iIso3, G4int iState,
0070                                    G4bool fAnti = false) override;
0071 
0072   private:
0073     G4DecayTable* AddNKMode(G4DecayTable* table, const G4String& name, G4double br, G4int iIso3,
0074                             G4bool fAnti);
0075     G4DecayTable* AddNKStarMode(G4DecayTable* table, const G4String& name, G4double br, G4int iIso3,
0076                                 G4bool fAnti);
0077     G4DecayTable* AddSigmaPiMode(G4DecayTable* table, const G4String& name, G4double br,
0078                                  G4int iIso3, G4bool fAnti);
0079     G4DecayTable* AddSigmaStarPiMode(G4DecayTable* table, const G4String& name, G4double br,
0080                                      G4int iIso3, G4bool fAnti);
0081     G4DecayTable* AddLambdaPiMode(G4DecayTable* table, const G4String& name, G4double br,
0082                                   G4int iIso3, G4bool fAnti);
0083     G4DecayTable* AddSigmaEtaMode(G4DecayTable* table, const G4String& name, G4double br,
0084                                   G4int iIso3, G4bool fAnti);
0085     G4DecayTable* AddLambdaStarPiMode(G4DecayTable* table, const G4String& name, G4double br,
0086                                       G4int iIso3, G4bool fAnti);
0087     G4DecayTable* AddDeltaKMode(G4DecayTable* table, const G4String& name, G4double br, G4int iIso3,
0088                                 G4bool fAnti);
0089 
0090   private:
0091     enum
0092     {
0093       SigmaIsoSpin = 2
0094     };
0095 
0096     static const char* name[NStates];
0097     static const G4double mass[NStates];
0098     static const G4double width[NStates];
0099     static const G4int iSpin[NStates];
0100     static const G4int iParity[NStates];
0101     static const G4int encodingOffset[NStates];
0102 
0103     enum
0104     {
0105       NK = 0,
0106       NKStar = 1,
0107       SigmaPi = 2,
0108       SigmaStarPi = 3,
0109       LambdaPi = 4,
0110       SigmaEta = 5,
0111       LambdaStarPi = 6,
0112       DeltaK = 7
0113     };
0114 
0115     static const G4double bRatio[NStates][NumberOfDecayModes];
0116 };
0117 
0118 inline G4int G4ExcitedSigmaConstructor::GetiSpin(G4int iState)
0119 {
0120   return iSpin[iState];
0121 }
0122 
0123 inline G4int G4ExcitedSigmaConstructor::GetiParity(G4int iState)
0124 {
0125   return iParity[iState];
0126 }
0127 
0128 inline G4int G4ExcitedSigmaConstructor::GetEncodingOffset(G4int iState)
0129 {
0130   return encodingOffset[iState];
0131 }
0132 
0133 inline G4int G4ExcitedSigmaConstructor::GetQuarkContents(G4int iQ, G4int iIso3)
0134 {
0135   G4int quark = 0;
0136   if (iQ == 0) {
0137     // s-quark
0138     quark = 3;
0139   }
0140   else if (iQ == 1) {
0141     if (iIso3 == -2) {
0142       // d-quark
0143       quark = 1;
0144     }
0145     else {
0146       // u-quark
0147       quark = 2;
0148     }
0149   }
0150   else if (iQ == 2) {
0151     if (iIso3 == +2) {
0152       // u-quark
0153       quark = 2;
0154     }
0155     else {
0156       // d-quark
0157       quark = 1;
0158     }
0159   }
0160   return quark;
0161 }
0162 
0163 inline G4String G4ExcitedSigmaConstructor::GetMultipletName(G4int iState)
0164 {
0165   return name[iState];
0166 }
0167 
0168 inline G4String G4ExcitedSigmaConstructor::GetName(G4int iIso3, G4int iState)
0169 {
0170   G4String particle = name[iState];
0171   if (iIso3 == +2) {
0172     particle += "+";
0173   }
0174   else if (iIso3 == 0) {
0175     particle += "0";
0176   }
0177   else if (iIso3 == -2) {
0178     particle += "-";
0179   }
0180   return particle;
0181 }
0182 #endif