LArSoft  v07_13_02
Liquid Argon Software toolkit - http://larsoft.org/
MuNuclearSplittingProcessXSecBias.h
Go to the documentation of this file.
1 
8 #ifndef LARG4_MNXS_H
9 #define LARG4_MNXS_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"
27 
28 namespace larg4 {
29 
30 class MuNuclearSplittingProcessXSecBias : public G4WrapperProcess {
31 // Override PostStepDoIt method
32  public:
35 
36  void SetNSplit(G4int nTrx, G4int xB=0, G4double xFac=1) {fNSplit = nTrx, eFactor = (G4double) xFac, xBiasMode = xB;};
37  void SetIsActive(G4bool doIt) {fActive = doIt;};
38 
39  G4VParticleChange* PostStepDoIt(const G4Track& track, const G4Step& step);
40  G4VParticleChange* AlongStepDoIt(const G4Track& track, const G4Step& step);
42  // GPIL //////////////
45  const G4Track& track,
46  G4double previousStepSize,
47  G4double currentMinimumStep,
48  G4double& proposedSafety,
49  G4GPILSelection* selection
50  );
51  virtual G4double PostStepGetPhysicalInteractionLength(
52  const G4Track& track,
53  G4double previousStepSize,
54  G4ForceCondition* condition
55  );
56  protected:
57 
59  {
60  G4VProcess::theNumberOfInteractionLengthLeft = -std::log( G4UniformRand() );
61  theInitialNumberOfInteractionLength = G4VProcess::theNumberOfInteractionLengthLeft;
62  }
63 
64 
65  private:
66 // Data members
67  G4int fNSplit;
68  G4bool fActive;
69  G4int xBiasMode;
70  G4double eFactor; // enhancement factor to the cross-setion
71 
72  G4VParticleChange fParticleChange;
73  // weight change applied at AlongStepDoIt()
74  G4double wc;
76 
77  G4double XBiasSurvivalProbability();
78  G4double XBiasSecondaryWeight();
80 
81 
82 };
83 
84 
85 }// end namespace
86 
87 #endif // MNSP
virtual G4double PostStepGetPhysicalInteractionLength(const G4Track &track, G4double previousStepSize, G4ForceCondition *condition)
void SetNSplit(G4int nTrx, G4int xB=0, G4double xFac=1)
Geant4 interface.
virtual G4double AlongStepGetPhysicalInteractionLength(const G4Track &track, G4double previousStepSize, G4double currentMinimumStep, G4double &proposedSafety, G4GPILSelection *selection)
G4VParticleChange * AlongStepDoIt(const G4Track &track, const G4Step &step)
Float_t track
Definition: plot.C:34
G4VParticleChange * PostStepDoIt(const G4Track &track, const G4Step &step)