Geant4 Cross Reference |
1 // 1 2 // ******************************************* 3 // * License and Disclaimer 4 // * 5 // * The Geant4 software is copyright of th 6 // * the Geant4 Collaboration. It is provided 7 // * conditions of the Geant4 Software License 8 // * LICENSE and available at http://cern.ch/ 9 // * include a list of copyright holders. 10 // * 11 // * Neither the authors of this software syst 12 // * institutes,nor the agencies providing fin 13 // * work make any representation or warran 14 // * regarding this software system or assum 15 // * use. Please see the license in the file 16 // * for the full disclaimer and the limitatio 17 // * 18 // * This code implementation is the result 19 // * technical work of the GEANT4 collaboratio 20 // * By using, copying, modifying or distri 21 // * any work based on the software) you ag 22 // * use in resulting scientific publicati 23 // * acceptance of all terms of the Geant4 Sof 24 // ******************************************* 25 // 26 // This example is provided by the Geant4-DNA 27 // Any report or published results obtained us 28 // shall cite the following Geant4-DNA collabo 29 // Med. Phys. 45 (2018) e722-e739 30 // Phys. Med. 31 (2015) 861-874 31 // Med. Phys. 37 (2010) 4692-4708 32 // Int. J. Model. Simul. Sci. Comput. 1 (2010) 33 // 34 // The Geant4-DNA web site is available at htt 35 // 36 /// \file TrackingAction.cc 37 /// \brief Implementation of the TrackingActio 38 39 #include "TrackingAction.hh" 40 41 #include "G4Alpha.hh" 42 #include "G4AnalysisManager.hh" 43 #include "G4DNAGenericIonsManager.hh" 44 #include "G4Electron.hh" 45 #include "G4Gamma.hh" 46 #include "G4PhysicalConstants.hh" 47 #include "G4Proton.hh" 48 #include "G4SystemOfUnits.hh" 49 #include "G4Track.hh" 50 51 //....oooOO0OOooo........oooOO0OOooo........oo 52 53 TrackingAction::TrackingAction() {} 54 55 //....oooOO0OOooo........oooOO0OOooo........oo 56 57 void TrackingAction::PreUserTrackingAction(con 58 { 59 G4double flagParticle = -1.; 60 G4double x, y, z, dirx, diry, dirz; 61 62 G4ParticleDefinition* partDef = aTrack->GetD 63 64 if (partDef == G4Gamma::GammaDefinition()) f 65 66 if (partDef == G4Electron::ElectronDefinitio 67 68 if (partDef == G4Proton::ProtonDefinition()) 69 70 if (partDef == G4Alpha::AlphaDefinition()) f 71 72 G4DNAGenericIonsManager* instance; 73 instance = G4DNAGenericIonsManager::Instance 74 75 if (partDef == instance->GetIon("hydrogen")) 76 77 if (partDef == instance->GetIon("alpha+")) f 78 79 if (partDef == instance->GetIon("helium")) f 80 81 // 82 83 x = aTrack->GetPosition().x() / nanometer; 84 y = aTrack->GetPosition().y() / nanometer; 85 z = aTrack->GetPosition().z() / nanometer; 86 87 dirx = aTrack->GetMomentumDirection().x(); 88 diry = aTrack->GetMomentumDirection().y(); 89 dirz = aTrack->GetMomentumDirection().z(); 90 91 // Call analysis manager 92 G4AnalysisManager* analysisManager = G4Analy 93 94 // Fill track information ntuple 95 analysisManager->FillNtupleDColumn(1, 0, fla 96 analysisManager->FillNtupleDColumn(1, 1, x); 97 analysisManager->FillNtupleDColumn(1, 2, y); 98 analysisManager->FillNtupleDColumn(1, 3, z); 99 analysisManager->FillNtupleDColumn(1, 4, dir 100 analysisManager->FillNtupleDColumn(1, 5, dir 101 analysisManager->FillNtupleDColumn(1, 6, dir 102 analysisManager->FillNtupleDColumn(1, 7, aTr 103 analysisManager->FillNtupleIColumn(1, 8, aTr 104 analysisManager->FillNtupleIColumn(1, 9, aTr 105 analysisManager->AddNtupleRow(1); 106 } 107 108 //....oooOO0OOooo........oooOO0OOooo........oo 109 110 void TrackingAction::PostUserTrackingAction(co 111