Index: trunk/source/processes/optical/History
===================================================================
--- trunk/source/processes/optical/History	(revision 1055)
+++ trunk/source/processes/optical/History	(revision 1196)
@@ -16,4 +16,32 @@
      * Reverse chronological order (last date on top), please *
      ----------------------------------------------------------
+
+19th Nov 2009 Peter Gumplinger (op-V09-02-06)
+              change the code such that the LUT are now read in and kept
+              by G4OpticalSurface and not G4OpBoundaryProcess, reordering
+              of enumeration and set theStatus in DielectricLUT.
+
+11th Nov 2009 Peter Gumplinger (op-V09-02-05)
+              add capability of simulating surface reflections
+              with Look-Up-Tables (LUT) containing measured
+              optical reflectance for a variety of surface
+              treatments - Thanks to Martin Janecek and
+              William Moses (Lawrence Berkeley National Lab.)
+
+9th  Nov 2009 Peter Gumplinger (op-V09-02-04)
+              G4OpBoundary: initialze theReflectivity and theEfficiency
+              at the beginning of the PostStepDoIt; add method
+              BoundaryProcessVerbose which will now print the process
+              status for every call to PostStepDoIt.
+
+5th  Nov 2009 Peter Gumplinger (op-V09-02-03)
+              G4OpBoundary::PostStepDoIt - all dielectric_dielectric
+              surfaces may now have a reflectivity <1; not only
+              'frontpainted' as was the case in the past.
+
+6th  May 2009 Peter Gumplinger (op-V09-02-02)
+              G4OpBoundary::PostStepDoIt now throws an G4Exception
+              EventMustBeAborted when an invalid surface normal is returnd;
+              addresses bug report #1060
 
 23th Mar 2009 Peter Gumplinger (op-V09-02-01)
Index: trunk/source/processes/optical/include/G4OpAbsorption.hh
===================================================================
--- trunk/source/processes/optical/include/G4OpAbsorption.hh	(revision 1055)
+++ trunk/source/processes/optical/include/G4OpAbsorption.hh	(revision 1196)
@@ -26,5 +26,5 @@
 //
 // $Id: G4OpAbsorption.hh,v 1.9 2006/06/29 21:08:36 gunter Exp $
-// GEANT4 tag $Name: geant4-09-02 $
+// GEANT4 tag $Name: geant4-09-03-cand-01 $
 //
 ////////////////////////////////////////////////////////////////////////
Index: trunk/source/processes/optical/include/G4OpBoundaryProcess.hh
===================================================================
--- trunk/source/processes/optical/include/G4OpBoundaryProcess.hh	(revision 1055)
+++ trunk/source/processes/optical/include/G4OpBoundaryProcess.hh	(revision 1196)
@@ -25,6 +25,6 @@
 //
 //
-// $Id: G4OpBoundaryProcess.hh,v 1.19 2009/03/23 21:18:20 gum Exp $
-// GEANT4 tag $Name: geant4-09-03-beta-cand-01 $
+// $Id: G4OpBoundaryProcess.hh,v 1.22 2009/11/20 01:06:45 gum Exp $
+// GEANT4 tag $Name: geant4-09-03-cand-01 $
 //
 // 
@@ -49,4 +49,9 @@
 //                           of refraction - Thanks to Sehwook Lee and John
 //                           Hauptman (Dept. of Physics - Iowa State Univ.)
+//              2009-11-10 - add capability of simulating surface reflections
+//                           with Look-Up-Tables (LUT) containing measured
+//                           optical reflectance for a variety of surface
+//                           treatments - Thanks to Martin Janecek and
+//                           William Moses (Lawrence Berkeley National Lab.)
 //
 // Author:      Peter Gumplinger
@@ -96,5 +101,29 @@
                                   SpikeReflection, BackScattering,
                                   Absorption, Detection, NotAtBoundary,
