CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
G4ProcessTypeEnumerator.cc
Go to the documentation of this file.
4 #include "G4VProcess.hh"
5 
6 #include <iostream>
7 
8 //#define MYDEB
9 
11  mapProcesses["Undefined"] = "Undefined";
12  mapProcesses["Unknown"] = "Unknown";
13  //
14  mapProcesses["Primary"] = "Primary";
15  // nuclear stuff
16  mapProcesses["HadronCapture"] = "Hadronic";
17  mapProcesses["AntiNeutronInelastic"] = "Hadronic";
18  mapProcesses["PositronNuclear"] = "Hadronic";
19  mapProcesses["ElectroNuclear"] = "Hadronic";
20  mapProcesses["AntiProtonAnnihilationAtRest"] = "Hadronic";
21  mapProcesses["AntiProtonInelastic"] = "Hadronic";
22  mapProcesses["ProtonInelastic"] = "Hadronic";
23  mapProcesses["PhotonInelastic"] = "Hadronic";
24  mapProcesses["DeuteronInelastic"] = "Hadronic";
25  mapProcesses["KaonMinusAbsorption"] = "Hadronic";
26  mapProcesses["KaonMinusInelastic"] = "Hadronic";
27  mapProcesses["KaonPlusInelastic"] = "Hadronic";
28  mapProcesses["KaonZeroLInelastic"] = "Hadronic";
29  mapProcesses["KaonZeroSInelastic"] = "Hadronic";
30  mapProcesses["LCapture"] = "Hadronic";
31  mapProcesses["LElastic"] = "Hadronic";
32  mapProcesses["hElastic"] = "Hadronic";
33  mapProcesses["LambdaInelastic"] = "Hadronic";
34  mapProcesses["NeutronInelastic"] = "Hadronic";
35  mapProcesses["CHIPSNuclearAbsorptionAtRest"] = "Hadronic";
36  mapProcesses["PionMinusAbsorptionAtRest"] = "Hadronic";
37  mapProcesses["PionMinusInelastic"] = "Hadronic";
38  mapProcesses["PionPlusInelastic"] = "Hadronic";
39  mapProcesses["SigmaMinusInelastic"] = "Hadronic";
40  mapProcesses["AntiSigmaMinusInelastic"] = "Hadronic";
41  mapProcesses["AntiSigmaPlusInelastic"] = "Hadronic";
42  mapProcesses["AntiLambdaInelastic"] = "Hadronic";
43  mapProcesses["TritonInelastic"] = "Hadronic";
44  mapProcesses["XiMinusInelastic"] = "Hadronic";
45  mapProcesses["XiPlusInelastic"] = "Hadronic";
46  mapProcesses["AntiXiZeroInelastic"] = "Hadronic";
47  mapProcesses["SigmaPlusInelastic"] = "Hadronic";
48  mapProcesses["XiZeroInelastic"] = "Hadronic";
49  mapProcesses["AntiXiMinusInelastic"] = "Hadronic";
50  mapProcesses["AlphaInelastic"] = "Hadronic";
51  mapProcesses["FullModelHadronicProcess"] = "Hadronic";
52  mapProcesses["hInelastic"] = "Hadronic";
53  mapProcesses["dInelastic"] = "Hadronic";
54  mapProcesses["tInelastic"] = "Hadronic";
55  mapProcesses["nCapture"] = "Hadronic";
56  mapProcesses["alphaInelastic"] = "Hadronic";
57  mapProcesses["CHIPSElasticScattering"] = "Hadronic";
58  mapProcesses["MixedProtonInelasticProcess"] = "Hadronic";
59 
60  // for GFlash Hadron process
61  mapProcesses["WrappedPionMinusInelastic"] = "Hadronic";
62  mapProcesses["WrappedPionPlusInelastic"] = "Hadronic";
63 
64  // ionizations
65  mapProcesses["eIoni"] = "EIoni";
66  mapProcesses["hIoni"] = "HIoni";
67  mapProcesses["ionIoni"] = "HIoni";
68  mapProcesses["muIoni"] = "MuIoni";
69  // Annihilation
70  mapProcesses["annihil"] = "Annihilation";
71  // MuBrem
72  mapProcesses["muBrems"] = "MuBrem";
73  // MuNucl
74  mapProcesses["muMinusCaptureAtRest"] = "MuNucl";
75  mapProcesses["MuonMinusCaptureAtRest"] = "MuNucl";
76  mapProcesses["MuonPlusCaptureAtRest"] = "MuNucl";
77  // Conversions
78  mapProcesses["conv"] = "Conversions";
79  // Brems
80  mapProcesses["eBrem"] = "EBrem";
81  // Decay
82  mapProcesses["Decay"] = "Decay";
83  // PairProd
84  mapProcesses["muPairProd"] = "MuPairProd";
85  // Photon
86  mapProcesses["phot"] = "Photon";
87  // Sync
88  mapProcesses["SynchrotronRadiation"] = "SynchrotronRadiation";
89  // Compton
90  mapProcesses["compt"] = "Compton";
91  // hbrem etc;
92  mapProcesses["hBrems"] = "hBrems";
93  mapProcesses["hPairProd"] = "hPairProd";
94  //
95  map2Process["Undefined"] = -1;
96  map2Process["Unknown"] = 0;
97  map2Process["Primary"] = 100;
98  //Hadronic
99  map2Process["HadronCapture"] = 1;
100  map2Process["AntiNeutronInelastic"] = 2;
101  map2Process["PositronNuclear"] = 3;
102  map2Process["ElectroNuclear"] = 4;
103  map2Process["AntiProtonAnnihilationAtRest"] = 5;
104  map2Process["AntiProtonInelastic"] = 6;
105  map2Process["ProtonInelastic"] = 7;
106  map2Process["PhotonInelastic"] = 8;
107  map2Process["DeuteronInelastic"] = 9;
108  map2Process["KaonMinusAbsorption"] = 10;
109  map2Process["KaonMinusInelastic"] = 11;
110  map2Process["KaonPlusInelastic"] = 12;
111  map2Process["KaonZeroLInelastic"] = 13;
112  map2Process["KaonZeroSInelastic"] = 14;
113  map2Process["LCapture"] = 15;
114  map2Process["LElastic"] = 16;
115  map2Process["hElastic"] = 17;
116  map2Process["LambdaInelastic"] = 18;
117  map2Process["NeutronInelastic"] = 19;
118  map2Process["CHIPSNuclearAbsorptionAtRest"] = 20;
119  map2Process["PionMinusAbsorptionAtRest"] = 21;
120  map2Process["PionMinusInelastic"] = 22;
121  map2Process["PionPlusInelastic"] = 23;
122  map2Process["SigmaMinusInelastic"] = 24;
123  map2Process["AntiSigmaMinusInelastic"] = 25;
124  map2Process["AntiSigmaPlusInelastic"] = 26;
125  map2Process["AntiLambdaInelastic"] = 27;
126  map2Process["TritonInelastic"] = 28;
127  map2Process["XiMinusInelastic"] = 29;
128  map2Process["XiPlusInelastic"] = 30;
129  map2Process["AntiXiZeroInelastic"] = 31;
130  map2Process["SigmaPlusInelastic"] = 32;
131  map2Process["XiZeroInelastic"] = 33;
132  map2Process["AntiXiMinusInelastic"] = 34;
133  map2Process["FullModelHadronicProcess"] = 35;
134  map2Process["hInelastic"] = 36;
135  map2Process["dInelastic"] = 37;
136  map2Process["tInelastic"] = 38;
137  map2Process["alphaInelastic"] = 39;
138  map2Process["nCapture"] = 40;
139  map2Process["CHIPSElasticScattering"] = 17;
140  map2Process["MixedProtonInelasticProcess"] = 7;
141 
142  // for GFlash hadron process
143  map2Process["WrappedPionMinusInelastic"] = 68;
144  map2Process["WrappedPionPlusInelastic"] = 69;
145 
146  // Decay
147  map2Process["Decay"] = 50;
148  // EM
149  map2Process["eIoni"] = 51;
150  map2Process["hIoni"] = 52;
151  map2Process["ionIoni"] = 53;
152  map2Process["muIoni"] = 54;
153  map2Process["annihil"] = 55;
154  map2Process["muBrems"] = 56;
155  map2Process["muMinusCaptureAtRest"] = 57;
156  map2Process["MuonMinusCaptureAtRest"] = 58;
157  map2Process["MuonPlusCaptureAtRest"] = 59;
158  map2Process["conv"] = 60;
159  map2Process["eBrem"] = 61;
160  map2Process["muPairProd"] = 62;
161  map2Process["phot"] = 63;
162  map2Process["SynchrotronRadiation"] = 64;
163  map2Process["compt"] = 65;
164  map2Process["hBrems"] = 66;
165  map2Process["hPairProd"] = 67;
166  //
167  buildReverseMap();
168  //
170 }
171 
174  mapProcesses.clear();
175  reverseMapProcesses.clear();
176  map2Process.clear();
177  reverseMap2Process.clear();
178 }
179 
180 
181 unsigned int G4ProcessTypeEnumerator::processId(const G4VProcess* process){
182  if (process == 0) {
183  //
184  // it is primary!
185  //
186  std::string temp = "Primary";
187 #ifdef MYDEB
188  LogDebug("Physics") <<"G4ProcessTypeEnumerator : Primary process, returning "
190 #endif
191  return theProcessTypeEnumerator->processId(temp);
192  } else {
193  std::string temp = process->GetProcessName();
194 #ifdef MYDEB
195  LogDebug("Physics") <<"G4ProcessTypeEnumerator : G4Process "<<temp
196  <<" mapped to "<< processCMSName(temp)<<"; returning "
198 #endif
200  }
201 }
202 
204  std::string temp;
205  if (process == 0) temp = "Primary";
206  else temp = process->GetProcessName();
207  std::map<std::string,int>::const_iterator it = map2Process.find(temp);
208  if (it != map2Process.end()) return it->second;
209  else return map2Process["Undefined"];
210 }
211 
213  if (mapProcesses[in] == ""){
214  // throw MantisException("G4ProcessTypeEnumerator: unknown G4 process "+in);
215  LogDebug("Physics")<<" NOT FOUND G4ProcessTypeEnumerator: "<<in;
216  return "Unknown";
217  }
218  return mapProcesses[in];
219 }
220 
221 std::vector<std::string> G4ProcessTypeEnumerator::processG4Name(std::string in){
222  if (reverseMapProcesses[in].size() ==0)
223  // throw MantisException("G4ProcessTypeEnumerator: unknown CMS process "+in);
224  ;
225  return reverseMapProcesses[in];
226 }
227 
229  std::map<int,std::string>::const_iterator it = reverseMap2Process.find(in);
230  if (it != reverseMap2Process.end()) return it->second;
231  else return "Undefined";
232 }
233 
235  return reverseMapProcesses.size();
236 }
237 
239  return mapProcesses.size();
240 }
241 
243  for (MapType::const_iterator it = mapProcesses.begin();
244  it != mapProcesses.end(); it++)
245  (reverseMapProcesses[(*it).second]).push_back((*it).first);
246  for (std::map<std::string,int>::const_iterator it = map2Process.begin();
247  it != map2Process.end(); it++)
248  reverseMap2Process[(*it).second] = (*it).first;
249 }
#define LogDebug(id)
std::map< std::string, int > map2Process
ProcessTypeEnumerator * theProcessTypeEnumerator
std::string processCMSName(std::string)
int processIdLong(const G4VProcess *)
unsigned int processId(const G4VProcess *)
std::map< int, std::string > reverseMap2Process
std::vector< std::string > processG4Name(std::string)
unsigned int processId(std::string)
tuple process
Definition: LaserDQM_cfg.py:3
tuple size
Write out results.