Message: Scintillation Problem Not Logged In (login)
 Next-in-Thread Next-in-Thread
 Next-in-Forum Next-in-Forum

None Scintillation Problem 

Forum: Processes Involving Optical Photons
Date: 14 Apr, 2009
From: <jdswado@gatech.edu>

Hello all,

I can't seem to get scintillation to occur in my detector volume. The problem runs fine and gammas scatter and create electrons like they should but no optical photons ever get created. Here's the pertinent code I'm using:

---------------------From PhysicsList.cc----------------------------------------

 PhysicsList::PhysicsList():  G4VUserPhysicsList()
{
  theCerenkovProcess           = 0;
  theScintillationProcess      = 0;
  theAbsorptionProcess         = 0;
  theRayleighScatteringProcess = 0;
  theBoundaryProcess           = 0; 

  defaultCutValue = 1.0*cm;
   SetVerboseLevel(1);
}

PhysicsList::~PhysicsList() {}

void PhysicsList::ConstructParticle()
{
  ConstructBosons();
  ConstructLeptons();
}

void PhysicsList::ConstructBosons()
{ G4Gamma::GammaDefinition();
  G4OpticalPhoton::OpticalPhotonDefinition();
}

void PhysicsList::ConstructLeptons()
{ G4Electron::ElectronDefinition();
  G4Positron::PositronDefinition();
  G4NeutrinoE::NeutrinoEDefinition();
  G4AntiNeutrinoE::AntiNeutrinoEDefinition();
}

void PhysicsList::ConstructProcess()
{
  AddTransportation();
  ConstructEM();
  ConstructGeneral();
  ConstructOp();
  AddStepMax();
}
include "G4ComptonScattering.hh"
#include "G4GammaConversion.hh"
#include "G4PhotoElectricEffect.hh"
#include "G4eMultipleScattering.hh"
#include "G4eIonisation.hh"
#include "G4eBremsstrahlung.hh"
#include "G4eplusAnnihilation.hh"

void PhysicsList::ConstructOp()
{
  theCerenkovProcess           = new G4Cerenkov("Cerenkov");
  theScintillationProcess = new G4Scintillation("Scintillation");
  theAbsorptionProcess     = new G4OpAbsorption();
  theRayleighScatteringProcess = new G4OpRayleigh();
  theBoundaryProcess  = new G4OpBoundaryProcess();

  theCerenkovProcess->SetMaxNumPhotonsPerStep(20);
  theCerenkovProcess->SetMaxBetaChangePerStep(10.0);
  theCerenkovProcess->SetTrackSecondariesFirst(true);

  theScintillationProcess->SetScintillationYieldFactor(1.);
  theScintillationProcess->SetTrackSecondariesFirst(true);
// Use Birks Correction in the Scintillation process
  G4EmSaturation* emSaturation = G4LossTableManager::Instance()->EmSaturation();
  theScintillationProcess->AddSaturation(emSaturation);

  G4OpticalSurfaceModel themodel = unified;
  theBoundaryProcess->SetModel(themodel);

  theParticleIterator->reset();
  while( (*theParticleIterator)() ){
    G4ParticleDefinition* particle = theParticleIterator->value();
    G4ProcessManager* pmanager = particle->GetProcessManager();
    G4String particleName = particle->GetParticleName();
    if (theCerenkovProcess->IsApplicable(*particle)) {
      pmanager->AddProcess(theCerenkovProcess);
      pmanager->SetProcessOrdering(theCerenkovProcess,idxPostStep);
    }
    if (theScintillationProcess->IsApplicable(*particle)) {
      pmanager->AddProcess(theScintillationProcess);
      pmanager->SetProcessOrderingToLast(theScintillationProcess, idxAtRest);
      pmanager->SetProcessOrderingToLast(theScintillationProcess, idxPostStep);
    }
    if (particleName == "opticalphoton") {
      G4cout << " AddDiscreteProcess to OpticalPhoton " << G4endl;
      pmanager->AddDiscreteProcess(theAbsorptionProcess);
      pmanager->AddDiscreteProcess(theRayleighScatteringProcess);
      pmanager->AddDiscreteProcess(theBoundaryProcess);
    }
  }
}

#include "G4StepLimiter.hh"
#include "G4UserSpecialCuts.hh"

void PhysicsList::AddStepMax()
{
  G4StepLimiter* stepLimiter = new G4StepLimiter();

  theParticleIterator->reset();
  while ((*theParticleIterator)()){
      G4ParticleDefinition* particle = theParticleIterator->value();
      G4ProcessManager* pmanager = particle->GetProcessManager();

      if (particle->GetPDGCharge() != 0.0)
        {
	  pmanager ->AddDiscreteProcess(stepLimiter);
        }
  }
}

------------------------End of PhysicsList.cc----------------------------------

------------------------ConstructDetector.cc-----------------------------------

#include "DetectorConstruction.hh"

