ATLAS Offline Software
Loading...
Searching...
No Matches
Geo2G4MatPropTableFactory Class Reference

#include <Geo2G4MatPropTableFactory.h>

Collaboration diagram for Geo2G4MatPropTableFactory:

Public Member Functions

G4MaterialPropertiesTable * Build (const GeoMaterialPropertiesTable *)

Detailed Description

Definition at line 11 of file Geo2G4MatPropTableFactory.h.

Member Function Documentation

◆ Build()

G4MaterialPropertiesTable * Geo2G4MatPropTableFactory::Build ( const GeoMaterialPropertiesTable * thePropTable)

Definition at line 21 of file Geo2G4MatPropTableFactory.cxx.

22{
23 static TableMap definedTables ATLAS_THREAD_SAFE;
24
25 // For now just use a global lock. If this turns out to be a bottleneck
26 // switch to a concurrent map or similar.
27 static std::mutex tableMutex;
28 std::scoped_lock lock(tableMutex);
29
30 //
31 // Check if this material has already been defined.
32 //
33 const auto itr = definedTables.find(thePropTable);
34 if(itr != definedTables.end())
35 return itr->second;
36
37 G4MaterialPropertiesTable* newTable = new G4MaterialPropertiesTable();
38
39 // Add properties to the table ...
40
41 // 1. Const properties
44
45 for(;it1_first!=it1_last;++it1_first)
46 newTable->AddConstProperty((it1_first->first).c_str(),it1_first->second);
47
48 // 2. Vector properties
51
52 for(;it2_first!=it2_last;++it2_first)
53 {
54 GeoMaterialPropertyVector* geoMPV = it2_first->second;
55 //from G4 9.6 G4MaterialPropertyVector is now a typedef of G4PhysicsOrderedFreeVector
56 G4MaterialPropertyVector* g4MPV = new G4MaterialPropertyVector();
57
58 geoMPV->ResetIterator();
59
60 while((*geoMPV).operator++())
61 {
62 //g4MPV->AddElement(geoMPV->GetPhotonMomentum(),geoMPV->GetProperty()); // G4 9.4 syntax
63 //assume G4PhysicsOrderedFreeVector::InsertValues is equivalent to G4MaterialPropertyVector::AddElement
64 g4MPV->InsertValues(geoMPV->GetPhotonMomentum(),geoMPV->GetProperty()); // G4 9.6 syntax
65 }
66
67 newTable->AddProperty((it2_first->first).c_str(),g4MPV);
68 }
69
70 // Save new table to the map
71 definedTables[thePropTable]=newTable;
72
73 return newTable;
74}
#define ATLAS_THREAD_SAFE
GeoMatPVMap::const_iterator GeoMatPVMap_ConstIt
GeoMatPVMap_ConstIt beginPVMap() const
GeoMatPMap::const_iterator GeoMatPMap_ConstIt
GeoMatPMap_ConstIt beginPMap() const
GeoMatPVMap_ConstIt endPVMap() const

The documentation for this class was generated from the following files: