source: trunk/source/processes/hadronic/models/management/src/G4HadronicInteractionRegistry.cc@ 980

Last change on this file since 980 was 962, checked in by garnier, 17 years ago

update processes

File size: 3.4 KB
Line 
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26// $Id: G4HadronicInteractionRegistry.cc,v 1.7 2009/02/25 16:30:18 vnivanch Exp $
27// GEANT4 tag $Name: geant4-09-02-ref-02 $
28//
29// 23-Jan-2009 V.Ivanchenko make the class to be a singleton
30
31#include "G4HadronicInteractionRegistry.hh"
32#include "G4HadronicInteraction.hh"
33
34G4HadronicInteractionRegistry* G4HadronicInteractionRegistry::theInstance = 0;
35
36G4HadronicInteractionRegistry* G4HadronicInteractionRegistry::Instance()
37{
38 if(0 == theInstance) {
39 static G4HadronicInteractionRegistry manager;
40 theInstance = &manager;
41 }
42 return theInstance;
43}
44
45G4HadronicInteractionRegistry::G4HadronicInteractionRegistry()
46{
47 nModels = 0;
48}
49
50G4HadronicInteractionRegistry::~G4HadronicInteractionRegistry()
51{
52 Clean();
53}
54
55void G4HadronicInteractionRegistry::Clean()
56{
57 //G4cout << "G4HadronicInteractionRegistry::Clean() start " << nModels << G4endl;
58 if(0 < nModels) {
59 for (G4int i=0; i<nModels; i++) {
60 if( allModels[i] ) {
61 //G4cout << "delete " << i << G4endl;
62 //G4cout << allModels[i]->GetModelName() << G4endl;
63 delete allModels[i];
64 allModels[i] = 0;
65 }
66 }
67 }
68 //G4cout << "G4HadronicInteractionRegistry::Clean() is done " << G4endl;
69 nModels = 0;
70}
71
72void G4HadronicInteractionRegistry::
73RegisterMe(G4HadronicInteraction * aModel)
74{
75 if(nModels > 0) {
76 for (G4int i=0; i<nModels; i++) {
77 if( aModel == allModels[i] ) return;
78 }
79 }
80 //G4cout << "Register model <" << aModel->GetModelName()
81 //<< "> " << nModels << G4endl;
82 allModels.push_back(aModel);
83 nModels++;
84}
85
86void G4HadronicInteractionRegistry::
87RemoveMe(G4HadronicInteraction * aModel)
88{
89 if(nModels > 0) {
90 for (G4int i=0; i<nModels; i++) {
91 if( aModel == allModels[i] ) {
92 //G4cout << "DeRegister model <" << aModel->GetModelName()
93 //<< "> " << i << G4endl;
94 allModels[i] = 0;
95 return;
96 }
97 }
98 }
99}
Note: See TracBrowser for help on using the repository browser.