-                                  SameMaterial, StepTooSmall, NoRINDEX };
+                                  SameMaterial, StepTooSmall, NoRINDEX,
+                                  PolishedLumirrorAirReflection,
+                                  PolishedLumirrorGlueReflection,
+                                  PolishedAirReflection,
+                                  PolishedTeflonAirReflection,
+                                  PolishedTiOAirReflection,
+                                  PolishedTyvekAirReflection,
+                                  PolishedVM2000AirReflection,
+                                  PolishedVM2000GlueReflection,
+                                  EtchedLumirrorAirReflection,
+                                  EtchedLumirrorGlueReflection,
+                                  EtchedAirReflection,
+                                  EtchedTeflonAirReflection,
+                                  EtchedTiOAirReflection,
+                                  EtchedTyvekAirReflection,
+                                  EtchedVM2000AirReflection,
+                                  EtchedVM2000GlueReflection,
+                                  GroundLumirrorAirReflection,
+                                  GroundLumirrorGlueReflection,
+                                  GroundAirReflection,
+                                  GroundTeflonAirReflection,
+                                  GroundTiOAirReflection,
+                                  GroundTyvekAirReflection,
+                                  GroundVM2000AirReflection,
+                                  GroundVM2000GlueReflection };
 
 class G4OpBoundaryProcess : public G4VDiscreteProcess
@@ -149,19 +178,7 @@
         // Returns the current status.
 
-	G4double GetIncidentAngle();
-        // Returns the incident angle of optical photon
-
-	G4double GetReflectivity(G4double E1_perp,
-                                 G4double E1_parl,
-                                 G4double incidentangle,
-	                         G4double RealRindex,
-                                 G4double ImaginaryRindex);
-        // Returns the Reflectivity on a metalic surface
-
-        void CalculateReflectivity(void);
-
         void SetModel(G4OpticalSurfaceModel model);
 	// Set the optical surface model to be followed
-        // (glisur || unified).
+        // (glisur || unified || LUT).
 
 private:
@@ -174,4 +191,5 @@
 	void DielectricMetal();
 	void DielectricDielectric();
+        void DielectricLUT();
 
 	void ChooseReflection();
@@ -179,4 +197,18 @@
 	void DoReflection();
 
+        G4double GetIncidentAngle();
+        // Returns the incident angle of optical photon
+
+        G4double GetReflectivity(G4double E1_perp,
+                                 G4double E1_parl,
+                                 G4double incidentangle,
+                                 G4double RealRindex,
+                                 G4double ImaginaryRindex);
+        // Returns the Reflectivity on a metalic surface
+
+        void CalculateReflectivity(void);
+
+        void BoundaryProcessVerbose(void) const;
+
 private:
 
@@ -219,4 +251,5 @@
 
         G4double kCarTolerance;
+
 };
 
Index: trunk/source/processes/optical/include/G4OpProcessSubType.hh
===================================================================
--- trunk/source/processes/optical/include/G4OpProcessSubType.hh	(revision 1055)
+++ trunk/source/processes/optical/include/G4OpProcessSubType.hh	(revision 1196)
@@ -26,5 +26,5 @@
 //
 // $Id: G4OpProcessSubType.hh,v 1.3 2008/12/18 13:02:46 gunter Exp $
-// GEANT4 tag $Name: geant4-09-02 $
+// GEANT4 tag $Name: geant4-09-03-cand-01 $
 //
 //---------------------------------------------------------------
Index: trunk/source/processes/optical/include/G4OpRayleigh.hh
===================================================================
--- trunk/source/processes/optical/include/G4OpRayleigh.hh	(revision 1055)
+++ trunk/source/processes/optical/include/G4OpRayleigh.hh	(revision 1196)
@@ -26,5 +26,5 @@
 //
 // $Id: G4OpRayleigh.hh,v 1.9 2006/06/29 21:08:40 gunter Exp $
-// GEANT4 tag $Name: geant4-09-02 $
+// GEANT4 tag $Name: geant4-09-03-cand-01 $
 //
 // 
Index: trunk/source/processes/optical/include/G4OpWLS.hh
===================================================================
--- trunk/source/processes/optical/include/G4OpWLS.hh	(revision 1055)
+++ trunk/source/processes/optical/include/G4OpWLS.hh	(revision 1196)
@@ -26,5 +26,5 @@
 //
 // $Id: G4OpWLS.hh,v 1.4 2006/06/29 21:08:42 gunter Exp $
-// GEANT4 tag $Name: geant4-09-02 $
+// GEANT4 tag $Name: geant4-09-03-cand-01 $
 //
 ////////////////////////////////////////////////////////////////////////
Index: trunk/source/processes/optical/src/G4OpAbsorption.cc
===================================================================
--- trunk/source/processes/optical/src/G4OpAbsorption.cc	(revision 1055)
+++ trunk/source/processes/optical/src/G4OpAbsorption.cc	(revision 1196)
@@ -26,5 +26,5 @@
 //
 // $Id: G4OpAbsorption.cc,v 1.9 2008/10/24 19:52:28 gum Exp $
