source: trunk/examples/advanced/radioprotection/src/RemSimMuonStandard.cc @ 1309

Last change on this file since 1309 was 1230, checked in by garnier, 14 years ago

update to geant4.9.3

File size: 3.9 KB
Line 
1//
2// ********************************************************************
3// * License and Disclaimer                                           *
4// *                                                                  *
5// * The  Geant4 software  is  copyright of the Copyright Holders  of *
6// * the Geant4 Collaboration.  It is provided  under  the terms  and *
7// * conditions of the Geant4 Software License,  included in the file *
8// * LICENSE and available at  http://cern.ch/geant4/license .  These *
9// * include a list of copyright holders.                             *
10// *                                                                  *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work  make  any representation or  warranty, express or implied, *
14// * regarding  this  software system or assume any liability for its *
15// * use.  Please see the license in the file  LICENSE  and URL above *
16// * for the full disclaimer and the limitation of liability.         *
17// *                                                                  *
18// * This  code  implementation is the result of  the  scientific and *
19// * technical work of the GEANT4 collaboration.                      *
20// * By using,  copying,  modifying or  distributing the software (or *
21// * any work based  on the software)  you  agree  to acknowledge its *
22// * use  in  resulting  scientific  publications,  and indicate your *
23// * acceptance of all terms of the Geant4 Software license.          *
24// ********************************************************************
25//
26// $Id: RemSimMuonStandard.cc,v 1.7 2009/11/12 05:12:18 cirrone Exp $
27// GEANT4 tag $Name: geant4-09-03-cand-01 $
28//
29// Author:Susanna Guatelli, guatelli@ge.infn.it
30//
31#include "RemSimMuonStandard.hh"
32#include "G4ProcessManager.hh"
33
34//muon:
35#include "G4hIonisation.hh"
36#include "G4MuMultipleScattering.hh"
37#include "G4MuIonisation.hh"
38#include "G4MuBremsstrahlung.hh"
39#include "G4MuPairProduction.hh"
40#include "G4MuonMinusCaptureAtRest.hh"
41#include "G4StepLimiter.hh"
42
43RemSimMuonStandard::RemSimMuonStandard(const G4String& name): G4VPhysicsConstructor(name)
44{ }
45
46RemSimMuonStandard::~RemSimMuonStandard()
47{ }
48
49void RemSimMuonStandard::ConstructProcess()
50{
51  // Add standard processes for muons
52 
53  theParticleIterator -> reset();
54
55  while( (*theParticleIterator)() )
56    {
57      G4ParticleDefinition* particle = theParticleIterator->value();
58      G4ProcessManager* pmanager = particle -> GetProcessManager();
59      G4String particleName = particle -> GetParticleName();
60     
61      if(( particleName == "mu+")|| (particleName == "mu-" ))
62        {//muon
63          G4VProcess* aMultipleScattering = new G4MuMultipleScattering();
64          G4VProcess* aBremsstrahlung     = new G4MuBremsstrahlung();
65          G4VProcess* aPairProduction     = new G4MuPairProduction();
66          G4VProcess* anIonisation        = new G4MuIonisation();
67          //
68          // add processes
69          pmanager -> AddProcess(anIonisation);
70          pmanager -> AddProcess(aMultipleScattering);
71          pmanager -> AddProcess(aBremsstrahlung);
72          pmanager -> AddProcess(aPairProduction);
73          //
74          // set ordering for AlongStepDoIt
75          pmanager -> SetProcessOrdering(aMultipleScattering, idxAlongStep,1);
76          pmanager -> SetProcessOrdering(anIonisation,        idxAlongStep,2);
77          pmanager -> SetProcessOrdering(aBremsstrahlung,     idxAlongStep,3);
78          pmanager -> SetProcessOrdering(aPairProduction,     idxAlongStep,4);     
79          //
80          // set ordering for PostStepDoIt
81          pmanager -> SetProcessOrdering(aMultipleScattering, idxPostStep,1);
82          pmanager -> SetProcessOrdering(anIonisation,        idxPostStep,2);
83          pmanager -> SetProcessOrdering(aBremsstrahlung,     idxPostStep,3);
84          pmanager -> SetProcessOrdering(aPairProduction,     idxPostStep,4);
85          pmanager -> AddProcess(new G4StepLimiter(),-1,-1,3);
86
87          if( particleName == "mu-" )
88            pmanager -> AddProcess(new G4MuonMinusCaptureAtRest(), 0,-1,-1);
89        }
90    }
91}
Note: See TracBrowser for help on using the repository browser.