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 "TG4Verbose.h"
15 #include "TG4Globals.h"
16 #include "TG4NameMap.h"
17 #include "TG4IntMap.h"
20 #include <G4ThreeVector.hh>
24 class G4DynamicParticle;
25 class G4ParticleDefinition;
30 class TG4ParticlesManager : public TG4Verbose
33 TG4ParticlesManager();
35 // TG4ParticlesManager(const TG4ParticlesManager& right);
36 virtual ~TG4ParticlesManager();
38 // static access method
39 static TG4ParticlesManager* Instance();
45 // for G4 particle types
46 G4int GetPDGEncodingFast(G4ParticleDefinition* particle);
48 // for Root particle types;
49 TParticle* GetParticle(const TClonesArray* particles, G4int index) const;
50 G4ParticleDefinition* GetParticleDefinition(
51 const TParticle* particle) const;
52 G4DynamicParticle* CreateDynamicParticle(
53 const TParticle* particle) const;
54 G4ThreeVector GetParticlePosition(
55 const TParticle* particle) const;
56 G4ThreeVector GetParticleMomentum(
57 const TParticle* particle) const;
60 TG4ParticlesManager(const TG4ParticlesManager& right);
63 TG4ParticlesManager& operator=(const TG4ParticlesManager& right);
67 G4int GetPDGEncoding(G4ParticleDefinition* particle);
68 G4int GetPDGEncoding(G4String particleName);
70 // static data members
71 static TG4ParticlesManager* fgInstance; //this instance
74 TG4NameMap fParticleNameMap; //the mapping between G4 particle names
75 //and TDatabasePDG names
76 TG4IntMap fParticlePDGMap; //the mapping between G4 particle names
77 //and TDatabasePDG codes
82 inline TG4ParticlesManager* TG4ParticlesManager::Instance()
83 { return fgInstance; }
85 #endif //TG4_PARTICLES_MANAGER_H