///////////////////////////////////////////////////////////////////////////////
//
// This extends the ConcentratorOpticalModel with a simple ageing
// model. The petal is aged above and below a border in local z.
//
// Author: Phil G Jones
//
// REVISION HISTORY:
// 05/11/2010 : P G Jones - New file
// 2014-08-05 : P G Jones - Updated doxygen.
//
///////////////////////////////////////////////////////////////////////////////
#ifndef __RAT_ConcentratorAgedOpticalModel_hh__
#define __RAT_ConcentratorAgedOpticalModel_hh__
#include
class G4Region;
class G4LogicalVolume;
namespace RAT
{
class ConcentratorAgedOpticalModel : public ConcentratorOpticalModel
{
public:
// The constructor invoked with the model name and applicable region
//
// name: name of this model
// region: region this model is applied in
// params: parameters that control this models settings, index to RATDB
// volume: the volume this model applies to
ConcentratorAgedOpticalModel( const G4String name, G4Region* const region,
const std::string params, G4LogicalVolume* const volume );
protected:
// Return the reflection probability for the angle and wavelength.
//
// position: position in local coordinates
// localTheta: photon angle to the boundary, in radians
// energy: energy of the photon in MeV
// polarisation: polarisation in local coordinates, as defined
// in OpticalModelBase.hh
// specularR: specular reflection probability
// diffuseR: diffuse reflection probability
virtual void GetReflectionProb( const G4ThreeVector& position,
const G4double localTheta,
const G4double energy,
const EPolarisation polarisation,
G4double& specularR, G4double& diffuseR );
G4double fDegredationBorder; // Local z coordinate of the ageing change
G4MaterialPropertyVector* fUpperDegredation; // Upper degredation value
G4MaterialPropertyVector* fLowerDegredation; // Lower degredation value
};
} //::RAT
#endif