-// GEANT4 tag $Name: geant4-09-02 $
+// GEANT4 tag $Name: geant4-09-03-cand-01 $
 //
 ////////////////////////////////////////////////////////////////////////
Index: trunk/source/processes/optical/src/G4OpBoundaryProcess.cc
===================================================================
--- trunk/source/processes/optical/src/G4OpBoundaryProcess.cc	(revision 1055)
+++ trunk/source/processes/optical/src/G4OpBoundaryProcess.cc	(revision 1196)
@@ -59,4 +59,9 @@
 //                           of refraction - Thanks to Sehwook Lee and John 
 //                           Hauptman (Dept. of Physics - Iowa State Univ.)
+//              2009-11-10 - add capability of simulating surface reflections
+//                           with Look-Up-Tables (LUT) containing measured
+//                           optical reflectance for a variety of surface
+//                           treatments - Thanks to Martin Janecek and
+//                           William Moses (Lawrence Berkeley National Lab.)
 //
 // Author:      Peter Gumplinger
@@ -140,10 +145,20 @@
         G4StepPoint* pPostStepPoint = aStep.GetPostStepPoint();
 
+        if ( verboseLevel > 0 ) {
+           G4cout << " Photon at Boundary! " << G4endl;
+           G4VPhysicalVolume* thePrePV = pPreStepPoint->GetPhysicalVolume();
+           G4VPhysicalVolume* thePostPV = pPostStepPoint->GetPhysicalVolume();
+           if (thePrePV)  G4cout << " thePrePV:  " << thePrePV->GetName()  << G4endl;
+           if (thePostPV) G4cout << " thePostPV: " << thePostPV->GetName() << G4endl;
+        }
+
         if (pPostStepPoint->GetStepStatus() != fGeomBoundary){
 	        theStatus = NotAtBoundary;
+                if ( verboseLevel > 0) BoundaryProcessVerbose();
 	        return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep);
 	}
 	if (aTrack.GetStepLength()<=kCarTolerance/2){
 	        theStatus = StepTooSmall;
+                if ( verboseLevel > 0) BoundaryProcessVerbose();
 	        return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep);
 	}
@@ -157,4 +172,9 @@
         OldMomentum       = aParticle->GetMomentumDirection();
 	OldPolarization   = aParticle->GetPolarization();
+
+        if ( verboseLevel > 0 ) {
+           G4cout << " Old Momentum Direction: " << OldMomentum     << G4endl;
+           G4cout << " Old Polarization:       " << OldPolarization << G4endl;
+        }
 
         G4ThreeVector theGlobalPoint = pPostStepPoint->GetPosition();
@@ -207,4 +227,5 @@
 	else {
 	        theStatus = NoRINDEX;
+                if ( verboseLevel > 0) BoundaryProcessVerbose();
 		aParticleChange.ProposeTrackStatus(fStopAndKill);
 		return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep);
@@ -216,7 +237,11 @@
 	else {
 	        theStatus = NoRINDEX;
+                if ( verboseLevel > 0) BoundaryProcessVerbose();
 		aParticleChange.ProposeTrackStatus(fStopAndKill);
 		return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep);
 	}
+
+        theReflectivity = 1.;
+        theEfficiency   = 0.;
 
         theModel = glisur;
@@ -281,4 +306,5 @@
                   else {
 		     theStatus = NoRINDEX;
+                     if ( verboseLevel > 0) BoundaryProcessVerbose();
                      aParticleChange.ProposeTrackStatus(fStopAndKill);
                      return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep);
@@ -305,6 +331,4 @@
                  CalculateReflectivity();
 
-              } else {
-                 theReflectivity = 1.0;
               }
 
@@ -314,6 +338,4 @@
                       theEfficiency =
                       PropertyPointer->GetProperty(thePhotonMomentum);
-              } else {
-                      theEfficiency = 0.0;
               }
 
@@ -359,4 +381,5 @@
 	      if (Material1 == Material2){
 		 theStatus = SameMaterial;
+                 if ( verboseLevel > 0) BoundaryProcessVerbose();
 		 return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep);
 	      }
