Message: Re: No reallocation step after reflection Not Logged In (login)
 Next-in-Thread Next-in-Thread
 Next-in-Forum Next-in-Forum

Question Re: No reallocation step after reflection 

Forum: Processes Involving Optical Photons
Re: None No reallocation step after reflection (Gabriel Magill)
Re: Question Re: No reallocation step after reflection (Marcus O'Flaherty)
Date: 31 Mar, 2017
From: Marcus O'Flaherty <Marcus O'Flaherty>

Hi again, So this dropped off our radar for a while, mainly because we were experiencing a drastic slow-down of our simulation which seemed to be coming from photon tracking taking. After making some adjustments to reduce that, this issue was happening much less frequently, so it's priority became pretty low.

However, I now have time to return to the issue, and have simulated with tracking verbosity 1 and the printouts you asked. When I ran the simulation the result was as follows:

  * G4Track Information:   Particle = opticalphoton,   Track ID = 2046,   Parent ID = 42
  ------  [ preceding steps cut ] ------------
  Step#    X(mm)    Y(mm)    Z(mm)   KinE(MeV)    dE(MeV) StepLeng TrackLeng  NextVolume  ProcName
  139     -640      760    4.21e+03  3.04e-06        0     13.4       676     paddle_phys Transportation
  fExpectedNextStatus is StepTooSmall, boundaryStatus is StepTooSmall
  presteppoint material is Vacuum, poststeppoint material is Scinti
  141     -629      766    4.21e+03  3.04e-06        0     13.4       689     totMRDphys  Transportation
  fExpectedNextStatus is Undefined, boundaryStatus is SpikeReflection
  presteppoint material is Scinti, poststeppoint material is Vacuum
  142     -629      766    4.21e+03  3.04e-06        0 9.13e-10       689     paddle_phys Transportation
  fExpectedNextStatus is StepTooSmall, boundaryStatus is FresnelReflection
  presteppoint material is Vacuum, poststeppoint material is Scinti
  error: presteppoint volume is totMRDphys, poststeppoint volume is paddle_phys

  -------- EEEE ------- G4Exception-START -------- EEEE -------
  *** G4Exception : WCSimExpl01
      issued by : WCSimSteppingAction::UserSteppingAction()
  WCSimSteppingAction::UserSteppingAction(): No reallocation step after reflection!
  Something is wrong with the surface normal or geometry

  *** Fatal Exception *** core dump ***
  -------- EEEE -------- G4Exception-END --------- EEEE -------

  *** G4Exception: Aborting execution ***

As can be seen, there are 140 reflections that work as expected, but then inexplicably the system performs a FresnelRelection immediately following a SpikeReflection, without any intermediate StepTooSmall or other steps.

The system optics is as follows: totMRDphys is the mother volume, which as described has G4Material Vacuum, for which I have only defined a refractive index of 1, and no other optical properties:

  G4double density     = CLHEP::universe_mean_density;
  G4double pressure    = 1.e-19*CLHEP::pascal;
  G4double temperature = 0.1*CLHEP::kelvin;
  G4double a = 1.01*CLHEP::g/CLHEP::mole;
  G4Material* Vacuum = 
    new G4Material("Vacuum", 1., a, density,
  G4double PHOTENERGY_vacuum[2] = { 1.4E-9*CLHEP::GeV,6.2E-9*CLHEP::GeV};
  G4double RINDEX_vacuum[2] = { 1.0, 1.0 };
  G4MaterialPropertiesTable *MPTvacuum = new G4MaterialPropertiesTable();
  MPTvacuum->AddProperty("RINDEX", PHOTENERGY_vacuum, RINDEX_vacuum, 2);

paddle_phys is a plastic scintillating paddle. It has the following optical properties:

  const G4int nEntriesPhot = 4;
  G4double photonEnergyArr[] = {2.00*eV,2.87*eV,2.90*eV,3.47*eV}; 
  G4double refractiveIndexPS[] = { 1.5, 1.5, 1.5, 1.5};
  G4double absPS[] = {124.*cm, 124.*cm, 124.*cm, 124.*cm};
  G4double scintilFast[] = {0.00, 0.00, 1.00, 1.00};
  G4MaterialPropertiesTable* MPTPStyrene = new G4MaterialPropertiesTable();
  MPTPStyrene->AddProperty("FASTCOMPONENT",photonEnergyArr, scintilFast,nEntriesPhot);
  MPTPStyrene->AddConstProperty("SCINTILLATIONYIELD", 10./keV);
  MPTPStyrene->AddConstProperty("FASTTIMECONSTANT", 10.*ns);

Between the two I have defined a reflective surface, to model the reflective mylar wrapping on the paddles. I've used the following at the moment, although I don't have any measurements (or real sense) of values to use, so they may be unrealistic:

  scintSurface_op = new G4OpticalSurface("mylarSurface",unified, polishedbackpainted, dielectric_dielectric);
  const G4int mylarmptentries = 2;
  G4double mylar_Energy[mylarmptentries] = {2.038*eV, 4.144*eV};
  G4double mylar_rindex[mylarmptentries] = {1.0, 1.0};
  G4double mylar_specularspike[mylarmptentries] = {0.8, 0.8};
  G4double mylar_specularlobe[mylarmptentries] = {0.1, 0.1};
  MPTmylarSurface = new G4MaterialPropertiesTable();
  MPTmylarSurface -> AddProperty("RINDEX",mylar_Energy,mylar_rindex,mylarmptentries);
  MPTmylarSurface -> AddProperty("SPECULARLOBECONSTANT",mylar_Energy,mylar_specularlobe,mylarmptentries);
  MPTmylarSurface -> AddProperty("SPECULARSPIKECONSTANT",mylar_Energy,mylar_specularspike,mylarmptentries);

Finally this is placed between the two volumes as follows:

  G4LogicalBorderSurface* scintSurface_log = new G4LogicalBorderSurface("scintcladdinglog",paddle_phys,totMRD_phys,scintSurface_op);

Is there anything in the way I'm implementing this that looks problematic? What next steps could I take to debug it? Many thanks, Marcus

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

1 Feedback: Re: No reallocation step after reflection   (Gumplinger Peter - 25 Apr, 2017)
 Add Message Add Message
to: "Re: No reallocation step after reflection"

 Subscribe Subscribe

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