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 persistency/P03/src/ExTGRCRegionCuts 28 /// \brief Implementation of the ExTGRCRegionC 29 30 #include "ExTGRCRegionCutsMgr.hh" 31 32 #include "ExTGRCRegionData.hh" 33 34 #include "G4LogicalVolume.hh" 35 #include "G4ProductionCuts.hh" 36 #include "G4Region.hh" 37 #include "G4RegionStore.hh" 38 #include "G4UIcommand.hh" 39 #include "G4tgbVolumeMgr.hh" 40 #include "G4tgrUtils.hh" 41 42 ExTGRCRegionCutsMgr* ExTGRCRegionCutsMgr::fIns 43 44 //....oooOO0OOooo........oooOO0OOooo........oo 45 ExTGRCRegionCutsMgr* ExTGRCRegionCutsMgr::GetI 46 { 47 if (!fInstance) { 48 fInstance = new ExTGRCRegionCutsMgr; 49 } 50 return fInstance; 51 } 52 53 //....oooOO0OOooo........oooOO0OOooo........oo 54 ExTGRCRegionCutsMgr::ExTGRCRegionCutsMgr() {} 55 56 //....oooOO0OOooo........oooOO0OOooo........oo 57 ExTGRCRegionCutsMgr::~ExTGRCRegionCutsMgr() 58 { 59 delete fInstance; 60 } 61 62 //....oooOO0OOooo........oooOO0OOooo........oo 63 void ExTGRCRegionCutsMgr::AddRegionData(const 64 { 65 if ((rd.size() > 1) && (FindRegionData(rd[0] 66 G4Exception("ExTGRCRegionCutsMgr::AddRegio 67 G4String("Region already exist 68 return; 69 } 70 fRegionDatae.push_back(new ExTGRCRegionData( 71 } 72 73 //....oooOO0OOooo........oooOO0OOooo........oo 74 void ExTGRCRegionCutsMgr::AddRegionCuts(const 75 { 76 if (rc.size() == 0) { 77 G4cerr << "ERROR - ExTGRCRegionCutsMgr::Ad 78 << " Must have 3 or 4 argume 79 << " e-_CUT (e+_CUT)." << G4endl << 80 << G4endl; 81 G4Exception("ExTGRCRegionCutsMgr::AddRegio 82 G4UIcommand::ConvertToString(G 83 } 84 85 // Find region 86 // std::vector<ExTGRCRegionData*>::const_ite 87 std::vector<ExTGRCRegionData*> regs = FindRe 88 89 if (regs.size() == 0) { 90 G4Exception("ExTGRCRegionCutsMgr::AddRegio 91 G4String(" region does not exi 92 } 93 94 for (size_t ii = 0; ii < regs.size(); ii++) 95 regs[ii]->SetCutsData(rc); 96 } 97 } 98 99 std::vector<ExTGRCRegionData*> ExTGRCRegionCut 100 { 101 std::vector<ExTGRCRegionData*> regs; 102 std::vector<ExTGRCRegionData*>::const_iterat 103 for (iter = fRegionDatae.begin(); iter != fR 104 if (G4tgrUtils::AreWordsEquivalent(name, ( 105 regs.push_back(*iter); 106 } 107 } 108 return regs; 109 } 110 111 //....oooOO0OOooo........oooOO0OOooo........oo 112 void ExTGRCRegionCutsMgr::BuildRegions() 113 { 114 std::vector<ExTGRCRegionData*>::const_iterat 115 std::vector<G4String>::const_iterator ites; 116 // std::vector<G4LogicalVolume*>::const_iter 117 for (iter = fRegionDatae.begin(); iter != fR 118 G4Region* reg = new G4Region((*iter)->GetR 119 std::vector<G4String> lvs = (*iter)->GetLV 120 for (ites = lvs.begin(); ites != lvs.end() 121 G4LogicalVolume* logVol = G4tgbVolumeMgr 122 reg->AddRootLogicalVolume(logVol); 123 } 124 } 125 } 126 127 //....oooOO0OOooo........oooOO0OOooo........oo 128 void ExTGRCRegionCutsMgr::BuildProductionCuts( 129 { 130 std::vector<ExTGRCRegionData*>::const_iterat 131 G4RegionStore* regions = G4RegionStore::GetI 132 //----- loop to region datae 133 for (iter = fRegionDatae.begin(); iter != fR 134 if ((*iter)->CutsAreSet()) { 135 G4Region* reg = regions->GetRegion((*ite 136 if (!reg) { 137 G4Exception("ExTGRCRegionCutsMgr::Buil 138 FatalErrorInArgument, 139 G4String("Region not found 140 } 141 G4ProductionCuts* cuts = new G4Productio 142 143 cuts->SetProductionCut((*iter)->GetGamma 144 cuts->SetProductionCut((*iter)->GetElect 145 cuts->SetProductionCut((*iter)->GetPosit 146 reg->SetProductionCuts(cuts); 147 } 148 } 149 } 150