//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//*
//             LOW ENERGY MUON SPIN RELAXATION, ROTATION, RADIATION 
//
//  ID    : LEMuSRPhysicsList.cc , v 1.1
//  AUTHOR: Taofiq PARAISO
//  DATE  : 2004-08-24 16:33
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
//
//  &           &&&&&&&&&&                            &&&&&&&         &&&&&&&&
//  &           &                                   &&      &&       &       &&
//  &           &                   &      &       &                &       &&
//  &           &&&&&&&            &      &         &&&&&&         &&&&&&&&  
//  &           &                 &      &&                &      &      &&
//  &           &                &&     &  &     &&      &&      &        &
//  &&&&&&&&&&  &&&&&&&&&&      &  &&&&&    &&    &&&&&&&       &        &&   
//                             &
//                            &
//                           &
//                         &  
//                               PHYSICS LIST
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//


#include "LEMuSRPhysicsList.hh"

#include "globals.hh"
#include "G4ParticleDefinition.hh"
#include "G4ProcessManager.hh"
#include "G4ProcessVector.hh"
#include "G4ParticleTypes.hh"
#include "G4ParticleTable.hh"

#include "G4Material.hh"
#include "G4MaterialTable.hh"
#include "G4ios.hh"
#include <iomanip>   

#include "LEMuSRGeneralPhysics.hh"
#include "LEMuSREMPhysics.hh"
#include "LEMuSRMuonPhysics.hh"
#include "LEMuSRHadronPhysics.hh"
#include "LEMuSRIonPhysics.hh"

LEMuSRPhysicsList::LEMuSRPhysicsList():  G4VModularPhysicsList()
{
  SetCuts();

  //! Register General Processes
  RegisterPhysics( new LEMuSRGeneralPhysics("general") );

  //! Register Electro-Magnetic Prcesses
  RegisterPhysics( new LEMuSREMPhysics("standard EM"));

  //! Register Muon Processes
  RegisterPhysics(  new LEMuSRMuonPhysics("muon"));

  //! Register Hadron Processes
  RegisterPhysics(  new LEMuSRHadronPhysics("hadron"));

  //! Register Ion Processes
  RegisterPhysics( new LEMuSRIonPhysics("ion"));


}

LEMuSRPhysicsList::~LEMuSRPhysicsList()
{
}

  /*!
   *  " G4VUserPhysicsList::SetCutsWithDefault" method sets 
   * the default cut value for all particle types .
   * The cut value is given in distance, and is then converted
   * in energy according the particle's stopping range in different
   * materials.
  */
void LEMuSRPhysicsList::SetCuts()
{
  defaultCutValue = 1.0*cm;
   SetCutsWithDefault();
   
  SetCutValue(1.*mm, "e+"); 
  SetCutValue(1.*mm, "e-"); 
  SetCutValue(1*mm, "proton"); 
 
  //  SetCutValue(0.001*mm, "mu+"); 
  //  SetCutValue(0.001*mm, "Mu"); 
 
}



 
