ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SteppingAction.cc
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file SteppingAction.cc
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 // This example is provided by the Geant4-DNA collaboration
27 // Any report or published results obtained using the Geant4-DNA software
28 // shall cite the following Geant4-DNA collaboration publication:
29 // Med. Phys. 37 (2010) 4692-4708
30 // and papers
31 // M. Batmunkh et al. J Radiat Res Appl Sci 8 (2015) 498-507
32 // O. Belov et al. Physica Medica 32 (2016) 1510-1520
33 // The Geant4-DNA web site is available at http://geant4-dna.org
34 //
35 // -------------------------------------------------------------------
36 // November 2016
37 // -------------------------------------------------------------------
38 //
41 
42 #include "Analysis.hh"
43 #include "SteppingAction.hh"
44 #include "RunAction.hh"
45 #include "PrimaryGeneratorAction.hh"
46 #include "G4SystemOfUnits.hh"
47 #include "G4SteppingManager.hh"
48 #include "G4VTouchable.hh"
49 //
50 //#include "NeuronLoadDataFile.hh"
51 #include "G4ios.hh"
52 #include "G4LogicalVolume.hh"
53 #include "G4LogicalVolumeStore.hh"
54 #include "G4VPhysicalVolume.hh"
55 #include "G4PhysicalVolumeStore.hh"
56 #include "Run.hh"
57 #include "G4RunManager.hh"
58 
59 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
60 
62 : G4UserSteppingAction(), fRunAction(run)
63 {
64  //fNeuronLoadParamz = new NeuronLoadDataFile();
65  //fpNeuronHits = new NeuronHitCompartments();
66 }
67 
68 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
69 
71 {
72 }
73 
74 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
75 
77 {
78 
80  GetProcessName()!="Transportation")
81  {
82  G4double edepStep = step->GetTotalEnergyDeposit() ;
83  G4VPhysicalVolume* volumeStep = step->GetPreStepPoint()->
84  GetPhysicalVolume();
87  ->GetVolume("Medium");
89  ->GetVolume("BoundingSlice");
90 
91  // count processes
92  //
93  const G4StepPoint* endPoint = step->GetPostStepPoint();
94  const G4VProcess* process = endPoint->GetProcessDefinedStep();
95  Run* run = static_cast<Run*>(
97  run->CountProcesses(process);
98 
99  // Edep in all volume
100  if (edepStep > 0. )
101  {
102  fRunAction->AddEdepALL(edepStep);
103  //fpNeuronHits->RegisterEdep(volumeStep, edepStep);
104 
105  // Edep in a target volume (Bounding slice)
106  if (volumeStep == volumeSlice)
107  {
108  fRunAction->AddEdepSlice(edepStep);
109 
110  }
111 
112  // Edep in Soma
113  if (volumeStep->GetName() == "Soma")
114  {
115  fRunAction->AddEdepSoma(edepStep);
116  // fRunAction->AddSomaCompart(touchStep->GetCopyNumber(), edepStep);
117  run->AddSomaCompart(touchStep->GetCopyNumber(), edepStep);
118  }
119 
120  // Edep in Dendrites
121  if (volumeStep->GetName() == "Dendrites")
122  {
123  fRunAction->AddEdepDend(edepStep);
124  run->AddDendCompart(touchStep->GetCopyNumber(), edepStep);
125  }
126 
127  // Edep in Axon
128  if (volumeStep->GetName() == "Axon")
129  {
130  fRunAction->AddEdepAxon(edepStep);
131  run->AddAxonCompart(touchStep->GetCopyNumber(), edepStep);
132  }
133 
134  // Edep in whole Neuron
135  if (volumeStep != volumeMedium && volumeStep != volumeSlice)
136  {
137  fRunAction->AddEdepNeuron(edepStep);
138  }
139 
140  // Edep outside bounding scice
141  if (volumeStep == volumeMedium)
142  {
143  fRunAction->AddEdepMedium(edepStep);
144  }
145 
146  } // end edep>0
147  }
148 
149 }