#include "G4Material.hh"
#include "G4MaterialTable.hh"
#include "G4Box.hh"
#include "G4Tubs.hh"
#include "G4LogicalVolume.hh"
#include "G4ThreeVector.hh"
#include "G4PVPlacement.hh"
#include "globals.hh"
#include "G4Colour.hh"           
#include "G4VisAttributes.hh"                   
#include "G4ios.hh"  

DetectorConstruction::DetectorConstruction()
 :  experimentalHall_log(0), scint_log(0), Wrap_log(0),
    AL_log(0), AL_phys(0), Glass_log(0), Glass_phys(0),
    experimentalHall_phys(0),scint_phys(0), worldVisAtt(0), 
    cylinderVisAtt(0), HousingVisAtt(0), GlassVisAtt(0)
{;}

DetectorConstruction::~DetectorConstruction() { }

G4VPhysicalVolume* DetectorConstruction::Construct() { //Scintillation Volume Properties const G4int nEntries = 38;

 G4double PhotonEnergy[nEntries] =
            { 3.2627, 3.1791, 3.0996, 3.024, 2.952,
              2.8833, 2.8178, 2.7552, 2.6953, 2.6379,
              2.583, 2.5303, 2.48, 2.431, 2.3843,
              2.3393, 2.296, 2.254, 2.214, 2.1751,
              2.1376, 2.1014, 2.0664, 2.0325, 1.9997,
              1.9678, 1.9372, 1.9074, 1.8785, 1.8505,
              1.8233, 1.7969, 1.7712, 1.7462, 1.722,
              1.6984, 1.6754, 1.6531};

  G4double RefractiveIndex1[nEntries] =
            { 1.84208, 1.83556,  1.82965, 1.82427,  1.81936,
              1.81486, 1.81072,  1.80691, 1.80339,  1.80013,
              1.79711, 1.7943,  1.79168, 1.78923,  1.78695,
              1.78481, 1.7828,  1.78091, 1.77914,  1.77747,
              1.77589, 1.7744,  1.773, 1.77166,  1.7704,
              1.7692, 1.76807,  1.76699, 1.76596,  1.76498,
              1.76405, 1.76316, 1.76231, 1.7615, 1.76072,
              1.75998, 1.75927, 1.75859};

  G4double Absorption1[nEntries] =
            { 0.5, 0.5,  0.5, 0.5,  0.5,
              0.5, 0.5,  0.5, 0.5,  0.5,
              0.5, 0.5,  0.5, 0.5,  0.5,
              0.5, 0.5,  0.5, 0.5,  0.5,
              0.5, 0.5,  0.5, 0.5,  0.5,
              0.5, 0.5,  0.5, 0.5,  0.5,
              0.5, 0.5};

  G4double ScintilFast[nEntries] =
            { 0.081731856, 0.100158264, 0.108523626, 0.113045444, 0.11304544,
              0.104001809, 0.08907981, 0.077436129, 0.058783631, 0.045218178,
              0.03572236, 0.027130907, 0.019443816, 0.013000226, 0.009156681,
              0.004521818, 0.0, 0.0, 0.0, 0.0,
              0.0, 0.0, 0.0, 0.0, 0.0,
              0.0, 0.0, 0.0, 0.0, 0.0,
              0.0, 0.0};

  G4MaterialPropertiesTable* myMPT1 = new G4MaterialPropertiesTable();
  myMPT1->AddProperty("RINDEX",       PhotonEnergy, RefractiveIndex1,nEntries);
  myMPT1->AddProperty("ABSLENGTH",    PhotonEnergy, Absorption1,     nEntries);
  myMPT1->AddProperty("FASTCOMPONENT",PhotonEnergy, ScintilFast,     nEntries);

  myMPT1->AddConstProperty("SCINTILLATIONYIELD",38000./MeV);
  myMPT1->AddConstProperty("RESOLUTIONSCALE",1.0);
  myMPT1->AddConstProperty("FASTTIMECONSTANT", 1.*ns);

//NaI(Tl) Detector Material

  G4Element* I =
  new G4Element("Iodine", "I", z= 53., a= 126.9*g/mole);
  G4Element* Tl=
  new G4Element("Thallium", "Tl", z= 81., a=204.3833*g/mole);

  G4Material* NaI = new G4Material("NaI", density= 3.7*g/cm3, 3);
  NaI->AddElement(Na,0.495);
  NaI->AddElement(I,0.495);
  NaI->AddElement(Tl,0.01);
  NaI->SetMaterialPropertiesTable(myMPT1);

----------------------------------------------------------------------------

I've tried several different things but this just does not create optical photons, any suggestions or ideas would be terrific.

Thank you very much, Jason

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

1 Feedback: Re: Scintillation Problem   (Gumplinger Peter - 06 May, 2009)
 Add Message Add Message
to: "Scintillation Problem"

 Subscribe Subscribe

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