Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

TrackFilterFactory Class Reference

TrackFilterFactory - creates TrackFilter objects. More...

#include <TrackFilterFactory.h>

List of all members.

Public Types

typedef TrackFilter *(* Creator )()
 pointer to function creating fitter state

Public Member Functions

TrackFilterGetTrackFilter (const std::string &fitStateId)
 create fitter state given its name
TrackFilterGetTrackFilter (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

TrackFilterFactoryInstance ()
 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

TrackFilterCreateTrackFilter (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

TrackFilterFactoryfInstance = 0
 initialize singleton


Detailed Description

TrackFilterFactory - creates TrackFilter objects.

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.

Author:
Sergei avva@fnal.gov

Definition at line 26 of file TrackFilterFactory.h.


Member Typedef Documentation

typedef std::map<std::string, Creator> TrackFilterFactory::CallbackMap [private]
 

map of creator function pointers keyed by name

Definition at line 34 of file TrackFilterFactory.h.

typedef TrackFilter*(* TrackFilterFactory::Creator)()
 

pointer to function creating fitter state

Definition at line 30 of file TrackFilterFactory.h.

typedef std::map<std::string, TrackFilter*> TrackFilterFactory::StateMap [private]
 

Definition at line 35 of file TrackFilterFactory.h.


Constructor & Destructor Documentation

TrackFilterFactory::TrackFilterFactory  )  [private]
 

Those are private.

Definition at line 126 of file TrackFilterFactory.cxx.

00126 {}

TrackFilterFactory::TrackFilterFactory const TrackFilterFactory  )  [private]
 

Definition at line 127 of file TrackFilterFactory.cxx.

00127 {}


Member Function Documentation

TrackFilter * TrackFilterFactory::CreateTrackFilter const std::string &  TrackFilterId  )  [private]
 

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)

TrackFilter * TrackFilterFactory::GetTrackFilter const char *  fitStateId  ) 
 

Definition at line 98 of file TrackFilterFactory.cxx.

References GetTrackFilter().

00099 {
00100     return GetTrackFilter(std::string(fsname));
00101 }

TrackFilter * TrackFilterFactory::GetTrackFilter const std::string &  fitStateId  ) 
 

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)

TrackFilterFactory & TrackFilterFactory::Instance  )  [static]
 

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()

bool TrackFilterFactory::RegisterTrackFilter const std::string &  TrackFilterId,
Creator  creator
 

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)

bool TrackFilterFactory::UnregisterTrackFilter const std::string &  TrackFilterId  ) 
 

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)


Member Data Documentation

CallbackMap TrackFilterFactory::fCallbacks [private]
 

Definition at line 58 of file TrackFilterFactory.h.

Referenced by CreateTrackFilter(), RegisterTrackFilter(), and UnregisterTrackFilter().

TrackFilterFactory * TrackFilterFactory::fInstance = 0 [static, private]
 

initialize singleton

Definition at line 34 of file TrackFilterFactory.cxx.

Referenced by Instance().

StateMap TrackFilterFactory::fTrackFilters [private]
 

Definition at line 59 of file TrackFilterFactory.h.

Referenced by GetTrackFilter().


The documentation for this class was generated from the following files:
Generated on Mon Feb 15 11:10:24 2010 for loon by  doxygen 1.3.9.1