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 ////////////////////////////////////////////// 27 // 28 // File: G4TritonDecay.cc based on G4Alpha 29 // Author: A.Mereagglia (CENBG), imported in 30 // Date: 24 June 2019, imported in Geant4 o 31 // Description: // 32 // // 33 // 34 ////////////////////////////////////////////// 35 36 #include "G4TritonDecay.hh" 37 #include "G4IonTable.hh" 38 #include "Randomize.hh" 39 #include "G4ThreeVector.hh" 40 #include "G4DynamicParticle.hh" 41 #include "G4DecayProducts.hh" 42 #include "G4PhysicalConstants.hh" 43 #include "G4SystemOfUnits.hh" 44 #include <iostream> 45 #include <iomanip> 46 47 G4TritonDecay::G4TritonDecay(const G4ParticleD 48 const G4double& bra 49 const G4double& exc 50 const G4Ions::G4Flo 51 : G4NuclearDecay("triton decay", Triton, exci 52 { 53 SetParent(theParentNucleus); // Store name 54 SetBR(branch); 55 56 SetNumberOfDaughters(2); 57 G4IonTable* theIonTable = 58 (G4IonTable*)(G4ParticleTable::GetParticle 59 G4int daughterZ = theParentNucleus->GetAtomi 60 G4int daughterA = theParentNucleus->GetAtomi 61 SetDaughter(0, theIonTable->GetIon(daughterZ 62 SetDaughter(1, "triton"); 63 } 64 65 66 G4TritonDecay::~G4TritonDecay() 67 {} 68 69 70 G4DecayProducts* G4TritonDecay::DecayIt(G4doub 71 { 72 // Fill G4MT_parent with theParentNucleus (s 73 CheckAndFillParent(); 74 75 // Fill G4MT_daughters with triton and resid 76 CheckAndFillDaughters(); 77 78 G4double tritonMass = G4MT_daughters[1]->Get 79 // Excitation energy included in PDG mass 80 G4double nucleusMass = G4MT_daughters[0]->Ge 81 82 // Q value was calculated from atomic masses 83 // Use it to get correct triton energy. 84 G4double cmMomentum = std::sqrt(transitionQ* 85 (transitionQ + 86 (transitionQ + 87 (transitionQ + 88 89 // Set up final state 90 // parentParticle is set at rest here becaus 91 // is done later 92 G4DynamicParticle parentParticle(G4MT_parent 93 G4DecayProducts* products = new G4DecayProdu 94 95 G4double costheta = 2.*G4UniformRand()-1.0; 96 G4double sintheta = std::sqrt(1.0 - costheta 97 G4double phi = twopi*G4UniformRand()*rad; 98 G4ThreeVector direction(sintheta*std::cos(ph 99 costheta); 100 101 G4double KE = std::sqrt(cmMomentum*cmMomentu 102 - tritonMass; 103 G4DynamicParticle* daughterparticle = 104 new G4DynamicParticle(G4MT_daughters[1], d 105 products->PushProducts(daughterparticle); 106 107 KE = std::sqrt(cmMomentum*cmMomentum + nucle 108 daughterparticle = 109 new G4DynamicParticle(G4MT_daughters[0], - 110 products->PushProducts(daughterparticle); 111 112 // Energy conservation check 113 // For triton decays, do final energy check 114 // which is well-measured using atomic mass 115 // should not be used since they are not usu 116 // always decay atoms and not fully stripped 117 /* 118 G4int nProd = products->entries(); 119 G4DynamicParticle* temp = 0; 120 G4double Esum = 0.0; 121 for (G4int i = 0; i < nProd; i++) { 122 temp = products->operator[](i); 123 Esum += temp->GetKineticEnergy(); 124 } 125 G4double eCons = (transitionQ - Esum)/keV; 126 if (eCons > 1.e-07) G4cout << " Triton decay 127 */ 128 return products; 129 } 130 131 132 void G4TritonDecay::DumpNuclearInfo() 133 { 134 G4cout << " G4TritonDecay for parent nucleus 135 G4cout << " decays to " << GetDaughterName(0 136 << " with branching ratio " << GetBR( 137 << transitionQ << G4endl; 138 } 139 140