Back to home page

EIC code displayed by LXR

 
 

    


Warning, file /include/Geant4/G4FermiUnstableFragment.hh was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

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 // G4FermiBreakUpAN alternative FermiBreakUp model
0028 // by A. Novikov (January 2025)
0029 //
0030 
0031 #ifndef G4FERMIUNSTABLEFRAGMENT_HH
0032 #define G4FERMIUNSTABLEFRAGMENT_HH
0033 
0034 #include "G4VFermiFragmentAN.hh"
0035 
0036 class G4FermiUnstableFragment : public G4VFermiFragmentAN
0037 {
0038   public:
0039     G4FermiUnstableFragment(G4FermiAtomicMass atomicMass, G4FermiChargeNumber chargeNumber,
0040                             G4int polarization, G4double excitationEnergy,
0041                             std::vector<G4FermiNucleiData>&& decayData);
0042 
0043     void AppendDecayFragments(const G4LorentzVector& momentum,
0044                               std::vector<G4FermiParticle>& particles) const override;
0045 
0046   private:
0047     void DoInitialize() override;
0048 
0049     std::vector<G4FermiNucleiData> decayData_;
0050 
0051     std::vector<G4double> masses_;
0052 };
0053 
0054 #define FERMI_ADD_UNSTABLE_FRAGMENT(NAME, FRAGMENTS)                                         \
0055   inline G4FermiUnstableFragment NAME(G4FermiAtomicMass atomicMass,                          \
0056                                       G4FermiChargeNumber chargeNumber, G4int polarization,  \
0057                                       G4double excitationEnergy)                             \
0058   {                                                                                          \
0059     return G4FermiUnstableFragment(atomicMass, chargeNumber, polarization, excitationEnergy, \
0060                                    FRAGMENTS);                                               \
0061   }
0062 
0063 // He5 ----> alpha + neutron
0064 FERMI_ADD_UNSTABLE_FRAGMENT(He5Fragment, std::vector<G4FermiNucleiData>({
0065                                            G4FermiNucleiData{4_m, 2_c},
0066                                            G4FermiNucleiData{1_m, 0_c},
0067                                          }))
0068 
0069 // B9 ----> alpha + alpha + proton
0070 FERMI_ADD_UNSTABLE_FRAGMENT(B9Fragment, std::vector<G4FermiNucleiData>({
0071                                           G4FermiNucleiData{4_m, 2_c},
0072                                           G4FermiNucleiData{4_m, 2_c},
0073                                           G4FermiNucleiData{1_m, 1_c},
0074                                         }))
0075 
0076 // Be8 ----> alpha + alpha
0077 FERMI_ADD_UNSTABLE_FRAGMENT(Be8Fragment, std::vector<G4FermiNucleiData>({
0078                                            G4FermiNucleiData{4_m, 2_c},
0079                                            G4FermiNucleiData{4_m, 2_c},
0080                                          }))
0081 
0082 // Li5 ----> alpha + proton
0083 FERMI_ADD_UNSTABLE_FRAGMENT(Li5Fragment, std::vector<G4FermiNucleiData>({
0084                                            G4FermiNucleiData{4_m, 2_c},
0085                                            G4FermiNucleiData{1_m, 1_c},
0086                                          }))
0087 
0088 #undef FERMI_ADD_UNSTABLE_FRAGMENT
0089 
0090 #endif  // G4FERMIUNSTABLEFRAGMENT_HH