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 // Utility class to process contents of G4Kine 27 // models' ::Propagate() interface) and decay 28 // Resulting daughters are added to vector (no 29 // 30 // Author: Michael Kelsey <kelsey@slac.stanfo 31 32 #include "G4DecayKineticTracks.hh" 33 #include "G4KineticTrackVector.hh" 34 #include "G4KineticTrack.hh" 35 36 37 // Decay all input tracks, put daughters onto 38 39 G4DecayKineticTracks::G4DecayKineticTracks(G4K 40 41 if (tracks) Decay(tracks); 42 } 43 44 void G4DecayKineticTracks::Decay(G4KineticTrac 45 46 if (!tracks) return; 47 48 G4KineticTrackVector* daughters = 0; 49 for (size_t i=0; i<tracks->size(); ++i) { 50 G4KineticTrack* track = (*tracks)[i]; 51 if (!track) continue; 52 53 // Select decay of current track, put daug 54 daughters = track->GetDefinition()->IsShor 55 56 if (daughters) { 57 // Use the integer round mass in keV to 58 G4int uniqueID = static_cast< G4int >( r 59 60 // Assign to the daughters the creator m 61 for (size_t k=0; k<daughters->size(); ++ 62 G4KineticTrack* aDaughter = (*daughters)[k]; 63 if (aDaughter) { 64 aDaughter->SetCreatorModelID(track-> 65 aDaughter->SetParentResonanceDef(tra 66 aDaughter->SetParentResonanceID(uniq 67 } 68 } 69 70 tracks->insert(tracks->end(), daughters- 71 delete track; // Remove parent track 72 delete daughters; 73 (*tracks)[i] = nullptr; // Flag parent's 74 } 75 } 76 77 // Find and remove null pointers created by 78 for (G4int j=(G4int)tracks->size()-1; j>=0; 79 if (nullptr == (*tracks)[j]) tracks->erase 80 } 81 } 82