Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Related Pages

SctFitter::Fitter Class Reference

Class definition of the SCT fitting service. More...

#include <Fitter.h>

Collaboration diagram for SctFitter::Fitter:

Collaboration graph
[legend]

Public Member Functions

void go (unsigned nWorker) throw (IsException)
 The command to start the workers.

const char * status () const throw ()
 Get the status information.

virtual char * status (FitterIStatus *status) throw ()
 As for getStatus, but available over IPC.

void setFitOptions (const string opt) throw (LogicError)
 set the fit option over IPC.

virtual void setFitOptions (FitterIStatus *status, char *opt) throw ()
 as for setFitOptions, but over IPC.

virtual void setFitStrategy (FitterIStatus *status, char *strategy) throw ()
 set the fit option over IPC.

virtual char * getFitStrategy (FitterIStatus *status) throw ()
 Finds the FitStrategy name.

void fitAll (FitterIStatus *status) throw ()
void fit (FitterIStatus *status, char *name) throw ()
 Fit a named RawScanResult from IS.

virtual char * getFitOptions (FitterIStatus *status) throw ()
 Finds the FitStrategy options.

long busy (FitterIStatus *status)
 number of busy workers

long queueLength (FitterIStatus *status)
 number of jobs in the queue

long nFitsDone () const throw ()
 returns the number of fits done so far;

long nFitsDone (FitterIStatus *status) throw ()
 returns the number of fits done so far over ipc;

long nFitErrors () const throw ()
 returns the number of fit errors so far;

long nFitErrors (FitterIStatus *status) throw ()
 returns the number of fit errors so far over ipc;

const char * lastScan () const throw ()
 Get the name of the last scan which was fitted;.

char * lastScan (FitterIStatus *status) throw ()
 Get the name of the last scan which was fitted over ipc;.

void useAnalyticAlgorithm (FitterIStatus *_status, ilu_Boolean use)
 Determine whether to use the analytic fit algorithm.

bool isUsingAnalyticAlgorithm () const
 Return true if we're using analytic fit algorithms.

ilu_Boolean isUsingAnalyticAlgorithm (FitterIStatus *_status)
 Return true if we're using analytic fit algorithms.

void setFitStrategy (string name) throw (LogicError)
 Set the stragegy from a name the the FitStrategy map.

FitStrategygetFitStrategy () const throw (LogicError)
 get the strategy. Throws an error if none is defined.

void incrementFitErrors () throw ()
 Increments the number of fit errors by 1.

void incrementFitsDone () throw ()
 Increments the number of fits done by 1.

void scanDone (double time) throw ()
 Called by the workers to add to the total amount of scan time.

void addIOTime (double time) throw ()
 Called to add to IO time.

double getAverageTimePerScan () const throw ()
 Algorithm may be complex! Check actual code.


Static Public Member Functions

Fitterinstance ()
 Gets a reference to the instance of the Fitter.

Fitterinitialize (const string &fitStrategyName="RootFitStrategy") throw (ConfigurationException)
 Initialize the Fitter instance.

void doFits (ISCallbackInfo *isc) throw (IsException, LogicError)
 The infoReceiver callback function must take a static function as an argument.

IPCServer & getFitterServer () throw ()
 Get the Fitter IPC server.


Data Fields

FitterWorkerGroupworkergroup
 Group of workers which do the actual fitting.


Private Member Functions

 Fitter (const string &fitStrategyName) throw (ConfigurationException)
 singleton

 ~Fitter () throw ()
 private destructor

void setLastScanName (const char *name)
 update record of last scan attempted.


Private Attributes

long m_nFitsDone
long m_nFitErrors
long m_nScans
double m_scanTimeTaken
double m_ioTimeTaken
boost::recursive_mutex counterMutex
 Used to lock access to all the counters.

string m_scan
string m_status
 pointer to char containing the status: cached so that we don't have to make lots of char*'s.

FitStrategym_fitStrategy
 Pointer to the fit strategy.

std::auto_ptr< ISInfoReceiver > m_infoReceiver
 An InfoReveiver for RawRODData objects.


Static Private Attributes

Fitterfitter

Friends

class FitterWorkerGroup
 FitterWorker is allowed to update stuff.


Detailed Description

Class definition of the SCT fitting service.

This service subscribes to an input IS server, receiving new RawScanResult objects. It then fits a function (dependant on the ScanType) to chips, strips, etc. and outputs a FitScanResult object to the output IS server.
Some status information about the Fitter is available via IPC request.

Author:
Alan Barr
Date:
16 December 2002

Definition at line 40 of file Fitter.h.


Constructor & Destructor Documentation

SctFitter::Fitter::Fitter const string &  fitStrategyName  )  throw (ConfigurationException) [private]
 

