//____________________________________________________________________________ /*! \class PropaBrem \brief A class to compute muon energy loss: bremsstrahlung \author Carla Distefano LNS-INFN, Catania \created December 9, 2015 \cpright Copyright (c) 2015-2019, The KM3NeT Collaboration For the full text of the license see $GSEAGEN/LICENSE */ //____________________________________________________________________________ #ifndef _GPROPABREM_H__ #define _GPROPABREM_H__ #include #include using namespace std; class PropaBrem { public: PropaBrem(); PropaBrem(int Model); ~PropaBrem(); double BCoeff (double Energy, double Z, double A); double BCoeff (double Energy, double Z, double A, double Vmin, double Vmax); double dE_dx (double Energy, double Z, double A); double dE_dx(double Energy, double Z, double A, double Vmin, double Vmax); double BCoeff (double Energy, map MediaComposition); double BCoeff (double Energy, map MediaComposition, double Vmin, double Vmax); double dE_dx (double Energy, map MediaComposition); double dE_dx (double Energy, map MediaComposition, double Vmin, double Vmax); double SigmaTot(double Energy, double Z, double A); double SigmaTot(double Energy, double Z, double A, double Vmin, double Vmax); double SigmaTot(double Energy, map MediaComposition); double SigmaTot(double Energy, map MediaComposition, double Vmin, double Vmax); double Lambda(double Energy, map MediaComposition); double Lambda(double Energy, map MediaComposition, double Vmin, double Vmax); double Lambda(double Energy, double Z, double A); double Lambda(double Energy, double Z, double A, double Vmin, double Vmax); private: int fModel; }; //____________________________________________________________________________ class PropaBremBCoeff : public ROOT::Math::IBaseFunctionOneDim { public: PropaBremBCoeff(double Energy, double Z, double A, int Model); ~PropaBremBCoeff(); // ROOT::Math::IBaseFunctionOneDim interface unsigned int NDim (void) const; double DoEval (double xin) const; ROOT::Math::IBaseFunctionOneDim * Clone (void) const; private: int fModel; double fEnergy; double fZ; double fA; }; //____________________________________________________________________________ class PropaBremXSec : public ROOT::Math::IBaseFunctionOneDim { public: PropaBremXSec(double Energy, double Z, double A, int Model); ~PropaBremXSec(); // ROOT::Math::IBaseFunctionOneDim interface unsigned int NDim (void) const; double DoEval (double xin) const; ROOT::Math::IBaseFunctionOneDim * Clone (void) const; private: int fModel; double fEnergy; double fZ; double fA; }; #endif // _GPROPABREM_H__