Message: Error getting constant RINDEX property using G4OpticalBoundaryProcess Not Logged In (login)
 Next-in-Thread Next-in-Thread
 Next-in-Forum Next-in-Forum

Question Error getting constant RINDEX property using G4OpticalBoundaryProcess 

Forum: Processes Involving Optical Photons
Date: 13 Mar, 2011
From: Sam Blake <Sam Blake>

Hello,

My name is Sam Blake and I have a question about some of the differences between getting/setting properties and constant properties. In my DetectorConstruction.cc I have assigned a constant RINDEX to one of my materials according to the following:

 myMPT3->AddConstProperty("RINDEX", 2.4);
 Sci->SetMaterialPropertiesTable(myMPT3);

When I run my simulation, anytime the G4OpBoundaryProcess class gets called (with verboseLevel > 0), I receive the "Photon at Boundary! ... ***NoRINDEX***" warning.

If, instead, I modify my DetectorConstruction.cc class to assign RINDEX according to the following:

 const G4int nEntries3 = 9;
 G4double ScntE[nEntries3] = { 6.6*eV, 6.7*eV, 6.8*eV, 6.9*eV, 7.0*eV, 7.1*eV, 7.2*eV, 7.3*eV, 7.4*eV };
 G4double RI3[nEntries3] = { 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4 };
 myMPT3->AddProperty("RINDEX", ScntE, RI3, nEntries3);
 Sci->SetMaterialPropertiesTable(myMPT3);	

I no longer receive the ***NoRINDEX*** warning, and the expected optical processes appear to take place whenever G4OpBoundaryProcess gets invoked.

After looking into the way properties are set in G4MaterialPropertiesTable class, it appears as though properties set using AddProperty(key,E[ ],value[ ],num) and those set using AddConstProperty(key, G4double) are stored separately.

It also looks like when the G4OpBoundaryProcess class is called, it attempts to find the RINDEX using:

if (aMaterialPropertiesTable) {
		Rindex = aMaterialPropertiesTable->GetProperty("RINDEX");
} 

A few lines later, it tries to get the RINDEX value using:

if (Rindex) {
		Rindex1 = Rindex->GetProperty(thePhotonMomentum);
	}
	else {
	        theStatus = NoRINDEX;

If I understand this correctly (which I may not!), the above methods call GetProperty("RINDEX") to find the required RINDEX. However, if RINDEX was set using AddConstProperty("RINDEX",#), then am I right in saying that these methods will not find the constant RINDEX, and therefore set theStatus=NoRINDEX, triggering the ***NoRINDEX*** warning and calling ProposeTrackStatus(fStopAndKill)?

Thank you very much in advance and I look forward to your comments.

Regards, Sam

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

1 Feedback: Re: Error getting constant RINDEX property using G4OpticalBoundaryProcess   (Gumplinger Peter - 14 Mar, 2011)
(_ None: Re: Error getting constant RINDEX property using G4OpticalBoundaryProcess   (Sam Blake - 14 Mar, 2011)
 Add Message Add Message
to: "Error getting constant RINDEX property using G4OpticalBoundaryProcess"

 Subscribe Subscribe

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