//____________________________________________________________________________ /*! \class PropaPair \brief A class to compute muon energy loss: pair production \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 _GPropaPair_H__ #define _GPropaPair_H__ #include #include using namespace std; class PropaPair { public: PropaPair(); ~PropaPair(); 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 SigmaTot(double Energy, double Z, 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); }; //____________________________________________________________________________ class PropaPairBCoeff : public ROOT::Math::IBaseFunctionOneDim { public: PropaPairBCoeff(double Energy, double Z); ~PropaPairBCoeff(); // ROOT::Math::IBaseFunctionOneDim interface unsigned int NDim (void) const; double DoEval (double xin) const; ROOT::Math::IBaseFunctionOneDim * Clone (void) const; private: double fEnergy; double fZ; }; //____________________________________________________________________________ class PropaPairXSec : public ROOT::Math::IBaseFunctionOneDim { public: PropaPairXSec(double Energy, double Z); ~PropaPairXSec(); // ROOT::Math::IBaseFunctionOneDim interface unsigned int NDim (void) const; double DoEval (const double xin) const; ROOT::Math::IBaseFunctionOneDim * Clone (void) const; private: double fEnergy; double fZ; }; //____________________________________________________________________________ class PropaPairXSecV : public ROOT::Math::IBaseFunctionOneDim { public: PropaPairXSecV(double Energy, double Z, double v); ~PropaPairXSecV(); // ROOT::Math::IBaseFunctionOneDim interface unsigned int NDim (void) const; double DoEval (double xin) const; ROOT::Math::IBaseFunctionOneDim * Clone (void) const; private: double fEnergy; double fZ; double fV; }; //____________________________________________________________________________ class PropaPairXSec2Dim : public ROOT::Math::IBaseFunctionMultiDim { public: PropaPairXSec2Dim(double Energy, double Z); ~PropaPairXSec2Dim(); // ROOT::Math::IBaseFunctionMultiDim interface unsigned int NDim (void) const; double DoEval (const double * xin) const; ROOT::Math::IBaseFunctionMultiDim * Clone (void) const; private: double fEnergy; double fZ; }; #endif // _GPropaPair_H__