@@ -370,14 +393,9 @@
               else {
 		 theStatus = NoRINDEX;
+                 if ( verboseLevel > 0) BoundaryProcessVerbose();
                  aParticleChange.ProposeTrackStatus(fStopAndKill);
                  return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep);
 	      }
            }
-        }
-
-        if ( verboseLevel > 0 ) {
-                G4cout << " Photon at Boundary! " << G4endl;
-                G4cout << " Old Momentum Direction: " << OldMomentum     << G4endl;
-                G4cout << " Old Polarization:       " << OldPolarization << G4endl;
         }
 
@@ -393,9 +411,13 @@
 
 	}
+        else if (type == dielectric_LUT) {
+
+          DielectricLUT();
+
+        }
 	else if (type == dielectric_dielectric) {
 
 	  if ( theFinish == polishedfrontpainted ||
 	       theFinish == groundfrontpainted ) {
-
 	          if( !G4BooleanRand(theReflectivity) ) {
 		    DoAbsorption();
@@ -408,5 +430,10 @@
 	  }
 	  else {
-		  DielectricDielectric();
+                  if( !G4BooleanRand(theReflectivity) ) {
+                    DoAbsorption();
+                  }
+                  else {
+                    DielectricDielectric();
+                  }
 	  }
 	}
@@ -422,34 +449,7 @@
 
         if ( verboseLevel > 0) {
-		G4cout << " New Momentum Direction: " << NewMomentum     << G4endl;
-		G4cout << " New Polarization:       " << NewPolarization << G4endl;
-		if ( theStatus == Undefined )
-			G4cout << " *** Undefined *** " << G4endl;
-		if ( theStatus == FresnelRefraction )
-			G4cout << " *** FresnelRefraction *** " << G4endl;
-		if ( theStatus == FresnelReflection )
-			G4cout << " *** FresnelReflection *** " << G4endl;
-		if ( theStatus == TotalInternalReflection )
-			G4cout << " *** TotalInternalReflection *** " << G4endl;
-		if ( theStatus == LambertianReflection )
-			G4cout << " *** LambertianReflection *** " << G4endl;
-		if ( theStatus == LobeReflection )
-			G4cout << " *** LobeReflection *** " << G4endl;
-		if ( theStatus == SpikeReflection )
-			G4cout << " *** SpikeReflection *** " << G4endl;
-		if ( theStatus == BackScattering )
-			G4cout << " *** BackScattering *** " << G4endl;
-		if ( theStatus == Absorption )
-			G4cout << " *** Absorption *** " << G4endl;
-		if ( theStatus == Detection )
-			G4cout << " *** Detection *** " << G4endl;
-                if ( theStatus == NotAtBoundary )
-                        G4cout << " *** NotAtBoundary *** " << G4endl;
-                if ( theStatus == SameMaterial )
-                        G4cout << " *** SameMaterial *** " << G4endl;
-                if ( theStatus == StepTooSmall )
-                        G4cout << " *** StepTooSmall *** " << G4endl;
-                if ( theStatus == NoRINDEX )
-                        G4cout << " *** NoRINDEX *** " << G4endl;
+	   G4cout << " New Momentum Direction: " << NewMomentum     << G4endl;
+	   G4cout << " New Polarization:       " << NewPolarization << G4endl;
+           BoundaryProcessVerbose();
         }
 
@@ -458,4 +458,84 @@
 
         return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep);
