ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4PenelopeOscillatorManager.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4PenelopeOscillatorManager.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 // Authors: Luciano Pandola (luciano.pandola at lngs.infn.it)
29 //
30 // History:
31 // -----------
32 //
33 // 03 Dec 2009 First implementation, Luciano Pandola
34 // 16 Feb 2010 Added methods to calculate and store also A and Z
35 // for molecules. Luciano Pandola
36 // 16 Mar 2010 Added methods to calculate and store mean exc energy
37 // and plasma energy (used for Ionisation). L Pandola
38 // 18 Mar 2010 Added method to retrieve number of atoms per
39 // molecule. L. Pandola
40 // 15 Mar 2012 Added method to retrieve number of atom of given Z per
41 // molecule, L. Pandola
42 //
43 // -------------------------------------------------------------------
44 //
51 //
52 
53 // -------------------------------------------------------------------
54 
55 #ifndef G4PenelopeOscillatorManager_h
56 #define G4PenelopeOscillatorManager_h 1
57 
58 #include "globals.hh"
59 #include "G4PenelopeOscillator.hh"
60 #include <vector>
61 #include <map>
62 
63 class G4Material;
64 
65 typedef std::vector<G4PenelopeOscillator*> G4PenelopeOscillatorTable ;
66 
67 // This class is a singleton
69 
70 public:
71 
72  // The only way to get an instance of this class is to call the
73  // function GetOscillatorManager()
75 
76  //Clear() is invoked by Initialise() of the processes, if required
77  void Clear();
78  void Dump(const G4Material*);
79 
80  //For ionisation
83 
84  //For Compton
87 
90 
102 
103  //Components of each molecule
105 
106 protected:
109 
110 private:
111  // Hide copy constructor and assignment operator
115 
117 
118  //In Penelope2008, the Ionisation and Compton oscillator tables are
119  //slightly different!
120  std::map<const G4Material*,G4PenelopeOscillatorTable*>
122 
123  std::map<const G4Material*,G4PenelopeOscillatorTable*>
125 
126  std::map<const G4Material*,G4double> *atomicNumber;
127  std::map<const G4Material*,G4double> *atomicMass;
128 
129  std::map<const G4Material*,G4double> *excitationEnergy;
130  std::map<const G4Material*,G4double> *plasmaSquared;
131 
132  std::map<const G4Material*,G4double> *atomsPerMolecule;
133 
134  std::map< std::pair<const G4Material*,G4int>, G4double> *atomTablePerMolecule;
135 
136  //create both tables simultaneously
137  void CheckForTablesCreated();
138 
139  void ReadElementData();
142 
143  void BuildOscillatorTable(const G4Material*);
144 
146 
147 };
148 
149 #endif