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 private: >> 18 // !!! can not use "copy constructor" nor "default constructor" !!!! >> 19 G4HadronicInteractionRegistry(const G4HadronicInteractionRegistry &right) >> 20 { nModels = right.nModels; } >> 21 G4HadronicInteractionRegistry() {nModels = 0;} >> 22 >> 23 // !!! Assignment operation is forbidden !!! >> 24 const G4HadronicInteractionRegistry & operator=(const G4HadronicInteractionRegistry &right) >> 25 { return *this;} 53 26 54 void RegisterMe(G4HadronicInteraction * aMod << 27 void AddModel(G4HadronicInteraction * aModel); 55 // register new model << 28 56 << 29 G4int nModels; 57 void RemoveMe(G4HadronicInteraction * aModel << 30 G4RWTPtrVector<G4HadronicInteraction> allModels; 58 // deregister model << 31 static G4HadronicInteractionRegistry theRegistry; 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 << 69 std::vector<G4HadronicInteraction*> FindAllM << 70 // find all existing hadronic interactions b << 71 << 72 private: << 73 << 74 G4HadronicInteractionRegistry(); << 75 << 76 static G4ThreadLocal G4HadronicInteractionRe << 77 32 78 std::vector<G4HadronicInteraction*> allModel << 79 }; 33 }; 80 34 81 #endif 35 #endif 82 36