Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4VUserPhysicsList.cc
Go to the documentation of this file.
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26//
27// $Id$
28//
29//
30// ------------------------------------------------------------
31// GEANT 4 class header file
32//
33// ------------------------------------------------------------
34// History
35// first version 09 Jan 1998 by H.Kurashige
36// Added SetEnergyRange 18 Jun 1998 by H.Kurashige
37// Change for short lived particles 27 Jun 1998 by H.Kurashige
38// G4BestUnit on output 12 nov 1998 by M.Maire
39// Added RemoveProcessManager 9 Feb 1999 by H.Kurashige
40// Fixed RemoveProcessManager 15 Apr 1999 by H.Kurashige
41// Removed ConstructAllParticles() 15 Apr 1999 by H.Kurashige
42// Modified for CUTS per REGION 10 Oct 2002 by H.Kurashige
43// Check if particle IsShortLived 18 Jun 2003 by V.Ivanchenko
44// Modify PreparePhysicsList 18 Jan 2006 by H.Kurashige
45// Added PhysicsListHelper 29 APr. 2011 H.Kurashige
46// Added default impelmentation of SetCuts 10 June 2011 H.Kurashige
47// SetCuts is not 'pure virtual' any more
48// ------------------------------------------------------------
49
50#include "G4VUserPhysicsList.hh"
51
52#include "globals.hh"
53#include "G4SystemOfUnits.hh"
56#include "G4ProcessManager.hh"
57#include "G4ParticleTable.hh"
59#include "G4Material.hh"
61#include "G4UImanager.hh"
62#include "G4UnitsTable.hh"
63#include "G4RegionStore.hh"
64#include "G4Region.hh"
66#include "G4ProductionCuts.hh"
68
69#include "G4ios.hh"
70#include <iomanip>
71#include <fstream>
72
73////////////////////////////////////////////////////////
75 :verboseLevel(1),
76 defaultCutValue(1.0 * mm),
77 isSetDefaultCutValue(false),
78 fRetrievePhysicsTable(false),
79 fStoredInAscii(true),
80 fIsCheckedForRetrievePhysicsTable(false),
81 fIsRestoredCutValues(false),
82 directoryPhysicsTable("."),
83 fDisplayThreshold(0),
84 fIsPhysicsTableBuilt(false),
85 fDisableCheckParticleList(false)
86{
87 // default cut value (1.0mm)
88 defaultCutValue = 1.0*mm;
89
90 // pointer to the particle table
93
94 // pointer to the cuts table
96
97 // set energy range for SetCut calcuration
98 fCutsTable->SetEnergyRange(0.99*keV, 100*TeV);
99
100 // UI Messenger
102
103 // PhysicsListHelper
106
107}
108
109////////////////////////////////////////////////////////
111{
112 if (theMessenger != 0) {
113 delete theMessenger;
114 theMessenger = 0;
115 }
117
118 // invoke DeleteAllParticle
120
121}
122
123////////////////////////////////////////////////////////
125 :verboseLevel(right.verboseLevel),
126 defaultCutValue(right.defaultCutValue),
127 isSetDefaultCutValue(right.isSetDefaultCutValue),
128 fRetrievePhysicsTable(right.fRetrievePhysicsTable),
129 fStoredInAscii(right.fStoredInAscii),
130 fIsCheckedForRetrievePhysicsTable(right.fIsCheckedForRetrievePhysicsTable),
131 fIsRestoredCutValues(right.fIsRestoredCutValues),
132 directoryPhysicsTable(right.directoryPhysicsTable),
133 fDisplayThreshold(right.fDisplayThreshold),
134 fIsPhysicsTableBuilt(right.fIsPhysicsTableBuilt),
135 fDisableCheckParticleList(right.fDisableCheckParticleList)
136{
137 // pointer to the particle table
140
141 // pointer to the cuts table
143
144 // UI Messenger
146
147 // PhysicsListHelper
150
151}
152
153
154////////////////////////////////////////////////////////
156{
157 if (this != &right) {
169 }
170 return *this;
171}
172
173////////////////////////////////////////////////////////
175 G4ProcessManager* newManager)
176{
177 if (newParticle == 0) return;
178 if (newParticle->GetProcessManager() != 0) {
179#ifdef G4VERBOSE
180 if (verboseLevel >1){
181 G4cout << "G4VUserPhysicsList::AddProcessManager: "
182 << newParticle->GetParticleName()
183 << " already has ProcessManager " << G4endl;
184 }
185#endif
186 return;
187 }
188
189 // create new process manager if newManager == 0
190 if (newManager == 0){
191 // Add ProcessManager
192 if (newParticle->GetParticleType() == "nucleus") {
193 // Create a copy of the process manager of "GenericIon" in case of "nucleus"
194 G4ParticleDefinition* genericIon =
195 (G4ParticleTable::GetParticleTable())->FindParticle("GenericIon");
196
197 if (genericIon != 0) {
198 G4ProcessManager* ionMan = genericIon->GetProcessManager();
199 if (ionMan != 0) {
200 newManager = new G4ProcessManager(*ionMan);
201 } else {
202 // no process manager has been registered yet
203 newManager = new G4ProcessManager(newParticle);
204 G4Exception("G4VUserPhysicsList::AddProcessManager",
205 "Run0251", RunMustBeAborted,
206 "GenericIon has no ProcessMamanger");
207 }
208 } else {
209 // "GenericIon" does not exist
210 newManager = new G4ProcessManager(newParticle);
211 G4Exception("G4VUserPhysicsList::AddProcessManager",
212 "Run0252", RunMustBeAborted,
213 "GenericIon does not exist");
214 }
215
216 } else {
217 // create process manager for particles other than "nucleus"
218 newManager = new G4ProcessManager(newParticle);
219 }
220 }
221
222 // set particle type
223 newManager->SetParticleType(newParticle);
224
225 // add the process manager
226 newParticle->SetProcessManager(newManager);
227
228#ifdef G4VERBOSE
229 if (verboseLevel >2){
230 G4cout << "G4VUserPhysicsList::AddProcessManager: "
231 << "adds ProcessManager to "
232 << newParticle->GetParticleName() << G4endl;
233 newManager->DumpInfo();
234 }
235#endif
237 && (newParticle->GetParticleType() == "nucleus")) {
238 PreparePhysicsTable(newParticle);
239 BuildPhysicsTable(newParticle);
240 }
241}
242
243
244////////////////////////////////////////////////////////
246{
247 // loop over all particles in G4ParticleTable
249 while( (*theParticleIterator)() ){
251 G4ProcessManager* pmanager = particle->GetProcessManager();
252 if (pmanager==0) {
253 // create process manager if the particle has no its one
254 pmanager = new G4ProcessManager(particle);
255 particle->SetProcessManager(pmanager);
256 }
257 }
258}
259
260/////////////////////////////////////////////////////////
262{
263 // loop over all particles in G4ParticleTable
265 while( (*theParticleIterator)() ){
267 G4ProcessManager* pmanager = particle->GetProcessManager();
268 if (pmanager!=0) delete pmanager;
269 particle->SetProcessManager(0);
270#ifdef G4VERBOSE
271 if (verboseLevel >2){
272 G4cout << "G4VUserPhysicsList::RemoveProcessManager: "
273 << "remove ProcessManager from "
274 << particle->GetParticleName() << G4endl;
275 }
276#endif
277 }
278}
279
280
281////////////////////////////////////////////////////////
283{
284 if ( !isSetDefaultCutValue ){
286 }
287
288#ifdef G4VERBOSE
289 if (verboseLevel >1){
290 G4cout << "G4VUserPhysicsList::SetCuts: " << G4endl;
291 G4cout << "Cut for gamma: " << GetCutValue("gamma")/mm
292 << "[mm]" << G4endl;
293 G4cout << "Cut for e-: " << GetCutValue("e-")/mm
294 << "[mm]" << G4endl;
295 G4cout << "Cut for e+: " << GetCutValue("e+")/mm
296 << "[mm]" << G4endl;
297 G4cout << "Cut for proton: " << GetCutValue("proton")/mm
298 << "[mm]" << G4endl;
299 }
300#endif
301
302 // dump Cut values if verboseLevel==3
303 if (verboseLevel>2) {
305 }
306}
307
308
309////////////////////////////////////////////////////////
311{
312 if (value<0.0) {
313#ifdef G4VERBOSE
314 if (verboseLevel >0){
315 G4cout << "G4VUserPhysicsList::SetDefaultCutValue: negative cut values"
316 << " :" << value/mm << "[mm]" << G4endl;
317 }
318#endif
319 return;
320 }
321
322 defaultCutValue = value;
324
325 // set cut values for gamma at first and for e- and e+
329 SetCutValue(defaultCutValue, "proton");
330
331#ifdef G4VERBOSE
332 if (verboseLevel >1){
333 G4cout << "G4VUserPhysicsList::SetDefaultCutValue:"
334 << "default cut value is changed to :"
335 << defaultCutValue/mm << "[mm]" << G4endl;
336 }
337#endif
338 }
339
340
341////////////////////////////////////////////////////////
343{
344 size_t nReg = (G4RegionStore::GetInstance())->size();
345 if (nReg==0) {
346#ifdef G4VERBOSE
347 if (verboseLevel>0){
348 G4cout << "G4VUserPhysicsList::GetCutValue "
349 <<" : No Default Region " <<G4endl;
350 }
351#endif
352 G4Exception("G4VUserPhysicsList::GetCutValue",
353 "Run0253", FatalException,
354 "No Default Region");
355 return -1.*mm;
356 }
357 G4Region* region = (*(G4RegionStore::GetInstance()))[0];
358 return region->GetProductionCuts()->GetProductionCut(name);
359}
360
361////////////////////////////////////////////////////////
363{
364 SetParticleCuts( aCut ,name );
365}
366
367////////////////////////////////////////////////////////
369(G4double aCut, const G4String& pname, const G4String& rname)
370{
372 if (region != 0){
373 //set cut value
374 SetParticleCuts( aCut ,pname, region );
375 } else {
376#ifdef G4VERBOSE
377 if (verboseLevel>0){
378 G4cout << "G4VUserPhysicsList::SetCutValue "
379 <<" : No Region of " << rname << G4endl;
380 }
381#endif
382 }
383}
384
385
386////////////////////////////////////////////////////////
388{
391}
392
393////////////////////////////////////////////////////////
395{
396 // set cut values for gamma at first and for e- and e+
397 SetCutValue(aCut, "gamma", rname);
398 SetCutValue(aCut, "e-", rname);
399 SetCutValue(aCut, "e+", rname);
400 SetCutValue(aCut, "proton", rname);
401}
402
403
404
405////////////////////////////////////////////////////////
407{
408 SetParticleCuts(cut, particle->GetParticleName(), region);
409}
410
411////////////////////////////////////////////////////////
412void G4VUserPhysicsList::SetParticleCuts( G4double cut, const G4String& particleName, G4Region* region)
413{
414 if (cut<0.0) {
415#ifdef G4VERBOSE
416 if (verboseLevel >0){
417 G4cout << "G4VUserPhysicsList::SetParticleCuts: negative cut values"
418 << " :" << cut/mm << "[mm]"
419 << " for "<< particleName << G4endl;
420 }
421#endif
422 return;
423 }
424
425 if(!region){
426 size_t nReg = (G4RegionStore::GetInstance())->size();
427 if (nReg==0) {
428#ifdef G4VERBOSE
429 if (verboseLevel>0){
430 G4cout << "G4VUserPhysicsList::SetParticleCuts "
431 <<" : No Default Region " <<G4endl;
432 }
433#endif
434 G4Exception("G4VUserPhysicsList::SetParticleCuts ",
435 "Run0254", FatalException,
436 "No Default Region");
437 return;
438 }
439 region = (*(G4RegionStore::GetInstance()))[0];
440 }
441
442 if ( !isSetDefaultCutValue ){
444 }
445
446 G4ProductionCuts* pcuts = region->GetProductionCuts();
447 pcuts->SetProductionCut(cut,particleName);
448#ifdef G4VERBOSE
449 if (verboseLevel>2){
450 G4cout << "G4VUserPhysicsList::SetParticleCuts: "
451 << " :" << cut/mm << "[mm]"
452 << " for "<< particleName << G4endl;
453 }
454#endif
455}
456
457///////////////////////////////////////////////////////////////
459{
460 //Prepare Physics table for all particles
462 while( (*theParticleIterator)() ){
464 PreparePhysicsTable(particle);
465 }
466
467 // ask processes to prepare physics table
470 // check if retrieve Cut Table successfully
472#ifdef G4VERBOSE
473 if (verboseLevel>0){
474 G4cout << "G4VUserPhysicsList::BuildPhysicsTable"
475 << " Retrieve Cut Table failed !!" << G4endl;
476 }
477#endif
478 G4Exception("G4VUserPhysicsList::BuildPhysicsTable",
479 "Run0255", RunMustBeAborted,
480 "Fail to retrieve Production Cut Table");
481 } else {
482#ifdef G4VERBOSE
483 if (verboseLevel>2){
484 G4cout << "G4VUserPhysicsList::BuildPhysicsTable"
485 << " Retrieve Cut Table successfully " << G4endl;
486 }
487#endif
488 }
489 } else {
490#ifdef G4VERBOSE
491 if (verboseLevel>2){
492 G4cout << "G4VUserPhysicsList::BuildPhysicsTable"
493 << " does not retrieve Cut Table but calculate " << G4endl;
494 }
495#endif
496 }
497
498 // Sets a value to particle
499 // set cut values for gamma at first and for e- and e+
500 G4String particleName;
502 if(GammaP) BuildPhysicsTable(GammaP);
504 if(EMinusP) BuildPhysicsTable(EMinusP);
506 if(EPlusP) BuildPhysicsTable(EPlusP);
508 if(ProtonP) BuildPhysicsTable(ProtonP);
509
510
512 while( (*theParticleIterator)() ){
514 if( particle!=GammaP &&
515 particle!=EMinusP &&
516 particle!=EPlusP &&
517 particle!=ProtonP ){
518 BuildPhysicsTable(particle);
519 }
520 }
521
522 // Set flag
524
525}
526///////////////////////////////////////////////////////////////
528{
531 // fail to retreive cut tables
532#ifdef G4VERBOSE
533 if (verboseLevel>0){
534 G4cout << "G4VUserPhysicsList::BuildPhysicsTable "
535 << "Physics table can not be retreived and will be calculated "
536 << G4endl;
537 }
538#endif
539 fRetrievePhysicsTable = false;
540
541 } else {
542#ifdef G4VERBOSE
543 if (verboseLevel>2){
544 G4cout << "G4VUserPhysicsList::BuildPhysicsTable "
545 << " Retrieve Physics Table for "
546 << particle->GetParticleName() << G4endl;
547 }
548#endif
549 // Retrieve PhysicsTable from files for proccesses
551 }
552 }
553
554#ifdef G4VERBOSE
555 if (verboseLevel>2){
556 G4cout << "G4VUserPhysicsList::BuildPhysicsTable "
557 << "Calculate Physics Table for "
558 << particle->GetParticleName() << G4endl;
559 }
560#endif
561 // Rebuild the physics tables for every process for this particle type
562 // if particle is not ShortLived
563 if(!particle->IsShortLived()) {
564 G4ProcessManager* pManager = particle->GetProcessManager();
565 if (!pManager) {
566#ifdef G4VERBOSE
567 if (verboseLevel>0){
568 G4cout << "G4VUserPhysicsList::BuildPhysicsTable "
569 <<" : No Process Manager for "
570 << particle->GetParticleName() << G4endl;
571 G4cout << particle->GetParticleName()
572 << " should be created in your PhysicsList" <<G4endl;
573 }
574#endif
575 G4Exception("G4VUserPhysicsList::BuildPhysicsTable",
576 "Run0271", FatalException,
577 "No process manager");
578 return;
579 }
580 G4ProcessVector* pVector = pManager->GetProcessList();
581 if (!pVector) {
582#ifdef G4VERBOSE
583 if (verboseLevel>0){
584 G4cout << "G4VUserPhysicsList::BuildPhysicsTable "
585 <<" : No Process Vector for "
586 << particle->GetParticleName() <<G4endl;
587 }
588#endif
589 G4Exception("G4VUserPhysicsList::BuildPhysicsTable",
590 "Run0272", FatalException,
591 "No process Vector");
592 return;
593 }
594 for (G4int j=0; j < pVector->size(); ++j) {
595 (*pVector)[j]->BuildPhysicsTable(*particle);
596 }
597 }
598}
599
600///////////////////////////////////////////////////////////////
602{
603 // Prepare the physics tables for every process for this particle type
604 // if particle is not ShortLived
605 if(!particle->IsShortLived()) {
606 G4ProcessManager* pManager = particle->GetProcessManager();
607 if (!pManager) {
608#ifdef G4VERBOSE
609 if (verboseLevel>0) {
610 G4cout<< "G4VUserPhysicsList::PreparePhysicsTable "
611 << ": No Process Manager for "
612 << particle->GetParticleName() <<G4endl;
613 G4cout << particle->GetParticleName()
614 << " should be created in your PhysicsList" <<G4endl;
615 }
616#endif
617 G4Exception("G4VUserPhysicsList::PreparePhysicsTable",
618 "Run0273", FatalException,
619 "No process manager");
620 return;
621 }
622
623 G4ProcessVector* pVector = pManager->GetProcessList();
624 if (!pVector) {
625#ifdef G4VERBOSE
626 if (verboseLevel>0) {
627 G4cout << "G4VUserPhysicsList::PreparePhysicsTable "
628 << ": No Process Vector for "
629 << particle->GetParticleName() <<G4endl;
630 }
631#endif
632 G4Exception("G4VUserPhysicsList::PreparePhysicsTable",
633 "Run0274", FatalException,
634 "No process Vector");
635 return;
636 }
637 for (G4int j=0; j < pVector->size(); ++j) {
638 (*pVector)[j]->PreparePhysicsTable(*particle);
639 }
640 }
641}
642
643///////////////////////////////////////////////////////////////
645 G4ParticleDefinition* particle)
646{
647 //*********************************************************************
648 // temporary addition to make the integral schema of electromagnetic
649 // processes work.
650 //
651
652 if ( (process->GetProcessName() == "Imsc") ||
653 (process->GetProcessName() == "IeIoni") ||
654 (process->GetProcessName() == "IeBrems") ||
655 (process->GetProcessName() == "Iannihil") ||
656 (process->GetProcessName() == "IhIoni") ||
657 (process->GetProcessName() == "IMuIoni") ||
658 (process->GetProcessName() == "IMuBrems") ||
659 (process->GetProcessName() == "IMuPairProd") ) {
660#ifdef G4VERBOSE
661 if (verboseLevel>2){
662 G4cout << "G4VUserPhysicsList::BuildIntegralPhysicsTable "
663 << " BuildPhysicsTable is invoked for "
664 << process->GetProcessName()
665 << "(" << particle->GetParticleName() << ")" << G4endl;
666 }
667#endif
668 process->BuildPhysicsTable(*particle);
669 }
670}
671
672///////////////////////////////////////////////////////////////
674{
676 G4int idx = 0;
677 while( (*theParticleIterator)() ){
679 G4cout << particle->GetParticleName();
680 if ((idx++ % 4) == 3) {
681 G4cout << G4endl;
682 } else {
683 G4cout << ", ";
684 }
685 }
686 G4cout << G4endl;
687}
688
689
690///////////////////////////////////////////////////////////////
692{
693 fDisplayThreshold = flag;
694}
695
696///////////////////////////////////////////////////////////////
698{
699 if(fDisplayThreshold==0) return;
702}
703
704
705///////////////////////////////////////////////////////////////
707{
708 G4bool ascii = fStoredInAscii;
709 G4String dir = directory;
710 if (dir.isNull()) dir = directoryPhysicsTable;
711 else directoryPhysicsTable = dir;
712
713 // store CutsTable info
714 if (!fCutsTable->StoreCutsTable(dir, ascii)) {
715 G4Exception("G4VUserPhysicsList::StorePhysicsTable",
716 "Run0281", JustWarning,
717 "Fail to store Cut Table");
718 return false;
719 }
720#ifdef G4VERBOSE
721 if (verboseLevel>2){
722 G4cout << "G4VUserPhysicsList::StorePhysicsTable "
723 << " Store material and cut values successfully" << G4endl;
724 }
725#endif
726
727 G4bool success= true;
728
729 // loop over all particles in G4ParticleTable
731 while( (*theParticleIterator)() ){
733 // Store physics tables for every process for this particle type
734 G4ProcessVector* pVector = (particle->GetProcessManager())->GetProcessList();
735 G4int j;
736 for ( j=0; j < pVector->size(); ++j) {
737 if (!(*pVector)[j]->StorePhysicsTable(particle,dir,ascii)){
738 G4String comment = "Fail to store physics table for ";
739 comment += (*pVector)[j]->GetProcessName();
740 comment += "(" + particle->GetParticleName() + ")";
741 G4Exception("G4VUserPhysicsList::StorePhysicsTable",
742 "Run0282", JustWarning,
743 comment);
744 success = false;
745 }
746 }
747 // end loop over processes
748 }
749 // end loop over particles
750 return success;
751}
752
753
754
755///////////////////////////////////////////////////////////////
757{
759 if(!directory.isNull()) {
760 directoryPhysicsTable = directory;
761 }
763 fIsRestoredCutValues = false;
764}
765
766///////////////////////////////////////////////////////////////
768 const G4String& directory,
769 G4bool ascii)
770{
771 G4int j;
772 G4bool success[100];
773 // Retrieve physics tables for every process for this particle type
774 G4ProcessVector* pVector = (particle->GetProcessManager())->GetProcessList();
775 for ( j=0; j < pVector->size(); ++j) {
776 success[j] =
777 (*pVector)[j]->RetrievePhysicsTable(particle,directory,ascii);
778
779 if (!success[j]) {
780#ifdef G4VERBOSE
781 if (verboseLevel>2){
782 G4cout << "G4VUserPhysicsList::RetrievePhysicsTable "
783 << " Fail to retrieve Physics Table for "
784 << (*pVector)[j]->GetProcessName() << G4endl;
785 G4cout << "Calculate Physics Table for "
786 << particle->GetParticleName() << G4endl;
787 }
788#endif
789 (*pVector)[j]->BuildPhysicsTable(*particle);
790 }
791 }
792 for ( j=0; j < pVector->size(); ++j) {
793 // temporary addition to make the integral schema
794 if (!success[j]) BuildIntegralPhysicsTable((*pVector)[j], particle);
795 }
796}
797
798
799///////////////////////////////////////////////////////////////
801{
802#ifdef G4VERBOSE
803 if (verboseLevel>2){
804 G4cout << "G4VUserPhysicsList::SetApplyCuts for " << name << G4endl;
805 }
806#endif
807 if(name=="all") {
812 } else {
814 }
815}
816
817///////////////////////////////////////////////////////////////
819{
821}
822
823
824////////////////////////////////////////////////////////
826{
829 }
830}
831
832////////////////////////////////////////////////////////
834{
836}
837
838////////////////////////////////////////////////////////
840{
842}
843
844////////////////////////////////////////////////////////
846 G4ParticleDefinition* particle)
847{
848 return thePLHelper->RegisterProcess(process, particle);
849}
850
851////////////////////////////////////////////////////////
853{
854 verboseLevel = value;
855 // set verboseLevel for G4ProductionCutsTable same as one for G4VUserPhysicsList:
857
859
860#ifdef G4VERBOSE
861 if (verboseLevel >1){
862 G4cout << "G4VUserPhysicsList::SetVerboseLevel :"
863 << " Verbose level is set to " << verboseLevel << G4endl;
864 }
865#endif
866}
867
868
869///////////////////////////////////////////////////////////////
870/// obsolete methods
871
872///////////////////////////////////////////////////////////////
874{
875#ifdef G4VERBOSE
876 if (verboseLevel>0){
877 G4cout << "G4VUserPhysicsList::ResetCuts() is obsolete."
878 << " This method gives no effect and you can remove it. "<< G4endl;
879 }
880#endif
881}
@ JustWarning
@ FatalException
@ RunMustBeAborted
double G4double
Definition: G4Types.hh:64
int G4int
Definition: G4Types.hh:66
bool G4bool
Definition: G4Types.hh:67
#define G4endl
Definition: G4ios.hh:52
G4DLLIMPORT std::ostream G4cout
G4ProcessManager * GetProcessManager() const
const G4String & GetParticleType() const
G4bool GetApplyCutsFlag() const
const G4String & GetParticleName() const
void SetProcessManager(G4ProcessManager *aProcessManager)
G4PTblDicIterator * GetIterator()
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
static G4ParticleTable * GetParticleTable()
G4bool RegisterProcess(G4VProcess *process, G4ParticleDefinition *particle)
void CheckParticleList() const
void UseCoupledTransportation(G4bool vl=true)
static G4PhysicsListHelper * GetPhysicsListHelper()
void SetVerboseLevel(G4int value)
void SetParticleType(const G4ParticleDefinition *)
G4ProcessVector * GetProcessList() const
G4int size() const
G4bool RetrieveCutsTable(const G4String &directory, G4bool ascii=false)
void SetVerboseLevel(G4int value)
G4bool StoreCutsTable(const G4String &directory, G4bool ascii=false)
void SetEnergyRange(G4double lowedge, G4double highedge)
static G4ProductionCutsTable * GetProductionCutsTable()
void SetProductionCut(G4double cut, G4int index=-1)
G4double GetProductionCut(G4int index) const
static G4RegionStore * GetInstance()
G4Region * GetRegion(const G4String &name, G4bool verbose=true) const
G4ProductionCuts * GetProductionCuts() const
G4bool isNull() const
virtual void BuildPhysicsTable(const G4ParticleDefinition &)
Definition: G4VProcess.hh:210
const G4String & GetProcessName() const
Definition: G4VProcess.hh:379
G4double GetCutValue(const G4String &pname) const
void SetDefaultCutValue(G4double newCutValue)
G4UserPhysicsListMessenger * theMessenger
void SetPhysicsTableRetrieved(const G4String &directory="")
G4VUserPhysicsList & operator=(const G4VUserPhysicsList &)
void PreparePhysicsTable(G4ParticleDefinition *)
void SetCutValue(G4double aCut, const G4String &pname)
G4bool RegisterProcess(G4VProcess *process, G4ParticleDefinition *particle)
void UseCoupledTransportation(G4bool vl=true)
void SetCutsForRegion(G4double aCut, const G4String &rname)
G4ProductionCutsTable * fCutsTable
G4bool StorePhysicsTable(const G4String &directory=".")
G4ParticleTable * theParticleTable
void SetVerboseLevel(G4int value)
void SetApplyCuts(G4bool value, const G4String &name)
void SetParticleCuts(G4double cut, G4ParticleDefinition *particle, G4Region *region=0)
virtual void RetrievePhysicsTable(G4ParticleDefinition *, const G4String &directory, G4bool ascii=false)
void ResetCuts()
obsolete methods
G4bool fIsCheckedForRetrievePhysicsTable
void DumpCutValuesTable(G4int flag=1)
G4bool GetApplyCuts(const G4String &name) const
void AddProcessManager(G4ParticleDefinition *newParticle, G4ProcessManager *newManager=0)
void BuildIntegralPhysicsTable(G4VProcess *, G4ParticleDefinition *)
G4ParticleTable::G4PTblDicIterator * theParticleIterator
G4PhysicsListHelper * thePLHelper
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41