Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
G4LatticeManager.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/// \file materials/include/G4LatticeManager.hh
27/// \brief Definition of the G4LatticeManager class
28//
29//
30// 20131113 Add registry to carry unique lattice pointers, for EOJ deletion
31// 20131115 Drop lattice counters, not used anywhere
32// 20141008 Change to global singleton; must be shared across worker threads
33
34#ifndef G4LatticeManager_h
35#define G4LatticeManager_h 1
36
37#include "G4ThreeVector.hh"
38#include <map>
39#include <set>
40
43class G4Material;
45
46
48private:
49 static G4LatticeManager* fLM; // Global, shared singleton
50
51public:
53
55
56 void Reset(); // Remove and delete all registered lattices
57
58 // Users may register physical or logical lattices with volumes
61
62 // Logical lattices are associated with materials
64
65 // Logical lattices may be read from <latDir>/config.txt data file
69
70 // Combine loading and registration (Material extracted from volume)
72
73 // NOTE: Passing Vol==0 will return the default lattice
76
78
80 const G4ThreeVector&) const;
81
82protected:
83 void Clear(); // Remove entries from lookup tables w/o deletion
84
85protected:
86 G4int verboseLevel; // Allow users to enable diagnostic messages
87
88 typedef std::map<G4Material*, G4LatticeLogical*> LatticeMatMap;
89 typedef std::set<G4LatticeLogical*> LatticeLogReg;
90
91 LatticeLogReg fLLattices; // Registry of unique lattice pointers
93
94 typedef std::map<G4VPhysicalVolume*, G4LatticePhysical*> LatticeVolMap;
95 typedef std::set<G4LatticePhysical*> LatticePhyReg;
96
97 LatticePhyReg fPLattices; // Registry of unique lattice pointers
99
100private:
102 virtual ~G4LatticeManager();
103};
104
105#endif
double G4double
Definition: G4Types.hh:83
bool G4bool
Definition: G4Types.hh:86
int G4int
Definition: G4Types.hh:85
std::set< G4LatticePhysical * > LatticePhyReg
LatticeMatMap fLLatticeList
G4bool RegisterLattice(G4VPhysicalVolume *, G4LatticePhysical *)
G4double MapKtoV(G4VPhysicalVolume *, G4int, const G4ThreeVector &) const
G4LatticeLogical * GetLattice(G4Material *) const
LatticeLogReg fLLattices
static G4LatticeManager * GetLatticeManager()
std::map< G4Material *, G4LatticeLogical * > LatticeMatMap
G4bool HasLattice(G4Material *) const
LatticePhyReg fPLattices
LatticeVolMap fPLatticeList
std::set< G4LatticeLogical * > LatticeLogReg
G4ThreeVector MapKtoVDir(G4VPhysicalVolume *, G4int, const G4ThreeVector &) const
void SetVerboseLevel(G4int vb)
G4LatticeLogical * LoadLattice(G4Material *, const G4String &latDir)
std::map< G4VPhysicalVolume *, G4LatticePhysical * > LatticeVolMap