Geant4 Cross Reference |
>> 1 // This code implementation is the intellectual property of >> 2 // the GEANT4 collaboration. 1 // 3 // 2 // ******************************************* << 4 // By copying, distributing or modifying the Program (or any work 3 // * License and Disclaimer << 5 // based on the Program) you indicate your acceptance of this statement, 4 // * << 6 // and all its terms. 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 // 7 // >> 8 // $Id: G3DetTable.cc,v 1.9 2000/03/02 17:54:05 gcosmo Exp $ >> 9 // GEANT4 tag $Name: geant4-03-01 $ 27 // 10 // 28 #include "globals.hh" 11 #include "globals.hh" 29 #include "G3DetTable.hh" 12 #include "G3DetTable.hh" 30 13 31 typedef std::map<G4String, G3DetTableEntry*, s << 14 typedef G4std::map<G4String, G3DetTableEntry*, G4std::less<G4String> > 32 ::iterator DTDiterator; 15 ::iterator DTDiterator; 33 16 34 G4String 17 G4String 35 G3DetTable::MakeHash(G4String& set, G4String& 18 G3DetTable::MakeHash(G4String& set, G4String& det){; 36 return set+" "+det; 19 return set+" "+det; 37 } 20 } 38 21 39 G3DetTable::G3DetTable(){ 22 G3DetTable::G3DetTable(){ 40 } 23 } 41 24 42 G3DetTable::~G3DetTable(){ 25 G3DetTable::~G3DetTable(){ 43 if (DTD.size() > 0) { 26 if (DTD.size() > 0) { 44 // G4cout << "Deleting DTD" << G4endl; 27 // G4cout << "Deleting DTD" << G4endl; 45 for (DTDiterator i=DTD.begin(); i != DTD.e 28 for (DTDiterator i=DTD.begin(); i != DTD.end(); i++) { 46 delete (*i).second; 29 delete (*i).second; 47 } 30 } 48 DTD.clear(); 31 DTD.clear(); 49 } 32 } 50 } 33 } 51 34 52 G4VSensitiveDetector* 35 G4VSensitiveDetector* 53 G3DetTable::GetSD(G4String& set, G4String& det 36 G3DetTable::GetSD(G4String& set, G4String& det){ 54 37 55 // make hash ID 38 // make hash ID 56 const G4String ShashID = MakeHash(set, det); 39 const G4String ShashID = MakeHash(set, det); 57 40 58 // search the map 41 // search the map 59 DTDiterator i = DTD.find(ShashID); 42 DTDiterator i = DTD.find(ShashID); 60 G3DetTableEntry* DTE = (*i).second; 43 G3DetTableEntry* DTE = (*i).second; 61 if (DTE != 0) { 44 if (DTE != 0) { 62 return DTE->GetSD(); 45 return DTE->GetSD(); 63 } else { 46 } else { 64 return 0; 47 return 0; 65 } 48 } 66 } 49 } 67 50 68 G4int 51 G4int 69 G3DetTable::GetID(G4String& set, G4String& det 52 G3DetTable::GetID(G4String& set, G4String& det){ 70 53 71 // make hash ID 54 // make hash ID 72 G4String ShashID = MakeHash(set, det); 55 G4String ShashID = MakeHash(set, det); 73 56 74 // search the Hash Dictionary 57 // search the Hash Dictionary 75 DTDiterator i = DTD.find(ShashID); 58 DTDiterator i = DTD.find(ShashID); 76 G3DetTableEntry* DTE = (*i).second; 59 G3DetTableEntry* DTE = (*i).second; 77 if (DTE != 0) { 60 if (DTE != 0) { 78 return DTE->GetID(); 61 return DTE->GetID(); 79 } else { 62 } else { 80 return 0; 63 return 0; 81 } 64 } 82 } 65 } 83 66 84 void 67 void 85 G3DetTable::Put(G4String& set, G4String& det, 68 G3DetTable::Put(G4String& set, G4String& det, G4int id, 86 G4VSensitiveDetector* D){ 69 G4VSensitiveDetector* D){ 87 // make hash ID 70 // make hash ID 88 G4String ShashID = MakeHash(set, det); 71 G4String ShashID = MakeHash(set, det); 89 G3DetTableEntry* DTE = new G3DetTableEntry(s 72 G3DetTableEntry* DTE = new G3DetTableEntry(set, det, id, D); 90 G4cout << "Inserted DTE with id " << ShashID 73 G4cout << "Inserted DTE with id " << ShashID << G4endl; 91 DTD[ShashID] = DTE; 74 DTD[ShashID] = DTE; 92 } 75 } 93 76 94 void 77 void 95 G3DetTable::PrintAll(){ 78 G3DetTable::PrintAll(){ 96 if (DTD.size()>0){ 79 if (DTD.size()>0){ 97 G4int count=0; 80 G4int count=0; 98 G4cout << "Dump of DTD - " << DTD.size() < 81 G4cout << "Dump of DTD - " << DTD.size() << " entries:" << G4endl; 99 for (DTDiterator i=DTD.begin(); i != DTD.e 82 for (DTDiterator i=DTD.begin(); i != DTD.end(); i++) { 100 count++; 83 count++; 101 G3DetTableEntry* DTE = (*i).second; 84 G3DetTableEntry* DTE = (*i).second; 102 G4cout << "DTD entry " << std::setw(3) < << 85 G4cout << "DTD entry " << G4std::setw(3) << count << " sensitive detector name: " 103 << DTE->GetSD()->GetName() << G4endl; 86 << DTE->GetSD()->GetName() << G4endl; 104 } 87 } 105 } 88 } 106 } 89 } 107 90 108 91 109 92 110 93 111 94 112 95