Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:59:27

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 //
0028 // Hadronic Process: Nuclear De-excitations
0029 // by V. Lara
0030 
0031 
0032 #ifndef G4VStatMFMacroCluster_h
0033 #define G4VStatMFMacroCluster_h 1
0034 
0035 #include "G4StatMFParameters.hh"
0036 #include "G4HadronicException.hh"
0037 
0038 class G4VStatMFMacroCluster {
0039 
0040 public:
0041     // Constructor
0042     G4VStatMFMacroCluster(const G4int Size) : 
0043     theA(Size),
0044     _InvLevelDensity(0.0),
0045     _Entropy(0.0),
0046     theZARatio(0.0),
0047     _MeanMultiplicity(0.0),
0048     _Energy(0.0)
0049     {
0050         if (theA <= 0) throw G4HadronicException(__FILE__, __LINE__, 
0051         "G4VStatMFMacroCluster::Constructor: Cluster's size must be >= 1");
0052         _InvLevelDensity = CalcInvLevelDensity();
0053     }
0054 
0055 
0056     // Destructor
0057     virtual ~G4VStatMFMacroCluster() {};
0058 
0059 
0060 private:
0061 
0062     // Default constructor
0063     G4VStatMFMacroCluster() {};
0064 
0065     // Copy constructor
0066     G4VStatMFMacroCluster(const G4VStatMFMacroCluster & right);
0067 
0068     // operators
0069     G4VStatMFMacroCluster & operator=(const G4VStatMFMacroCluster & right);
0070 
0071 public:
0072     G4bool operator==(const G4VStatMFMacroCluster & right) const;
0073     G4bool operator!=(const G4VStatMFMacroCluster & right) const;
0074 
0075 private:
0076     G4double CalcInvLevelDensity(void);
0077     
0078 public:
0079 
0080     virtual G4double CalcMeanMultiplicity(const G4double FreeVol, const G4double mu, 
0081                       const G4double nu, const G4double T) = 0;
0082                         
0083     virtual G4double CalcZARatio(const G4double nu) = 0;
0084     
0085     G4double GetMeanMultiplicity(void) const { return _MeanMultiplicity; }
0086 
0087     virtual G4double CalcEnergy(const G4double T) = 0;
0088 
0089     virtual G4double CalcEntropy(const G4double T, const G4double FreeVol) = 0;
0090 
0091 protected:
0092     // Number of nucleons in the cluster
0093     G4int theA;
0094     
0095     // Inverse level density
0096     G4double _InvLevelDensity;
0097     
0098     // Entropy
0099     G4double _Entropy;
0100     
0101     // Z/A ratio
0102     G4double theZARatio;
0103     
0104     // Mean Multiplicity
0105     G4double _MeanMultiplicity;
0106     
0107     // Energy
0108     G4double _Energy;
0109 
0110 // *************************************************************************
0111 public:
0112     
0113     G4double GetInvLevelDensity(void) const
0114     { return _InvLevelDensity; }
0115      
0116     void SetZARatio(const G4double value)
0117     { theZARatio = value; }
0118     
0119     G4double GetZARatio(void) const
0120     { return theZARatio; }
0121     
0122     
0123     void SetSize(const G4double value)
0124     { 
0125         if (value <= 0.0) throw G4HadronicException(__FILE__, __LINE__, "G4VStatMFMacroCluster::SetSize: Cluster's size must be >= 1");
0126         theA = G4int(value); 
0127         _InvLevelDensity = CalcInvLevelDensity();
0128     }
0129     
0130     G4double GetSize(void) const
0131     { return theA; }
0132 
0133 
0134 
0135 
0136 
0137 };
0138 
0139 #endif