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 /// file: ChromosomeMapper.cc 28 /// brief: Implementation of class to track ch 29 #include "ChromosomeMapper.hh" 30 31 #include "ChromosomeMessenger.hh" 32 #include "DNAHashing.hh" 33 #include "VirtualChromosome.hh" 34 35 #include <fstream> 36 #include <sstream> 37 38 //....oooOO0OOooo........oooOO0OOooo........oo 39 40 ChromosomeMapper::ChromosomeMapper() : fChromo 41 { 42 fpChromosomeMessenger = new ChromosomeMessen 43 fpChromosomeFactory = new ChromosomeFactory( 44 } 45 46 //....oooOO0OOooo........oooOO0OOooo........oo 47 48 ChromosomeMapper::~ChromosomeMapper() 49 { 50 delete fpChromosomeMessenger; 51 delete fpChromosomeFactory; 52 } 53 54 //....oooOO0OOooo........oooOO0OOooo........oo 55 56 [[maybe_unused]] G4String ChromosomeMapper::Ge 57 { 58 G4String key = ""; 59 for (const auto& Chromosome : fChromosomes) 60 if (Chromosome.second->PointInChromosome(p 61 // key = Chromosome.first; 62 key = Chromosome.second->GetName(); 63 break; 64 } 65 } 66 return key; 67 } 68 69 //....oooOO0OOooo........oooOO0OOooo........oo 70 71 [[maybe_unused]] VirtualChromosome* Chromosome 72 { 73 for (const auto& fChromosome : fChromosomes) 74 if (fChromosome.second->PointInChromosome( 75 return fChromosome.second; 76 } 77 } 78 return nullptr; 79 } 80 81 //....oooOO0OOooo........oooOO0OOooo........oo 82 83 [[maybe_unused]] VirtualChromosome* Chromosome 84 { 85 uint32_t key_i = G4::hashing::crc32::Hash(ke 86 87 try { 88 return fChromosomes.at(key_i); 89 } 90 catch (const std::out_of_range& oor) { 91 G4cout << "Chromosome does not exist with 92 return nullptr; 93 } 94 } 95 96 //....oooOO0OOooo........oooOO0OOooo........oo 97 98 void ChromosomeMapper::AddChromosome(const G4S 99 { 100 uint32_t key_i = G4::hashing::crc32::Hash(ke 101 102 auto it = fChromosomes.find(key_i); 103 104 if (it == fChromosomes.end()) { 105 auto* newChromosome = ChromosomeFactory::M 106 fChromosomes.emplace(key_i, newChromosome) 107 } 108 else { 109 G4ExceptionDescription errmsg; 110 errmsg << "ChromosomeMapper:: " 111 << "Chromosome already exists with 112 G4Exception("ChromosomeMapper::AddChromoso 113 } 114 } 115 116 //....oooOO0OOooo........oooOO0OOooo........oo 117 118 void ChromosomeMapper::SavePlotData(const G4St 119 { 120 std::fstream fs(filename, std::fstream::in | 121 for (auto& fChromosome : fChromosomes) { 122 fs << fChromosome.second->Plot(); 123 } 124 fs.close(); 125 } 126 //....oooOO0OOooo........oooOO0OOooo........oo 127 128 [[maybe_unused]] std::vector<G4String> Chromos 129 { 130 std::vector<G4String> keys; 131 for (const auto& fChromosome : fChromosomes) 132 keys.push_back(fChromosome.second->GetName 133 } 134 return keys; 135 } 136 137 //....oooOO0OOooo........oooOO0OOooo........oo 138 139 void ChromosomeMapper::Test() 140 { 141 fpChromosomeFactory->Test(); 142 } 143