singleton

Definition at line 42 of file Fitter.cpp.

SctFitter::Fitter::~Fitter  )  throw () [private]
 

private destructor

Definition at line 54 of file Fitter.cpp.


Member Function Documentation

void SctFitter::Fitter::addIOTime double  time  )  throw ()
 

Called to add to IO time.

Assumes that main thread does IO and is running concurrently with workers.

Definition at line 227 of file Fitter.cpp.

long SctFitter::Fitter::busy FitterIStatus *  status  ) 
 

number of busy workers

Definition at line 268 of file Fitter.cpp.

References SctService::WorkerGroup< string >::busy(), counterMutex, and workergroup.

Here is the call graph for this function:

void SctFitter::Fitter::doFits ISCallbackInfo *  isc  )  throw (IsException, LogicError) [static]
 

The infoReceiver callback function must take a static function as an argument.

This function simply calls doFits on the parameter or `rock', which is set to be `this' (Fitter).
At the moment it catches all errors since I think it should still be in a stable state after most logic errors I can think of. AJB

Definition at line 78 of file Fitter.cpp.

References SctService::WorkerGroup< string >::push(), and workergroup.

Here is the call graph for this function:

void SctFitter::Fitter::fit FitterIStatus *  status,
char *  name
throw ()
 

Fit a named RawScanResult from IS.

Definition at line 87 of file Fitter.cpp.

double SctFitter::Fitter::getAverageTimePerScan  )  const throw ()
 

Algorithm may be complex! Check actual code.

Definition at line 233 of file Fitter.cpp.

char * SctFitter::Fitter::getFitOptions FitterIStatus *  status  )  throw () [virtual]
 

Finds the FitStrategy options.

Makes a new char[] which ipc then deletes.

Definition at line 103 of file Fitter.cpp.

FitStrategy & SctFitter::Fitter::getFitStrategy  )  const throw (LogicError)
 

get the strategy. Throws an error if none is defined.

Definition at line 287 of file Fitter.cpp.

char * SctFitter::Fitter::getFitStrategy FitterIStatus *  status  )  throw () [virtual]
 

Finds the FitStrategy name.

Makes a new char[] which ipc then deletes.

Definition at line 163 of file Fitter.cpp.

Referenced by SctFitter::FitAlgorithm::doFit().

IPCServer & SctFitter::Fitter::getFitterServer  )  throw () [static]
 

Get the Fitter IPC server.

Definition at line 56 of file Fitter.cpp.

void SctFitter::Fitter::go unsigned  nWorker  )  throw (IsException)
 

The command to start the workers.

Parameters:
nWorker the number of worker threads.

Todo:
proper RegExp

Definition at line 63 of file Fitter.cpp.

void SctFitter::Fitter::incrementFitErrors  )  throw ()
 

Increments the number of fit errors by 1.

Definition at line 211 of file Fitter.cpp.

Referenced by SctFitter::FitAlgorithm::doFit().

void SctFitter::Fitter::incrementFitsDone  )  throw ()
 

Increments the number of fits done by 1.

Definition at line 216 of file Fitter.cpp.

Referenced by SctFitter::FitAlgorithm::doFit().

Fitter & SctFitter::Fitter::initialize const string &  fitStrategyName = "RootFitStrategy"  )  throw (ConfigurationException) [static]
 

Initialize the Fitter instance.

Parameters:
fitStrategyName the name of the FitStrategy to use. Default is RootFitStrategy
Exceptions:
ConfigurationException if the fitStrategyName is not a recognized FitStrategy

Definition at line 33 of file Fitter.cpp.

References setFitStrategy().

Referenced by instance().

Here is the call graph for this function:

Fitter & SctFitter::Fitter::instance  )  [static]
 

Gets a reference to the instance of the Fitter.

If it hasn't been initialized, it calls initialize() first

Definition at line 27 of file Fitter.cpp.

References initialize().

Here is the call graph for this function:

ilu_Boolean SctFitter::Fitter::isUsingAnalyticAlgorithm FitterIStatus *  _status  ) 
 

Return true if we're using analytic fit algorithms.

Definition at line 157 of file Fitter.cpp.

References counterMutex, and isUsingAnalyticAlgorithm().

Here is the call graph for this function:

bool SctFitter::Fitter::isUsingAnalyticAlgorithm  )  const
 

Return true if we're using analytic fit algorithms.

Definition at line 152 of file Fitter.cpp.

References counterMutex.

Referenced by isUsingAnalyticAlgorithm().

char * SctFitter::Fitter::lastScan FitterIStatus *  status  )  throw ()
 

Get the name of the last scan which was fitted over ipc;.

