Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/examples/extended/medical/dna/wholeNuclearDNA/src/SteppingAction.cc

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Diff markup

Differences between /examples/extended/medical/dna/wholeNuclearDNA/src/SteppingAction.cc (Version 11.3.0) and /examples/extended/medical/dna/wholeNuclearDNA/src/SteppingAction.cc (Version 10.3.p2)


  1 //                                                  1 //
  2 // *******************************************      2 // ********************************************************************
  3 // * License and Disclaimer                         3 // * License and Disclaimer                                           *
  4 // *                                                4 // *                                                                  *
  5 // * The  Geant4 software  is  copyright of th      5 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
  6 // * the Geant4 Collaboration.  It is provided      6 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
  7 // * conditions of the Geant4 Software License      7 // * conditions of the Geant4 Software License,  included in the file *
  8 // * LICENSE and available at  http://cern.ch/      8 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
  9 // * include a list of copyright holders.           9 // * include a list of copyright holders.                             *
 10 // *                                               10 // *                                                                  *
 11 // * Neither the authors of this software syst     11 // * Neither the authors of this software system, nor their employing *
 12 // * institutes,nor the agencies providing fin     12 // * institutes,nor the agencies providing financial support for this *
 13 // * work  make  any representation or  warran     13 // * work  make  any representation or  warranty, express or implied, *
 14 // * regarding  this  software system or assum     14 // * regarding  this  software system or assume any liability for its *
 15 // * use.  Please see the license in the file      15 // * use.  Please see the license in the file  LICENSE  and URL above *
 16 // * for the full disclaimer and the limitatio     16 // * for the full disclaimer and the limitation of liability.         *
 17 // *                                               17 // *                                                                  *
 18 // * This  code  implementation is the result      18 // * This  code  implementation is the result of  the  scientific and *
 19 // * technical work of the GEANT4 collaboratio     19 // * technical work of the GEANT4 collaboration.                      *
 20 // * By using,  copying,  modifying or  distri     20 // * By using,  copying,  modifying or  distributing the software (or *
 21 // * any work based  on the software)  you  ag     21 // * any work based  on the software)  you  agree  to acknowledge its *
 22 // * use  in  resulting  scientific  publicati     22 // * use  in  resulting  scientific  publications,  and indicate your *
 23 // * acceptance of all terms of the Geant4 Sof     23 // * acceptance of all terms of the Geant4 Software license.          *
 24 // *******************************************     24 // ********************************************************************
 25 //                                                 25 //
 26 // This example is provided by the Geant4-DNA      26 // This example is provided by the Geant4-DNA collaboration
 27 // Any report or published results obtained us <<  27 // Any report or published results obtained using the Geant4-DNA software 
 28 // and the DNA geometry given in the Geom_DNA  <<  28 // and the DNA geometry given in the Geom_DNA example 
 29 // shall cite the following Geant4-DNA collabo     29 // shall cite the following Geant4-DNA collaboration publications:
 30 // [1] NIM B 298 (2013) 47-54                      30 // [1] NIM B 298 (2013) 47-54
 31 // [2] Med. Phys. 37 (2010) 4692-4708              31 // [2] Med. Phys. 37 (2010) 4692-4708
 32 // The Geant4-DNA web site is available at htt     32 // The Geant4-DNA web site is available at http://geant4-dna.org
 33 //                                                 33 //
 34 //....oooOO0OOooo........oooOO0OOooo........oo     34 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
                                                   >>  35 // $ID$
 35 /// \file SteppingAction.cc                        36 /// \file SteppingAction.cc
 36 /// \brief Implementation of the SteppingActio     37 /// \brief Implementation of the SteppingAction class
 37                                                    38 
 38 #include "SteppingAction.hh"                       39 #include "SteppingAction.hh"
 39                                                    40 
 40 // G4                                              41 // G4
 41 #include "CommandLineParser.hh"                <<  42 #include <globals.hh>
 42                                                << 
 43 #include "G4AnalysisManager.hh"                << 
 44                                                << 
 45 #include <G4SystemOfUnits.hh>                      43 #include <G4SystemOfUnits.hh>
 46 #include <G4Track.hh>                          << 
 47 #include <G4VProcess.hh>                           44 #include <G4VProcess.hh>
 48 #include <globals.hh>                          <<  45 #include <G4Track.hh>
                                                   >>  46 
                                                   >>  47 #include "Analysis.hh"
                                                   >>  48 #include "CommandLineParser.hh"
 49                                                    49 
 50 using namespace G4DNAPARSER;                       50 using namespace G4DNAPARSER;
 51                                                    51 
 52 //....oooOO0OOooo........oooOO0OOooo........oo     52 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 53                                                    53 
 54 SteppingAction::SteppingAction() : G4UserStepp <<  54 SteppingAction::SteppingAction() : G4UserSteppingAction()
                                                   >>  55 {
                                                   >>  56 }
 55                                                    57 
 56 //....oooOO0OOooo........oooOO0OOooo........oo     58 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 57                                                    59 
 58 SteppingAction::~SteppingAction() {}           <<  60 SteppingAction::~SteppingAction()
                                                   >>  61 {
                                                   >>  62 }
 59                                                    63 
 60 //....oooOO0OOooo........oooOO0OOooo........oo     64 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 61                                                    65 
 62 void SteppingAction::UserSteppingAction(const      66 void SteppingAction::UserSteppingAction(const G4Step* step)
 63 {                                                  67 {
 64   G4double flagParticle = 0.;                      68   G4double flagParticle = 0.;
 65   G4double flagProcess = 0.;                       69   G4double flagProcess = 0.;
 66   G4double flagVolume = 0.;                        70   G4double flagVolume = 0.;
 67   G4double x, y, z, xp, yp, zp;                    71   G4double x, y, z, xp, yp, zp;
 68   G4double dE;                                     72   G4double dE;
 69                                                    73 
 70   dE = step->GetTotalEnergyDeposit() / eV;         74   dE = step->GetTotalEnergyDeposit() / eV;
 71                                                    75 
 72   const G4String& particleName =               <<  76   const G4String& particleName = step->GetTrack()->GetDynamicParticle()
 73     step->GetTrack()->GetDynamicParticle()->Ge <<  77       ->GetDefinition()->GetParticleName();
 74                                                    78 
 75   const G4String& processName = step->GetPostS <<  79   const G4String& processName =
                                                   >>  80       step->GetPostStepPoint()->GetProcessDefinedStep()->GetProcessName();
 76                                                    81 
 77   const G4String& volumeName = step->GetPreSte <<  82   const G4String& volumeName =
                                                   >>  83       step->GetPreStepPoint()->GetPhysicalVolume()->GetName();
 78                                                    84 
 79   if (particleName == "e-")                    <<  85   if (particleName == "e-") flagParticle = 10;
 80     flagParticle = 10;                         <<  86   else if (particleName == "proton") flagParticle = 20;
 81   else if (particleName == "proton")           <<  87   else if (particleName == "hydrogen") flagParticle = 30;
 82     flagParticle = 20;                         <<  88   else if (particleName == "alpha") flagParticle = 40;
 83   else if (particleName == "hydrogen")         <<  89   else if (particleName == "alpha+") flagParticle = 50;
 84     flagParticle = 30;                         <<  90   else if (particleName == "helium") flagParticle = 60;
 85   else if (particleName == "alpha")            <<  91 
 86     flagParticle = 40;                         <<  92   if (processName == "e-_G4DNAElastic") flagProcess = 11;
 87   else if (particleName == "alpha+")           <<  93   else if (processName == "e-_G4DNAExcitation") flagProcess = 12;
 88     flagParticle = 50;                         <<  94   else if (processName == "e-_G4DNAIonisation") flagProcess = 13;
 89   else if (particleName == "helium")           <<  95   else if (processName == "e-_G4DNAAttachment") flagProcess = 14;
 90     flagParticle = 60;                         <<  96   else if (processName == "e-_G4DNAVibExcitation") flagProcess = 15;
 91                                                <<  97   else if (processName == "eCapture") flagProcess = 16;
 92   if (processName == "e-_G4DNAElastic")        <<  98 //  if (step->GetPostStepPoint()->GetProcessDefinedStep()
 93     flagProcess = 11;                          <<  99 // ->GetProcessName()=="msc")        flagProcess =17;
 94   else if (processName == "e-_G4DNAExcitation" << 100 
 95     flagProcess = 12;                          << 101   else if (processName == "proton_G4DNAExcitation") flagProcess = 21;
 96   else if (processName == "e-_G4DNAIonisation" << 102   else if (processName == "proton_G4DNAIonisation") flagProcess = 22;
 97     flagProcess = 13;                          << 103   else if (processName == "proton_G4DNAChargeDecrease") flagProcess = 23;
 98   else if (processName == "e-_G4DNAAttachment" << 104 
 99     flagProcess = 14;                          << 105   else if (processName == "hydrogen_G4DNAExcitation") flagProcess = 31;
100   else if (processName == "e-_G4DNAVibExcitati << 106   else if (processName == "hydrogen_G4DNAIonisation") flagProcess = 32;
101     flagProcess = 15;                          << 107   else if (processName == "hydrogen_G4DNAChargeIncrease") flagProcess = 33;
102   else if (processName == "eCapture")          << 108 
103     flagProcess = 16;                          << 109   else if (processName == "alpha_G4DNAExcitation") flagProcess = 41;
104   //  if (step->GetPostStepPoint()->GetProcess << 110   else if (processName == "alpha_G4DNAIonisation") flagProcess = 42;
105   // ->GetProcessName()=="msc")        flagPro << 111   else if (processName == "alpha_G4DNAChargeDecrease") flagProcess = 43;
106                                                << 112 
107   else if (processName == "proton_G4DNAExcitat << 113   else if (processName == "alpha+_G4DNAExcitation") flagProcess = 51;
108     flagProcess = 21;                          << 114   else if (processName == "alpha+_G4DNAIonisation") flagProcess = 52;
109   else if (processName == "proton_G4DNAIonisat << 115   else if (processName == "alpha+_G4DNAChargeDecrease") flagProcess = 53;
110     flagProcess = 22;                          << 116   else if (processName == "alpha+_G4DNAChargeIncrease") flagProcess = 54;
111   else if (processName == "proton_G4DNAChargeD << 117 
112     flagProcess = 23;                          << 118   else if (processName == "helium_G4DNAExcitation") flagProcess = 61;
113                                                << 119   else if (processName == "helium_G4DNAIonisation") flagProcess = 62;
114   else if (processName == "hydrogen_G4DNAExcit << 120   else if (processName == "helium_G4DNAChargeIncrease") flagProcess = 63;
115     flagProcess = 31;                          << 121 
116   else if (processName == "hydrogen_G4DNAIonis << 122 // if (step->GetPreStepPoint()->GetProcessDefinedStep()->
117     flagProcess = 32;                          << 123 //  GetProcessName()=="hIoni")        flagProcess =24;
118   else if (processName == "hydrogen_G4DNACharg << 124 // if (step->GetPreStepPoint()->GetProcessDefinedStep()->
119     flagProcess = 33;                          << 125 //  GetProcessName()=="eIoni")        flagProcess =18;
120                                                << 126 
121   else if (processName == "alpha_G4DNAExcitati << 127   if (volumeName == "physi sugar 2") flagVolume = 1;
122     flagProcess = 41;                          << 128   else if (volumeName == "physi sugar 4") flagVolume = 2;
123   else if (processName == "alpha_G4DNAIonisati << 129 
124     flagProcess = 42;                          << 130   if (flagVolume != 0 && dE != 0)
125   else if (processName == "alpha_G4DNAChargeDe << 131   {
126     flagProcess = 43;                          << 
127                                                << 
128   else if (processName == "alpha+_G4DNAExcitat << 
129     flagProcess = 51;                          << 
130   else if (processName == "alpha+_G4DNAIonisat << 
131     flagProcess = 52;                          << 
132   else if (processName == "alpha+_G4DNAChargeD << 
133     flagProcess = 53;                          << 
134   else if (processName == "alpha+_G4DNAChargeI << 
135     flagProcess = 54;                          << 
136                                                << 
137   else if (processName == "helium_G4DNAExcitat << 
138     flagProcess = 61;                          << 
139   else if (processName == "helium_G4DNAIonisat << 
140     flagProcess = 62;                          << 
141   else if (processName == "helium_G4DNAChargeI << 
142     flagProcess = 63;                          << 
143                                                << 
144   // if (step->GetPreStepPoint()->GetProcessDe << 
145   //  GetProcessName()=="hIoni")        flagPr << 
146   // if (step->GetPreStepPoint()->GetProcessDe << 
147   //  GetProcessName()=="eIoni")        flagPr << 
148                                                << 
149   if (volumeName == "physi sugar 2")           << 
150     flagVolume = 1;                            << 
151   else if (volumeName == "physi sugar 4")      << 
152     flagVolume = 2;                            << 
153                                                   132 
154   if (flagVolume != 0 && dE != 0) {            << 
155     x = step->GetPreStepPoint()->GetPosition()    133     x = step->GetPreStepPoint()->GetPosition().x() / nanometer;
156     y = step->GetPreStepPoint()->GetPosition()    134     y = step->GetPreStepPoint()->GetPosition().y() / nanometer;
157     z = step->GetPreStepPoint()->GetPosition()    135     z = step->GetPreStepPoint()->GetPosition().z() / nanometer;
158     xp = step->GetPostStepPoint()->GetPosition    136     xp = step->GetPostStepPoint()->GetPosition().x() / nanometer;
159     yp = step->GetPostStepPoint()->GetPosition    137     yp = step->GetPostStepPoint()->GetPosition().y() / nanometer;
160     zp = step->GetPostStepPoint()->GetPosition    138     zp = step->GetPostStepPoint()->GetPosition().z() / nanometer;
161                                                   139 
162     // The lines below could be put upper to g    140     // The lines below could be put upper to gain time in the simulation
163     // Added here for testing that all the ret << 141     // Added here for testing that all the retrieve information are 
164     // correctly working                          142     // correctly working
165     CommandLineParser* parser = CommandLinePar    143     CommandLineParser* parser = CommandLineParser::GetParser();
166     Command* command(0);                          144     Command* command(0);
167     if ((command = parser->GetCommandIfActive( << 145     if((command = parser->GetCommandIfActive("-out"))==0) return;
168                                                   146 
169     // get analysis manager                       147     // get analysis manager
170     G4AnalysisManager* analysisManager = G4Ana    148     G4AnalysisManager* analysisManager = G4AnalysisManager::Instance();
171                                                   149 
172     analysisManager->FillNtupleDColumn(0, flag    150     analysisManager->FillNtupleDColumn(0, flagParticle);
173     analysisManager->FillNtupleDColumn(1, flag    151     analysisManager->FillNtupleDColumn(1, flagProcess);
174     analysisManager->FillNtupleDColumn(2, flag    152     analysisManager->FillNtupleDColumn(2, flagVolume);
175     analysisManager->FillNtupleDColumn(3, xp);    153     analysisManager->FillNtupleDColumn(3, xp);
176     analysisManager->FillNtupleDColumn(4, yp);    154     analysisManager->FillNtupleDColumn(4, yp);
177     analysisManager->FillNtupleDColumn(5, zp);    155     analysisManager->FillNtupleDColumn(5, zp);
178     analysisManager->FillNtupleDColumn(6, dE);    156     analysisManager->FillNtupleDColumn(6, dE);
179     analysisManager->FillNtupleDColumn(        << 157     analysisManager->FillNtupleDColumn(7,
180       7, std::sqrt((x - xp) * (x - xp) + (y -  << 158                                        std::sqrt((x - xp) * (x - xp)
                                                   >> 159                                            + (y - yp) * (y - yp)
                                                   >> 160                                            + (z - zp) * (z - zp)));
181                                                   161 
182     analysisManager->AddNtupleRow();              162     analysisManager->AddNtupleRow();
183   }                                               163   }
                                                   >> 164 
184 }                                                 165 }
185                                                   166