MuNuclearSplittingProcessXSecBias.h
Go to the documentation of this file.
1 ////////////////////////////////////////////////////////////////////////
2 /// \file MuNuclearSplittingProcessXSecBias.h
3 ///
4 /// \version $Id: GArG4.h,v 1.11 2010/06/04 21:47:27 bjpjones Exp $
5 /// \author brebel@fnal.gov
6 ////////////////////////////////////////////////////////////////////////
7 
8 #ifndef GARG4MNXS_H
9 #define GARG4MNXS_H
10 
11 #include "Geant4/globals.hh"
12 #include "Geant4/G4ParticleDefinition.hh"
13 #include "Geant4/G4ParticleWithCuts.hh"
14 #include "Geant4/G4ProcessManager.hh"
15 #include "Geant4/G4ProcessVector.hh"
16 #include "Geant4/G4ParticleTypes.hh"
17 #include "Geant4/G4ParticleTable.hh"
18 #include "Geant4/G4WrapperProcess.hh"
19 
20 #include "Geant4/G4MuonNuclearProcess.hh"
21 #include "Geant4/G4Material.hh"
22 #include "Geant4/G4MaterialTable.hh"
23 #include "Geant4/G4ios.hh"
24 #include <iomanip>
25 
26 //#include "Geant4/G4DataQuestionaire.hh" //depreciated
27 
28 namespace gar {
29  namespace garg4 {
30 
31  class MuNuclearSplittingProcessXSecBias : public G4WrapperProcess {
32  // Override PostStepDoIt method
33  public:
36 
37  void SetNSplit(G4int nTrx, G4int xB=0, G4double xFac=1) {fNSplit = nTrx, eFactor = (G4double) xFac, xBiasMode = xB;};
38  void SetIsActive(G4bool doIt) {fActive = doIt;};
39 
40  G4VParticleChange* PostStepDoIt(const G4Track& track, const G4Step& step);
41  G4VParticleChange* AlongStepDoIt(const G4Track& track, const G4Step& step);
42  //////////////////////////
43  // GPIL //////////////
44  /////////////////////////
46  const G4Track& track,
47  G4double previousStepSize,
48  G4double currentMinimumStep,
49  G4double& proposedSafety,
50  G4GPILSelection* selection
51  );
52  virtual G4double PostStepGetPhysicalInteractionLength(
53  const G4Track& track,
54  G4double previousStepSize,
55  G4ForceCondition* condition
56  );
57  protected:
58 
60  {
61  G4VProcess::theNumberOfInteractionLengthLeft = -std::log( G4UniformRand() );
62  theInitialNumberOfInteractionLength = G4VProcess::theNumberOfInteractionLengthLeft;
63  }
64 
65 
66  private:
67  // Data members
68  G4int fNSplit;
69  G4bool fActive;
70  G4int xBiasMode;
71  G4double eFactor; // enhancement factor to the cross-setion
72 
73  G4VParticleChange fParticleChange;
74  // weight change applied at AlongStepDoIt()
75  G4double wc;
77 
78  G4double XBiasSurvivalProbability();
79  G4double XBiasSecondaryWeight();
81 
82 
83  };
84 
85 
86  }// end namespace
87 } // gar
88 
89 #endif // MNSP
G4VParticleChange * AlongStepDoIt(const G4Track &track, const G4Step &step)
G4VParticleChange * PostStepDoIt(const G4Track &track, const G4Step &step)
General GArSoft Utilities.
virtual G4double AlongStepGetPhysicalInteractionLength(const G4Track &track, G4double previousStepSize, G4double currentMinimumStep, G4double &proposedSafety, G4GPILSelection *selection)
void SetNSplit(G4int nTrx, G4int xB=0, G4double xFac=1)
virtual G4double PostStepGetPhysicalInteractionLength(const G4Track &track, G4double previousStepSize, G4ForceCondition *condition)