ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4PixeCrossSectionHandler.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4PixeCrossSectionHandler.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 Jun 2008 MGP Created on the basis of G4CrossSectionHandler
33 
34 // -------------------------------------------------------------------
35 // Class description:
36 // Cross section manager for hadron impact ionization
37 // Documented in:
38 // M.G. Pia et al., PIXE Simulation With Geant4,
39 // IEEE Trans. Nucl. Sci., vol. 56, no. 6, pp. 3614-3649, Dec. 2009.
40 
41 // -------------------------------------------------------------------
42 
43 #ifndef G4PIXECROSSSECTIONHANDLER_HH
44 #define G4PIXECROSSSECTIONHANDLER_HH 1
45 
46 #include <map>
47 #include <vector>
49 
50 #include "globals.hh"
51 #include "G4DataVector.hh"
52 #include "G4MaterialCutsCouple.hh"
53 
54 class G4IInterpolator;
55 class G4IDataSet;
56 class G4Material;
57 class G4Element;
58 
60 
61 public:
62 
64 
66  const G4String& modelK="ecpssr",
67  const G4String& modelL="ecpssr",
68  const G4String& modelM="ecpssr",
70  G4double maxE = 0.1*CLHEP::GeV,
71  G4int nBins = 200,
72  G4double unitE = CLHEP::MeV,
73  G4double unitData = CLHEP::barn,
74  G4int minZ = 6, G4int maxZ = 92);
75 
77 
78  void Initialise(G4IInterpolator* interpolation,
79  const G4String& modelK="ecpssr",
80  const G4String& modelL="ecpssr",
81  const G4String& modelM="ecpssr",
83  G4double maxE = 0.1*CLHEP::GeV,
84  G4int nBins = 200,
85  G4double unitE = CLHEP::MeV,
86  G4double unitData = CLHEP::barn,
87  G4int minZ = 6, G4int maxZ = 92);
88 
90 
92 
93  G4double FindValue(G4int Z, G4double e) const;
94 
95  G4double FindValue(G4int Z, G4double e, G4int shellIndex) const;
96 
97  G4double ValueForMaterial(const G4Material* material, G4double e) const;
98 
99  // void LoadData(const G4String& dataFile);
100 
101  void LoadShellData(const G4String& dataFile);
102 
103  // Ionisation cross section as in Geant4 Physics Reference Manual
105  G4double kineticEnergy,
106  G4double Z,
107  G4double deltaCut) const;
108 
109  void PrintData() const;
110 
111  void Clear();
112 
113 private:
114 
115  // Hide copy constructor and assignment operator
118 
119  G4int NumberOfComponents(G4int Z) const;
120 
121  void ActiveElements();
122 
123  void BuildForMaterials();
124  // Factory method
125  std::vector<G4IDataSet*>* BuildCrossSectionsForMaterials(const G4DataVector& energyVector);
126 
127  // Factory method
129 
130  const G4IInterpolator* GetInterpolation() const { return interpolation; }
131 
133 
137 
140 
143 
145 
146  // Map of PixeShellDataSets with the shell cross sections for each element
147  std::map<G4int,G4IDataSet*,std::less<G4int> > dataMap;
148 
149  // Vector of composite cross sections for each material in the MaterialTable
150  // The composite cross section is composed of cross sections for each element in material
151  std::vector<G4IDataSet*>* crossSections;
152 
153  std::vector<G4String> crossModel;
154 
155 };
156 
157 #endif
158 
159 
160 
161 
162 
163 
164 
165 
166 
167 
168