ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4RDVCrossSectionHandler.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4RDVCrossSectionHandler.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 //
37 // -------------------------------------------------------------------
38 
39 // Class description:
40 // Low Energy Electromagnetic Physics
41 // Base class for cross section manager for an electromagnetic physics process
42 // Further documentation available from http://www.ge.infn.it/geant4/lowE
43 
44 // -------------------------------------------------------------------
45 
46 #ifndef G4RDVCROSSSECTIONHANDLER_HH
47 #define G4RDVCROSSSECTIONHANDLER_HH 1
48 
49 #include <map>
50 #include <vector>
52 
53 #include "globals.hh"
54 #include "G4DataVector.hh"
55 #include "G4MaterialCutsCouple.hh"
56 
58 class G4RDVEMDataSet;
59 class G4Material;
60 class G4Element;
61 
63 
64 public:
65 
67 
70  G4int nBins = 200,
71  G4double unitE = CLHEP::MeV, G4double unitData = CLHEP::barn,
72  G4int minZ = 1, G4int maxZ = 99);
73 
74  virtual ~G4RDVCrossSectionHandler();
75 
76  void Initialise(G4RDVDataSetAlgorithm* interpolation = 0,
78  G4int numberOfBins = 200,
79  G4double unitE = CLHEP::MeV, G4double unitData = CLHEP::barn,
80  G4int minZ = 1, G4int maxZ = 99);
81 
83 
85  G4double e) const;
86 
88 
90 
91  G4double FindValue(G4int Z, G4double e) const;
92 
93  G4double FindValue(G4int Z, G4double e, G4int shellIndex) const;
94 
95  G4double ValueForMaterial(const G4Material* material, G4double e) const;
96 
97  void LoadData(const G4String& dataFile);
98 
99  void LoadShellData(const G4String& dataFile);
100 
101  void PrintData() const;
102 
103  void Clear();
104 
105 protected:
106 
107  G4int NumberOfComponents(G4int Z) const;
108 
109  void ActiveElements();
110 
111  // Factory method
112  virtual std::vector<G4RDVEMDataSet*>* BuildCrossSectionsForMaterials(const G4DataVector& energyVector,
113  const G4DataVector* energyCuts = 0) = 0;
114 
115  // Factory method
117 
119 
120 
121 private:
122 
123  // Hide copy constructor and assignment operator
126 
128 
132 
135 
138 
140 
141  std::map<G4int,G4RDVEMDataSet*,std::less<G4int> > dataMap;
142 
143  std::vector<G4RDVEMDataSet*>* crossSections;
144 };
145 
146 #endif