Message: fluorescence lines with new physics list Not Logged In (login)
 Next-in-Thread Next-in-Thread
 Next-in-Forum Next-in-Forum

None fluorescence lines with new physics list 

Forum: Physics List
Date: 01 Mar, 2010
From: Patrick Sizun <Patrick Sizun>

Hello,

I have been trying to upgrade my physics list for Geant 4.9.3 in order not to use deprecated classes. The Livermore documentation states that "fluorescence is automatically activated for gamma photo electric effect and for electron ionisation".

However, there are no fluorescence lines or any lines in my new spectra.

Below are extracts from my old and new physics lists. I would appreciate if some one could have a look and find out if I am doing something wrong with processes or cuts or ...

Thanks, Patrick

Old physics list:
 void TelescopePhysicsList::ConstructOldEM()
 {
	theParticleIterator->reset();
	while( (*theParticleIterator)() )
	{
		G4ParticleDefinition* particle = theParticleIterator->value();
		G4ProcessManager* pmanager = particle->GetProcessManager();
		G4String particleName = particle->GetParticleName();

		if (particleName == "gamma") {
			// gamma
			pmanager->AddDiscreteProcess(new G4LowEnergyCompton);

			G4LowEnergyPhotoElectric* lowEnerPhotoElec;
			lowEnerPhotoElec = new G4LowEnergyPhotoElectric();
			lowEnerPhotoElec->ActivateAuger(true);
			lowEnerPhotoElec->SetCutForLowEnSecPhotons(0.250 * keV);
			lowEnerPhotoElec->SetCutForLowEnSecElectrons(0.250 * keV);
			pmanager->AddDiscreteProcess(lowEnerPhotoElec);

			pmanager->AddDiscreteProcess(new G4LowEnergyRayleigh("Rayleigh"));
			pmanager->AddDiscreteProcess(new G4LowEnergyGammaConversion);

		} else if (particleName == "e-") {
			//electron
			pmanager->AddProcess(new G4MultipleScattering,-1, 1,1);

			G4LowEnergyIonisation *lowEnerIon = new G4LowEnergyIonisation;
			lowEnerIon->ActivateAuger(true);
			lowEnerIon->SetCutForLowEnSecPhotons(0.1*keV);
			lowEnerIon->SetCutForLowEnSecElectrons(0.1*keV);
			pmanager->AddProcess(lowEnerIon, -1,  2, 2);
			pmanager->AddProcess(new G4LowEnergyBremsstrahlung, -1, -1, 3);

		} else if (particleName == "e+") {
			//positron
			pmanager->AddProcess(new G4MultipleScattering,-1, 1,1);
			pmanager->AddProcess(new G4eIonisation,       -1, 2,2);
			pmanager->AddProcess(new G4eBremsstrahlung,   -1,-1,3);
			pmanager->AddProcess(new G4eplusAnnihilation,  0,-1,4);

		} else if (particleName == "proton") {
			// proton
			pmanager->AddProcess(new G4hMultipleScattering(),-1,1,1);

			G4hLowEnergyIonisation *lowEnerIon = new G4hLowEnergyIonisation();
			lowEnerIon->SetElectronicStoppingPowerModel(particle,"ICRU_R49He");
			lowEnerIon->SetNuclearStoppingOn();
			lowEnerIon->SetNuclearStoppingPowerModel("ICRU_R49");
			lowEnerIon->SetFluorescence(true);
			lowEnerIon->ActivateAugerElectronProduction(true);
			pmanager->AddProcess(lowEnerIon,-1,2,2);

		} else if (   particleName == "alpha" || particleName == "GenericIon") {
			pmanager->AddProcess(new G4hMultipleScattering(),-1,1,1);

			G4hLowEnergyIonisation *lowEnerIon = new G4hLowEnergyIonisation();
			lowEnerIon->SetElectronicStoppingPowerModel(particle,"ICRU_R49He");
			lowEnerIon->SetNuclearStoppingOn();
			lowEnerIon->SetNuclearStoppingPowerModel("ICRU_R49");
			lowEnerIon->SetFluorescence(true);
			lowEnerIon->ActivateAugerElectronProduction(true);
			pmanager->AddProcess(lowEnerIon,-1,2,2);
		}
	}
 }

