ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4ScoreSplittingProcess.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4ScoreSplittingProcess.hh
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 //
27 //
28 //
29 //---------------------------------------------------------------
30 //
31 // G4ScoreSplittingProcess.hh
32 //
33 // Description:
34 // This process is used to split the length and energy
35 // of a step in a regular structure into sub-steps, and to
36 // call the scorers for each sub-volume.
37 // It invokes sensitive detectors assigned in the *mass*
38 // world.
39 //
40 // Design and first implementation: J. Apostolakis / M.Asai 2010
41 //---------------------------------------------------------------
42 
43 
44 #ifndef G4ScoreSplittingProcess_h
45 #define G4ScoreSplittingProcess_h 1
46 
47 #include "globals.hh"
48 class G4Step;
49 class G4Navigator;
51 class G4PathFinder;
52 class G4VTouchable;
53 class G4VPhysicalVolume;
54 class G4ParticleChange;
55 class G4EnergySplitter;
56 
57 #include "G4VProcess.hh"
58 #include "G4FieldTrack.hh"
59 #include "G4TouchableHandle.hh"
60 class G4TouchableHistory;
61 // #include "G4TouchableHistory.hh"
62 
63 //------------------------------------------
64 //
65 // G4ScoreSplittingProcess class
66 //
67 //------------------------------------------
68 
69 
70 // Class Description:
71 
73 {
74 public: // with description
75 
76  //------------------------
77  // Constructor/Destructor
78  //------------------------
79 
80  G4ScoreSplittingProcess(const G4String& processName = "ScoreSplittingProc",
82  virtual ~G4ScoreSplittingProcess();
83 
84  //--------------------------------------------------------------
85  // Process interface
86  //--------------------------------------------------------------
87 
88  void StartTracking(G4Track*);
89 
90  //------------------------------------------------------------------------
91  // GetPhysicalInteractionLength() and DoIt() methods for AtRest
92  //------------------------------------------------------------------------
93 
95  const G4Track& ,
97  );
98 
100  const G4Track& ,
101  const G4Step&
102  );
103 
104  //------------------------------------------------------------------------
105  // GetPhysicalInteractionLength() and DoIt() methods for AlongStep
106  //------------------------------------------------------------------------
107 
109  const G4Track&,
110  G4double ,
111  G4double ,
112  G4double&,
114  );
115 
117  const G4Track& ,
118  const G4Step&
119  );
120 
121  //-----------------------------------------------------------------------
122  // GetPhysicalInteractionLength() and DoIt() methods for PostStep
123  //-----------------------------------------------------------------------
124 
126  G4double previousStepSize,
128 
129  G4VParticleChange* PostStepDoIt(const G4Track& ,const G4Step& );
130 
131 private:
132  G4TouchableHistory* CreateTouchableForSubStep( G4int newVoxelNum, G4ThreeVector newPosition );
133 
134 private:
135  void CopyStepStart(const G4Step & step);
136 
140 
143 
144  // G4TransportationManager* fTransportationManager;
145  // G4PathFinder* fPathFinder;
146 
147  // -------------------------------
148  // Touchables for the Split Step
149  // -------------------------------
152 
153  // Memory of Touchables of full step
156 
158 
159  // ******************************************************
160  // For TESTS:
161  // ******************************************************
162 public:
163  void Verbose(const G4Step&) const;
164 };
165 
166 #endif