Definition at line 279 of file Fitter.cpp.

const char * SctFitter::Fitter::lastScan  )  const throw ()
 

Get the name of the last scan which was fitted;.

Definition at line 274 of file Fitter.cpp.

long SctFitter::Fitter::nFitErrors FitterIStatus *  status  )  throw ()
 

returns the number of fit errors so far over ipc;

Definition at line 256 of file Fitter.cpp.

long SctFitter::Fitter::nFitErrors  )  const throw ()
 

returns the number of fit errors so far;

Definition at line 245 of file Fitter.cpp.

long SctFitter::Fitter::nFitsDone FitterIStatus *  status  )  throw ()
 

returns the number of fits done so far over ipc;

Definition at line 250 of file Fitter.cpp.

long SctFitter::Fitter::nFitsDone  )  const throw ()
 

returns the number of fits done so far;

Definition at line 240 of file Fitter.cpp.

long SctFitter::Fitter::queueLength FitterIStatus *  status  ) 
 

number of jobs in the queue

Definition at line 262 of file Fitter.cpp.

References counterMutex, SctService::WorkerGroup< string >::queueSize(), and workergroup.

Here is the call graph for this function:

void SctFitter::Fitter::scanDone double  time  )  throw ()
 

Called by the workers to add to the total amount of scan time.

Definition at line 221 of file Fitter.cpp.

void SctFitter::Fitter::setFitOptions FitterIStatus *  status,
char *  opt
throw () [virtual]
 

as for setFitOptions, but over IPC.

Definition at line 132 of file Fitter.cpp.

void SctFitter::Fitter::setFitOptions const string  opt  )  throw (LogicError)
 

set the fit option over IPC.

(asynchronous). Passes string on to FitStrategy;

Parameters:
the status of the IPC request.
the string to set as the options e.g. "NQR" for ROOT.

Definition at line 127 of file Fitter.cpp.

void SctFitter::Fitter::setFitStrategy string  name  )  throw (LogicError)
 

Set the stragegy from a name the the FitStrategy map.

Exceptions:
LogicError if that name is not in the map.

Definition at line 294 of file Fitter.cpp.

void SctFitter::Fitter::setFitStrategy FitterIStatus *  status,
char *  strategy
throw () [virtual]
 

set the fit option over IPC.

(asynchronous).

Parameters:
the status of the IPC request : failure if name not found in map.
tries to find the stragegy with this name

Definition at line 177 of file Fitter.cpp.

Referenced by initialize().

void SctFitter::Fitter::setLastScanName const char *  name  )  [inline, private]
 

update record of last scan attempted.

Definition at line 235 of file Fitter.h.

char * SctFitter::Fitter::status FitterIStatus *  status  )  throw () [virtual]
 

As for getStatus, but available over IPC.

Makes a new char[] which ipc then deletes.

Parameters:
the status of the IPC request.

Definition at line 117 of file Fitter.cpp.

const char * SctFitter::Fitter::status  )  const throw ()
 

Get the status information.

Definition at line 191 of file Fitter.cpp.

void SctFitter::Fitter::useAnalyticAlgorithm FitterIStatus *  _status,
ilu_Boolean  use
 

Determine whether to use the analytic fit algorithm.

Default is false

Definition at line 143 of file Fitter.cpp.

References counterMutex.


Friends And Related Function Documentation

friend class FitterWorkerGroup [friend]
 

FitterWorker is allowed to update stuff.

Definition at line 240 of file Fitter.h.


Field Documentation

boost::recursive_mutex SctFitter::Fitter::counterMutex [mutable, private]
 

Used to lock access to all the counters.

Definition at line 215 of file Fitter.h.

Referenced by busy(), isUsingAnalyticAlgorithm(), queueLength(), and useAnalyticAlgorithm().

FitStrategy* SctFitter::Fitter::m_fitStrategy [private]
 

Pointer to the fit strategy.

Definition at line 228 of file Fitter.h.

std::auto_ptr<ISInfoReceiver> SctFitter::Fitter::m_infoReceiver [private]
 

An InfoReveiver for RawRODData objects.

Definition at line 232 of file Fitter.h.

string SctFitter::Fitter::m_status [mutable, private]
 

pointer to char containing the status: cached so that we don't have to make lots of char*'s.

Definition at line 224 of file Fitter.h.

FitterWorkerGroup* SctFitter::Fitter::workergroup
 

Group of workers which do the actual fitting.

Definition at line 171 of file Fitter.h.

Referenced by busy(), doFits(), and queueLength().


The documentation for this class was generated from the following files:
Generated on Thu Jul 15 09:53:58 2004 for SCT DAQ/DCS Software - C++ by doxygen 1.3.5