12.07.2015 Views

Geant4 User's Guide for Application Developers - Geant4 - CERN

Geant4 User's Guide for Application Developers - Geant4 - CERN

Geant4 User's Guide for Application Developers - Geant4 - CERN

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Tracking and Physicsa private data member of the G4Material class. The G4MaterialPropertiesTable is implemented asa hash directory, in which each entry consists of a value and a key. The key is used to quickly and efficientlyretrieve the corresponding value. All values in the dictionary are either instantiations of G4double or the classG4MaterialPropertyVector, and all keys are of type G4String.A G4MaterialPropertyVector is composed of instantiations of the class G4MPVEntry. TheG4MPVEntry is a pair of numbers, which in the case of an optical property, are the photon momentum andcorresponding property value. The G4MaterialPropertyVector is implemented as a G4std::vector,with the sorting operation defined as MPVEntry 1 < MPVEntry 2 == photon_momentum 1 < photon_momentum 2 .This results in all G4MaterialPropertyVectors being sorted in ascending order of photon momenta. It ispossible <strong>for</strong> the user to add as many material (optical) properties to the material as he wishes using the methodssupplied by the G4MaterialPropertiesTable class. An example of this is shown in Example 5.3.Example 5.3. Optical properties added to a G4MaterialPropertiesTable andlinked to a G4Materialconst G4int NUMENTRIES = 32;G4double ppckov[NUMENTRIES] = {2.034*eV, ......, 4.136*eV};G4double rindex[NUMENTRIES] = {1.3435, ......, 1.3608};G4double absorption[NUMENTRIES] = {344.8*cm, ......, 1450.0*cm];G4MaterialPropertiesTable *MPT = new G4MaterialPropertiesTable();MPT -> AddConstProperty("SCINTILLATIONYIELD",100./MeV);MPT -> AddProperty("RINDEX",ppckov,rindex,NUMENTRIES};MPT -> AddProperty("ABSLENGTH",ppckov,absorption,NUMENTRIES};scintillator -> SetMaterialPropertiesTable(MPT);5.2.5.1. Generation of Photons in processes/electromagnetic/xrays- Cerenkov EffectThe radiation of Cerenkov light occurs when a charged particle moves through a dispersive medium faster thanthe group velocity of light in that medium. Photons are emitted on the surface of a cone, whose opening anglewith respect to the particle's instantaneous direction decreases as the particle slows down. At the same time, thefrequency of the photons emitted increases, and the number produced decreases. When the particle velocity dropsbelow the local speed of light, the radiation ceases and the emission cone angle collapses to zero. The photonsproduced by this process have an inherent polarization perpendicular to the cone's surface at production.The flux, spectrum, polarization and emission of Cerenkov radiation in the AlongStepDoIt method of theclass G4Cerenkov follow well-known <strong>for</strong>mulae, with two inherent computational limitations. The first arisesfrom step-wise simulation, and the second comes from the requirement that numerical integration calculate theaverage number of Cerenkov photons per step. The process makes use of a G4PhysicsTable which containsincremental integrals to expedite this calculation.The time and position of Cerenkov photon emission are calculated from quantities known at the beginning of acharged particle's step. The step is assumed to be rectilinear even in the presence of a magnetic field. The user maylimit the step size by specifying a maximum (average) number of Cerenkov photons created during the step, usingthe SetMaxNumPhotonsPerStep(const G4int NumPhotons) method. The actual number generatedwill necessarily be different due to the Poissonian nature of the production. In the present implementation, theproduction density of photons is distributed evenly along the particle's track segment, even if the particle hasslowed significantly during the step.The frequently very large number of secondaries produced in a single step (about 300/cm in water), compelled theidea in GEANT3.21 of suspending the primary particle until all its progeny have been tracked. Despite the factthat GEANT4 employs dynamic memory allocation and thus does not suffer from the limitations of GEANT3.21with its fixed large initial ZEBRA store, GEANT4 nevertheless provides <strong>for</strong> an analogous functionality with thepublic method SetTrackSecondariesFirst. An example of the registration of the Cerenkov process isgiven in Example 5.4.166

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!