Message: No gammas produced by Bremsstrahlung of electrons? Not Logged In (login)
 Next-in-Thread Next-in-Thread
 Next-in-Forum Next-in-Forum

None No gammas produced by Bremsstrahlung of electrons? 

Forum: Particles
Date: 24 Jan, 2009
From: Krisztian Balla <Krisztian Balla>

Dear forum members,

I'm trying to simulate an x-ray tube using Geant4. Unfortunately there are no gammas produced (or they are not visualised). Please see the attached image.

1.) Building the geometry is done like this:

/** This method constructs the X-Ray Tube. This covers the following parts:
    - the anode (Wolfram)
    - the filter (Aluminium)
    - the sensitive read-out region (Water :-)
    - the tube itself (filled with nothing -> vacuum)
    See the simulation model for the detailed placement and orientation of these parts.
    @returns   A pointer to the physical volume of the world (tube).
*/
G4VPhysicalVolume* XRayTubeConstruction::Construct()
{
  // === define the needed materials ===
  G4NistManager* man = G4NistManager::Instance();
  // 1.) Vacuum (absolute vacuum is not possible in Geant4, because the density would be 0; see Example 4.10 of G4BookForAppliDev.pdf)
  G4Material* vacuum = new G4Material("vacuum_pseudo", 1, 1.01*g/mole, universe_mean_density, kStateGas, 0.1*kelvin, 1.e-19*pascal);
  // 2.) Wolfram (= Tungsten)
  G4Material* W = new G4Material("Wolfram", 74, 179.95*g/mole, 18.4*g/cm3);
  // 3. Aluminium
  G4Material* Al = new G4Material("Aluminum", 13, 26.98*g/mole, 2.7*g/cm3);
  // 4. Water
  G4Material* H2O = man->FindOrBuildMaterial("G4_WATER");

  // === define the parts of the X-Ray Tube ===
  // 1.) tube = world volume (size.x=440mm, size.y=1080mm, size.z=440mm)
  G4Box* xr_tube_shape = new G4Box("xr_tube_box", 220.0*mm, 540.0*mm, 220.0*mm);
  G4LogicalVolume* xr_tube_log = new G4LogicalVolume(xr_tube_shape, vacuum, "xr_tube_log", 0, 0, 0);
  xr_tube = new G4PVPlacement(0, G4ThreeVector(), xr_tube_log, "xr_tube", 0, false, 0);
  // 2.) anode (size.x=10mm, size.y=30mm, size.z=30mm, alpha=-45°, theta=0°, phi=270°)
  G4Para* xr_anode_shape = new G4Para("xr_anode_parallelepiped", 5.0*mm, 15.0*mm, 15.0*mm, -0.7854, 0.0, 4.7124);
  G4LogicalVolume* xr_anode_log = new G4LogicalVolume(xr_anode_shape, W, "xr_anode_log", 0, 0, 0);
  xr_anode = new G4PVPlacement(0, G4ThreeVector(5.0, 500.0, 0.0), xr_anode_log, "xr_anode", xr_tube_log, false, 0);
  // 3.) filter (size.x=50mm, size.y=2mm, size.z=50mm)
  G4Box* xr_filter_shape = new G4Box("xr_filter_box", 25.0*mm, 1.0*mm, 25.0*mm);
  G4LogicalVolume* xr_filter_log = new G4LogicalVolume(xr_filter_shape, Al, "xr_filter_log", 0, 0, 0);
  xr_filter = new G4PVPlacement(0, G4ThreeVector(0.0, 449.0, 0.0), xr_filter_log, "xr_filter", xr_tube_log, false, 0);
  // 4.) sensitive region (size.x=400mm, size.y=2mm, size.z=400mm) having 40 stripes each (size.x=10mm, size.y=2mm, size.z=400mm)
  G4Box* xr_sensitive_shape = new G4Box("xr_sensitive_box", 200.0*mm, 1.0*mm, 200.0*mm);
  G4LogicalVolume* xr_sensitive_log = new G4LogicalVolume(xr_sensitive_shape, H2O, "xr_sensitive_log", 0, 0, 0);
  xr_sensitive = new G4PVPlacement(0, G4ThreeVector(0.0, -501.0, 0.0), xr_sensitive_log, "xr_sensitive", xr_tube_log, false, 0);
  G4Box* xr_sensitive_stripe = new G4Box("xr_sensitive_stripe_box", 5.0*mm, 1.0*mm, 200.0*mm);
  G4LogicalVolume* xr_sensitive_stripe_log = new G4LogicalVolume(xr_sensitive_stripe, H2O, "xr_sensitive_stripe_log", 0, 0, 0);
  xr_sensitive_stripes = new G4PVReplica("xr_sensitive", xr_sensitive_stripe_log, xr_sensitive, kXAxis, 40, 10.0, 0.0);

// TODO: assign a G4SensitiveDetector to the sensitive_stripes

  return xr_tube;
}

