/////////////////////////////////////////////////////////////////////////////// // // Modification of the Cherenkov light emission process. // More accurate physical model that is relevant for electrons up to 5 MeV. // Use only for the water phase. // // Author: Dmytro Minchenko // // REVISION HISTORY: // 08/16/2022 : D. Minchenko - New file // /////////////////////////////////////////////////////////////////////////////// #pragma once /* include std lib */ #include /* include RAT lib */ #include class CerenkovWaterSampling : public Cerenkov { public: typedef std::vector, std::vector > > scatteringAngleData; CerenkovWaterSampling(const G4String& processName = "Cerenkov", G4ProcessType type = fElectromagnetic); virtual ~CerenkovWaterSampling() { } virtual G4VParticleChange* PostStepDoIt(const G4Track& aTrack, const G4Step& aStep); private: // Parses the CDFs for sampling scatteringAngleData ParseData(); // Get the mean free path for a given energy G4double GetLambda(G4double energy) const; // Samples the angles for Cherenkov light emission G4double SampleAngle(G4double energy) const; scatteringAngleData fSamplingHistograms; G4ThreeVector fp0Last; G4double fLambdaCorrection; std::vector fLambdaFitParams; };