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 G4ExcitedLambdaConstructor_h
0033 #define G4ExcitedLambdaConstructor_h 1
0034 
0035 #include "G4ExcitedBaryonConstructor.hh"
0036 #include "globals.hh"
0037 
0038 class G4ExcitedLambdaConstructor : public G4ExcitedBaryonConstructor
0039 {
0040     // This class is a utility class for construction
0041     // short lived particles
0042   public:
0043     enum
0044     {
0045       NStates = 12
0046     };
0047 
0048     enum
0049     {
0050       NumberOfDecayModes = 7
0051     };
0052 
0053   public:
0054     G4ExcitedLambdaConstructor();
0055     ~G4ExcitedLambdaConstructor() 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* AddLambdaGammaMode(G4DecayTable* table, const G4String& name, G4double br,
0082                                      G4int iIso3, G4bool fAnti);
0083     G4DecayTable* AddLambdaEtaMode(G4DecayTable* table, const G4String& name, G4double br,
0084                                    G4int iIso3, G4bool fAnti);
0085     G4DecayTable* AddLambdaOmegaMode(G4DecayTable* table, const G4String& name, G4double br,
0086                                      G4int iIso3, G4bool fAnti);
0087 
0088   private:
0089     enum
0090     {
0091       LambdaIsoSpin = 0
0092     };
0093 
0094     static const char* name[NStates];
0095     static const G4double mass[NStates];
0096     static const G4double width[NStates];
0097     static const G4int iSpin[NStates];
0098     static const G4int iParity[NStates];
0099     static const G4int encodingOffset[NStates];
0100 
0101     enum
0102     {
0103       NK = 0,
0104       NKStar = 1,
0105       SigmaPi = 2,
0106       SigmaStarPi = 3,
0107       LambdaGamma = 4,
0108       LambdaEta = 5,
0109       LambdaOmega = 6
0110     };
0111 
0112     static const G4double bRatio[NStates][NumberOfDecayModes];
0113 };
0114 
0115 inline G4double G4ExcitedLambdaConstructor::GetMass(G4int iState, G4int)
0116 {
0117   return mass[iState];
0118 }
0119 
0120 inline G4double G4ExcitedLambdaConstructor::GetWidth(G4int iState, G4int)
0121 {
0122   return width[iState];
0123 }
0124 
0125 inline G4int G4ExcitedLambdaConstructor::GetiSpin(G4int iState)
0126 {
0127   return iSpin[iState];
0128 }
0129 
0130 inline G4int G4ExcitedLambdaConstructor::GetiParity(G4int iState)
0131 {
0132   return iParity[iState];
0133 }
0134 
0135 inline G4int G4ExcitedLambdaConstructor::GetEncodingOffset(G4int iState)
0136 {
0137   return encodingOffset[iState];
0138 }
0139 
0140 inline G4int G4ExcitedLambdaConstructor::GetQuarkContents(G4int iQ, G4int)
0141 {
0142   G4int quark = 0;
0143   if (iQ == 0) {
0144     // s-quark
0145     quark = 3;
0146   }
0147   else if (iQ == 1) {
0148     // d-quark
0149     quark = 1;
0150   }
0151   else if (iQ == 2) {
0152     // u-quark
0153     quark = 2;
0154   }
0155   return quark;
0156 }
0157 
0158 inline G4String G4ExcitedLambdaConstructor::GetMultipletName(G4int iState)
0159 {
0160   return name[iState];
0161 }
0162 
0163 inline G4String G4ExcitedLambdaConstructor::GetName(G4int, G4int iState)
0164 {
0165   G4String particle = name[iState];
0166   return particle;
0167 }
0168 #endif