evtgen is hosted by Hepforge, IPPP Durham
EvtGen  2.0.0
Monte Carlo generator of particle decays, in particular the weak decays of heavy flavour particles such as B mesons.
EvtModel.hh
Go to the documentation of this file.
1 
2 /***********************************************************************
3 * Copyright 1998-2020 CERN for the benefit of the EvtGen authors *
4 * *
5 * This file is part of EvtGen. *
6 * *
7 * EvtGen is free software: you can redistribute it and/or modify *
8 * it under the terms of the GNU General Public License as published by *
9 * the Free Software Foundation, either version 3 of the License, or *
10 * (at your option) any later version. *
11 * *
12 * EvtGen is distributed in the hope that it will be useful, *
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
15 * GNU General Public License for more details. *
16 * *
17 * You should have received a copy of the GNU General Public License *
18 * along with EvtGen. If not, see <https://www.gnu.org/licenses/>. *
19 ***********************************************************************/
20 
21 #ifndef EVTMODEL_HH
22 #define EVTMODEL_HH
23 
26 
27 #include <map>
28 //#include <fstream.h>
29 
30 //Class to read in and handle the decays available
31 //to EvtGen for each particle, and the model to be
32 //used for each one.
33 
34 class EvtModel {
35  public:
36  static EvtModel& instance();
37 
38  void registerModel( EvtDecayBase* prototype );
39 
40  int isModel( std::string name );
41 
42  EvtDecayBase* getFcn( std::string model_name );
43 
44  int isCommand( std::string cmd );
45  void storeCommand( std::string cmd, std::string cnfgstr );
46 
47  private:
48  EvtModel();
49 
51 
52  std::map<std::string, EvtDecayBase*> _modelNameHash;
53  std::map<std::string, EvtDecayBase*> _commandNameHash;
54 };
55 
57 {
58  if ( _instance == 0 )
59  _instance = new EvtModel;
60  return *_instance;
61 }
62 
63 #endif
EvtDecayBase * getFcn(std::string model_name)
Definition: EvtModel.cpp:47
void registerModel(EvtDecayBase *prototype)
Definition: EvtModel.cpp:63
std::map< std::string, EvtDecayBase * > _modelNameHash
Definition: EvtModel.hh:52
static EvtModel & instance()
Definition: EvtModel.hh:56
std::map< std::string, EvtDecayBase * > _commandNameHash
Definition: EvtModel.hh:53
void storeCommand(std::string cmd, std::string cnfgstr)
Definition: EvtModel.cpp:92
int isCommand(std::string cmd)
Definition: EvtModel.cpp:84
static EvtModel * _instance
Definition: EvtModel.hh:50
int isModel(std::string name)
Definition: EvtModel.cpp:76
EvtModel()
Definition: EvtModel.cpp:43