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 // Hadrontherapy advanced example for Geant4 27 // See more at: https://twiki.cern.ch/twiki/bi 28 29 #include "HadrontherapyPrimaryGeneratorAction. 30 #include "HadrontherapyPrimaryGeneratorMesseng 31 32 #include "HadrontherapyMatrix.hh" 33 #include "HadrontherapyDetectorSD.hh" 34 #include "G4SystemOfUnits.hh" 35 #include "G4Event.hh" 36 #include "G4ParticleGun.hh" 37 #include "G4GeneralParticleSource.hh" 38 #include "G4ParticleTable.hh" 39 #include "G4ParticleDefinition.hh" 40 #include "Randomize.hh" 41 #include "G4IonTable.hh" 42 43 44 #include "G4VUserPrimaryGeneratorAction.hh" 45 #include "G4ParticleTable.hh" 46 47 #include "G4Event.hh" 48 #include "G4Timer.hh" 49 50 #include "G4RunManager.hh" 51 52 53 54 ////////////////////////////////////////////// 55 HadrontherapyPrimaryGeneratorAction::Hadronthe 56 fNewSource(false) 57 { 58 PrimaryGeneratorMessenger = new Hadronther 59 particleGun = new G4GeneralParticleSource( 60 calculatedPhaseSpaceFileIN = "NULL"; 61 } 62 63 ////////////////////////////////////////////// 64 HadrontherapyPrimaryGeneratorAction::~Hadronth 65 { 66 delete PrimaryGeneratorMessenger; 67 delete particleGun; 68 } 69 70 ////////////////////////////////////////////// 71 void HadrontherapyPrimaryGeneratorAction::Gene 72 { 73 if(fNewSource==true) 74 { 75 std::ifstream in(calculatedPhaseSpaceFil 76 G4double e, xpos, ypos, zpos,dirx,diry,d 77 G4int PDG; 78 G4ThreeVector pos,dir; 79 80 if(in.eof()) 81 { 82 G4Exception("HadrontherapyPrimaryGenerator 83 } 84 85 while(!in.eof()) 86 { 87 88 in >> e >> xpos >> ypos >>zpos >>dirx>>dir 89 dir= G4ThreeVector(dirx,diry,dirz); 90 particleGun->GetCurrentSource()->GetEneDis 91 92 particleGun->GetCurrentSource()->GetPartic 93 particleGun->GetCurrentSource()->GetPartic 94 particleGun->GetCurrentSource()->GetPartic 95 particleGun->GetCurrentSource()->GetAngDis 96 97 G4ParticleDefinition* particleDef = nullpt 98 if (PDG > 1000000000) 99 { 100 int a=(PDG-1000000000)-(((PDG-10000000 101 if(a>0) 102 { 103 PDG=PDG-a; 104 particleDef = G4IonTable::GetIonTable()- 105 G4String Nome = particleDef->GetParticle 106 } 107 108 else 109 { 110 particleDef = G4IonTable::GetIonTable()- 111 G4String Nome = particleDef->GetParticle 112 } 113 } 114 115 else 116 { 117 particleDef = G4ParticleTable::GetPart 118 } 119 120 particleGun->GetCurrentSource()->SetPartic 121 particleGun->GeneratePrimaryVertex(anEvent 122 123 } 124 125 in.close(); 126 127 } 128 else 129 { 130 particleGun->GeneratePrimaryVertex(anE 131 } 132 133 } 134 135 136