62 G4bool WLSPrimaryGeneratorAction::fFirst =
false;
114 for (
G4int i=0 ; i < numOfMaterials; i++) {
119 G4Material* aMaterial = (*theMaterialTable)[i];
124 if (aMaterialPropertiesTable) {
126 aMaterialPropertiesTable->
GetProperty(
"WLSCOMPONENT");
129 G4double currentIN = (*theWLSVector)[0];
130 if (currentIN >= 0.0) {
133 aPhysicsOrderedFreeVector->
134 InsertValues(currentPM , currentCII);
143 currentPM = theWLSVector->
Energy(j);
144 currentIN = (*theWLSVector)[j];
145 currentCII = 0.5 * (prevIN + currentIN);
146 currentCII = prevCII + (currentPM - prevPM) * currentCII;
147 aPhysicsOrderedFreeVector->
148 InsertValues(currentPM, currentCII);
150 prevCII = currentCII;
169 #ifdef use_sampledEnergy
174 for (
size_t j=0 ; j<theMaterialTable->size() ; j++) {
175 G4Material* fMaterial = (*theMaterialTable)[j];
176 if (fMaterial->
GetName() ==
"PMMA" ) {
180 aMaterialPropertiesTable->
GetProperty(
"WLSCOMPONENT");
190 sampledEnergy = WLSIntegral->
GetEnergy(CIIvalue);
211 void WLSPrimaryGeneratorAction::SetOptPhotonPolar()
214 SetOptPhotonPolar(angle);
223 G4cout <<
"-> warning from WLSPrimaryGeneratorAction::SetOptPhotonPolar()"
224 <<
": the ParticleGun is not an opticalphoton" <<
G4endl;
234 if (modul2 > 0.) e_perpend = (1./std::sqrt(modul2))*product;
237 G4ThreeVector polar = std::cos(angle)*e_paralle + std::sin(angle)*e_perpend;
244 void WLSPrimaryGeneratorAction::SetOptPhotonTime()
Definition of the WLSPrimaryGeneratorAction class.
void GeneratePrimaryVertex(G4Event *)
const G4String & GetName() const
Definition of the WLSPrimaryGeneratorMessenger class.
static G4MaterialTable * GetMaterialTable()
std::vector< G4Material * > G4MaterialTable
static G4double angle[DIM]
size_t GetVectorLength() const
G4PhysicsTable * fIntegralTable
#define G4MUTEX_INITIALIZER
const G4String & GetParticleName() const
Definition of the WLSDetectorConstruction class.
void SetParticleTime(G4double aTime)
static double normal(HepRandomEngine *eptr)
G4GLOB_DLL std::ostream G4cout
void SetParticlePolarization(G4ThreeVector aVal)
static constexpr double eV
G4double Energy(size_t index) const
static size_t GetNumberOfMaterials()
G4ParticleDefinition * GetParticleDefinition() const
G4double GetEnergy(G4double aValue)
virtual ~WLSPrimaryGeneratorAction()
WLSPrimaryGeneratorAction(WLSDetectorConstruction *)
G4MaterialPropertiesTable * GetMaterialPropertiesTable() const
G4ThreeVector GetParticleMomentumDirection() const
void SetDecayTimeConstant(G4double)
virtual void GeneratePrimaries(G4Event *)
void insertAt(size_t, G4PhysicsVector *)
Hep3Vector cross(const Hep3Vector &) const
static constexpr double deg
void BuildEmissionSpectrum()
G4MaterialPropertyVector * GetProperty(const char *key)
void SetOptPhotonPolar(G4double)