New physics list:
 void TelescopePhysicsList::ConstructNewEM()
{
	theParticleIterator->reset();
	while ((*theParticleIterator)())
	{
		G4ParticleDefinition* particle = theParticleIterator->value();
		G4ProcessManager* pmanager = particle->GetProcessManager();
		G4String particleName = particle->GetParticleName();

		if (particleName == "gamma")
		{
			// gamma
			G4PhotoElectricEffect* thePhotoElectricEffect = new G4PhotoElectricEffect();
			G4LivermorePhotoElectricModel* theLivermorePhotoElectricModel = new G4LivermorePhotoElectricModel();
			theLivermorePhotoElectricModel->ActivateAuger(true);
			theLivermorePhotoElectricModel->SetCutForLowEnSecPhotons(0.010*keV);
			theLivermorePhotoElectricModel->SetCutForLowEnSecElectrons(0.010*keV);
			thePhotoElectricEffect->SetModel(theLivermorePhotoElectricModel);
			pmanager->AddDiscreteProcess(thePhotoElectricEffect);

			G4ComptonScattering* theComptonScattering = new G4ComptonScattering();
			G4LivermoreComptonModel* theLivermoreComptonModel = new G4LivermoreComptonModel();
			theComptonScattering->SetModel(theLivermoreComptonModel);
			pmanager->AddDiscreteProcess(theComptonScattering);

			G4GammaConversion* theGammaConversion = new G4GammaConversion();
			G4LivermoreGammaConversionModel* theLivermoreGammaConversionModel = new G4LivermoreGammaConversionModel();
			theGammaConversion->SetModel(theLivermoreGammaConversionModel);
			pmanager->AddDiscreteProcess(theGammaConversion);

			G4RayleighScattering* theRayleigh = new G4RayleighScattering();
			G4LivermoreRayleighModel* theRayleighModel = new G4LivermoreRayleighModel();
			theRayleigh->SetModel(theRayleighModel);
			pmanager->AddDiscreteProcess(theRayleigh);

      			//pmanager->AddProcess(new G4StepLimiter(), -1, -1, 5);
		}
		else if (particleName == "e-")
		{
			// electron
			// Multiple scattering
			G4eMultipleScattering* msc = new G4eMultipleScattering();
			pmanager->AddProcess(msc, -1, 1, 1);

			// Ionisation
			G4eIonisation* eIoni = new G4eIonisation();
			G4LivermoreIonisationModel* theLivermoreIonisationModel = new G4LivermoreIonisationModel();
			theLivermoreIonisationModel->ActivateAuger(true);
			eIoni->SetEmModel(theLivermoreIonisationModel);
			eIoni->SetStepFunction(0.2, 100*um);
			pmanager->AddProcess(eIoni, -1, 2, 2);

			// Bremsstrahlung
			G4eBremsstrahlung* eBrem = new G4eBremsstrahlung();
			eBrem->SetEmModel(new G4LivermoreBremsstrahlungModel());
			pmanager->AddProcess(eBrem, -1, -3, 3);

			//pmanager->AddProcess(new G4StepLimiter(), -1, -1, 4);
		}
		else if (particleName == "e+")
		{
			// positron
			pmanager->AddProcess(new G4eMultipleScattering(), -1, 1, 1);
			pmanager->AddProcess(new G4eIonisation(), -1, 2, 2);
			pmanager->AddProcess(new G4eBremsstrahlung(), -1, -1, 3);
			pmanager->AddProcess(new G4eplusAnnihilation(), 0, -1, 4);

		}
		else if (particleName == "proton")
		{
			// proton
			pmanager->AddProcess(new G4hMultipleScattering(), -1, 1, 1);
			G4hLowEnergyIonisation* lowEnerIon = new G4hLowEnergyIonisation();
			lowEnerIon->SetElectronicStoppingPowerModel(particle,"ICRU_R49He");
			lowEnerIon->SetNuclearStoppingOn();
			lowEnerIon->SetNuclearStoppingPowerModel("ICRU_R49");
			lowEnerIon->SetFluorescence(true);
			lowEnerIon->ActivateAugerElectronProduction(true);
			pmanager->AddProcess(lowEnerIon, -1, 2, 2);
		}
		else if (particleName == "alpha" || particleName == "GenericIon")
		{
			pmanager->AddProcess(new G4hMultipleScattering(), -1, 1, 1);
			G4hLowEnergyIonisation* lowEnerIon = new G4hLowEnergyIonisation();
			lowEnerIon->SetElectronicStoppingPowerModel(particle,"ICRU_R49He");
			lowEnerIon->SetNuclearStoppingOn();
			lowEnerIon->SetNuclearStoppingPowerModel("ICRU_R49");
			lowEnerIon->SetFluorescence(true);
			lowEnerIon->ActivateAugerElectronProduction(true);
			pmanager->AddProcess(lowEnerIon, -1, 2, 2);
		}
	}
 }

   Attachment:
      http://hypernews.slac.stanford.edu/HyperNews/geant4/get/AUX/2010/03/01/01.36-26238-physics_list_raw.png

Inline Depth:
 1 1
 All All
Outline Depth:
 1 1
 2 2
 All All
Add message: (add)

1 None: Re: fluorescence lines with new physics list   (SIZUN Patrick - 08 Mar, 2010)
 Add Message Add Message
to: "fluorescence lines with new physics list"

 Subscribe Subscribe

This site runs SLAC HyperNews version 1.11-slac-98, derived from the original HyperNews


[ Geant 4 Home | Geant 4 HyperNews | Search | Request New Forum | Feedback ]