Geant4 Cross Reference |
1 // 1 // 2 // ******************************************* 2 // ******************************************************************** 3 // * License and Disclaimer << 3 // * DISCLAIMER * 4 // * 4 // * * 5 // * The Geant4 software is copyright of th << 5 // * The following disclaimer summarizes all the specific disclaimers * 6 // * the Geant4 Collaboration. It is provided << 6 // * of contributors to this software. The specific disclaimers,which * 7 // * conditions of the Geant4 Software License << 7 // * govern, are listed with their locations in: * 8 // * LICENSE and available at http://cern.ch/ << 8 // * http://cern.ch/geant4/license * 9 // * include a list of copyright holders. << 10 // * 9 // * * 11 // * Neither the authors of this software syst 10 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing fin 11 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warran 12 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assum 13 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file << 14 // * use. * 16 // * for the full disclaimer and the limitatio << 17 // * 15 // * * 18 // * This code implementation is the result << 16 // * This code implementation is the intellectual property of the * 19 // * technical work of the GEANT4 collaboratio << 17 // * GEANT4 collaboration. * 20 // * By using, copying, modifying or distri << 18 // * By copying, distributing or modifying the Program (or any work * 21 // * any work based on the software) you ag << 19 // * based on the Program) you indicate your acceptance of this * 22 // * use in resulting scientific publicati << 20 // * statement, and all its terms. * 23 // * acceptance of all terms of the Geant4 Sof << 24 // ******************************************* 21 // ******************************************************************** 25 // 22 // 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 23 #ifndef G4HadronicInteractionRegistry_h 35 #define G4HadronicInteractionRegistry_h 1 24 #define G4HadronicInteractionRegistry_h 1 36 25 37 #include <vector> 26 #include <vector> 38 #include "globals.hh" 27 #include "globals.hh" 39 #include "G4ThreadLocalSingleton.hh" << 40 << 41 class G4HadronicInteraction; 28 class G4HadronicInteraction; 42 29 43 class G4HadronicInteractionRegistry 30 class G4HadronicInteractionRegistry 44 { 31 { 45 friend class G4ThreadLocalSingleton<G4Hadronic << 32 public: 46 << 47 public: << 48 << 49 static G4HadronicInteractionRegistry* Instan << 50 // access << 51 33 52 ~G4HadronicInteractionRegistry(); 34 ~G4HadronicInteractionRegistry(); >> 35 >> 36 static void RegisterMe(G4HadronicInteraction * aModel); >> 37 static void RemoveMe(G4HadronicInteraction * aModel); >> 38 >> 39 protected: 53 40 54 void RegisterMe(G4HadronicInteraction * aMod << 41 G4HadronicInteractionRegistry(G4String ) 55 // register new model << 42 { 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 43 69 std::vector<G4HadronicInteraction*> FindAllM << 44 private: 70 // find all existing hadronic interactions b << 71 45 72 private: << 46 // !!! can not use "copy constructor" nor "default constructor" !!!! >> 47 G4HadronicInteractionRegistry(const G4HadronicInteractionRegistry &right) >> 48 { nModels = right.nModels; } >> 49 G4HadronicInteractionRegistry() {nModels = 0;} 73 50 74 G4HadronicInteractionRegistry(); << 51 // !!! Assignment operation is forbidden !!! >> 52 const G4HadronicInteractionRegistry & operator=(const G4HadronicInteractionRegistry &) >> 53 { return *this;} 75 54 76 static G4ThreadLocal G4HadronicInteractionRe << 55 void AddModel(G4HadronicInteraction * aModel); >> 56 >> 57 G4int nModels; >> 58 std::vector <G4HadronicInteraction *> allModels; >> 59 static G4HadronicInteractionRegistry theRegistry; 77 60 78 std::vector<G4HadronicInteraction*> allModel << 79 }; 61 }; 80 62 81 #endif 63 #endif 82 64