2.) I registered the processes of interest:

/** Register the needed low energy (electromagnetic) processes with Geant4.
*/
void XRayTubePhysicsList::ConstructEMProcess()
{
  theParticleIterator->reset();
  while((*theParticleIterator)())
  {
    G4ParticleDefinition* particle = theParticleIterator->value();
    G4ProcessManager* pmanager = particle->GetProcessManager();
    G4String particleName = particle->GetParticleName();
    // assign processes to the process manager of the particles
    if(particleName == "gamma")
    {
      // gamma     
      pmanager->AddDiscreteProcess(new G4LowEnergyRayleigh);         // Rayleigh-Scattering
      pmanager->AddDiscreteProcess(new G4LowEnergyPhotoElectric);    // Photo-Electric effects
      pmanager->AddDiscreteProcess(new G4LowEnergyCompton);          // Compton-Scattering
    }
    else if(particleName == "e-")
    {
      // electron
      pmanager->AddProcess(new G4MultipleScattering,      -1, 1, 1);  // Coulomb-Scattering
      pmanager->AddProcess(new G4LowEnergyBremsstrahlung, -1,-1, 2);  // Bremsstrahlung by electrons
      pmanager->AddProcess(new G4LowEnergyIonisation,     -1, 2, 3);  // Ionisation and energy loss by electrons
    }
}

3.) I use a GarticleGun to shoot electrons:

/** Construct a particle gun and make it shoot electrons of 100 keV.
*/
XRayTubePrimaryAction::XRayTubePrimaryAction()
{
  particleGun = new G4ParticleGun(1);
  particleGun->SetParticleDefinition(G4Electron::ElectronDefinition());
  particleGun->SetParticleEnergy(100*keV);
  particleGun->SetParticlePosition(G4ThreeVector(-100.0, 500.0, 0.0));
}

If I'm not mistaken, gammas should show up in the visulation as green tracks. Unfortunately I only see red (electron-) tracks.

Could somebody please help me?

Thanks in advance,

Krisztián

   Attachment:
      http://hypernews.slac.stanford.edu/HyperNews/geant4/get/AUX/2009/01/24/03.11-11010-xray-tube01.png

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

1 Question: Re: No gammas produced by Bremsstrahlung of electrons?   (Krisztian Balla - 24 Jan, 2009)
1 Sad: Re: No gammas produced by Bremsstrahlung of electrons?   (Krisztian Balla - 28 Jan, 2009)
(_ Idea: Re: No gammas produced by Bremsstrahlung of electrons?   (Krisztian Balla - 29 Jan, 2009)
2 Idea: Re: No gammas produced by Bremsstrahlung of electrons?   (Vladimir Ivanchenko - 02 Feb, 2009)
 Add Message Add Message
to: "No gammas produced by Bremsstrahlung of electrons?"

 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 ]