Geant4-11
G4DNAMolecularMaterial.hh
Go to the documentation of this file.
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// Author: Mathieu Karamitros
28//
29// We would be very happy hearing from you, send us your feedback! :)
30//
31// In order for Geant4-DNA to be maintained and still open-source,
32// article citations are crucial.
33// If you use Geant4-DNA chemistry and you publish papers about your software,
34// in addition to the general paper on Geant4-DNA:
35//
36// Int. J. Model. Simul. Sci. Comput. 1 (2010) 157–178
37//
38// we would be very happy if you could please also cite the following
39// reference papers on chemistry:
40//
41// J. Comput. Phys. 274 (2014) 841-882
42// Prog. Nucl. Sci. Tec. 2 (2011) 503-508
43
44#ifndef G4DNAMolecularMaterial_HH
45#define G4DNAMolecularMaterial_HH
46
47#include "globals.hh"
48#include "G4ios.hh"
49#include <map>
50#include <vector>
51#include "G4VStateDependent.hh"
52
53class G4Material;
55
64{
65 bool operator()(const G4Material* mat1, const G4Material* mat2) const;
66};
67
68typedef std::map<const G4Material*, G4double, CompareMaterial> ComponentMap;
69
96{
97public:
99 void Initialize();
100 void Clear();
101
102 virtual G4bool Notify(G4ApplicationState requestedState);
103
104 //----------------------------------------------------------------------------
105
122 const std::vector<G4double>* GetDensityTableFor(const G4Material*) const;
123
139 const std::vector<G4double>* GetNumMolPerVolTableFor(const G4Material*) const;
140
141 inline const std::vector<ComponentMap>* GetMassFractionTable() const{
142 return fpCompFractionTable;
143 }
144 inline const std::vector<ComponentMap>* GetDensityTable() const{
145 return fpCompDensityTable;
146 }
147
148 //----------------------------------------------------------------------------
149
151
166
180 const G4String&);
181
194 void SetMolecularConfiguration(const G4String& materialName,
195 const G4String& molUserIF);
196
197 //----------------------------------------------------------------------------
198
208
218 const G4Material *component,
219 G4double massFraction);
220
221protected:
226 virtual ~G4DNAMolecularMaterial();
227 void Create();
229 void InitializeDensity();
230 void RecordMolecularMaterial(G4Material* parentMaterial,
231 G4Material* molecularMaterial,
232 G4double fraction);
233 void SearchMolecularMaterial(G4Material* parentMaterial,
235 G4double currentFraction);
236
237 void AddMaterial(const G4Material*, G4double fraction);
238
239 void PrintNotAMolecularMaterial(const char* methodName,
240 const G4Material* lookForMaterial) const;
241
242 // Tables built for all molecular materials at initialization
243 std::vector<ComponentMap>* fpCompFractionTable;
244 std::vector<ComponentMap>* fpCompDensityTable;
245 std::vector<ComponentMap>* fpCompNumMolPerVolTable;
246
247 mutable std::map<const G4Material*, std::vector<G4double>*, CompareMaterial>
249 mutable std::map<const G4Material*, std::vector<G4double>*, CompareMaterial>
251 mutable std::map<const G4Material*, bool, CompareMaterial> fWarningPrinted;
252
253 std::map<int /*Material ID*/,
255
258};
259
260#endif // G4DNAMolecularMaterial_HH
G4ApplicationState
std::map< const G4Material *, G4double, CompareMaterial > ComponentMap
double G4double
Definition: G4Types.hh:83
bool G4bool
Definition: G4Types.hh:86
G4DNAMolecularMaterial builds tables of molecular densities for chosen molecular materials....
std::map< int, G4MolecularConfiguration * > fMaterialToMolecularConf
void SetMolecularConfiguration(const G4Material *, G4MolecularConfiguration *)
Associate a molecular configuration to a G4material.
std::map< const G4Material *, std::vector< G4double > *, CompareMaterial > fAskedDensityTable
void RecordMolecularMaterial(G4Material *parentMaterial, G4Material *molecularMaterial, G4double fraction)
G4MolecularConfiguration * GetMolecularConfiguration(const G4Material *) const
void PrintNotAMolecularMaterial(const char *methodName, const G4Material *lookForMaterial) const
const std::vector< ComponentMap > * GetDensityTable() const
const std::vector< G4double > * GetNumMolPerVolTableFor(const G4Material *) const
Retrieve a table of molecular densities (number of molecules per unit volume) in the G4 unit system f...
virtual G4bool Notify(G4ApplicationState requestedState)
G4double GetNumMoleculePerVolumeUnitForMaterial(const G4Material *mat)
Deprecated.
std::vector< ComponentMap > * fpCompFractionTable
std::vector< ComponentMap > * fpCompNumMolPerVolTable
static G4DNAMolecularMaterial * Instance()
std::map< const G4Material *, bool, CompareMaterial > fWarningPrinted
void AddMaterial(const G4Material *, G4double fraction)
G4double GetNumMolPerVolForComponentInComposite(const G4Material *composite, const G4Material *component, G4double massFraction)
Deprecated.
const std::vector< G4double > * GetDensityTableFor(const G4Material *) const
Retrieve a table of volumetric mass densities (mass per unit volume) in the G4 unit system for chosen...
static G4DNAMolecularMaterial * fInstance
const std::vector< ComponentMap > * GetMassFractionTable() const
void SearchMolecularMaterial(G4Material *parentMaterial, G4Material *material, G4double currentFraction)
std::map< const G4Material *, std::vector< G4double > *, CompareMaterial > fAskedNumPerVolTable
G4DNAMolecularMaterial & operator=(const G4DNAMolecularMaterial &)
std::vector< ComponentMap > * fpCompDensityTable
string material
Definition: eplot.py:19
Materials can be described as a derivation of existing "parent" materials in order to alter few of th...
bool operator()(const G4Material *mat1, const G4Material *mat2) const