#include <TrackFilterFactory.h>
Public Types | |
| typedef TrackFilter *(* | Creator )() |
| pointer to function creating fitter state | |
Public Member Functions | |
| TrackFilter * | GetTrackFilter (const std::string &fitStateId) |
| create fitter state given its name | |
| TrackFilter * | GetTrackFilter (const char *fitStateId) |
| bool | RegisterTrackFilter (const std::string &TrackFilterId, Creator creator) |
| Returns 'true' if registration was successful. | |
| bool | UnregisterTrackFilter (const std::string &TrackFilterId) |
| Returns 'true' if the TrackFilterId was registered before. | |
Static Public Member Functions | |
| TrackFilterFactory & | Instance () |
| get reference to the FSFactory singleton | |
Private Types | |
| typedef std::map< std::string, Creator > | CallbackMap |
| map of creator function pointers keyed by name | |
| typedef std::map< std::string, TrackFilter * > | StateMap |
Private Member Functions | |
| TrackFilter * | CreateTrackFilter (const std::string &TrackFilterId) |
| create fitter state given its name | |
| TrackFilterFactory () | |
| Those are private. | |
| TrackFilterFactory (const TrackFilterFactory &) | |
Private Attributes | |
| CallbackMap | fCallbacks |
| StateMap | fTrackFilters |
Static Private Attributes | |
| TrackFilterFactory * | fInstance = 0 |
| initialize singleton | |
TrackFilterFactory creates TrackFilter objects. Pointers to functions creating different types of TrackFilter are in a map, keyed by names of the fitter state types. Creator functions have to be registered with FSFactory using 'RegisterTrackFilter' method, so that new types of histogram blocks can be added without changing FSFactory code. FSFactory is a singleton.
Definition at line 26 of file TrackFilterFactory.h.
|
|
map of creator function pointers keyed by name
Definition at line 34 of file TrackFilterFactory.h. |
|
|
pointer to function creating fitter state
Definition at line 30 of file TrackFilterFactory.h. |
|
|
Definition at line 35 of file TrackFilterFactory.h. |
|
|
Those are private.
Definition at line 126 of file TrackFilterFactory.cxx. 00126 {}
|
|
|
Definition at line 127 of file TrackFilterFactory.cxx. 00127 {}
|
|
|
create fitter state given its name CreateTrackFilter - creates requested fitter state Definition at line 107 of file TrackFilterFactory.cxx. References fCallbacks, and MSG. Referenced by GetTrackFilter(). 00108 {
00109 TracerSA trace("TrackFilterFactory::CreateTrackFilter(const string&)");
00110
00111 // find fitter state creator callback
00112 CallbackMap::const_iterator i = fCallbacks.find(hbname);
00113
00114 // create if callback found
00115 if ( i != fCallbacks.end() ) {
00116 return (i->second)();
00117 }
00118
00119 MSG("FitTrackSA",Msg::kError)
00120 << "Dont know anything about " << hbname << endl;
00121 return 0;
00122 } // TrackFilter* TrackFilterFactory::CreateTrackFilter(string)
|
|
|
Definition at line 98 of file TrackFilterFactory.cxx. References GetTrackFilter(). 00099 {
00100 return GetTrackFilter(std::string(fsname));
00101 }
|
|
|
create fitter state given its name GetTrackFilter - returns requested TrackFilter* (if necessary creates it) Definition at line 76 of file TrackFilterFactory.cxx. References CreateTrackFilter(), and fTrackFilters. Referenced by GetTrackFilter(), and AlgFitTrackSA::RunAlg(). 00077 {
00078 TracerSA trace("TrackFilterFactory::GetTrackFilter(string)");
00079
00080 // check if requested state already exists
00081 StateMap::const_iterator i = fTrackFilters.find(fsname);
00082
00083 // return state if exists
00084 if ( i != fTrackFilters.end() ) {
00085 return i->second;
00086 }
00087
00088 // create it if doesn't exist
00089 TrackFilter* state = CreateTrackFilter(fsname);
00090 if ( state ) {
00091 fTrackFilters[fsname] = state;
00092 return state;
00093 }
00094
00095 assert(kFALSE && "Unknown state requested!!");
00096 } // TrackFilter* TrackFilterFactory::GetTrackFilter(string)
|
|
|
get reference to the FSFactory singleton Get FSFactory reference Definition at line 38 of file TrackFilterFactory.cxx. References fInstance. Referenced by AlgFitTrackSA::RunAlg(). 00039 {
00040 TracerSA trace("TrackFilterFactory::Instance()");
00041
00042 if ( !fInstance ) fInstance = new TrackFilterFactory;
00043 return *fInstance;
00044 } // TrackFilterFactory& TrackFilterFactory::Instance()
|
|
||||||||||||
|
Returns 'true' if registration was successful. Register fitter state creator function Definition at line 50 of file TrackFilterFactory.cxx. References fCallbacks. 00053 {
00054 TracerSA trace("TrackFilterFactory::RegisterTrackFilter(string, Creator)");
00055
00056 // map<>::insert(value_type) returns pair<iterator, bool>
00057 return fCallbacks.insert(CallbackMap::value_type(hbname, creator)).second;
00058 } // bool TrackFilterFactory::RegisterTrackFilter(string, Creator)
|
|
|
Returns 'true' if the TrackFilterId was registered before. Unregister fitter state Definition at line 64 of file TrackFilterFactory.cxx. References fCallbacks. 00065 {
00066 TracerSA trace("TrackFilterFactory::UnregisterTrackFilter(string)");
00067
00068 return fCallbacks.erase(hbname) == 1;
00069 } // bool TrackFilterFactory::UnregisterTrackFilter(string)
|
|
|
Definition at line 58 of file TrackFilterFactory.h. Referenced by CreateTrackFilter(), RegisterTrackFilter(), and UnregisterTrackFilter(). |
|
|
initialize singleton
Definition at line 34 of file TrackFilterFactory.cxx. Referenced by Instance(). |
|
|
Definition at line 59 of file TrackFilterFactory.h. Referenced by GetTrackFilter(). |
1.3.9.1