/////////////////////////////////////////////////////////////////////////////// // // Extends the ConcentratorOpticalModel to match the SNOMAN 5_0294 // version. This takes into account the SNOMAN specific assumptions. // Namely this includes a SNOMAN specific look-up table. // // Author: Phil G Jones // // REVISION HISTORY: // 05/11/2010 : P G Jones - New file // 2014-08-05 : P G Jones - Updated doxygen. // /////////////////////////////////////////////////////////////////////////////// #ifndef __RAT_ConcentratorSNOMANOpticalModel_hh__ #define __RAT_ConcentratorSNOMANOpticalModel_hh__ #include class G4Region; class G4LogicalVolume; namespace RAT { class ConcentratorSNOMANOpticalModel : 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: volume this model applies to ConcentratorSNOMANOpticalModel( const G4String name, G4Region* const region, const std::string params, G4LogicalVolume* const volume ); // The method that does the actual tracking // // fastTrack: track to track // fastStep: result of tracking virtual void DoIt( const G4FastTrack& fastTrack, G4FastStep& fastStep ); protected: // Return the reflection probability for the angle and wavelength. // // position: position in local coordinates // theta: photon angle to the boundary, in radians // energy: energy of the photon // polarisation: polarisation in local coordinates // specularR: specular reflection probability // diffuseR: diffuse reflection probability virtual void GetReflectionProb( const G4ThreeVector& position, const G4double theta, const G4double energy, const EPolarisation polarisation, G4double& specularR, G4double& diffuseR ); std::vector fPrompt; // The prompt response table G4double fPromptNormalisation; // The prompt normalisation factor }; } //::RAT #endif