Geant4-11
G4ITTransportationManager.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//
30//
31// -------------------------------------------------------------------
32// Author: Mathieu Karamitros
33
34// The code is developed in the framework of the ESA AO7146
35//
36// We would be very happy hearing from you, send us your feedback! :)
37//
38// In order for Geant4-DNA to be maintained and still open-source,
39// article citations are crucial.
40// If you use Geant4-DNA chemistry and you publish papers about your software,
41// in addition to the general paper on Geant4-DNA:
42//
43// Int. J. Model. Simul. Sci. Comput. 1 (2010) 157–178
44//
45// we would be very happy if you could please also cite the following
46// reference papers on chemistry:
47//
48// J. Comput. Phys. 274 (2014) 841-882
49// Prog. Nucl. Sci. Tec. 2 (2011) 503-508
50
51#ifndef G4ITTRANSPORTATIONMANAGER_HH
52#define G4ITTRANSPORTATIONMANAGER_HH
53
54#include "globals.hh"
55#include "G4ITNavigator.hh"
56#include <vector>
57
60
62{
63public:
64 static void DeleteInstance();
66
67 G4ITNavigator* GetNavigatorForTracking() const;
68
69 inline void SetWorldForTracking(G4VPhysicalVolume* theWorld);
70 // Set the world volume for tracking
71 // This method is to be invoked by G4RunManagerKernel.
72
73 inline size_t GetNoActiveNavigators() const;
74 inline std::vector<G4ITNavigator*>::iterator GetActiveNavigatorsIterator();
75 // Return an iterator to the list of active navigators
76
77 inline size_t GetNoWorlds() const;
78 inline std::vector<G4VPhysicalVolume*>::iterator GetWorldsIterator();
79 // Return an iterator to the list of registered worlds
80
82
83 G4VPhysicalVolume* GetParallelWorld ( const G4String& worldName );
84 // Return an exact copy of the tracking world volume. If already
85 // existing just return the pointer
86
87 G4VPhysicalVolume* IsWorldExisting ( const G4String& worldName );
88 // Verify existance or not of an istance of the world volume with
89 // same name in the collection
90
91 G4ITNavigator* GetNavigator ( const G4String& worldName );
92 G4ITNavigator* GetNavigator ( G4VPhysicalVolume* aWorld );
93 // Return a navigator associated to either the world volume name
94 // or the pointer to world physical volume. If not existing already
95 // create it and register it in the collection
96
98 void DeRegisterNavigator( G4ITNavigator* aNavigator );
99 G4int ActivateNavigator( G4ITNavigator* aNavigator );
100 void DeActivateNavigator( G4ITNavigator* aNavigator );
101 void InactivateAll();
102 // Methods for handling navigators. Navigator for tracking is always the
103 // first, i.e. position 0 in the collection and cannot be de-registered
104
105private:
106
107 void ClearNavigators();
108 // Clear collection of navigators and delete allocated objects
109 void DeRegisterWorld( G4VPhysicalVolume* aWorld );
110 // Register/de-register an already allocated world volume.
111 // The pointed object is not deleted.
112
113private:
117 void Initialize();
118 //G4ITNavigator* fpNavigator;
120 std::vector<G4ITNavigator*> fNavigators;
121 // The collection of all navigators registered
122 std::vector<G4ITNavigator*> fActiveNavigators;
123 // The collection of only active navigators
124 std::vector<G4VPhysicalVolume*> fWorlds;
125 // The collection of worlds associated to the registered navigators
126
127};
128
130
131#endif // G4ITTRANSPORTATIONMANAGER_HH
bool G4bool
Definition: G4Types.hh:86
int G4int
Definition: G4Types.hh:85
std::vector< G4ITNavigator * >::iterator GetActiveNavigatorsIterator()
static G4ThreadLocal G4ITTransportationManager * fpInstance
{Duplicated version of G4TransportationManager. This class just contains the pointer to the navigator...
G4VPhysicalVolume * IsWorldExisting(const G4String &worldName)
std::vector< G4ITNavigator * > fNavigators
std::vector< G4VPhysicalVolume * > fWorlds
void DeRegisterWorld(G4VPhysicalVolume *aWorld)
G4ITNavigator * GetNavigator(const G4String &worldName)
static G4ITTransportationManager * GetTransportationManager()
G4ITNavigator * GetNavigatorForTracking() const
G4ITSafetyHelper * GetSafetyHelper() const
std::vector< G4ITNavigator * > fActiveNavigators
G4int ActivateNavigator(G4ITNavigator *aNavigator)
size_t GetNoActiveNavigators() const
size_t GetNoWorlds() const
G4VPhysicalVolume * GetParallelWorld(const G4String &worldName)
void SetWorldForTracking(G4VPhysicalVolume *theWorld)
std::vector< G4VPhysicalVolume * >::iterator GetWorldsIterator()
void DeActivateNavigator(G4ITNavigator *aNavigator)
void DeRegisterNavigator(G4ITNavigator *aNavigator)
G4bool RegisterWorld(G4VPhysicalVolume *aWorld)
#define G4ThreadLocal
Definition: tls.hh:77