//____________________________________________________________________________ /*! \class PropaMuon \brief A class for propagate muons \author Carla Distefano LNS-INFN, Catania \created December 10, 2015 \cpright Copyright (c) 2015-2019, The KM3NeT Collaboration For the full text of the license see $GSEAGEN/LICENSE */ //____________________________________________________________________________ #ifndef _GPROPAMUON_H__ #define _GPROPAMUON_H__ #include #include #include "TGraph.h" #include "TGraph2D.h" #include "TH2D.h" #include "TRandom.h" #include "PropaTracks.h" using namespace std; //using namespace propamuon; struct ScatterOut {double Theta, Phi;}; struct StochasOut {double V; int PdgCode;}; class PropaMuon { public: PropaMuon(map MediaComposition, double MediaDensity); PropaMuon(map MediaComposition, double MediaDensity, double EMax); ~PropaMuon(); void Initialize(map MediaComposition, double MediaDensity, double EMax); bool Propagate(PropaTrack track, double Depth); PropaTrack GetPropaTrack(void);//{return fTrackOut;}; double GetRange(void);//{return fRange;}; double GetTotPath(void);//{return fPathTot;}; private: PropaTrack fTrackOut; double fEneMax; double fVcut; double fEneCut; double fRadLen; double fRange; double fPath; double fPathTot; double fDepth; double fDepthDone; double fDepthToDo; TGraph * fELossIon; TGraph * fELossRad; TGraph * fLambdaBrem; TGraph * fLambdaPair; TGraph * fLambdaNucl; TGraph * fLambdaTot; TH2D * fProbBremTot; TH2D * fProbPairTot; TH2D * fProbNuclTot; TRandom * fRnd; map fMediaComposition; double fMediaDensity; void ComputeMeanFreePaths(void); PropaTrack ContinuousLosses(PropaTrack TrackIn); PropaTrack StochasticLosses(PropaTrack TrackIn); double ContinuousEnergyLosses(double Energy); double PathOnlyContinuous(double Energy); string SelectProcess(double Energy); StochasOut ComputeV(string ProcessName, double Energy); PropaTrack MultipleScattering(PropaTrack track); ScatterOut BremPairScattering(double Energy, StochasOut stoch, string ProcessName); ScatterOut NuclScattering(double Energy, StochasOut stoch); PropaTrack RotoTranslation(PropaTrack TrackIn, PropaTrack TrackOut); void ComputeRange(PropaTrack TrackIn, PropaTrack TrackOut); void ComputeDepthDone(PropaTrack TrackIn, PropaTrack TrackOut); }; #endif // _GPROPAMUON_H__