4 #include "G4OpAbsorption.hh" 5 #include "G4OpBoundaryProcess.hh" 6 #include "G4OpRayleigh.hh" 7 #include "G4OpticalPhoton.hh" 11 #include "G4ProcessManager.hh" 13 #include "G4Cerenkov.hh" 35 G4OpticalPhoton::OpticalPhotonDefinition();
41 string hd_msg =
gemcOpt.
args[
"LOG_MSG"].args +
" Optical Physics List: <<< ";
43 cout << hd_msg <<
" Building Optical Physics processes " << endl;
50 G4Cerenkov* theCerenkovProcess =
new G4Cerenkov(
"Cerenkov");
51 theCerenkovProcess->SetMaxNumPhotonsPerStep(200);
52 theCerenkovProcess->SetTrackSecondariesFirst(
true);
54 G4OpAbsorption* theAbsorptionProcess =
new G4OpAbsorption();
55 G4OpRayleigh* theRayleighScattering =
new G4OpRayleigh();
57 G4OpBoundaryProcess* theBoundaryProcess =
new G4OpBoundaryProcess();
59 G4OpWLS* theWLSProcess =
new G4OpWLS();
60 theWLSProcess->UseTimeProfile(
"delta");
62 G4ProcessManager * pManager = 0;
64 if(VERB > 2) cout << hd_msg << endl
65 <<
" > Optical Photon: " << endl
66 <<
" Absorption " << endl
67 <<
" Rayleigh Scattering" << endl
68 <<
" Boundary Processes" << endl
69 <<
" WaveLength Shifting " << endl;
70 pManager = G4OpticalPhoton::OpticalPhoton()->GetProcessManager();
71 pManager->AddDiscreteProcess(theAbsorptionProcess);
72 pManager->AddDiscreteProcess(theRayleighScattering);
73 pManager->AddDiscreteProcess(theBoundaryProcess);
74 pManager->AddDiscreteProcess(theWLSProcess);
76 theParticleIterator->reset();
77 while( (*theParticleIterator)() )
79 G4ParticleDefinition* particle = theParticleIterator->value();
80 string particleName = particle->GetParticleName();
82 pManager = particle->GetProcessManager();
83 if(theCerenkovProcess->IsApplicable(*particle))
85 if(VERB > 2) cout << hd_msg <<
" " << particleName <<
": Cerenkov Process" << endl;
86 pManager->AddProcess(theCerenkovProcess);
87 pManager->SetProcessOrdering(theCerenkovProcess, idxPostStep);
92 if(VERB > 2) cout << hd_msg <<
" " << particleName <<
": Scintillation Process" << endl;
103 string hd_msg =
gemcOpt.
args[
"LOG_MSG"].args +
" Optical Physics List: <<< ";
106 if(VERB > 2) cout << hd_msg <<
" Scintillation yield factor: " << yf << endl;
void SetScintYieldFactor(G4double yf)
OpticalPhysics(gemc_opts)
virtual void ConstructParticle()
virtual void ConstructProcess()
map< string, opts > args
Options map.
G4Scintillation * theScintProcess
virtual ~OpticalPhysics()