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.7)


  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 /// \file SteppingAction.cc                        35 /// \file SteppingAction.cc
 36 /// \brief Implementation of the SteppingActio     36 /// \brief Implementation of the SteppingAction class
 37                                                    37 
 38 #include "SteppingAction.hh"                       38 #include "SteppingAction.hh"
 39                                                    39 
 40 // G4                                              40 // G4
 41 #include "CommandLineParser.hh"                <<  41 #include <globals.hh>
 42                                                << 
 43 #include "G4AnalysisManager.hh"                << 
 44                                                << 
 45 #include <G4SystemOfUnits.hh>                      42 #include <G4SystemOfUnits.hh>
 46 #include <G4Track.hh>                          << 
 47 #include <G4VProcess.hh>                           43 #include <G4VProcess.hh>
 48 #include <globals.hh>                          <<  44 #include <G4Track.hh>
                                                   >>  45 
                                                   >>  46 #include "Analysis.hh"
                                                   >>  47 #include "CommandLineParser.hh"
 49                                                    48 
 50 using namespace G4DNAPARSER;                       49 using namespace G4DNAPARSER;
 51                                                    50 
 52 //....oooOO0OOooo........oooOO0OOooo........oo     51 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 53                                                    52 
 54 SteppingAction::SteppingAction() : G4UserStepp <<  53 SteppingAction::SteppingAction() : G4UserSteppingAction()
                                                   >>  54 {
                                                   >>  55 }
 55                                                    56 
 56 //....oooOO0OOooo........oooOO0OOooo........oo     57 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 57                                                    58 
 58 SteppingAction::~SteppingAction() {}           <<  59 SteppingAction::~SteppingAction()
                                                   >>  60 {
                                                   >>  61 }
 59                                                    62 
 60 //....oooOO0OOooo........oooOO0OOooo........oo     63 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 61                                                    64 
 62 void SteppingAction::UserSteppingAction(const      65 void SteppingAction::UserSteppingAction(const G4Step* step)
 63 {                                                  66 {
 64   G4double flagParticle = 0.;                      67   G4double flagParticle = 0.;
 65   G4double flagProcess = 0.;                       68   G4double flagProcess = 0.;
 66   G4double flagVolume = 0.;                        69   G4double flagVolume = 0.;
 67   G4double x, y, z, xp, yp, zp;                    70   G4double x, y, z, xp, yp, zp;
 68   G4double dE;                                     71   G4double dE;
 69                                                    72 
 70   dE = step->GetTotalEnergyDeposit() / eV;         73   dE = step->GetTotalEnergyDeposit() / eV;
 71                                                    74 
 72   const G4String& particleName =               <<  75   const G4String& particleName = step->GetTrack()->GetDynamicParticle()
 73     step->GetTrack()->GetDynamicParticle()->Ge <<  76       ->GetDefinition()->GetParticleName();
 74                                                    77 
 75   const G4String& processName = step->GetPostS <<  78   const G4String& processName =
                                                   >>  79       step->GetPostStepPoint()->GetProcessDefinedStep()->GetProcessName();
 76                                                    80 
 77   const G4String& volumeName = step->GetPreSte <<  81   const G4String& volumeName =
                                                   >>  82       step->GetPreStepPoint()->GetPhysicalVolume()->GetName();
 78                                                    83 
 79   if (particleName == "e-")                    <<  84   if (particleName == "e-") flagParticle = 10;
 80     flagParticle = 10;                         <<  85   else if (particleName == "proton") flagParticle = 20;
 81   else if (particleName == "proton")           <<  86   else if (particleName == "hydrogen") flagParticle = 30;
 82     flagParticle = 20;                         <<  87   else if (particleName == "alpha") flagParticle = 40;
 83   else if (particleName == "hydrogen")         <<  88   else if (particleName == "alpha+") flagParticle = 50;
 84     flagParticle = 30;                         <<  89   else if (particleName == "helium") flagParticle = 60;
 85   else if (particleName == "alpha")            <<  90 
 86     flagParticle = 40;                         <<  91   if (processName == "e-_G4DNAElastic") flagProcess = 11;
 87   else if (particleName == "alpha+")           <<  92   else if (processName == "e-_G4DNAExcitation") flagProcess = 12;
 88     flagParticle = 50;                         <<  93   else if (processName == "e-_G4DNAIonisation") flagProcess = 13;
 89   else if (particleName == "helium")           <<  94   else if (processName == "e-_G4DNAAttachment") flagProcess = 14;
 90     flagParticle = 60;                         <<  95   else if (processName == "e-_G4DNAVibExcitation") flagProcess = 15;
 91                                                <<  96   else if (processName == "eCapture") flagProcess = 16;
 92   if (processName == "e-_G4DNAElastic")        <<  97 //  if (step->GetPostStepPoint()->GetProcessDefinedStep()
 93     flagProcess = 11;                          <<  98 // ->GetProcessName()=="msc")        flagProcess =17;
 94   else if (processName == "e-_G4DNAExcitation" <<  99 
 95     flagProcess = 12;                          << 100   else if (processName == "proton_G4DNAExcitation") flagProcess = 21;
 96   else if (processName == "e-_G4DNAIonisation" << 101   else if (processName == "proton_G4DNAIonisation") flagProcess = 22;
 97     flagProcess = 13;                          << 102   else if (processName == "proton_G4DNAChargeDecrease") flagProcess = 23;
 98   else if (processName == "e-_G4DNAAttachment" << 103 
 99     flagProcess = 14;                          << 104   else if (processName == "hydrogen_G4DNAExcitation") flagProcess = 31;
100   else if (processName == "e-_G4DNAVibExcitati << 105   else if (processName == "hydrogen_G4DNAIonisation") flagProcess = 32;
101     flagProcess = 15;                          << 106   else if (processName == "hydrogen_G4DNAChargeIncrease") flagProcess = 33;
102   else if (processName == "eCapture")          << 107 
103     flagProcess = 16;                          << 108   else if (processName == "alpha_G4DNAExcitation") flagProcess = 41;
104   //  if (step->GetPostStepPoint()->GetProcess << 109   else if (processName == "alpha_G4DNAIonisation") flagProcess = 42;
105   // ->GetProcessName()=="msc")        flagPro << 110   else if (processName == "alpha_G4DNAChargeDecrease") flagProcess = 43;
106                                                << 111 
107   else if (processName == "proton_G4DNAExcitat << 112   else if (processName == "alpha+_G4DNAExcitation") flagProcess = 51;
108     flagProcess = 21;                          << 113   else if (processName == "alpha+_G4DNAIonisation") flagProcess = 52;
109   else if (processName == "proton_G4DNAIonisat << 114   else if (processName == "alpha+_G4DNAChargeDecrease") flagProcess = 53;
110     flagProcess = 22;                          << 115   else if (processName == "alpha+_G4DNAChargeIncrease") flagProcess = 54;
111   else if (processName == "proton_G4DNAChargeD << 116 
112     flagProcess = 23;                          << 117   else if (processName == "helium_G4DNAExcitation") flagProcess = 61;
113                                                << 118   else if (processName == "helium_G4DNAIonisation") flagProcess = 62;
114   else if (processName == "hydrogen_G4DNAExcit << 119   else if (processName == "helium_G4DNAChargeIncrease") flagProcess = 63;
115     flagProcess = 31;                          << 120 
116   else if (processName == "hydrogen_G4DNAIonis << 121 // if (step->GetPreStepPoint()->GetProcessDefinedStep()->
117     flagProcess = 32;                          << 122 //  GetProcessName()=="hIoni")        flagProcess =24;
118   else if (processName == "hydrogen_G4DNACharg << 123 // if (step->GetPreStepPoint()->GetProcessDefinedStep()->
119     flagProcess = 33;                          << 124 //  GetProcessName()=="eIoni")        flagProcess =18;
120                                                << 125 
121   else if (processName == "alpha_G4DNAExcitati << 126   if (volumeName == "physi sugar 2") flagVolume = 1;
122     flagProcess = 41;                          << 127   else if (volumeName == "physi sugar 4") flagVolume = 2;
123   else if (processName == "alpha_G4DNAIonisati << 128 
124     flagProcess = 42;                          << 129   if (flagVolume != 0 && dE != 0)
125   else if (processName == "alpha_G4DNAChargeDe << 130   {
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                                                   131 
154   if (flagVolume != 0 && dE != 0) {            << 
155     x = step->GetPreStepPoint()->GetPosition()    132     x = step->GetPreStepPoint()->GetPosition().x() / nanometer;
156     y = step->GetPreStepPoint()->GetPosition()    133     y = step->GetPreStepPoint()->GetPosition().y() / nanometer;
157     z = step->GetPreStepPoint()->GetPosition()    134     z = step->GetPreStepPoint()->GetPosition().z() / nanometer;
158     xp = step->GetPostStepPoint()->GetPosition    135     xp = step->GetPostStepPoint()->GetPosition().x() / nanometer;
159     yp = step->GetPostStepPoint()->GetPosition    136     yp = step->GetPostStepPoint()->GetPosition().y() / nanometer;
160     zp = step->GetPostStepPoint()->GetPosition    137     zp = step->GetPostStepPoint()->GetPosition().z() / nanometer;
161                                                   138 
162     // The lines below could be put upper to g    139     // The lines below could be put upper to gain time in the simulation
163     // Added here for testing that all the ret << 140     // Added here for testing that all the retrieve information are 
164     // correctly working                          141     // correctly working
165     CommandLineParser* parser = CommandLinePar    142     CommandLineParser* parser = CommandLineParser::GetParser();
166     Command* command(0);                          143     Command* command(0);
167     if ((command = parser->GetCommandIfActive( << 144     if((command = parser->GetCommandIfActive("-out"))==0) return;
168                                                   145 
169     // get analysis manager                       146     // get analysis manager
170     G4AnalysisManager* analysisManager = G4Ana    147     G4AnalysisManager* analysisManager = G4AnalysisManager::Instance();
171                                                   148 
172     analysisManager->FillNtupleDColumn(0, flag    149     analysisManager->FillNtupleDColumn(0, flagParticle);
173     analysisManager->FillNtupleDColumn(1, flag    150     analysisManager->FillNtupleDColumn(1, flagProcess);
174     analysisManager->FillNtupleDColumn(2, flag    151     analysisManager->FillNtupleDColumn(2, flagVolume);
175     analysisManager->FillNtupleDColumn(3, xp);    152     analysisManager->FillNtupleDColumn(3, xp);
176     analysisManager->FillNtupleDColumn(4, yp);    153     analysisManager->FillNtupleDColumn(4, yp);
177     analysisManager->FillNtupleDColumn(5, zp);    154     analysisManager->FillNtupleDColumn(5, zp);
178     analysisManager->FillNtupleDColumn(6, dE);    155     analysisManager->FillNtupleDColumn(6, dE);
179     analysisManager->FillNtupleDColumn(        << 156     analysisManager->FillNtupleDColumn(7,
180       7, std::sqrt((x - xp) * (x - xp) + (y -  << 157                                        std::sqrt((x - xp) * (x - xp)
                                                   >> 158                                            + (y - yp) * (y - yp)
                                                   >> 159                                            + (z - zp) * (z - zp)));
181                                                   160 
182     analysisManager->AddNtupleRow();              161     analysisManager->AddNtupleRow();
183   }                                               162   }
                                                   >> 163 
184 }                                                 164 }
185                                                   165