+}
+
+void G4OpBoundaryProcess::BoundaryProcessVerbose() const
+{
+        if ( theStatus == Undefined )
+                G4cout << " *** Undefined *** " << G4endl;
+        if ( theStatus == FresnelRefraction )
+                G4cout << " *** FresnelRefraction *** " << G4endl;
+        if ( theStatus == FresnelReflection )
+                G4cout << " *** FresnelReflection *** " << G4endl;
+        if ( theStatus == TotalInternalReflection )
+                G4cout << " *** TotalInternalReflection *** " << G4endl;
+        if ( theStatus == LambertianReflection )
+                G4cout << " *** LambertianReflection *** " << G4endl;
+        if ( theStatus == LobeReflection )
+                G4cout << " *** LobeReflection *** " << G4endl;
+        if ( theStatus == SpikeReflection )
+                G4cout << " *** SpikeReflection *** " << G4endl;
+        if ( theStatus == BackScattering )
+                G4cout << " *** BackScattering *** " << G4endl;
+        if ( theStatus == PolishedLumirrorAirReflection )
+                G4cout << " *** PolishedLumirrorAirReflection *** " << G4endl;
+        if ( theStatus == PolishedLumirrorGlueReflection )
+                G4cout << " *** PolishedLumirrorGlueReflection *** " << G4endl;
+        if ( theStatus == PolishedAirReflection )
+                G4cout << " *** PolishedAirReflection *** " << G4endl;
+        if ( theStatus == PolishedTeflonAirReflection )
+                G4cout << " *** PolishedTeflonAirReflection *** " << G4endl;
+        if ( theStatus == PolishedTiOAirReflection )
+                G4cout << " *** PolishedTiOAirReflection *** " << G4endl;
+        if ( theStatus == PolishedTyvekAirReflection )
+                G4cout << " *** PolishedTyvekAirReflection *** " << G4endl;
+        if ( theStatus == PolishedVM2000AirReflection )
+                G4cout << " *** PolishedVM2000AirReflection *** " << G4endl;
+        if ( theStatus == PolishedVM2000GlueReflection )
+                G4cout << " *** PolishedVM2000GlueReflection *** " << G4endl;
+        if ( theStatus == EtchedLumirrorAirReflection )
+                G4cout << " *** EtchedLumirrorAirReflection *** " << G4endl;
+        if ( theStatus == EtchedLumirrorGlueReflection )
+                G4cout << " *** EtchedLumirrorGlueReflection *** " << G4endl;
+        if ( theStatus == EtchedAirReflection )
+                G4cout << " *** EtchedAirReflection *** " << G4endl;
+        if ( theStatus == EtchedTeflonAirReflection )
+                G4cout << " *** EtchedTeflonAirReflection *** " << G4endl;
+        if ( theStatus == EtchedTiOAirReflection )
+                G4cout << " *** EtchedTiOAirReflection *** " << G4endl;
+        if ( theStatus == EtchedTyvekAirReflection )
+                G4cout << " *** EtchedTyvekAirReflection *** " << G4endl;
+        if ( theStatus == EtchedVM2000AirReflection )
+                G4cout << " *** EtchedVM2000AirReflection *** " << G4endl;
+        if ( theStatus == EtchedVM2000GlueReflection )
+                G4cout << " *** EtchedVM2000GlueReflection *** " << G4endl;
+        if ( theStatus == GroundLumirrorAirReflection )
+                G4cout << " *** GroundLumirrorAirReflection *** " << G4endl;
+        if ( theStatus == GroundLumirrorGlueReflection )
+                G4cout << " *** GroundLumirrorGlueReflection *** " << G4endl;
+        if ( theStatus == GroundAirReflection )
+                G4cout << " *** GroundAirReflection *** " << G4endl;
+        if ( theStatus == GroundTeflonAirReflection )
+                G4cout << " *** GroundTeflonAirReflection *** " << G4endl;
+        if ( theStatus == GroundTiOAirReflection )
+                G4cout << " *** GroundTiOAirReflection *** " << G4endl;
+        if ( theStatus == GroundTyvekAirReflection )
+                G4cout << " *** GroundTyvekAirReflection *** " << G4endl;
+        if ( theStatus == GroundVM2000AirReflection )
+                G4cout << " *** GroundVM2000AirReflection *** " << G4endl;
+        if ( theStatus == GroundVM2000GlueReflection )
+                G4cout << " *** GroundVM2000GlueReflection *** " << G4endl;
+        if ( theStatus == Absorption )
+                G4cout << " *** Absorption *** " << G4endl;
+        if ( theStatus == Detection )
+                G4cout << " *** Detection *** " << G4endl;
+        if ( theStatus == NotAtBoundary )
+                G4cout << " *** NotAtBoundary *** " << G4endl;
+        if ( theStatus == SameMaterial )
+                G4cout << " *** SameMaterial *** " << G4endl;
+        if ( theStatus == StepTooSmall )
+                G4cout << " *** StepTooSmall *** " << G4endl;
+        if ( theStatus == NoRINDEX )
+                G4cout << " *** NoRINDEX *** " << G4endl;
 }
 
@@ -466,5 +546,5 @@
         G4ThreeVector FacetNormal;
 
