ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4VCrossSectionHandler.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4VCrossSectionHandler.hh
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 //
28 // Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
29 //
30 // History:
31 // -----------
32 // 16 Sep 2001 MGP Created
33 // 26 Sep 2001 V.Ivanchenko Hide copy constructor and assignement operator
34 // 18 Apr 2002 V.Ivanchenko Move member function ValueForMaterial to public
35 // 21 Jan 2003 V.Ivanchenko Cut per region
36 // 15 Jul 2009 N.A.Karakatsanis New methods added for loading logarithmic data
37 // to enhance computing performance of interpolation
38 //
39 // -------------------------------------------------------------------
40 
41 // Class description:
42 // Low Energy Electromagnetic Physics
43 // Base class for cross section manager for an electromagnetic physics process
44 
45 // -------------------------------------------------------------------
46 
47 #ifndef G4VCROSSSECTIONHANDLER_HH
48 #define G4VCROSSSECTIONHANDLER_HH 1
49 
50 #include <map>
51 #include <vector>
53 
54 #include "globals.hh"
55 #include "G4DataVector.hh"
56 #include "G4MaterialCutsCouple.hh"
57 
59 class G4VEMDataSet;
60 class G4Material;
61 class G4Element;
62 
64 
65 public:
66 
68 
70  G4double minE = 250*CLHEP::eV,
71  G4double maxE = 100*CLHEP::GeV,
72  G4int nBins = 200,
73  G4double unitE = CLHEP::MeV,
74  G4double unitData = CLHEP::barn,
75  G4int minZ = 1, G4int maxZ = 99);
76 
77  virtual ~G4VCrossSectionHandler();
78 
79  void Initialise(G4VDataSetAlgorithm* interpolation = 0,
80  G4double minE = 250*CLHEP::eV,
81  G4double maxE = 100*CLHEP::GeV,
82  G4int numberOfBins = 200,
83  G4double unitE = CLHEP::MeV,
84  G4double unitData = CLHEP::barn,
85  G4int minZ = 1, G4int maxZ = 99);
86 
88 
90  G4double e) const;
91 
93 
95 
96  G4double FindValue(G4int Z, G4double e) const;
97 
98  G4double FindValue(G4int Z, G4double e, G4int shellIndex) const;
99 
100  G4double ValueForMaterial(const G4Material* material, G4double e) const;
101 
102  void LoadData(const G4String& dataFile);
103 
104  void LoadNonLogData(const G4String& dataFile);
105 
106  void LoadShellData(const G4String& dataFile);
107 
108  void PrintData() const;
109 
110  void Clear();
111 
112 protected:
113 
114  G4int NumberOfComponents(G4int Z) const;
115 
116  void ActiveElements();
117 
118  // Factory method
119  virtual std::vector<G4VEMDataSet*>* BuildCrossSectionsForMaterials(const G4DataVector& energyVector,
120  const G4DataVector* energyCuts = 0) = 0;
121 
122  // Factory method
124 
126 
127 
128 private:
129 
130  // Hide copy constructor and assignment operator
133 
135 
139 
142 
145 
147 
148  std::map<G4int,G4VEMDataSet*,std::less<G4int> > dataMap;
149 
150  std::vector<G4VEMDataSet*>* crossSections;
151 };
152 
153 #endif
154 
155 
156 
157 
158 
159 
160 
161 
162 
163 
164