4 // Author: I. Hrivnacova
6 // Class TG4ParticlesManager
7 // -------------------------
8 // This class provides mapping between TDatabasePDG
9 // and Geant4 particles.
11 #ifndef TG4_PARTICLES_MANAGER_H
12 #define TG4_PARTICLES_MANAGER_H
14 #include "TG4Globals.h"
15 #include "TG4NameMap.h"
16 #include "TG4IntMap.h"
19 #include <G4ThreeVector.hh>
23 class G4DynamicParticle;
24 class G4ParticleDefinition;
29 class TG4ParticlesManager
32 TG4ParticlesManager();
34 // TG4ParticlesManager(const TG4ParticlesManager& right);
35 virtual ~TG4ParticlesManager();
37 // static access method
38 static TG4ParticlesManager* Instance();
44 // for G4 particle types
45 G4int GetPDGEncodingFast(G4ParticleDefinition* particle);
47 // for Root particle types;
48 TParticle* GetParticle(const TClonesArray* particles, G4int index) const;
49 G4ParticleDefinition* GetParticleDefinition(
50 const TParticle* particle) const;
51 G4DynamicParticle* CreateDynamicParticle(
52 const TParticle* particle) const;
53 G4ThreeVector GetParticlePosition(
54 const TParticle* particle) const;
55 G4ThreeVector GetParticleMomentum(
56 const TParticle* particle) const;
59 TG4ParticlesManager(const TG4ParticlesManager& right);
62 TG4ParticlesManager& operator=(const TG4ParticlesManager& right);
66 G4int GetPDGEncoding(G4ParticleDefinition* particle);
67 G4int GetPDGEncoding(G4String particleName);
69 // static data members
70 static TG4ParticlesManager* fgInstance; //this instance
73 TG4NameMap fParticleNameMap; //the mapping between G4 particle names
74 //and TDatabasePDG names
75 TG4IntMap fParticlePDGMap; //the mapping between G4 particle names
76 //and TDatabasePDG codes
81 inline TG4ParticlesManager* TG4ParticlesManager::Instance()
82 { return fgInstance; }
84 #endif //TG4_PARTICLES_MANAGER_H