ProcessTable.hh
Go to the documentation of this file.
1 // File use to convert the process and sub process number into a process name
2 // The numbers can be checked in the include files of G4
3 
4 // /cvmfs/larsoft.opensciencegrid.org/products/geant4/v4_10_3_p03e/Linux64bit+3.10-2.17-e19-prof/include/Geant4/G4DecayProcessType.hh
5 // /cvmfs/larsoft.opensciencegrid.org/products/geant4/v4_10_3_p03e/Linux64bit+3.10-2.17-e19-prof/include/Geant4/G4EmProcessSubType.hh
6 // /cvmfs/larsoft.opensciencegrid.org/products/geant4/v4_10_3_p03e/Linux64bit+3.10-2.17-e19-prof/include/Geant4/G4FastSimulationProcessType.hh
7 // /cvmfs/larsoft.opensciencegrid.org/products/geant4/v4_10_3_p03e/Linux64bit+3.10-2.17-e19-prof/include/Geant4/G4HadronicProcessType.hh
8 // /cvmfs/larsoft.opensciencegrid.org/products/geant4/v4_10_3_p03e/Linux64bit+3.10-2.17-e19-prof/include/Geant4/G4OpProcessSubType.hh
9 // /cvmfs/larsoft.opensciencegrid.org/products/geant4/v4_10_3_p03e/Linux64bit+3.10-2.17-e19-prof/include/Geant4/G4ProcessType.hh
10 // /cvmfs/larsoft.opensciencegrid.org/products/geant4/v4_10_3_p03e/Linux64bit+3.10-2.17-e19-prof/include/Geant4/G4TransportationProcessType.hh
11 // /cvmfs/larsoft.opensciencegrid.org/products/geant4/v4_10_3_p03e/Linux64bit+3.10-2.17-e19-prof/include/Geant4/G4UCNProcessSubType.hh
12 
13 // The convention is Process:SubProcess such as 2:14 -> EM:GammaConversion or 4:111 -> HAD:HadronElastic
14 
15 #include <unordered_map>
16 #include <string>
17 
18 namespace gar {
19  namespace util {
20 
21  inline std::unordered_map<int, std::unordered_map<int, std::string> > &processTable()
22  {
23  static std::unordered_map<int, std::unordered_map<int, std::string> > m_processTable;
24  static bool firstTime = true;
25  if(firstTime)
26  {
27  firstTime = false;
28  //Not defined
29 
30  //Transportation
31  m_processTable[1][91] = "Transportation:Transportation";
32  m_processTable[1][92] = "Transportation:CoupledTransportation";
33 
34  //Electromagnetic
35  m_processTable[2][1] = "EM:CoulombScattering";
36  m_processTable[2][2] = "EM:Ionisation";
37  m_processTable[2][3] = "EM:Bremsstrahlung";
38  m_processTable[2][4] = "EM:PairProductionByCharged";
39  m_processTable[2][5] = "EM:Annihilation";
40  m_processTable[2][6] = "EM:AnnihilationToMuMu";
41  m_processTable[2][7] = "EM:AnnihilationToHadrons";
42  m_processTable[2][8] = "EM:NuclearStopping";
43  m_processTable[2][10] = "EM:MultipleScattering";
44  m_processTable[2][11] = "EM:Rayleigh";
45  m_processTable[2][12] = "EM:PhotoElectricEffect";
46  m_processTable[2][13] = "EM:ComptonScattering";
47  m_processTable[2][14] = "EM:GammaConversion";
48  m_processTable[2][15] = "EM:GammaConversionToMuMu";
49  m_processTable[2][21] = "EM:Cerenkov";
50  m_processTable[2][22] = "EM:Scintillation";
51  m_processTable[2][23] = "EM:SynchrotronRadiation";
52  m_processTable[2][24] = "EM:TransitionRadiation";
53 
54  //Optical
55  m_processTable[4][31] = "OPT:OpAbsorption";
56  m_processTable[4][32] = "OPT:OpBoundary";
57  m_processTable[4][33] = "OPT:OpRayleigh";
58  m_processTable[4][34] = "OPT:OpWLS";
59  m_processTable[4][35] = "OPT:OpMieHG";
60 
61  //Hadronic
62  m_processTable[4][111] = "HAD:HadronElastic";
63  m_processTable[4][121] = "HAD:HadronInelastic";
64  m_processTable[4][131] = "HAD:Capture";
65  m_processTable[4][141] = "HAD:Fission";
66  m_processTable[4][151] = "HAD:HadronAtRest";
67  m_processTable[4][152] = "HAD:LeptonAtRest";
68  m_processTable[4][161] = "HAD:ChargeExchange";
69  m_processTable[4][210] = "HAD:RadioactiveDecay";
70 
71  //PhotoLepton_Hadron
72 
73  //Decay
74  m_processTable[6][201] = "DEC:Decay";
75  m_processTable[6][202] = "DEC:DecayWithSpin";
76  m_processTable[6][203] = "DEC:DecayPionMakeSpin";
77  m_processTable[6][210] = "DEC:Radioactive";
78  m_processTable[6][211] = "DEC:Unknown";
79  m_processTable[6][231] = "DEC:External";
80 
81  //General
82  m_processTable[7][401] = "General:StepLimiter";
83  m_processTable[7][402] = "General:UserSpecialCuts";
84  m_processTable[7][403] = "General:NeutronKiller";
85 
86  //Parametrisation
87 
88  //UserDefined
89 
90  //Parallel
91 
92  //Photon
93 
94  //UCN
95  m_processTable[12][41] = "UCN:UCNLoss";
96  m_processTable[12][42] = "UCN:UCNAbsorption";
97  m_processTable[12][43] = "UCN:UCNBoundary";
98  m_processTable[12][44] = "UCN:UCNMultiScattering";
99  }
100  return m_processTable;
101  }
102 
103  inline std::string FindProcessName(int process, int subprocess);
104  }
105 }
106 
107 inline std::string gar::util::FindProcessName(int process, int subprocess)
108 {
109  std::string process_name = "unknown";
110  if(processTable().find(process) != processTable().end()) {
111  if(processTable()[process].find(subprocess) != processTable()[process].end()) {
112  process_name = processTable()[process][subprocess];
113  }
114  }
115  return process_name;
116 }
end
while True: pbar.update(maxval-len(onlies[E][S])) #print iS, "/", len(onlies[E][S]) found = False for...
Namespace for general, non-LArSoft-specific utilities.
std::string string
Definition: nybbler.cc:12
std::unordered_map< int, std::unordered_map< int, std::string > > & processTable()
Definition: ProcessTable.hh:21
def process(f, kind)
Definition: search.py:254
std::string FindProcessName(int process, int subprocess)
General GArSoft Utilities.