REST-for-Physics  v2.3
Rare Event Searches ToolKit for Physics
TRestGeant4PhysicsInfo.h
1#ifndef REST_TRESTGEANT4PHYSICSINFO_H
2#define REST_TRESTGEANT4PHYSICSINFO_H
3
4#include <TString.h>
5
6#include <map>
7#include <mutex>
8#include <set>
9#include <vector>
10
11class G4VProcess;
12
14 ClassDef(TRestGeant4PhysicsInfo, 2);
15
16 private:
17 std::map<Int_t, TString> fProcessNamesMap = {};
18 std::map<TString, Int_t> fProcessNamesReverseMap = {};
19
20 std::map<Int_t, TString> fParticleNamesMap = {};
21 std::map<TString, Int_t> fParticleNamesReverseMap = {};
22
23 std::map<TString, TString> fProcessTypesMap = {}; // process name -> process type
24
25 std::mutex fMutex;
26
27 public:
28 TString GetProcessName(Int_t id) const;
29 Int_t GetProcessID(const TString& processName) const;
30 void InsertProcessName(Int_t id, const TString& processName, const TString& processType);
31 std::set<TString> GetAllParticles() const;
32
33 TString GetParticleName(Int_t id) const;
34 Int_t GetParticleID(const TString& processName) const;
35 void InsertParticleName(Int_t id, const TString& particleName);
36 std::set<TString> GetAllProcesses() const;
37
38 TString GetProcessType(const TString& processName) const;
39 std::set<TString> GetAllProcessTypes() const;
40
41 public:
42 inline TRestGeant4PhysicsInfo() = default;
43 inline ~TRestGeant4PhysicsInfo() = default;
44
45 void Print() const;
46 void PrintProcesses() const;
47 void PrintParticles() const;
48
49 static Int_t GetProcessIDFromGeant4Process(const G4VProcess*); // implemented in restG4
50};
51#endif // REST_TRESTGEANT4PHYSICSINFO_H