CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Types | Public Member Functions | Private Member Functions | Private Attributes
G4ProcessTypeEnumerator Class Reference

#include <G4ProcessTypeEnumerator.h>

Public Types

typedef std::map< std::string,
std::string > 
MapType
 
typedef std::map< std::string,
std::vector< std::string > > 
ReverseMapType
 

Public Member Functions

 G4ProcessTypeEnumerator ()
 
unsigned int numberOfKnownCMSProcesses ()
 
unsigned int numberOfKnownG4Processes ()
 
std::string processCMSName (std::string)
 
std::vector< std::string > processG4Name (std::string)
 
std::string processG4Name (int)
 
unsigned int processId (const G4VProcess *)
 
int processIdLong (const G4VProcess *)
 
 ~G4ProcessTypeEnumerator ()
 

Private Member Functions

void buildReverseMap ()
 

Private Attributes

std::map< std::string, int > map2Process
 
MapType mapProcesses
 
std::map< int, std::string > reverseMap2Process
 
ReverseMapType reverseMapProcesses
 
ProcessTypeEnumeratortheProcessTypeEnumerator
 

Detailed Description

This is the Mantis level of ProcessTypeEnumerator. It maps betweenG4 and our (CMS) convention of physical processes.

Definition at line 14 of file G4ProcessTypeEnumerator.h.

Member Typedef Documentation

typedef std::map<std::string,std::string> G4ProcessTypeEnumerator::MapType

Definition at line 21 of file G4ProcessTypeEnumerator.h.

typedef std::map<std::string,std::vector<std::string> > G4ProcessTypeEnumerator::ReverseMapType

Definition at line 22 of file G4ProcessTypeEnumerator.h.

Constructor & Destructor Documentation

G4ProcessTypeEnumerator::G4ProcessTypeEnumerator ( )

Definition at line 10 of file G4ProcessTypeEnumerator.cc.

References buildReverseMap(), map2Process, mapProcesses, and theProcessTypeEnumerator.

10  {
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 }
std::map< std::string, int > map2Process
ProcessTypeEnumerator * theProcessTypeEnumerator
G4ProcessTypeEnumerator::~G4ProcessTypeEnumerator ( )

Definition at line 172 of file G4ProcessTypeEnumerator.cc.

References map2Process, mapProcesses, reverseMap2Process, reverseMapProcesses, and theProcessTypeEnumerator.

172  {
174  mapProcesses.clear();
175  reverseMapProcesses.clear();
176  map2Process.clear();
177  reverseMap2Process.clear();
178 }
std::map< std::string, int > map2Process
ProcessTypeEnumerator * theProcessTypeEnumerator
std::map< int, std::string > reverseMap2Process

Member Function Documentation

void G4ProcessTypeEnumerator::buildReverseMap ( )
private

Definition at line 242 of file G4ProcessTypeEnumerator.cc.

References map2Process, mapProcesses, reverseMap2Process, and reverseMapProcesses.

Referenced by G4ProcessTypeEnumerator().

242  {
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 }
std::map< std::string, int > map2Process
std::map< int, std::string > reverseMap2Process
unsigned int G4ProcessTypeEnumerator::numberOfKnownCMSProcesses ( )

Definition at line 234 of file G4ProcessTypeEnumerator.cc.

References reverseMapProcesses.

234  {
235  return reverseMapProcesses.size();
236 }
unsigned int G4ProcessTypeEnumerator::numberOfKnownG4Processes ( )

Definition at line 238 of file G4ProcessTypeEnumerator.cc.

References mapProcesses.

238  {
239  return mapProcesses.size();
240 }
std::string G4ProcessTypeEnumerator::processCMSName ( std::string  in)

Definition at line 212 of file G4ProcessTypeEnumerator.cc.

References recoMuon::in, LogDebug, and mapProcesses.

Referenced by processId().

212  {
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 }
#define LogDebug(id)
std::vector< std::string > G4ProcessTypeEnumerator::processG4Name ( std::string  in)

Definition at line 221 of file G4ProcessTypeEnumerator.cc.

References recoMuon::in, reverseMapProcesses, and findQualityFiles::size.

Referenced by TreatSecondary::tracks(), and CheckSecondary::update().

221  {
222  if (reverseMapProcesses[in].size() ==0)
223  // throw MantisException("G4ProcessTypeEnumerator: unknown CMS process "+in);
224  ;
225  return reverseMapProcesses[in];
226 }
tuple size
Write out results.
std::string G4ProcessTypeEnumerator::processG4Name ( int  in)

Definition at line 228 of file G4ProcessTypeEnumerator.cc.

References reverseMap2Process.

228  {
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 }
std::map< int, std::string > reverseMap2Process
unsigned int G4ProcessTypeEnumerator::processId ( const G4VProcess *  process)

This is the only method to be called by the sensitive detector

Definition at line 181 of file G4ProcessTypeEnumerator.cc.

References LogDebug, processCMSName(), ProcessTypeEnumerator::processId(), groupFilesInBlocks::temp, and theProcessTypeEnumerator.

Referenced by PLTSensitiveDetector::createHit(), TkAccumulatingSensitiveDetector::createHit(), and MuonSensitiveDetector::createHit().

181  {
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 }
#define LogDebug(id)
ProcessTypeEnumerator * theProcessTypeEnumerator
std::string processCMSName(std::string)
unsigned int processId(std::string)
tuple process
Definition: LaserDQM_cfg.py:3
int G4ProcessTypeEnumerator::processIdLong ( const G4VProcess *  process)

Definition at line 203 of file G4ProcessTypeEnumerator.cc.

References map2Process, and groupFilesInBlocks::temp.

Referenced by TreatSecondary::tracks().

203  {
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 }
std::map< std::string, int > map2Process
tuple process
Definition: LaserDQM_cfg.py:3

Member Data Documentation

std::map<std::string,int> G4ProcessTypeEnumerator::map2Process
private
MapType G4ProcessTypeEnumerator::mapProcesses
private
std::map<int,std::string> G4ProcessTypeEnumerator::reverseMap2Process
private
ReverseMapType G4ProcessTypeEnumerator::reverseMapProcesses
private
ProcessTypeEnumerator* G4ProcessTypeEnumerator::theProcessTypeEnumerator
private