//§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§//*
//             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()
{
  // default cut value  (1.0mm) 
  defaultCutValue = 10.0*cm;
  // SetVerboseLevel(1);
  //  SetCuts();
  SetCutsWithDefault();
   
  SetCutValue(1*mm, "e+"); 
  SetCutValue(1*mm, "proton"); 

  //  SetCutValue(0.001*mm, "mu+"); 
  //  SetCutValue(0.001*mm, "Mu"); 

  // General Physics
  RegisterPhysics( new LEMuSRGeneralPhysics("general") );

  // EM Physics
  RegisterPhysics( new LEMuSREMPhysics("standard EM"));

  // Muon Physics
  RegisterPhysics(  new LEMuSRMuonPhysics("muon"));

  // Hadron Physics
  RegisterPhysics(  new LEMuSRHadronPhysics("hadron"));

  // Ion Physics
  RegisterPhysics( new LEMuSRIonPhysics("ion"));


}

LEMuSRPhysicsList::~LEMuSRPhysicsList()
{
}

void LEMuSRPhysicsList::SetCuts()
{
  //  " G4VUserPhysicsList::SetCutsWithDefault" method sets 
  //   the default cut value for all particle types 
  SetCutsWithDefault();
   
  SetCutValue(1.*mm, "e+"); 
  SetCutValue(1.*mm, "e-"); 
  
}



 