-	if (theModel == unified) {
+	if (theModel == unified || theModel == LUT) {
 
 	/* This function code alpha to a random value taken from the
@@ -622,4 +702,64 @@
 }
 
+void G4OpBoundaryProcess::DielectricLUT()
+{
+        G4int thetaIndex, phiIndex;
+        G4double AngularDistributionValue, thetaRad, phiRad, EdotN;
+        G4ThreeVector PerpendicularVectorTheta, PerpendicularVectorPhi;
+
+        theStatus = G4OpBoundaryProcessStatus(G4int(theFinish) + 
+                           (G4int(NoRINDEX)-G4int(groundbackpainted)));
+
+        G4int thetaIndexMax = OpticalSurface->GetThetaIndexMax();
+        G4int phiIndexMax   = OpticalSurface->GetPhiIndexMax();
+
+        do {
+           if ( !G4BooleanRand(theReflectivity) ) // Not reflected, so Absorbed
+              DoAbsorption();
+           else {
+              // Calculate Angle between Normal and Photon Momentum
+              G4double anglePhotonToNormal = 
+                                          OldMomentum.angle(-theGlobalNormal);
+              // Round it to closest integer
+              G4int angleIncident = G4int(floor(180/pi*anglePhotonToNormal+0.5));
+
+              // Take random angles THETA and PHI, 
+              // and see if below Probability - if not - Redo
+              do {
+                 thetaIndex = CLHEP::RandFlat::shootInt(thetaIndexMax-1);
+                 phiIndex = CLHEP::RandFlat::shootInt(phiIndexMax-1);
+                 // Find probability with the new indeces from LUT
+                 AngularDistributionValue = OpticalSurface -> 
+                   GetAngularDistributionValue(angleIncident,
+                                               thetaIndex,
+                                               phiIndex);
+              } while ( !G4BooleanRand(AngularDistributionValue) );
+
+              thetaRad = (-90 + 4*thetaIndex)*pi/180;
+              phiRad = (-90 + 5*phiIndex)*pi/180;
+              // Rotate Photon Momentum in Theta, then in Phi
+              NewMomentum = -OldMomentum;
+              PerpendicularVectorTheta = NewMomentum.cross(theGlobalNormal);
+              if (PerpendicularVectorTheta.mag() > kCarTolerance ) {
+                 PerpendicularVectorPhi = 
+                                  PerpendicularVectorTheta.cross(NewMomentum);
+              }
+              else {
+                 PerpendicularVectorTheta = NewMomentum.orthogonal();
+                 PerpendicularVectorPhi =
+                                  PerpendicularVectorTheta.cross(NewMomentum);
+              }
+              NewMomentum =
+                 NewMomentum.rotate(anglePhotonToNormal-thetaRad,
+                                    PerpendicularVectorTheta);
+              NewMomentum = NewMomentum.rotate(-phiRad,PerpendicularVectorPhi);
+              // Rotate Polarization too:
+              theFacetNormal = (NewMomentum - OldMomentum).unit();
+              EdotN = OldPolarization * theFacetNormal;
+              NewPolarization = -OldPolarization + (2.*EdotN)*theFacetNormal;
+           }
+        } while (NewMomentum * theGlobalNormal <= 0.0);
+}
+
 void G4OpBoundaryProcess::DielectricDielectric()
 {
Index: trunk/source/processes/optical/src/G4OpRayleigh.cc
===================================================================
--- trunk/source/processes/optical/src/G4OpRayleigh.cc	(revision 1055)
+++ trunk/source/processes/optical/src/G4OpRayleigh.cc	(revision 1196)
@@ -26,5 +26,5 @@
 //
 // $Id: G4OpRayleigh.cc,v 1.17 2008/10/24 19:51:12 gum Exp $
-// GEANT4 tag $Name: geant4-09-02 $
+// GEANT4 tag $Name: geant4-09-03-cand-01 $
 //
 // 
Index: trunk/source/processes/optical/src/G4OpWLS.cc
===================================================================
--- trunk/source/processes/optical/src/G4OpWLS.cc	(revision 1055)
+++ trunk/source/processes/optical/src/G4OpWLS.cc	(revision 1196)
@@ -26,5 +26,5 @@
 //
 // $Id: G4OpWLS.cc,v 1.13 2008/10/24 19:50:50 gum Exp $
-// GEANT4 tag $Name: geant4-09-02 $
+// GEANT4 tag $Name: geant4-09-03-cand-01 $
 //
 ////////////////////////////////////////////////////////////////////////
