Geant4 Cross Reference |
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 // 23-Jan-2009 V.Ivanchenko make the class to << 28 // 17-Aug-2012 V.Ivanchenko added hadronic mod << 29 << 30 // Class Description << 31 // This is a singleton class to store all hadr << 32 // Class Description - End << 33 << 34 #ifndef G4HadronicInteractionRegistry_h 1 #ifndef G4HadronicInteractionRegistry_h 35 #define G4HadronicInteractionRegistry_h 1 2 #define G4HadronicInteractionRegistry_h 1 36 3 37 #include <vector> << 4 #include "g4rw/tpvector.h" 38 #include "globals.hh" 5 #include "globals.hh" 39 #include "G4ThreadLocalSingleton.hh" << 40 << 41 class G4HadronicInteraction; 6 class G4HadronicInteraction; 42 7 43 class G4HadronicInteractionRegistry 8 class G4HadronicInteractionRegistry 44 { 9 { 45 friend class G4ThreadLocalSingleton<G4Hadronic << 10 public: 46 << 47 public: << 48 << 49 static G4HadronicInteractionRegistry* Instan << 50 // access << 51 11 52 ~G4HadronicInteractionRegistry(); 12 ~G4HadronicInteractionRegistry(); >> 13 >> 14 static void RegisterMe(G4HadronicInteraction * aModel); >> 15 static void RemoveMe(G4HadronicInteraction * aModel){}; >> 16 >> 17 protected: 53 18 54 void RegisterMe(G4HadronicInteraction * aMod << 19 G4HadronicInteractionRegistry(G4String aString) 55 // register new model << 20 { G4Exception("G4HadronicInteractionRegistry meant as a singleton; please do not inherit");} 56 << 57 void RemoveMe(G4HadronicInteraction * aModel << 58 // deregister model << 59 << 60 void Clean(); << 61 // delete all models << 62 << 63 void InitialiseModels(); << 64 // initialise all models before the run << 65 << 66 G4HadronicInteraction* FindModel(const G4Str << 67 // find existing hadronic interaction by nam << 68 21 69 std::vector<G4HadronicInteraction*> FindAllM << 22 private: 70 // find all existing hadronic interactions b << 71 23 72 private: << 24 // !!! can not use "copy constructor" nor "default constructor" !!!! >> 25 G4HadronicInteractionRegistry(const G4HadronicInteractionRegistry &right) >> 26 { nModels = right.nModels; } >> 27 G4HadronicInteractionRegistry() {nModels = 0;} 73 28 74 G4HadronicInteractionRegistry(); << 29 // !!! Assignment operation is forbidden !!! >> 30 const G4HadronicInteractionRegistry & operator=(const G4HadronicInteractionRegistry &right) >> 31 { return *this;} 75 32 76 static G4ThreadLocal G4HadronicInteractionRe << 33 void AddModel(G4HadronicInteraction * aModel); >> 34 >> 35 G4int nModels; >> 36 G4RWTPtrVector<G4HadronicInteraction> allModels; >> 37 static G4HadronicInteractionRegistry theRegistry; 77 38 78 std::vector<G4HadronicInteraction*> allModel << 79 }; 39 }; 80 40 81 #endif 41 #endif 82 42