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 // G4WeightWindowStore 27 // 28 // Class description: 29 // 30 // Implementation of a weight window store acc 31 // G4VWeightWindowStore interface. 32 // See also G4VWeightWindowStore. 33 34 // Author: Michael Dressel (CERN), 2003 35 // Modified: Alex Howard (CERN), 2013 - Change 36 // ------------------------------------------- 37 #ifndef G4WEIGHTWINDOWSTORE_HH 38 #define G4WEIGHTWINDOWSTORE_HH 1 39 40 #include "G4VWeightWindowStore.hh" 41 #include "G4GeometryCellWeight.hh" 42 #include <set> 43 #include <vector> 44 45 class G4WeightWindowStore: public G4VWeightWin 46 { 47 public: // with description 48 49 static G4WeightWindowStore* GetInstance(); 50 // return ptr to singleton instance of t 51 52 static G4WeightWindowStore* GetInstance(co 53 // return ptr to singleton instance of t 54 55 G4double GetLowerWeight(const G4GeometryCe 56 G4do 57 // derive a lower weight bound value of 58 // G4GeometryCell and the corresponding 59 60 G4bool IsKnown(const G4GeometryCell &gCell 61 // returns true if the gCell is in the s 62 63 void Clear(); 64 65 void SetWorldVolume(); 66 // set a pointer to the world volume of 67 void SetParallelWorldVolume(const G4String 68 // set a pointer to parallel world volum 69 70 const G4VPhysicalVolume& GetWorldVolume() 71 // return a reference to the world volum 72 virtual const G4VPhysicalVolume* GetParall 73 // return a pointer to parallel world vo 74 75 void AddLowerWeights(const G4GeometryCell& 76 const std::vector<G4d 77 // add lower weights. Only if general up 78 79 void AddUpperEboundLowerWeightPairs(const 80 const G4Uppe 81 // set upper energy - lower weight pairs 82 83 void SetGeneralUpperEnergyBounds(const std 84 std: 85 protected: 86 87 explicit G4WeightWindowStore(); 88 // initialise the weight window store fo 89 explicit G4WeightWindowStore(const G4Strin 90 // initialise the weight window store fo 91 92 ~G4WeightWindowStore() override; 93 // destructor 94 95 private: 96 97 G4bool IsInWorld(const G4VPhysicalVolume&) 98 void Error(const G4String& m) const; 99 void SetInternalIterator(const G4GeometryC 100 101 private: 102 103 const G4VPhysicalVolume* fWorldVolume = nu 104 105 std::set<G4double, std::less<G4double> > f 106 G4GeometryCellWeight fCellToUpEnBoundLoWeP 107 mutable G4GeometryCellWeight::const_iterat 108 109 static G4ThreadLocal G4WeightWindowStore* 110 }; 111 112 #endif 113