Geant4 Cross Reference |
1 // 1 // 2 // ******************************************* 2 // ******************************************************************** 3 // * License and Disclaimer 3 // * License and Disclaimer * 4 // * 4 // * * 5 // * The Geant4 software is copyright of th 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/ 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. 9 // * include a list of copyright holders. * 10 // * 10 // * * 11 // * Neither the authors of this software syst 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing fin 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warran 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assum 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitatio 16 // * for the full disclaimer and the limitation of liability. * 17 // * 17 // * * 18 // * This code implementation is the result 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboratio 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distri 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you ag 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publicati 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Sof 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************* 24 // ******************************************************************** 25 // 25 // 26 // G4PhysicsListHelper implementation << 27 // 26 // 28 // Author: H.Kurashige, 29 April 2011 << 27 // 29 // ------------------------------------------- << 28 // >> 29 // ------------------------------------------------------------ >> 30 // GEANT 4 class header file >> 31 // >> 32 // ------------------------------------------------------------ >> 33 // History >> 34 // first version 29 Apr 2011 by H.Kurashige >> 35 // ------------------------------------------------------------ 30 36 31 #include "G4PhysicsListHelper.hh" 37 #include "G4PhysicsListHelper.hh" 32 << 33 #include "G4CoupledTransportation.hh" << 34 #include "G4DecayProcessType.hh" << 35 #include "G4EmProcessSubType.hh" << 36 #include "G4HadronicProcessType.hh" << 37 #include "G4LowEnergyEmProcessSubType.hh" << 38 #include "G4OpProcessSubType.hh" << 39 #include "G4ParticleDefinition.hh" 38 #include "G4ParticleDefinition.hh" 40 #include "G4ParticleTable.hh" 39 #include "G4ParticleTable.hh" 41 #include "G4ProcessManager.hh" 40 #include "G4ProcessManager.hh" 42 #include "G4ProcessType.hh" << 43 #include "G4RunManagerKernel.hh" << 44 #include "G4ScoringManager.hh" << 45 #include "G4Transportation.hh" << 46 #include "G4TransportationProcessType.hh" << 47 #include "G4ios.hh" << 48 #include "globals.hh" 41 #include "globals.hh" 49 42 >> 43 #include "G4ios.hh" 50 #include <fstream> 44 #include <fstream> 51 #include <iomanip> 45 #include <iomanip> 52 46 >> 47 //////////////////////////////////////////////////////// 53 G4ThreadLocal G4PhysicsListHelper* G4PhysicsLi 48 G4ThreadLocal G4PhysicsListHelper* G4PhysicsListHelper::pPLHelper = nullptr; 54 49 55 // ------------------------------------------- << 50 //////////////////////////////////////////////////////// 56 G4PhysicsListHelper::G4PhysicsListHelper() 51 G4PhysicsListHelper::G4PhysicsListHelper() >> 52 : useCoupledTransportation(false) >> 53 , theTransportationProcess(nullptr) >> 54 , verboseLevel(1) >> 55 , theTable(nullptr) >> 56 , sizeOfTable(0) >> 57 , ordParamFileName("") 57 { 58 { 58 // pointer to the particle table 59 // pointer to the particle table 59 theParticleTable = G4ParticleTable::GetParti << 60 theParticleTable = G4ParticleTable::GetParticleTable(); 60 aParticleIterator = theParticleTable->GetIte 61 aParticleIterator = theParticleTable->GetIterator(); 61 62 62 ReadOrdingParameterTable(); 63 ReadOrdingParameterTable(); 63 64 64 #ifdef G4VERBOSE 65 #ifdef G4VERBOSE 65 if (verboseLevel > 1) { << 66 if(verboseLevel > 1) >> 67 { 66 DumpOrdingParameterTable(); 68 DumpOrdingParameterTable(); 67 } 69 } 68 #endif 70 #endif 69 } 71 } 70 72 71 // ------------------------------------------- << 73 //////////////////////////////////////////////////////// 72 G4PhysicsListHelper::~G4PhysicsListHelper() 74 G4PhysicsListHelper::~G4PhysicsListHelper() 73 { 75 { 74 if (theTable != nullptr) { << 76 if(theTable != 0) >> 77 { 75 theTable->clear(); 78 theTable->clear(); 76 delete theTable; 79 delete theTable; 77 theTable = nullptr; << 80 theTable = 0; 78 sizeOfTable = 0; 81 sizeOfTable = 0; 79 } 82 } >> 83 /* >> 84 if (theTransportationProcess!=0) { >> 85 delete theTransportationProcess; >> 86 theTransportationProcess=0; >> 87 } >> 88 */ 80 } 89 } 81 90 82 // ------------------------------------------- << 91 //////////////////////////////////////////////////////// 83 G4PhysicsListHelper* G4PhysicsListHelper::GetP 92 G4PhysicsListHelper* G4PhysicsListHelper::GetPhysicsListHelper() 84 { 93 { 85 if (pPLHelper == nullptr) { << 94 if(!pPLHelper) >> 95 { 86 static G4ThreadLocalSingleton<G4PhysicsLis 96 static G4ThreadLocalSingleton<G4PhysicsListHelper> inst; 87 pPLHelper = inst.Instance(); 97 pPLHelper = inst.Instance(); 88 } 98 } 89 return pPLHelper; 99 return pPLHelper; 90 } 100 } 91 101 92 // ------------------------------------------- << 102 //////////////////////////////////////////////////////// 93 void G4PhysicsListHelper::CheckParticleList() 103 void G4PhysicsListHelper::CheckParticleList() const 94 { 104 { 95 G4bool isElectron = false; << 105 G4bool isElectron = false; 96 G4bool isPositron = false; << 106 G4bool isPositron = false; 97 G4bool isGamma = false; << 107 G4bool isGamma = false; 98 G4bool isProton = false; << 108 G4bool isProton = false; 99 G4bool isGenericIon = false; << 109 G4bool isGenericIon = false; 100 G4bool isAnyIon = false; << 110 G4bool isAnyIon = false; 101 G4bool isAnyChargedBaryon = false; 111 G4bool isAnyChargedBaryon = false; 102 G4bool isEmProc = false; << 112 G4bool isEmProc = false; 103 113 104 // loop over all particles in G4ParticleTabl 114 // loop over all particles in G4ParticleTable 105 aParticleIterator->reset(); 115 aParticleIterator->reset(); 106 while ((*aParticleIterator)()) { << 116 while((*aParticleIterator)()) >> 117 { 107 G4ParticleDefinition* particle = aParticle 118 G4ParticleDefinition* particle = aParticleIterator->value(); 108 G4String name = particle->GetParticleName( << 119 G4String name = particle->GetParticleName(); 109 // check if any EM process exists 120 // check if any EM process exists 110 if (!isEmProc) { << 121 if(!isEmProc) >> 122 { 111 G4ProcessVector* list = particle->GetPro 123 G4ProcessVector* list = particle->GetProcessManager()->GetProcessList(); 112 for (G4int idx = 0; idx < (G4int)list->s << 124 for(std::size_t idx = 0; idx < list->size(); ++idx) >> 125 { 113 isEmProc = ((*list)[idx])->GetProcessT 126 isEmProc = ((*list)[idx])->GetProcessType() == fElectromagnetic; 114 if (isEmProc) break; << 127 if(isEmProc) >> 128 break; 115 } 129 } 116 } 130 } 117 131 118 if (name == "e-") << 132 if(name == "e-") 119 isElectron = true; 133 isElectron = true; 120 else if (name == "e+") << 134 else if(name == "e+") 121 isPositron = true; 135 isPositron = true; 122 else if (name == "gamma") << 136 else if(name == "gamma") 123 isGamma = true; 137 isGamma = true; 124 else if (name == "GenericIon") << 138 else if(name == "GenericIon") 125 isGenericIon = true; 139 isGenericIon = true; 126 else if (name == "proton") << 140 else if(name == "proton") 127 isProton = true; 141 isProton = true; 128 else if (particle->GetParticleType() == "n << 142 else if(particle->GetParticleType() == "nucleus") 129 isAnyIon = true; 143 isAnyIon = true; 130 else if (particle->GetParticleType() == "b << 144 else if(particle->GetParticleType() == "baryon") 131 if (particle->GetPDGCharge() != 0.0) isA << 145 { >> 146 if(particle->GetPDGCharge() != 0.0) >> 147 isAnyChargedBaryon = true; 132 } 148 } 133 } 149 } 134 150 135 if (!isEmProc) return; << 151 if(!isEmProc) >> 152 return; 136 153 137 // RULE 1 154 // RULE 1 138 // e+, e- and gamma should exist 155 // e+, e- and gamma should exist 139 // if one of them exist 156 // if one of them exist 140 G4bool isEmBasic = isElectron || isPositron << 157 G4bool isEmBasic = isElectron || isPositron || isGamma; 141 G4bool isMissingEmBasic = !isElectron || !is 158 G4bool isMissingEmBasic = !isElectron || !isPositron || !isGamma; 142 if (isEmBasic && isMissingEmBasic) { << 159 if(isEmBasic && isMissingEmBasic) >> 160 { 143 G4String missingName = ""; 161 G4String missingName = ""; 144 if (!isElectron) missingName += "e- "; << 162 if(!isElectron) 145 if (!isPositron) missingName += "e+ "; << 163 missingName += "e- "; 146 if (!isGamma) missingName += "gamma "; << 164 if(!isPositron) >> 165 missingName += "e+ "; >> 166 if(!isGamma) >> 167 missingName += "gamma "; 147 168 148 #ifdef G4VERBOSE 169 #ifdef G4VERBOSE 149 if (verboseLevel > 0) { << 170 if(verboseLevel > 0) 150 G4cout << "G4PhysicsListHelper::CheckPar << 171 { >> 172 G4cout << "G4PhysicsListHelper::CheckParticleList: " << missingName >> 173 << " do not exist " << G4endl; >> 174 G4cout << " These particle are necessary for basic EM processes" 151 << G4endl; 175 << G4endl; 152 G4cout << " These particle are necessary << 153 } 176 } 154 #endif 177 #endif 155 G4Exception("G4PhysicsListHelper::CheckPar << 178 G4Exception("G4PhysicsListHelper::CheckParticleList", "Run0101", 156 "Missing EM basic particle"); << 179 FatalException, "Missing EM basic particle"); 157 } 180 } 158 181 159 // RULE 2 182 // RULE 2 160 // proton should exist 183 // proton should exist 161 // if any other charged baryon exist 184 // if any other charged baryon exist 162 if (!isProton && isAnyChargedBaryon) { << 185 if(!isProton && isAnyChargedBaryon) >> 186 { 163 G4String missingName = "proton "; 187 G4String missingName = "proton "; 164 188 165 #ifdef G4VERBOSE 189 #ifdef G4VERBOSE 166 if (verboseLevel > 0) { << 190 if(verboseLevel > 0) 167 G4cout << "G4PhysicsListHelper::CheckPar << 191 { 168 << G4endl; << 192 G4cout << "G4PhysicsListHelper::CheckParticleList: " << missingName >> 193 << " does not exist " << G4endl; 169 G4cout << " Proton is necessary for EM b 194 G4cout << " Proton is necessary for EM baryon processes" << G4endl; 170 } 195 } 171 #endif 196 #endif 172 missingName += " should be created "; 197 missingName += " should be created "; 173 G4Exception("G4PhysicsListHelper::CheckPar << 198 G4Exception("G4PhysicsListHelper::CheckParticleList", "Run0102", 174 "Missing Proton"); << 199 FatalException, "Missing Proton"); 175 } 200 } 176 201 177 // RULE 3 202 // RULE 3 178 // GenericIonn should exist 203 // GenericIonn should exist 179 // if any other ion exist 204 // if any other ion exist 180 if (!isGenericIon && isAnyIon) { << 205 if(!isGenericIon && isAnyIon) >> 206 { 181 G4String missingName = "GenericIon "; 207 G4String missingName = "GenericIon "; 182 208 183 #ifdef G4VERBOSE 209 #ifdef G4VERBOSE 184 if (verboseLevel > 0) { << 210 if(verboseLevel > 0) 185 G4cout << "G4PhysicsListHelper::CheckPar << 211 { >> 212 G4cout << "G4PhysicsListHelper::CheckParticleList: " << missingName >> 213 << " does not exist " << G4endl; >> 214 G4cout << " GenericIon should be created if any ion is necessary" 186 << G4endl; 215 << G4endl; 187 G4cout << " GenericIon should be created << 188 } 216 } 189 #endif 217 #endif 190 G4Exception("G4PhysicsListHelper::CheckPar << 218 G4Exception("G4PhysicsListHelper::CheckParticleList", "Run0103", 191 "Missing GenericIon"); << 219 FatalException, "Missing GenericIon"); 192 } 220 } 193 } 221 } 194 222 195 // ------------------------------------------- << 223 //////////////////////////////////////////////////////// >> 224 #include "G4CoupledTransportation.hh" >> 225 #include "G4RunManagerKernel.hh" >> 226 #include "G4ScoringManager.hh" >> 227 #include "G4Transportation.hh" >> 228 196 void G4PhysicsListHelper::AddTransportation() 229 void G4PhysicsListHelper::AddTransportation() 197 { 230 { 198 G4int verboseLevelTransport = 0; 231 G4int verboseLevelTransport = 0; 199 232 200 #ifdef G4VERBOSE 233 #ifdef G4VERBOSE 201 if (verboseLevel > 2) { << 234 if(verboseLevel > 2) >> 235 { 202 G4cout << "G4PhysicsListHelper::AddTranspo 236 G4cout << "G4PhysicsListHelper::AddTransportation() " << G4endl; 203 } 237 } 204 #endif 238 #endif 205 239 206 G4int nParaWorld = G4RunManagerKernel::GetRu << 240 G4int nParaWorld = >> 241 G4RunManagerKernel::GetRunManagerKernel()->GetNumberOfParallelWorld(); 207 242 208 if (nParaWorld > 0 || useCoupledTransportati << 243 if(nParaWorld > 0 || useCoupledTransportation || 209 || (G4ScoringManager::GetScoringManagerI << 244 G4ScoringManager::GetScoringManagerIfExist()) 210 { 245 { 211 auto coupledTransport = new G4CoupledTrans 246 auto coupledTransport = new G4CoupledTransportation(verboseLevelTransport); 212 if (theLooperThresholds == 0) coupledTrans << 247 if(theLooperThresholds == 0) 213 if (theLooperThresholds == 2) coupledTrans << 248 coupledTransport->SetLowLooperThresholds(); >> 249 if(theLooperThresholds == 2) >> 250 coupledTransport->SetHighLooperThresholds(); 214 theTransportationProcess = coupledTranspor 251 theTransportationProcess = coupledTransport; 215 252 216 if (verboseLevel > 0) { << 253 if(verboseLevel > 0) >> 254 { 217 G4cout << "--- G4CoupledTransportation i 255 G4cout << "--- G4CoupledTransportation is used " << G4endl; 218 } 256 } 219 } 257 } 220 else { << 258 else >> 259 { 221 auto simpleTransport = new G4Transportatio 260 auto simpleTransport = new G4Transportation(verboseLevelTransport); 222 if (theLooperThresholds == 0) simpleTransp << 261 if(theLooperThresholds == 0) 223 if (theLooperThresholds == 2) simpleTransp << 262 simpleTransport->SetLowLooperThresholds(); >> 263 if(theLooperThresholds == 2) >> 264 simpleTransport->SetHighLooperThresholds(); 224 theTransportationProcess = simpleTransport 265 theTransportationProcess = simpleTransport; 225 } 266 } 226 267 227 // loop over all particles in G4ParticleTabl 268 // loop over all particles in G4ParticleTable 228 aParticleIterator->reset(); 269 aParticleIterator->reset(); 229 while ((*aParticleIterator)()) { << 270 while((*aParticleIterator)()) >> 271 { 230 G4ParticleDefinition* particle = aParticle 272 G4ParticleDefinition* particle = aParticleIterator->value(); 231 G4ProcessManager* pmanager = particle->Get << 273 G4ProcessManager* pmanager = particle->GetProcessManager(); 232 // Add transportation process for all part 274 // Add transportation process for all particles 233 if (pmanager == nullptr) { << 275 if(pmanager == 0) >> 276 { 234 // Error !! no process manager 277 // Error !! no process manager 235 #ifdef G4VERBOSE 278 #ifdef G4VERBOSE 236 if (verboseLevel > 0) { << 279 if(verboseLevel > 0) >> 280 { 237 G4cout << "G4PhysicsListHelper::AddTra 281 G4cout << "G4PhysicsListHelper::AddTransportation " 238 << " : No Process Manager for " << 282 << " : No Process Manager for " << particle->GetParticleName() >> 283 << G4endl; 239 } 284 } 240 #endif 285 #endif 241 G4Exception("G4PhysicsListHelper::AddTra << 286 G4Exception("G4PhysicsListHelper::AddTransportation", "Run0104", 242 "No process manager"); << 287 FatalException, "No process manager"); 243 continue; 288 continue; 244 } 289 } 245 // Molecule use different type transportat 290 // Molecule use different type transportation 246 if (particle->GetParticleType() == "Molecu << 291 if(particle->GetParticleType() == "Molecule") >> 292 continue; 247 293 248 // add transportation with ordering = ( -1 294 // add transportation with ordering = ( -1, "first", "first" ) 249 pmanager->AddProcess(theTransportationProc 295 pmanager->AddProcess(theTransportationProcess); 250 pmanager->SetProcessOrderingToFirst(theTra 296 pmanager->SetProcessOrderingToFirst(theTransportationProcess, idxAlongStep); 251 pmanager->SetProcessOrderingToFirst(theTra 297 pmanager->SetProcessOrderingToFirst(theTransportationProcess, idxPostStep); 252 } 298 } 253 } 299 } 254 300 255 // ------------------------------------------- << 301 //////////////////////////////////////////////////////// >> 302 #include "G4ProcessManager.hh" >> 303 256 void G4PhysicsListHelper::ReadOrdingParameterT 304 void G4PhysicsListHelper::ReadOrdingParameterTable() 257 { 305 { >> 306 G4bool readInFile = false; 258 std::ifstream fIn; 307 std::ifstream fIn; 259 308 >> 309 if(std::getenv("G4ORDPARAMTABLE")) >> 310 { >> 311 ordParamFileName = std::getenv("G4ORDPARAMTABLE"); >> 312 #ifdef G4VERBOSE >> 313 if(verboseLevel > 1) >> 314 { >> 315 G4cout << "G4PhysicsListHelper::ReadOrdingParameterTable :" >> 316 << ordParamFileName << " is assigned to Ordering Parameter Table " >> 317 << G4endl; >> 318 } >> 319 #endif >> 320 // open input file // >> 321 fIn.open(ordParamFileName, std::ios::in); >> 322 // check if the file has been opened successfully >> 323 if(!fIn) >> 324 { >> 325 #ifdef G4VERBOSE >> 326 if(verboseLevel > 0) >> 327 { >> 328 G4cout << "G4PhysicsListHelper::ReadOrdingParameterTable " >> 329 << " Can not open file " << ordParamFileName << G4endl; >> 330 } >> 331 #endif >> 332 G4Exception("G4PhysicsListHelper::ReadOrdingParameterTable", "Run0105", >> 333 JustWarning, "Fail to open ordering parameter table "); >> 334 } >> 335 else >> 336 { >> 337 readInFile = true; >> 338 } >> 339 } >> 340 260 // create OrdParamTable 341 // create OrdParamTable 261 if (theTable != nullptr) { << 342 if(theTable != 0) >> 343 { 262 theTable->clear(); 344 theTable->clear(); 263 delete theTable; 345 delete theTable; 264 theTable = nullptr; << 346 theTable = 0; 265 sizeOfTable = 0; 347 sizeOfTable = 0; 266 } 348 } 267 theTable = new G4OrdParamTable(); << 349 theTable = new G4OrdParamTable(); 268 sizeOfTable = 0; 350 sizeOfTable = 0; 269 351 270 ReadInDefaultOrderingParameter(); << 352 if(readInFile) >> 353 { >> 354 // read in the file and fill the table >> 355 while(!fIn.eof()) >> 356 { >> 357 G4PhysicsListOrderingParameter tmp; >> 358 G4int flag; >> 359 fIn >> tmp.processTypeName >> tmp.processType >> tmp.processSubType >> >> 360 tmp.ordering[0] >> tmp.ordering[1] >> tmp.ordering[2] >> flag; >> 361 tmp.isDuplicable = (flag != 0); >> 362 theTable->push_back(tmp); >> 363 sizeOfTable += 1; >> 364 } >> 365 fIn.close(); >> 366 } >> 367 else >> 368 { >> 369 ReadInDefaultOrderingParameter(); >> 370 } 271 371 272 if (sizeOfTable == 0) { << 372 if(sizeOfTable == 0) >> 373 { 273 #ifdef G4VERBOSE 374 #ifdef G4VERBOSE 274 if (verboseLevel > 0) { << 375 if(verboseLevel > 0) >> 376 { 275 G4cout << "G4PhysicsListHelper::ReadOrdi 377 G4cout << "G4PhysicsListHelper::ReadOrdingParameterTable " 276 << " Empty file " << ordParamFile 378 << " Empty file " << ordParamFileName << G4endl; 277 } 379 } 278 #endif 380 #endif 279 G4Exception("G4PhysicsListHelper::ReadOrdi << 381 G4Exception("G4PhysicsListHelper::ReadOrdingParameterTable", "Run0106", 280 "The ordering parameter table << 382 JustWarning, "The ordering parameter table is empty "); 281 delete theTable; 383 delete theTable; 282 theTable = nullptr; << 384 theTable = 0; 283 } 385 } 284 return; 386 return; 285 } 387 } 286 388 287 // ------------------------------------------- << 389 //////////////////////////////////////////////////////// 288 void G4PhysicsListHelper::DumpOrdingParameterT 390 void G4PhysicsListHelper::DumpOrdingParameterTable(G4int subType) const 289 { 391 { 290 if (theTable == nullptr) { << 392 if(theTable == 0) >> 393 { 291 #ifdef G4VERBOSE 394 #ifdef G4VERBOSE 292 if (verboseLevel > 0) { << 395 if(verboseLevel > 0) >> 396 { 293 G4cout << "G4PhysicsListHelper::DumpOrdi 397 G4cout << "G4PhysicsListHelper::DumpOrdingParameterTable " 294 << " No ordering parameter table << 398 << " No ordering parameter table : " << ordParamFileName >> 399 << G4endl; 295 } 400 } 296 #endif 401 #endif 297 return; 402 return; 298 } 403 } 299 G4cout << "G4PhysicsListHelper::DumpOrdingPa << 404 G4cout << "G4PhysicsListHelper::DumpOrdingParameterTable : " >> 405 << ordParamFileName << G4endl; 300 G4cout << " TypeName " 406 G4cout << " TypeName " 301 << " ProcessType" 407 << " ProcessType" 302 << " SubType" 408 << " SubType" 303 << " AtRest" 409 << " AtRest" 304 << " AlongStep" 410 << " AlongStep" 305 << " PostStep" 411 << " PostStep" 306 << " Duplicable" << G4endl; 412 << " Duplicable" << G4endl; 307 for (G4int i = 0; i < sizeOfTable; ++i) { << 413 for(G4int i = 0; i < sizeOfTable; ++i) >> 414 { 308 G4PhysicsListOrderingParameter* tmp = &(th 415 G4PhysicsListOrderingParameter* tmp = &(theTable->at(i)); 309 if ((subType >= 0) && (subType != tmp->pro << 416 if((subType >= 0) && (subType != tmp->processSubType)) 310 G4cout << std::setw(18) << tmp->processTyp << 417 continue; 311 << std::setw(15) << tmp->processSub << 418 G4cout << std::setw(18) << tmp->processTypeName << std::setw(15) 312 << std::setw(15) << tmp->ordering[1 << 419 << tmp->processType << std::setw(15) << tmp->processSubType 313 if (tmp->isDuplicable) { << 420 << std::setw(15) << tmp->ordering[0] << std::setw(15) >> 421 << tmp->ordering[1] << std::setw(15) << tmp->ordering[2]; >> 422 if(tmp->isDuplicable) >> 423 { 314 G4cout << " true"; 424 G4cout << " true"; 315 } 425 } 316 else { << 426 else >> 427 { 317 G4cout << " false"; 428 G4cout << " false"; 318 } 429 } 319 G4cout << G4endl; 430 G4cout << G4endl; 320 } 431 } 321 } 432 } 322 433 323 // ------------------------------------------- << 434 //////////////////////////////////////////////////////// 324 G4PhysicsListOrderingParameter G4PhysicsListHe << 435 G4PhysicsListOrderingParameter G4PhysicsListHelper::GetOrdingParameter( >> 436 G4int subType) const 325 { 437 { 326 G4PhysicsListOrderingParameter value; 438 G4PhysicsListOrderingParameter value; 327 439 328 if (theTable == nullptr) { << 440 if(theTable == 0) >> 441 { 329 #ifdef G4VERBOSE 442 #ifdef G4VERBOSE 330 if (verboseLevel > 0) { << 443 if(verboseLevel > 0) >> 444 { 331 G4cout << "G4PhysicsListHelper::GetOrder 445 G4cout << "G4PhysicsListHelper::GetOrderingParameter : " 332 << " No ordering parameter table << 446 << " No ordering parameter table : " << ordParamFileName >> 447 << G4endl; 333 } 448 } 334 #endif 449 #endif 335 return value; 450 return value; 336 } 451 } 337 452 338 for (G4int i = 0; i < sizeOfTable; ++i) { << 453 for(G4int i = 0; i < sizeOfTable; ++i) >> 454 { 339 G4PhysicsListOrderingParameter* tmp = &(th 455 G4PhysicsListOrderingParameter* tmp = &(theTable->at(i)); 340 if (subType == tmp->processSubType) { << 456 if(subType == tmp->processSubType) >> 457 { 341 value.processTypeName = tmp->processType 458 value.processTypeName = tmp->processTypeName; 342 value.processType = tmp->processType; << 459 value.processType = tmp->processType; 343 value.processSubType = tmp->processSubTy << 460 value.processSubType = tmp->processSubType; 344 value.ordering[0] = tmp->ordering[0]; << 461 value.ordering[0] = tmp->ordering[0]; 345 value.ordering[1] = tmp->ordering[1]; << 462 value.ordering[1] = tmp->ordering[1]; 346 value.ordering[2] = tmp->ordering[2]; << 463 value.ordering[2] = tmp->ordering[2]; 347 value.isDuplicable = tmp->isDuplicable; << 464 value.isDuplicable = tmp->isDuplicable; 348 } 465 } 349 } 466 } 350 return value; 467 return value; 351 } 468 } 352 469 353 // ------------------------------------------- << 470 //////////////////////////////////////////////////////// 354 G4bool G4PhysicsListHelper::RegisterProcess(G4 << 471 G4bool G4PhysicsListHelper::RegisterProcess(G4VProcess* process, >> 472 G4ParticleDefinition* particle) 355 { 473 { 356 if (theTable == nullptr) { << 474 if(theTable == 0) >> 475 { 357 #ifdef G4VERBOSE 476 #ifdef G4VERBOSE 358 if (verboseLevel > 0) { << 477 if(verboseLevel > 0) >> 478 { 359 G4cout << "G4PhysicsListHelper::Register 479 G4cout << "G4PhysicsListHelper::RegisterProcess :" 360 << " No ordering parameter table << 480 << " No ordering parameter table : " << ordParamFileName >> 481 << G4endl; 361 } 482 } 362 #endif 483 #endif 363 G4Exception("G4PhysicsListHelper::Register << 484 G4Exception("G4PhysicsListHelper::RegisterProcess", "Run0107", 364 "No Ordering Parameter Table") << 485 FatalException, "No Ordering Parameter Table"); 365 return false; 486 return false; 366 } 487 } 367 488 368 const G4String pName = process->GetProcessNa 489 const G4String pName = process->GetProcessName(); 369 const G4int pType = process->GetProcessType( << 490 const G4int pType = process->GetProcessType(); 370 const G4int pSubType = process->GetProcessSu 491 const G4int pSubType = process->GetProcessSubType(); 371 492 372 #ifdef G4VERBOSE 493 #ifdef G4VERBOSE 373 if (verboseLevel > 2) { << 494 if(verboseLevel > 2) 374 G4cout << "G4PhysicsListHelper::RegisterPr << 495 { 375 << " SubType = " << pSubType << " t << 496 G4cout << "G4PhysicsListHelper::RegisterProcess :" << pName >> 497 << " Process Type = " << pType << " SubType = " << pSubType << " to " >> 498 << particle->GetParticleName() << G4endl; 376 } 499 } 377 #endif 500 #endif 378 501 379 // Check Process Type/SubType 502 // Check Process Type/SubType 380 if ((pType < 1) || (pSubType < 1)) { << 503 if((pType < 1) || (pSubType < 1)) >> 504 { 381 #ifdef G4VERBOSE 505 #ifdef G4VERBOSE 382 if (verboseLevel > 0) { << 506 if(verboseLevel > 0) >> 507 { 383 G4cout << "G4PhysicsListHelper::Register 508 G4cout << "G4PhysicsListHelper::RegisterProcess :" << pName << " for " 384 << particle->GetParticleName() << << 509 << particle->GetParticleName() >> 510 << " has illegal Process Type = " << pType 385 << " SubType = " << pSubType << G 511 << " SubType = " << pSubType << G4endl; 386 } 512 } 387 #endif 513 #endif 388 G4Exception("G4PhysicsListHelper::Register << 514 G4Exception("G4PhysicsListHelper::RegisterProcess", "Run0108", 389 "No Matching process Type/SubT << 515 FatalException, "No Matching process Type/SubType"); 390 return false; 516 return false; 391 } 517 } 392 518 393 G4bool isFound = false; 519 G4bool isFound = false; 394 G4int ord[3]; 520 G4int ord[3]; 395 G4bool duplicable = false; 521 G4bool duplicable = false; 396 for (G4int i = 0; i < sizeOfTable; ++i) { << 522 for(G4int i = 0; i < sizeOfTable; ++i) >> 523 { 397 G4PhysicsListOrderingParameter* tmp = &(th 524 G4PhysicsListOrderingParameter* tmp = &(theTable->at(i)); 398 if ((tmp->processType == pType) && (tmp->p << 525 if((tmp->processType == pType) && (tmp->processSubType == pSubType)) 399 ord[0] = tmp->ordering[0]; << 526 { 400 ord[1] = tmp->ordering[1]; << 527 ord[0] = tmp->ordering[0]; 401 ord[2] = tmp->ordering[2]; << 528 ord[1] = tmp->ordering[1]; >> 529 ord[2] = tmp->ordering[2]; 402 duplicable = tmp->isDuplicable; 530 duplicable = tmp->isDuplicable; 403 isFound = true; << 531 isFound = true; 404 break; 532 break; 405 } 533 } 406 } 534 } 407 if (!isFound) { << 535 if(!isFound) >> 536 { 408 #ifdef G4VERBOSE 537 #ifdef G4VERBOSE 409 if (verboseLevel > 0) { << 538 if(verboseLevel > 0) >> 539 { 410 G4cout << "G4PhysicsListHelper::Register 540 G4cout << "G4PhysicsListHelper::RegisterProcess :" << pName << " for " 411 << particle->GetParticleName() << << 541 << particle->GetParticleName() << " with type/subtype =" << pType >> 542 << "/" << pSubType 412 << " is not registered in Ording 543 << " is not registered in OrdingParameterTable " << G4endl; 413 } 544 } 414 #endif 545 #endif 415 G4Exception("G4PhysicsListHelper::Register << 546 G4Exception("G4PhysicsListHelper::RegisterProcess", "Run0109", 416 "No Matching process Type/SubT << 547 FatalException, "No Matching process Type/SubType"); 417 return false; 548 return false; 418 } 549 } 419 550 420 // Check Process Manager 551 // Check Process Manager 421 G4ProcessManager* pManager = particle->GetPr 552 G4ProcessManager* pManager = particle->GetProcessManager(); 422 if (pManager == nullptr) { << 553 if(pManager == 0) >> 554 { 423 // Error !! no process manager 555 // Error !! no process manager 424 #ifdef G4VERBOSE 556 #ifdef G4VERBOSE 425 if (verboseLevel > 0) { << 557 if(verboseLevel > 0) >> 558 { 426 G4cout << "G4PhysicsListHelper::Register 559 G4cout << "G4PhysicsListHelper::RegisterProcess " 427 << " : No Process Manager for " < << 560 << " : No Process Manager for " << particle->GetParticleName() >> 561 << G4endl; 428 } 562 } 429 #endif 563 #endif 430 G4Exception("G4PhysicsListHelper::Register << 564 G4Exception("G4PhysicsListHelper::RegisterProcess ", "Riun0110", 431 "No process manager"); << 565 FatalException, "No process manager"); 432 return false; 566 return false; 433 } 567 } 434 568 435 // Check Duplication 569 // Check Duplication 436 if (!duplicable) { << 570 if(!duplicable) 437 G4bool duplicated = false; << 571 { >> 572 G4bool duplicated = false; 438 G4ProcessVector* pList = pManager->GetProc 573 G4ProcessVector* pList = pManager->GetProcessList(); 439 for (G4int idx = 0; idx < (G4int)pList->si << 574 for(std::size_t idx = 0; idx < pList->size(); ++idx) >> 575 { 440 const G4VProcess* p = (*pList)[idx]; 576 const G4VProcess* p = (*pList)[idx]; 441 if ((p->GetProcessType() == pType) && (p << 577 if((p->GetProcessType() == pType) && (p->GetProcessSubType() == pSubType)) >> 578 { 442 duplicated = true; 579 duplicated = true; 443 #ifdef G4VERBOSE 580 #ifdef G4VERBOSE 444 if (verboseLevel > 0) { << 581 if(verboseLevel > 0) >> 582 { 445 G4cout << "G4PhysicsListHelper::Regi 583 G4cout << "G4PhysicsListHelper::RegisterProcess :" << pName << " for " 446 << particle->GetParticleName( << 584 << particle->GetParticleName() 447 << pSubType << " is has same << 585 << " with type/subtype =" << pType << "/" << pSubType 448 << particle->GetParticleName( << 586 << " is has same subType as " << p->GetProcessName() >> 587 << " for " << particle->GetParticleName() << G4endl; 449 G4cout << "It will not be added !!" 588 G4cout << "It will not be added !!" << G4endl; 450 } 589 } 451 #endif 590 #endif 452 G4Exception("G4PhysicsListHelper::Regi << 591 G4Exception("G4PhysicsListHelper::RegisterProcess", "Run0111", 453 "Duplication of processes" << 592 JustWarning, "Duplication of processes"); 454 } 593 } 455 } 594 } 456 if (duplicated) return false; << 595 if(duplicated) >> 596 return false; 457 } 597 } 458 598 459 // Add Process 599 // Add Process 460 G4int code = pManager->AddProcess(process); 600 G4int code = pManager->AddProcess(process); 461 if (code < 0) return false; << 601 if(code < 0) >> 602 return false; 462 603 463 // Set Ordering Parameter 604 // Set Ordering Parameter 464 for (G4int idx = 0; idx < 3; ++idx) { << 605 for(G4int idx = 0; idx < 3; ++idx) 465 auto idxOrd = static_cast<G4ProcessVectorD << 606 { 466 if (ord[idx] < 0) { << 607 G4ProcessVectorDoItIndex idxOrd = >> 608 static_cast<G4ProcessVectorDoItIndex>(idx); >> 609 if(ord[idx] < 0) >> 610 { 467 // Do Nothing because NO DOIT 611 // Do Nothing because NO DOIT 468 } 612 } 469 else if (ord[idx] == 0) { << 613 else if(ord[idx] == 0) >> 614 { 470 pManager->SetProcessOrderingToFirst(proc 615 pManager->SetProcessOrderingToFirst(process, idxOrd); 471 } 616 } 472 else if (ord[idx] < 9999) { << 617 else if(ord[idx] < 9999) >> 618 { 473 pManager->SetProcessOrdering(process, id 619 pManager->SetProcessOrdering(process, idxOrd, ord[idx]); 474 } 620 } 475 else { << 621 else >> 622 { 476 pManager->SetProcessOrderingToLast(proce 623 pManager->SetProcessOrderingToLast(process, idxOrd); 477 } 624 } 478 } 625 } 479 #ifdef G4VERBOSE 626 #ifdef G4VERBOSE 480 if (verboseLevel > 1) { << 627 if(verboseLevel > 1) >> 628 { 481 G4cout << "G4PhysicsListHelper::RegisterPr 629 G4cout << "G4PhysicsListHelper::RegisterProcess :" << pName << " for " 482 << particle->GetParticleName() << " << 630 << particle->GetParticleName() << " with type/subtype =" << pType 483 << " is successfully registered wit << 631 << "/" << pSubType 484 << ":" << ord[2] << G4endl; << 632 << " is successfully registered with ordering parameters " << ord[0] >> 633 << ":" << ord[1] << ":" << ord[2] << G4endl; 485 } 634 } 486 #endif 635 #endif 487 return true; 636 return true; 488 } 637 } 489 638 490 // ------------------------------------------- << 491 void G4PhysicsListHelper::ReadInDefaultOrderin 639 void G4PhysicsListHelper::ReadInDefaultOrderingParameter() 492 { 640 { 493 G4PhysicsListOrderingParameter tmp; 641 G4PhysicsListOrderingParameter tmp; 494 642 495 // NOTE: please use enum values, rather than << 496 // for both the processType and proces << 497 << 498 tmp.processTypeName = "Transportation"; 643 tmp.processTypeName = "Transportation"; 499 tmp.processType = fTransportation; << 644 tmp.processType = 1; 500 tmp.processSubType = TRANSPORTATION; << 645 tmp.processSubType = 91; 501 tmp.ordering[0] = -1; << 646 tmp.ordering[0] = -1; 502 tmp.ordering[1] = 0; << 647 tmp.ordering[1] = 0; 503 tmp.ordering[2] = 0; << 648 tmp.ordering[2] = 0; 504 tmp.isDuplicable = false; << 649 tmp.isDuplicable = false; 505 theTable->push_back(tmp); 650 theTable->push_back(tmp); 506 sizeOfTable += 1; 651 sizeOfTable += 1; 507 652 508 tmp.processTypeName = "CoupleTrans"; 653 tmp.processTypeName = "CoupleTrans"; 509 tmp.processType = fTransportation; << 654 tmp.processType = 1; 510 tmp.processSubType = COUPLED_TRANSPORTATION; << 655 tmp.processSubType = 92; 511 tmp.ordering[0] = -1; << 656 tmp.ordering[0] = -1; 512 tmp.ordering[1] = 0; << 657 tmp.ordering[1] = 0; 513 tmp.ordering[2] = 0; << 658 tmp.ordering[2] = 0; 514 tmp.isDuplicable = false; << 659 tmp.isDuplicable = false; 515 theTable->push_back(tmp); 660 theTable->push_back(tmp); 516 sizeOfTable += 1; 661 sizeOfTable += 1; 517 662 518 tmp.processTypeName = "CoulombScat"; 663 tmp.processTypeName = "CoulombScat"; 519 tmp.processType = fElectromagnetic; << 664 tmp.processType = 2; 520 tmp.processSubType = fCoulombScattering; << 665 tmp.processSubType = 1; 521 tmp.ordering[0] = -1; << 666 tmp.ordering[0] = -1; 522 tmp.ordering[1] = -1; << 667 tmp.ordering[1] = -1; 523 tmp.ordering[2] = 1000; << 668 tmp.ordering[2] = 1000; 524 tmp.isDuplicable = false; << 669 tmp.isDuplicable = false; 525 theTable->push_back(tmp); 670 theTable->push_back(tmp); 526 sizeOfTable += 1; 671 sizeOfTable += 1; 527 672 528 tmp.processTypeName = "Ionisation"; 673 tmp.processTypeName = "Ionisation"; 529 tmp.processType = fElectromagnetic; << 674 tmp.processType = 2; 530 tmp.processSubType = fIonisation; << 675 tmp.processSubType = 2; 531 tmp.ordering[0] = -1; << 676 tmp.ordering[0] = -1; 532 tmp.ordering[1] = 2; << 677 tmp.ordering[1] = 2; 533 tmp.ordering[2] = 2; << 678 tmp.ordering[2] = 2; 534 tmp.isDuplicable = false; << 679 tmp.isDuplicable = false; 535 theTable->push_back(tmp); 680 theTable->push_back(tmp); 536 sizeOfTable += 1; 681 sizeOfTable += 1; 537 682 538 tmp.processTypeName = "Brems"; 683 tmp.processTypeName = "Brems"; 539 tmp.processType = fElectromagnetic; << 684 tmp.processType = 2; 540 tmp.processSubType = fBremsstrahlung; << 685 tmp.processSubType = 3; 541 tmp.ordering[0] = -1; << 686 tmp.ordering[0] = -1; 542 tmp.ordering[1] = -1; << 687 tmp.ordering[1] = -1; 543 tmp.ordering[2] = 3; << 688 tmp.ordering[2] = 3; 544 tmp.isDuplicable = false; << 689 tmp.isDuplicable = false; 545 theTable->push_back(tmp); 690 theTable->push_back(tmp); 546 sizeOfTable += 1; 691 sizeOfTable += 1; 547 692 548 tmp.processTypeName = "PairProdCharged"; 693 tmp.processTypeName = "PairProdCharged"; 549 tmp.processType = fElectromagnetic; << 694 tmp.processType = 2; 550 tmp.processSubType = fPairProdByCharged; << 695 tmp.processSubType = 4; 551 tmp.ordering[0] = -1; << 696 tmp.ordering[0] = -1; 552 tmp.ordering[1] = -1; << 697 tmp.ordering[1] = -1; 553 tmp.ordering[2] = 4; << 698 tmp.ordering[2] = 4; 554 tmp.isDuplicable = false; << 699 tmp.isDuplicable = false; 555 theTable->push_back(tmp); 700 theTable->push_back(tmp); 556 sizeOfTable += 1; 701 sizeOfTable += 1; 557 702 558 tmp.processTypeName = "Annih"; 703 tmp.processTypeName = "Annih"; 559 tmp.processType = fElectromagnetic; << 704 tmp.processType = 2; 560 tmp.processSubType = fAnnihilation; << 705 tmp.processSubType = 5; 561 tmp.ordering[0] = 5; << 706 tmp.ordering[0] = 5; 562 tmp.ordering[1] = -1; << 707 tmp.ordering[1] = -1; 563 tmp.ordering[2] = 5; << 708 tmp.ordering[2] = 5; 564 tmp.isDuplicable = false; << 709 tmp.isDuplicable = false; 565 theTable->push_back(tmp); 710 theTable->push_back(tmp); 566 sizeOfTable += 1; 711 sizeOfTable += 1; 567 712 568 tmp.processTypeName = "AnnihToMuMu"; 713 tmp.processTypeName = "AnnihToMuMu"; 569 tmp.processType = fElectromagnetic; << 714 tmp.processType = 2; 570 tmp.processSubType = fAnnihilationToMuMu; << 715 tmp.processSubType = 6; 571 tmp.ordering[0] = -1; << 716 tmp.ordering[0] = -1; 572 tmp.ordering[1] = -1; << 717 tmp.ordering[1] = -1; 573 tmp.ordering[2] = 6; << 718 tmp.ordering[2] = 6; 574 tmp.isDuplicable = false; << 719 tmp.isDuplicable = false; 575 theTable->push_back(tmp); << 576 sizeOfTable += 1; << 577 << 578 tmp.processTypeName = "AnnihToTauTau"; << 579 tmp.processType = fElectromagnetic; << 580 tmp.processSubType = fAnnihilationToTauTau; << 581 tmp.ordering[0] = -1; << 582 tmp.ordering[1] = -1; << 583 tmp.ordering[2] = 7; << 584 tmp.isDuplicable = false; << 585 theTable->push_back(tmp); 720 theTable->push_back(tmp); 586 sizeOfTable += 1; 721 sizeOfTable += 1; 587 722 588 tmp.processTypeName = "AnnihToHad"; 723 tmp.processTypeName = "AnnihToHad"; 589 tmp.processType = fElectromagnetic; << 724 tmp.processType = 2; 590 tmp.processSubType = fAnnihilationToHadrons; << 725 tmp.processSubType = 7; 591 tmp.ordering[0] = -1; << 726 tmp.ordering[0] = -1; 592 tmp.ordering[1] = -1; << 727 tmp.ordering[1] = -1; 593 tmp.ordering[2] = 8; << 728 tmp.ordering[2] = 7; 594 tmp.isDuplicable = false; << 729 tmp.isDuplicable = false; 595 theTable->push_back(tmp); 730 theTable->push_back(tmp); 596 sizeOfTable += 1; 731 sizeOfTable += 1; 597 732 598 tmp.processTypeName = "NuclearStopping"; << 733 tmp.processTypeName = "NuclearStopp"; 599 tmp.processType = fElectromagnetic; << 734 tmp.processType = 2; 600 tmp.processSubType = fNuclearStopping; << 735 tmp.processSubType = 8; 601 tmp.ordering[0] = -1; << 736 tmp.ordering[0] = -1; 602 tmp.ordering[1] = 9; << 737 tmp.ordering[1] = 8; 603 tmp.ordering[2] = -1; << 738 tmp.ordering[2] = -1; 604 tmp.isDuplicable = false; << 739 tmp.isDuplicable = false; 605 theTable->push_back(tmp); 740 theTable->push_back(tmp); 606 sizeOfTable += 1; 741 sizeOfTable += 1; 607 742 608 tmp.processTypeName = "ElectronGeneral"; << 743 tmp.processTypeName = "ElectronSuper"; 609 tmp.processType = fElectromagnetic; << 744 tmp.processType = 2; 610 tmp.processSubType = fElectronGeneralProcess << 745 tmp.processSubType = 9; 611 tmp.ordering[0] = -1; << 746 tmp.ordering[0] = -1; 612 tmp.ordering[1] = 1; << 747 tmp.ordering[1] = 1; 613 tmp.ordering[2] = 1; << 748 tmp.ordering[2] = 1; 614 tmp.isDuplicable = false; << 749 tmp.isDuplicable = false; 615 theTable->push_back(tmp); 750 theTable->push_back(tmp); 616 sizeOfTable += 1; 751 sizeOfTable += 1; 617 752 618 tmp.processTypeName = "Msc"; 753 tmp.processTypeName = "Msc"; 619 tmp.processType = fElectromagnetic; << 754 tmp.processType = 2; 620 tmp.processSubType = fMultipleScattering; << 755 tmp.processSubType = 10; 621 tmp.ordering[0] = -1; << 756 tmp.ordering[0] = -1; 622 tmp.ordering[1] = 1; << 757 tmp.ordering[1] = 1; 623 tmp.ordering[2] = -1; << 758 tmp.ordering[2] = -1; 624 tmp.isDuplicable = false; << 759 tmp.isDuplicable = false; 625 theTable->push_back(tmp); 760 theTable->push_back(tmp); 626 sizeOfTable += 1; 761 sizeOfTable += 1; 627 762 628 tmp.processTypeName = "Rayleigh"; 763 tmp.processTypeName = "Rayleigh"; 629 tmp.processType = fElectromagnetic; << 764 tmp.processType = 2; 630 tmp.processSubType = fRayleigh; << 765 tmp.processSubType = 11; 631 tmp.ordering[0] = -1; << 766 tmp.ordering[0] = -1; 632 tmp.ordering[1] = -1; << 767 tmp.ordering[1] = -1; 633 tmp.ordering[2] = 1000; << 768 tmp.ordering[2] = 1000; 634 tmp.isDuplicable = false; << 769 tmp.isDuplicable = false; 635 theTable->push_back(tmp); 770 theTable->push_back(tmp); 636 sizeOfTable += 1; 771 sizeOfTable += 1; 637 772 638 tmp.processTypeName = "PhotoElectric"; 773 tmp.processTypeName = "PhotoElectric"; 639 tmp.processType = fElectromagnetic; << 774 tmp.processType = 2; 640 tmp.processSubType = fPhotoElectricEffect; << 775 tmp.processSubType = 12; 641 tmp.ordering[0] = -1; << 776 tmp.ordering[0] = -1; 642 tmp.ordering[1] = -1; << 777 tmp.ordering[1] = -1; 643 tmp.ordering[2] = 1000; << 778 tmp.ordering[2] = 1000; 644 tmp.isDuplicable = false; << 779 tmp.isDuplicable = false; 645 theTable->push_back(tmp); 780 theTable->push_back(tmp); 646 sizeOfTable += 1; 781 sizeOfTable += 1; 647 782 648 tmp.processTypeName = "Compton"; 783 tmp.processTypeName = "Compton"; 649 tmp.processType = fElectromagnetic; << 784 tmp.processType = 2; 650 tmp.processSubType = fComptonScattering; << 785 tmp.processSubType = 13; 651 tmp.ordering[0] = -1; << 786 tmp.ordering[0] = -1; 652 tmp.ordering[1] = -1; << 787 tmp.ordering[1] = -1; 653 tmp.ordering[2] = 1000; << 788 tmp.ordering[2] = 1000; 654 tmp.isDuplicable = false; << 789 tmp.isDuplicable = false; 655 theTable->push_back(tmp); 790 theTable->push_back(tmp); 656 sizeOfTable += 1; 791 sizeOfTable += 1; 657 792 658 tmp.processTypeName = "Conv"; 793 tmp.processTypeName = "Conv"; 659 tmp.processType = fElectromagnetic; << 794 tmp.processType = 2; 660 tmp.processSubType = fGammaConversion; << 795 tmp.processSubType = 14; 661 tmp.ordering[0] = -1; << 796 tmp.ordering[0] = -1; 662 tmp.ordering[1] = -1; << 797 tmp.ordering[1] = -1; 663 tmp.ordering[2] = 1000; << 798 tmp.ordering[2] = 1000; 664 tmp.isDuplicable = false; << 799 tmp.isDuplicable = false; 665 theTable->push_back(tmp); 800 theTable->push_back(tmp); 666 sizeOfTable += 1; 801 sizeOfTable += 1; 667 802 668 tmp.processTypeName = "ConvToMuMu"; 803 tmp.processTypeName = "ConvToMuMu"; 669 tmp.processType = fElectromagnetic; << 804 tmp.processType = 2; 670 tmp.processSubType = fGammaConversionToMuMu; << 805 tmp.processSubType = 15; 671 tmp.ordering[0] = -1; << 806 tmp.ordering[0] = -1; 672 tmp.ordering[1] = -1; << 807 tmp.ordering[1] = -1; 673 tmp.ordering[2] = 1000; << 808 tmp.ordering[2] = 1000; 674 tmp.isDuplicable = false; << 809 tmp.isDuplicable = false; 675 theTable->push_back(tmp); << 676 sizeOfTable += 1; << 677 << 678 tmp.processTypeName = "GammaGeneral"; << 679 tmp.processType = fElectromagnetic; << 680 tmp.processSubType = fGammaGeneralProcess; << 681 tmp.ordering[0] = -1; << 682 tmp.ordering[1] = -1; << 683 tmp.ordering[2] = 1000; << 684 tmp.isDuplicable = false; << 685 theTable->push_back(tmp); << 686 sizeOfTable += 1; << 687 << 688 tmp.processTypeName = "XrayReflection"; << 689 tmp.processType = fElectromagnetic; << 690 tmp.processSubType = fGammaReflection; << 691 tmp.ordering[0] = -1; << 692 tmp.ordering[1] = -1; << 693 tmp.ordering[2] = 1000; << 694 tmp.isDuplicable = false; << 695 theTable->push_back(tmp); 810 theTable->push_back(tmp); 696 sizeOfTable += 1; 811 sizeOfTable += 1; 697 812 698 tmp.processTypeName = "PositronGeneral"; << 813 tmp.processTypeName = "GammaSuper"; 699 tmp.processType = fElectromagnetic; << 814 tmp.processType = 2; 700 tmp.processSubType = fPositronGeneralProcess << 815 tmp.processSubType = 16; 701 tmp.ordering[0] = 1; << 816 tmp.ordering[0] = -1; 702 tmp.ordering[1] = 1; << 817 tmp.ordering[1] = -1; 703 tmp.ordering[2] = 1; << 818 tmp.ordering[2] = 1000; 704 tmp.isDuplicable = false; << 819 tmp.isDuplicable = false; 705 theTable->push_back(tmp); 820 theTable->push_back(tmp); 706 sizeOfTable += 1; 821 sizeOfTable += 1; 707 822 708 tmp.processTypeName = "MuPairByMuon"; << 823 tmp.processTypeName = "PositronSuper"; 709 tmp.processType = fElectromagnetic; << 824 tmp.processType = 2; 710 tmp.processSubType = fMuonPairProdByCharged; << 825 tmp.processSubType = 17; 711 tmp.ordering[0] = -1; << 826 tmp.ordering[0] = 1; 712 tmp.ordering[1] = -1; << 827 tmp.ordering[1] = 1; 713 tmp.ordering[2] = 10; << 828 tmp.ordering[2] = 1; 714 tmp.isDuplicable = false; << 829 tmp.isDuplicable = false; 715 theTable->push_back(tmp); 830 theTable->push_back(tmp); 716 sizeOfTable += 1; 831 sizeOfTable += 1; 717 832 718 tmp.processTypeName = "Cerenkov"; 833 tmp.processTypeName = "Cerenkov"; 719 tmp.processType = fElectromagnetic; << 834 tmp.processType = 2; 720 tmp.processSubType = fCerenkov; << 835 tmp.processSubType = 21; 721 tmp.ordering[0] = -1; << 836 tmp.ordering[0] = -1; 722 tmp.ordering[1] = -1; << 837 tmp.ordering[1] = -1; 723 tmp.ordering[2] = 1000; << 838 tmp.ordering[2] = 1000; 724 tmp.isDuplicable = false; << 839 tmp.isDuplicable = false; 725 theTable->push_back(tmp); 840 theTable->push_back(tmp); 726 sizeOfTable += 1; 841 sizeOfTable += 1; 727 842 728 tmp.processTypeName = "Scintillation"; 843 tmp.processTypeName = "Scintillation"; 729 tmp.processType = fElectromagnetic; << 844 tmp.processType = 2; 730 tmp.processSubType = fScintillation; << 845 tmp.processSubType = 22; 731 tmp.ordering[0] = 9999; << 846 tmp.ordering[0] = 9999; 732 tmp.ordering[1] = -1; << 847 tmp.ordering[1] = -1; 733 tmp.ordering[2] = 9999; << 848 tmp.ordering[2] = 9999; 734 tmp.isDuplicable = false; << 849 tmp.isDuplicable = false; 735 theTable->push_back(tmp); 850 theTable->push_back(tmp); 736 sizeOfTable += 1; 851 sizeOfTable += 1; 737 852 738 tmp.processTypeName = "SynchRad"; 853 tmp.processTypeName = "SynchRad"; 739 tmp.processType = fElectromagnetic; << 854 tmp.processType = 2; 740 tmp.processSubType = fSynchrotronRadiation; << 855 tmp.processSubType = 23; 741 tmp.ordering[0] = -1; << 856 tmp.ordering[0] = -1; 742 tmp.ordering[1] = -1; << 857 tmp.ordering[1] = -1; 743 tmp.ordering[2] = 1000; << 858 tmp.ordering[2] = 1000; 744 tmp.isDuplicable = false; << 859 tmp.isDuplicable = false; 745 theTable->push_back(tmp); 860 theTable->push_back(tmp); 746 sizeOfTable += 1; 861 sizeOfTable += 1; 747 862 748 tmp.processTypeName = "TransRad"; 863 tmp.processTypeName = "TransRad"; 749 tmp.processType = fElectromagnetic; << 864 tmp.processType = 2; 750 tmp.processSubType = fTransitionRadiation; << 865 tmp.processSubType = 24; 751 tmp.ordering[0] = -1; << 866 tmp.ordering[0] = -1; 752 tmp.ordering[1] = -1; << 867 tmp.ordering[1] = -1; 753 tmp.ordering[2] = 1000; << 868 tmp.ordering[2] = 1000; 754 tmp.isDuplicable = false; << 869 tmp.isDuplicable = false; 755 theTable->push_back(tmp); 870 theTable->push_back(tmp); 756 sizeOfTable += 1; 871 sizeOfTable += 1; 757 872 758 tmp.processTypeName = "SurfaceRefl"; 873 tmp.processTypeName = "SurfaceRefl"; 759 tmp.processType = fElectromagnetic; << 874 tmp.processType = 2; 760 tmp.processSubType = fSurfaceReflection; << 875 tmp.processSubType = 25; 761 tmp.ordering[0] = -1; << 876 tmp.ordering[0] = -1; 762 tmp.ordering[1] = -1; << 877 tmp.ordering[1] = -1; 763 tmp.ordering[2] = 1000; << 878 tmp.ordering[2] = 1000; 764 tmp.isDuplicable = false; << 879 tmp.isDuplicable = false; 765 theTable->push_back(tmp); 880 theTable->push_back(tmp); 766 sizeOfTable += 1; 881 sizeOfTable += 1; 767 882 768 tmp.processTypeName = "OpAbsorb"; 883 tmp.processTypeName = "OpAbsorb"; 769 tmp.processType = fOptical; << 884 tmp.processType = 3; 770 tmp.processSubType = fOpAbsorption; << 885 tmp.processSubType = 31; 771 tmp.ordering[0] = -1; << 886 tmp.ordering[0] = -1; 772 tmp.ordering[1] = -1; << 887 tmp.ordering[1] = -1; 773 tmp.ordering[2] = 1000; << 888 tmp.ordering[2] = 1000; 774 tmp.isDuplicable = false; << 889 tmp.isDuplicable = false; 775 theTable->push_back(tmp); 890 theTable->push_back(tmp); 776 sizeOfTable += 1; 891 sizeOfTable += 1; 777 892 778 tmp.processTypeName = "OpBoundary"; 893 tmp.processTypeName = "OpBoundary"; 779 tmp.processType = fOptical; << 894 tmp.processType = 3; 780 tmp.processSubType = fOpBoundary; << 895 tmp.processSubType = 32; 781 tmp.ordering[0] = -1; << 896 tmp.ordering[0] = -1; 782 tmp.ordering[1] = -1; << 897 tmp.ordering[1] = -1; 783 tmp.ordering[2] = 1000; << 898 tmp.ordering[2] = 1000; 784 tmp.isDuplicable = false; << 899 tmp.isDuplicable = false; 785 theTable->push_back(tmp); 900 theTable->push_back(tmp); 786 sizeOfTable += 1; 901 sizeOfTable += 1; 787 902 788 tmp.processTypeName = "OpRayleigh"; 903 tmp.processTypeName = "OpRayleigh"; 789 tmp.processType = fOptical; << 904 tmp.processType = 3; 790 tmp.processSubType = fOpRayleigh; << 905 tmp.processSubType = 33; 791 tmp.ordering[0] = -1; << 906 tmp.ordering[0] = -1; 792 tmp.ordering[1] = -1; << 907 tmp.ordering[1] = -1; 793 tmp.ordering[2] = 1000; << 908 tmp.ordering[2] = 1000; 794 tmp.isDuplicable = false; << 909 tmp.isDuplicable = false; 795 theTable->push_back(tmp); 910 theTable->push_back(tmp); 796 sizeOfTable += 1; 911 sizeOfTable += 1; 797 912 798 tmp.processTypeName = "OpWLS"; 913 tmp.processTypeName = "OpWLS"; 799 tmp.processType = fOptical; << 914 tmp.processType = 3; 800 tmp.processSubType = fOpWLS; << 915 tmp.processSubType = 34; 801 tmp.ordering[0] = -1; << 916 tmp.ordering[0] = -1; 802 tmp.ordering[1] = -1; << 917 tmp.ordering[1] = -1; 803 tmp.ordering[2] = 1000; << 918 tmp.ordering[2] = 1000; 804 tmp.isDuplicable = false; << 919 tmp.isDuplicable = false; 805 theTable->push_back(tmp); 920 theTable->push_back(tmp); 806 sizeOfTable += 1; 921 sizeOfTable += 1; 807 922 808 tmp.processTypeName = "OpMieHG"; 923 tmp.processTypeName = "OpMieHG"; 809 tmp.processType = fOptical; << 924 tmp.processType = 3; 810 tmp.processSubType = fOpMieHG; << 925 tmp.processSubType = 35; 811 tmp.ordering[0] = -1; << 926 tmp.ordering[0] = -1; 812 tmp.ordering[1] = -1; << 927 tmp.ordering[1] = -1; 813 tmp.ordering[2] = 1000; << 928 tmp.ordering[2] = 1000; 814 tmp.isDuplicable = false; << 929 tmp.isDuplicable = false; 815 theTable->push_back(tmp); 930 theTable->push_back(tmp); 816 sizeOfTable += 1; 931 sizeOfTable += 1; 817 932 818 tmp.processTypeName = "OpWLS2"; 933 tmp.processTypeName = "OpWLS2"; 819 tmp.processType = fOptical; << 934 tmp.processType = 3; 820 tmp.processSubType = fOpWLS2; << 935 tmp.processSubType = 36; 821 tmp.ordering[0] = -1; << 936 tmp.ordering[0] = -1; 822 tmp.ordering[1] = -1; << 937 tmp.ordering[1] = -1; 823 tmp.ordering[2] = 1000; << 938 tmp.ordering[2] = 1000; 824 tmp.isDuplicable = false; << 939 tmp.isDuplicable = false; 825 theTable->push_back(tmp); 940 theTable->push_back(tmp); 826 sizeOfTable += 1; << 941 sizeOfTable +=1; 827 << 942 828 tmp.processTypeName = "DNAElastic"; 943 tmp.processTypeName = "DNAElastic"; 829 tmp.processType = fElectromagnetic; << 944 tmp.processType = 2; 830 tmp.processSubType = fLowEnergyElastic; << 945 tmp.processSubType = 51; 831 tmp.ordering[0] = -1; << 946 tmp.ordering[0] = -1; 832 tmp.ordering[1] = -1; << 947 tmp.ordering[1] = -1; 833 tmp.ordering[2] = 1000; << 948 tmp.ordering[2] = 1000; 834 tmp.isDuplicable = false; << 949 tmp.isDuplicable = false; 835 theTable->push_back(tmp); 950 theTable->push_back(tmp); 836 sizeOfTable += 1; 951 sizeOfTable += 1; 837 952 838 tmp.processTypeName = "DNAExcit"; 953 tmp.processTypeName = "DNAExcit"; 839 tmp.processType = fElectromagnetic; << 954 tmp.processType = 2; 840 tmp.processSubType = fLowEnergyExcitation; << 955 tmp.processSubType = 52; 841 tmp.ordering[0] = -1; << 956 tmp.ordering[0] = -1; 842 tmp.ordering[1] = -1; << 957 tmp.ordering[1] = -1; 843 tmp.ordering[2] = 1000; << 958 tmp.ordering[2] = 1000; 844 tmp.isDuplicable = false; << 959 tmp.isDuplicable = false; 845 theTable->push_back(tmp); 960 theTable->push_back(tmp); 846 sizeOfTable += 1; 961 sizeOfTable += 1; 847 962 848 tmp.processTypeName = "DNAIonisation"; 963 tmp.processTypeName = "DNAIonisation"; 849 tmp.processType = fElectromagnetic; << 964 tmp.processType = 2; 850 tmp.processSubType = fLowEnergyIonisation; << 965 tmp.processSubType = 53; 851 tmp.ordering[0] = -1; << 966 tmp.ordering[0] = -1; 852 tmp.ordering[1] = -1; << 967 tmp.ordering[1] = -1; 853 tmp.ordering[2] = 1000; << 968 tmp.ordering[2] = 1000; 854 tmp.isDuplicable = false; << 969 tmp.isDuplicable = false; 855 theTable->push_back(tmp); 970 theTable->push_back(tmp); 856 sizeOfTable += 1; 971 sizeOfTable += 1; 857 972 858 tmp.processTypeName = "DNAVibExcit"; 973 tmp.processTypeName = "DNAVibExcit"; 859 tmp.processType = fElectromagnetic; << 974 tmp.processType = 2; 860 tmp.processSubType = fLowEnergyVibrationalEx << 975 tmp.processSubType = 54; 861 tmp.ordering[0] = -1; << 976 tmp.ordering[0] = -1; 862 tmp.ordering[1] = -1; << 977 tmp.ordering[1] = -1; 863 tmp.ordering[2] = 1000; << 978 tmp.ordering[2] = 1000; 864 tmp.isDuplicable = false; << 979 tmp.isDuplicable = false; 865 theTable->push_back(tmp); 980 theTable->push_back(tmp); 866 sizeOfTable += 1; 981 sizeOfTable += 1; 867 982 868 tmp.processTypeName = "DNAAttachment"; 983 tmp.processTypeName = "DNAAttachment"; 869 tmp.processType = fElectromagnetic; << 984 tmp.processType = 2; 870 tmp.processSubType = fLowEnergyAttachment; << 985 tmp.processSubType = 55; 871 tmp.ordering[0] = -1; << 986 tmp.ordering[0] = -1; 872 tmp.ordering[1] = -1; << 987 tmp.ordering[1] = -1; 873 tmp.ordering[2] = 1000; << 988 tmp.ordering[2] = 1000; 874 tmp.isDuplicable = false; << 989 tmp.isDuplicable = false; 875 theTable->push_back(tmp); 990 theTable->push_back(tmp); 876 sizeOfTable += 1; 991 sizeOfTable += 1; 877 992 878 tmp.processTypeName = "DNAChargeDec"; 993 tmp.processTypeName = "DNAChargeDec"; 879 tmp.processType = fElectromagnetic; << 994 tmp.processType = 2; 880 tmp.processSubType = fLowEnergyChargeDecreas << 995 tmp.processSubType = 56; 881 tmp.ordering[0] = -1; << 996 tmp.ordering[0] = -1; 882 tmp.ordering[1] = -1; << 997 tmp.ordering[1] = -1; 883 tmp.ordering[2] = 1000; << 998 tmp.ordering[2] = 1000; 884 tmp.isDuplicable = false; << 999 tmp.isDuplicable = false; 885 theTable->push_back(tmp); 1000 theTable->push_back(tmp); 886 sizeOfTable += 1; 1001 sizeOfTable += 1; 887 1002 888 tmp.processTypeName = "DNAChargeInc"; 1003 tmp.processTypeName = "DNAChargeInc"; 889 tmp.processType = fElectromagnetic; << 1004 tmp.processType = 2; 890 tmp.processSubType = fLowEnergyChargeIncreas << 1005 tmp.processSubType = 57; 891 tmp.ordering[0] = -1; << 1006 tmp.ordering[0] = -1; 892 tmp.ordering[1] = -1; << 1007 tmp.ordering[1] = -1; 893 tmp.ordering[2] = 1000; << 1008 tmp.ordering[2] = 1000; 894 tmp.isDuplicable = false; << 1009 tmp.isDuplicable = false; 895 theTable->push_back(tmp); 1010 theTable->push_back(tmp); 896 sizeOfTable += 1; 1011 sizeOfTable += 1; 897 1012 898 tmp.processTypeName = "DNAElecSolv"; 1013 tmp.processTypeName = "DNAElecSolv"; 899 tmp.processType = fElectromagnetic; << 1014 tmp.processType = 2; 900 tmp.processSubType = fLowEnergyElectronSolva << 1015 tmp.processSubType = 58; 901 tmp.ordering[0] = -1; << 1016 tmp.ordering[0] = -1; 902 tmp.ordering[1] = -1; << 1017 tmp.ordering[1] = -1; 903 tmp.ordering[2] = 1000; << 1018 tmp.ordering[2] = 1000; 904 tmp.isDuplicable = false; << 1019 tmp.isDuplicable = false; 905 theTable->push_back(tmp); 1020 theTable->push_back(tmp); 906 sizeOfTable += 1; 1021 sizeOfTable += 1; 907 1022 908 tmp.processTypeName = "DNAMolecDecay"; 1023 tmp.processTypeName = "DNAMolecDecay"; 909 tmp.processType = fDecay; << 1024 tmp.processType = 6; 910 tmp.processSubType = fLowEnergyMolecularDeca << 1025 tmp.processSubType = 59; 911 tmp.ordering[0] = 1000; << 1026 tmp.ordering[0] = 1000; 912 tmp.ordering[1] = -1; << 1027 tmp.ordering[1] = -1; 913 tmp.ordering[2] = -1; << 1028 tmp.ordering[2] = -1; 914 tmp.isDuplicable = false; << 1029 tmp.isDuplicable = false; 915 theTable->push_back(tmp); 1030 theTable->push_back(tmp); 916 sizeOfTable += 1; 1031 sizeOfTable += 1; 917 1032 918 tmp.processTypeName = "ITTransport"; 1033 tmp.processTypeName = "ITTransport"; 919 tmp.processType = fTransportation; << 1034 tmp.processType = 1; 920 tmp.processSubType = fLowEnergyTransportatio << 1035 tmp.processSubType = 60; 921 tmp.ordering[0] = -1; << 1036 tmp.ordering[0] = -1; 922 tmp.ordering[1] = 0; << 1037 tmp.ordering[1] = 0; 923 tmp.ordering[2] = 0; << 1038 tmp.ordering[2] = 0; 924 tmp.isDuplicable = false; << 1039 tmp.isDuplicable = false; 925 theTable->push_back(tmp); 1040 theTable->push_back(tmp); 926 sizeOfTable += 1; 1041 sizeOfTable += 1; 927 1042 928 tmp.processTypeName = "DNABrownTrans"; 1043 tmp.processTypeName = "DNABrownTrans"; 929 tmp.processType = fTransportation; << 1044 tmp.processType = 1; 930 tmp.processSubType = fLowEnergyBrownianTrans << 1045 tmp.processSubType = 61; 931 tmp.ordering[0] = -1; << 1046 tmp.ordering[0] = -1; 932 tmp.ordering[1] = 0; << 1047 tmp.ordering[1] = 0; 933 tmp.ordering[2] = 0; << 1048 tmp.ordering[2] = 0; 934 tmp.isDuplicable = false; << 1049 tmp.isDuplicable = false; 935 theTable->push_back(tmp); 1050 theTable->push_back(tmp); 936 sizeOfTable += 1; 1051 sizeOfTable += 1; 937 1052 938 tmp.processTypeName = "DNADoubleIoni"; 1053 tmp.processTypeName = "DNADoubleIoni"; 939 tmp.processType = fElectromagnetic; << 1054 tmp.processType = 2; 940 tmp.processSubType = fLowEnergyDoubleIonisat << 1055 tmp.processSubType = 62; 941 tmp.ordering[0] = -1; << 1056 tmp.ordering[0] = -1; 942 tmp.ordering[1] = -1; << 1057 tmp.ordering[1] = -1; 943 tmp.ordering[2] = 1000; << 1058 tmp.ordering[2] = 1000; 944 tmp.isDuplicable = false; << 1059 tmp.isDuplicable = false; 945 theTable->push_back(tmp); 1060 theTable->push_back(tmp); 946 sizeOfTable += 1; 1061 sizeOfTable += 1; 947 1062 948 tmp.processTypeName = "DNADoubleCap"; 1063 tmp.processTypeName = "DNADoubleCap"; 949 tmp.processType = fElectromagnetic; << 1064 tmp.processType = 2; 950 tmp.processSubType = fLowEnergyDoubleCap; << 1065 tmp.processSubType = 63; 951 tmp.ordering[0] = -1; << 1066 tmp.ordering[0] = -1; 952 tmp.ordering[1] = -1; << 1067 tmp.ordering[1] = -1; 953 tmp.ordering[2] = 1000; << 1068 tmp.ordering[2] = 1000; 954 tmp.isDuplicable = false; << 1069 tmp.isDuplicable = false; 955 theTable->push_back(tmp); 1070 theTable->push_back(tmp); 956 sizeOfTable += 1; 1071 sizeOfTable += 1; 957 1072 958 tmp.processTypeName = "DNAIoniTransfer"; 1073 tmp.processTypeName = "DNAIoniTransfer"; 959 tmp.processType = fElectromagnetic; << 1074 tmp.processType = 2; 960 tmp.processSubType = fLowEnergyIoniTransfer; << 1075 tmp.processSubType = 64; 961 tmp.ordering[0] = -1; << 1076 tmp.ordering[0] = -1; 962 tmp.ordering[1] = -1; << 1077 tmp.ordering[1] = -1; 963 tmp.ordering[2] = 1000; << 1078 tmp.ordering[2] = 1000; 964 tmp.isDuplicable = false; << 1079 tmp.isDuplicable = false; 965 theTable->push_back(tmp); << 966 sizeOfTable += 1; << 967 << 968 tmp.processTypeName = "DNAStaticMol"; << 969 tmp.processType = fUserDefined; << 970 tmp.processSubType = fLowEnergyStaticMol; << 971 tmp.ordering[0] = -1; << 972 tmp.ordering[1] = -1; << 973 tmp.ordering[2] = 1000; << 974 tmp.isDuplicable = false; << 975 theTable->push_back(tmp); << 976 sizeOfTable += 1; << 977 << 978 tmp.processTypeName = "DNAScavenger"; << 979 tmp.processType = fUserDefined; << 980 tmp.processSubType = fLowEnergyScavenger; << 981 tmp.ordering[0] = -1; << 982 tmp.ordering[1] = -1; << 983 tmp.ordering[2] = 1000; << 984 tmp.isDuplicable = false; << 985 theTable->push_back(tmp); << 986 sizeOfTable += 1; << 987 << 988 tmp.processTypeName = "DNATripleIoni"; << 989 tmp.processType = fElectromagnetic; << 990 tmp.processSubType = fLowEnergyTripleIonisat << 991 tmp.ordering[0] = -1; << 992 tmp.ordering[1] = -1; << 993 tmp.ordering[2] = 1000; << 994 tmp.isDuplicable = false; << 995 theTable->push_back(tmp); << 996 sizeOfTable += 1; << 997 << 998 tmp.processTypeName = "DNAQuadrupleIoni"; << 999 tmp.processType = fElectromagnetic; << 1000 tmp.processSubType = fLowEnergyQuadrupleIon << 1001 tmp.ordering[0] = -1; << 1002 tmp.ordering[1] = -1; << 1003 tmp.ordering[2] = 1000; << 1004 tmp.isDuplicable = false; << 1005 theTable->push_back(tmp); 1080 theTable->push_back(tmp); 1006 sizeOfTable += 1; 1081 sizeOfTable += 1; 1007 1082 1008 tmp.processTypeName = "HadElastic"; 1083 tmp.processTypeName = "HadElastic"; 1009 tmp.processType = fHadronic; << 1084 tmp.processType = 4; 1010 tmp.processSubType = fHadronElastic; << 1085 tmp.processSubType = 111; 1011 tmp.ordering[0] = -1; << 1086 tmp.ordering[0] = -1; 1012 tmp.ordering[1] = -1; << 1087 tmp.ordering[1] = -1; 1013 tmp.ordering[2] = 1000; << 1088 tmp.ordering[2] = 1000; 1014 tmp.isDuplicable = false; << 1089 tmp.isDuplicable = false; 1015 theTable->push_back(tmp); << 1016 sizeOfTable += 1; << 1017 << 1018 tmp.processTypeName = "NeutronGeneral"; << 1019 tmp.processType = fHadronic; << 1020 tmp.processSubType = fNeutronGeneral; << 1021 tmp.ordering[0] = -1; << 1022 tmp.ordering[1] = -1; << 1023 tmp.ordering[2] = 1000; << 1024 tmp.isDuplicable = false; << 1025 theTable->push_back(tmp); 1090 theTable->push_back(tmp); 1026 sizeOfTable += 1; 1091 sizeOfTable += 1; 1027 1092 1028 tmp.processTypeName = "HadInelastic"; 1093 tmp.processTypeName = "HadInelastic"; 1029 tmp.processType = fHadronic; << 1094 tmp.processType = 4; 1030 tmp.processSubType = fHadronInelastic; << 1095 tmp.processSubType = 121; 1031 tmp.ordering[0] = -1; << 1096 tmp.ordering[0] = -1; 1032 tmp.ordering[1] = -1; << 1097 tmp.ordering[1] = -1; 1033 tmp.ordering[2] = 1000; << 1098 tmp.ordering[2] = 1000; 1034 tmp.isDuplicable = false; << 1099 tmp.isDuplicable = false; 1035 theTable->push_back(tmp); 1100 theTable->push_back(tmp); 1036 sizeOfTable += 1; 1101 sizeOfTable += 1; 1037 1102 1038 tmp.processTypeName = "HadCapture"; 1103 tmp.processTypeName = "HadCapture"; 1039 tmp.processType = fHadronic; << 1104 tmp.processType = 4; 1040 tmp.processSubType = fCapture; << 1105 tmp.processSubType = 131; 1041 tmp.ordering[0] = -1; << 1106 tmp.ordering[0] = -1; 1042 tmp.ordering[1] = -1; << 1107 tmp.ordering[1] = -1; 1043 tmp.ordering[2] = 1000; << 1108 tmp.ordering[2] = 1000; 1044 tmp.isDuplicable = false; << 1109 tmp.isDuplicable = false; 1045 theTable->push_back(tmp); 1110 theTable->push_back(tmp); 1046 sizeOfTable += 1; 1111 sizeOfTable += 1; 1047 1112 1048 tmp.processTypeName = "MuAtomCapture"; 1113 tmp.processTypeName = "MuAtomCapture"; 1049 tmp.processType = fHadronic; << 1114 tmp.processType = 4; 1050 tmp.processSubType = fMuAtomicCapture; << 1115 tmp.processSubType = 132; 1051 tmp.ordering[0] = -1; << 1116 tmp.ordering[0] = -1; 1052 tmp.ordering[1] = -1; << 1117 tmp.ordering[1] = -1; 1053 tmp.ordering[2] = 1000; << 1118 tmp.ordering[2] = 1000; 1054 tmp.isDuplicable = false; << 1119 tmp.isDuplicable = false; 1055 theTable->push_back(tmp); 1120 theTable->push_back(tmp); 1056 sizeOfTable += 1; 1121 sizeOfTable += 1; 1057 1122 1058 tmp.processTypeName = "HadFission"; 1123 tmp.processTypeName = "HadFission"; 1059 tmp.processType = fHadronic; << 1124 tmp.processType = 4; 1060 tmp.processSubType = fFission; << 1125 tmp.processSubType = 141; 1061 tmp.ordering[0] = -1; << 1126 tmp.ordering[0] = -1; 1062 tmp.ordering[1] = -1; << 1127 tmp.ordering[1] = -1; 1063 tmp.ordering[2] = 1000; << 1128 tmp.ordering[2] = 1000; 1064 tmp.isDuplicable = false; << 1129 tmp.isDuplicable = false; 1065 theTable->push_back(tmp); 1130 theTable->push_back(tmp); 1066 sizeOfTable += 1; 1131 sizeOfTable += 1; 1067 1132 1068 tmp.processTypeName = "HadAtRest"; 1133 tmp.processTypeName = "HadAtRest"; 1069 tmp.processType = fHadronic; << 1134 tmp.processType = 4; 1070 tmp.processSubType = fHadronAtRest; << 1135 tmp.processSubType = 151; 1071 tmp.ordering[0] = 1000; << 1136 tmp.ordering[0] = 1000; 1072 tmp.ordering[1] = -1; << 1137 tmp.ordering[1] = -1; 1073 tmp.ordering[2] = -1; << 1138 tmp.ordering[2] = -1; 1074 tmp.isDuplicable = false; << 1139 tmp.isDuplicable = false; 1075 theTable->push_back(tmp); 1140 theTable->push_back(tmp); 1076 sizeOfTable += 1; 1141 sizeOfTable += 1; 1077 1142 1078 tmp.processTypeName = "HadCEX"; 1143 tmp.processTypeName = "HadCEX"; 1079 tmp.processType = fHadronic; << 1144 tmp.processType = 4; 1080 tmp.processSubType = fChargeExchange; << 1145 tmp.processSubType = 161; 1081 tmp.ordering[0] = -1; << 1146 tmp.ordering[0] = -1; 1082 tmp.ordering[1] = -1; << 1147 tmp.ordering[1] = -1; 1083 tmp.ordering[2] = 1000; << 1148 tmp.ordering[2] = 1000; 1084 tmp.isDuplicable = false; << 1149 tmp.isDuplicable = false; 1085 theTable->push_back(tmp); 1150 theTable->push_back(tmp); 1086 sizeOfTable += 1; 1151 sizeOfTable += 1; 1087 1152 1088 tmp.processTypeName = "Decay"; 1153 tmp.processTypeName = "Decay"; 1089 tmp.processType = fDecay; << 1154 tmp.processType = 6; 1090 tmp.processSubType = DECAY; << 1155 tmp.processSubType = 201; 1091 tmp.ordering[0] = 1000; << 1156 tmp.ordering[0] = 1000; 1092 tmp.ordering[1] = -1; << 1157 tmp.ordering[1] = -1; 1093 tmp.ordering[2] = 1000; << 1158 tmp.ordering[2] = 1000; 1094 tmp.isDuplicable = false; << 1159 tmp.isDuplicable = false; 1095 theTable->push_back(tmp); 1160 theTable->push_back(tmp); 1096 sizeOfTable += 1; 1161 sizeOfTable += 1; 1097 1162 1098 tmp.processTypeName = "DecayWSpin"; 1163 tmp.processTypeName = "DecayWSpin"; 1099 tmp.processType = fDecay; << 1164 tmp.processType = 6; 1100 tmp.processSubType = DECAY_WithSpin; << 1165 tmp.processSubType = 202; 1101 tmp.ordering[0] = 1000; << 1166 tmp.ordering[0] = 1000; 1102 tmp.ordering[1] = -1; << 1167 tmp.ordering[1] = -1; 1103 tmp.ordering[2] = 1000; << 1168 tmp.ordering[2] = 1000; 1104 tmp.isDuplicable = false; << 1169 tmp.isDuplicable = false; 1105 theTable->push_back(tmp); 1170 theTable->push_back(tmp); 1106 sizeOfTable += 1; 1171 sizeOfTable += 1; 1107 1172 1108 tmp.processTypeName = "DecayPiSpin"; 1173 tmp.processTypeName = "DecayPiSpin"; 1109 tmp.processType = fDecay; << 1174 tmp.processType = 6; 1110 tmp.processSubType = DECAY_PionMakeSpin; << 1175 tmp.processSubType = 203; 1111 tmp.ordering[0] = 1000; << 1176 tmp.ordering[0] = 1000; 1112 tmp.ordering[1] = -1; << 1177 tmp.ordering[1] = -1; 1113 tmp.ordering[2] = 1000; << 1178 tmp.ordering[2] = 1000; 1114 tmp.isDuplicable = false; << 1179 tmp.isDuplicable = false; 1115 theTable->push_back(tmp); 1180 theTable->push_back(tmp); 1116 sizeOfTable += 1; 1181 sizeOfTable += 1; 1117 1182 1118 tmp.processTypeName = "DecayRadio"; 1183 tmp.processTypeName = "DecayRadio"; 1119 tmp.processType = fDecay; << 1184 tmp.processType = 6; 1120 tmp.processSubType = DECAY_Radioactive; << 1185 tmp.processSubType = 210; 1121 tmp.ordering[0] = 1000; << 1186 tmp.ordering[0] = 1000; 1122 tmp.ordering[1] = -1; << 1187 tmp.ordering[1] = -1; 1123 tmp.ordering[2] = 1000; << 1188 tmp.ordering[2] = 1000; 1124 tmp.isDuplicable = false; << 1189 tmp.isDuplicable = false; 1125 theTable->push_back(tmp); 1190 theTable->push_back(tmp); 1126 sizeOfTable += 1; 1191 sizeOfTable += 1; 1127 1192 1128 tmp.processTypeName = "DecayUnKnown"; 1193 tmp.processTypeName = "DecayUnKnown"; 1129 tmp.processType = fDecay; << 1194 tmp.processType = 6; 1130 tmp.processSubType = DECAY_Unknown; << 1195 tmp.processSubType = 211; 1131 tmp.ordering[0] = -1; << 1196 tmp.ordering[0] = -1; 1132 tmp.ordering[1] = -1; << 1197 tmp.ordering[1] = -1; 1133 tmp.ordering[2] = 1000; << 1198 tmp.ordering[2] = 1000; 1134 tmp.isDuplicable = false; << 1199 tmp.isDuplicable = false; 1135 theTable->push_back(tmp); 1200 theTable->push_back(tmp); 1136 sizeOfTable += 1; 1201 sizeOfTable += 1; 1137 1202 1138 tmp.processTypeName = "DecayMuAtom"; 1203 tmp.processTypeName = "DecayMuAtom"; 1139 tmp.processType = fDecay; << 1204 tmp.processType = 6; 1140 tmp.processSubType = DECAY_MuAtom; << 1205 tmp.processSubType = 221; 1141 tmp.ordering[0] = 1000; << 1206 tmp.ordering[0] = 1000; 1142 tmp.ordering[1] = -1; << 1207 tmp.ordering[1] = -1; 1143 tmp.ordering[2] = 1000; << 1208 tmp.ordering[2] = 1000; 1144 tmp.isDuplicable = false; << 1209 tmp.isDuplicable = false; 1145 theTable->push_back(tmp); 1210 theTable->push_back(tmp); 1146 sizeOfTable += 1; 1211 sizeOfTable += 1; 1147 1212 1148 tmp.processTypeName = "DecayExt"; 1213 tmp.processTypeName = "DecayExt"; 1149 tmp.processType = fDecay; << 1214 tmp.processType = 6; 1150 tmp.processSubType = DECAY_External; << 1215 tmp.processSubType = 231; 1151 tmp.ordering[0] = 1000; << 1216 tmp.ordering[0] = 1000; 1152 tmp.ordering[1] = -1; << 1217 tmp.ordering[1] = -1; 1153 tmp.ordering[2] = 1000; << 1218 tmp.ordering[2] = 1000; 1154 tmp.isDuplicable = false; << 1219 tmp.isDuplicable = false; 1155 theTable->push_back(tmp); 1220 theTable->push_back(tmp); 1156 sizeOfTable += 1; 1221 sizeOfTable += 1; 1157 1222 1158 tmp.processTypeName = "StepLimiter"; 1223 tmp.processTypeName = "StepLimiter"; 1159 tmp.processType = fGeneral; << 1224 tmp.processType = 7; 1160 tmp.processSubType = STEP_LIMITER; << 1225 tmp.processSubType = 401; 1161 tmp.ordering[0] = -1; << 1226 tmp.ordering[0] = -1; 1162 tmp.ordering[1] = -1; << 1227 tmp.ordering[1] = -1; 1163 tmp.ordering[2] = 1000; << 1228 tmp.ordering[2] = 1000; 1164 tmp.isDuplicable = false; << 1229 tmp.isDuplicable = false; 1165 theTable->push_back(tmp); 1230 theTable->push_back(tmp); 1166 sizeOfTable += 1; 1231 sizeOfTable += 1; 1167 1232 1168 tmp.processTypeName = "UsrSepcCuts"; 1233 tmp.processTypeName = "UsrSepcCuts"; 1169 tmp.processType = fGeneral; << 1234 tmp.processType = 7; 1170 tmp.processSubType = USER_SPECIAL_CUTS; << 1235 tmp.processSubType = 402; 1171 tmp.ordering[0] = -1; << 1236 tmp.ordering[0] = -1; 1172 tmp.ordering[1] = -1; << 1237 tmp.ordering[1] = -1; 1173 tmp.ordering[2] = 1000; << 1238 tmp.ordering[2] = 1000; 1174 tmp.isDuplicable = false; << 1239 tmp.isDuplicable = false; 1175 theTable->push_back(tmp); 1240 theTable->push_back(tmp); 1176 sizeOfTable += 1; 1241 sizeOfTable += 1; 1177 1242 1178 tmp.processTypeName = "NeutronKiller"; 1243 tmp.processTypeName = "NeutronKiller"; 1179 tmp.processType = fGeneral; << 1244 tmp.processType = 7; 1180 tmp.processSubType = NEUTRON_KILLER; << 1245 tmp.processSubType = 403; 1181 tmp.ordering[0] = -1; << 1246 tmp.ordering[0] = -1; 1182 tmp.ordering[1] = -1; << 1247 tmp.ordering[1] = -1; 1183 tmp.ordering[2] = 1000; << 1248 tmp.ordering[2] = 1000; 1184 tmp.isDuplicable = false; << 1249 tmp.isDuplicable = false; 1185 theTable->push_back(tmp); 1250 theTable->push_back(tmp); 1186 sizeOfTable += 1; 1251 sizeOfTable += 1; 1187 1252 1188 tmp.processTypeName = "ParallelWorld"; 1253 tmp.processTypeName = "ParallelWorld"; 1189 tmp.processType = fParallel; << 1254 tmp.processType = 10; 1190 tmp.processSubType = PARALLEL_WORLD_PROCESS << 1255 tmp.processSubType = 491; 1191 tmp.ordering[0] = 9900; << 1256 tmp.ordering[0] = 9900; 1192 tmp.ordering[1] = 1; << 1257 tmp.ordering[1] = 1; 1193 tmp.ordering[2] = 9900; << 1258 tmp.ordering[2] = 9900; 1194 tmp.isDuplicable = true; << 1259 tmp.isDuplicable = true; 1195 theTable->push_back(tmp); 1260 theTable->push_back(tmp); 1196 sizeOfTable += 1; 1261 sizeOfTable += 1; 1197 } 1262 } 1198 1263