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 () throw (IsException)
 The command to start the workers.
FitStrategyinternal_getFitStrategy () const throw (LogicError)
 get the strategy. Throws an error if none is defined.
virtual char * status () throw ()
 As for getStatus, but available over IPC.
char * lastScan () throw ()
 Get the name of the last scan which was fitted over ipc;.
virtual char * getFitOptions () throw ()
 Finds the FitStrategy options.
virtual char * getFitStrategy () throw ()
 Finds the FitStrategy name.
virtual void setFitOptions (const char *opt) throw ()
 as for setFitOptions, but over IPC.
virtual void setFitStrategy (const char *strategy) throw ()
 set the fit option over IPC.
void fitAll () throw ()
void fit (const char *name) throw ()
 Fit a named RawScanResult from IS.
long busy ()
 number of busy workers
long queueLength ()
 number of jobs in the queue
long nFitsDone () throw ()
 returns the number of fits done so far over ipc;
long nFitErrors () throw ()
 returns the number of fit errors so far over ipc;
void setFifo (bool)
 set true for FIFO, false for FILO - see WorkerGroup for pros and cons!
bool isFifo ()
 set true for FIFO, false for FILO - see WorkerGroup for pros and cons!
FitterI::StringList * listFitAlgorithms ()
 list available fit algorithms for CORBA
FitterI::StringList * listFitStrategies ()
 list available fit strategies for CORBA
void setDebug (CORBA::Boolean value)
 set debug flag
bool debug ()
 get debug flag
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.
std::string getOutputIsServer () const
 Server to write fits to.

Static Public Member Functions

static Fitterinstance ()
 Gets a reference to the instance of the Fitter.
static Fitterinitialize (FitterArguments args) throw (ConfigurationException)
 Initialize the Fitter instance.
static IPCServer & getFitterServer () throw ()
 Get the Fitter IPC server.

Private Member Functions

void shutdown ()
 The following method is a new requirement of IPCNamedObjects under the omni-orb.
 Fitter (FitterArguments args) throw (ConfigurationException)
 singleton
 ~Fitter () throw ()
 private destructor
std::string internal_status () const throw ()
 Get the status information.
std::string internal_lastScan () const throw ()
 Get the name of the last scan which was fitted;.
void internal_setFitOptions (const string &opt) throw (LogicError)
void internal_setFitStrategy (const string &name) throw (LogicError)
 Set the stragegy from a name the the FitStrategy map.
long internal_nFitsDone () const throw ()
 returns the number of fits done so far;
long internal_nFitErrors () const throw ()
 returns the number of fit errors so far;
void setLastScanName (const std::string &name)
 update record of last scan attempted.
void updateSubscriptions ()

Static Private Member Functions

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

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.
FitterWorkerGroupworkergroup
 Group of workers which do the actual fitting.
std::auto_ptr< ISInfoReceiver > m_infoReceiver
 An InfoReveiver for RawRODData objects.
FitterArguments m_args

Static Private Attributes

static 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 43 of file Fitter.h.


Constructor & Destructor Documentation

SctFitter::Fitter::Fitter FitterArguments  args  )  throw (ConfigurationException) [private]
 

singleton

Definition at line 54 of file Fitter.cpp.

References Sct::SctNames::Mrs(), and Sct::Throwable::sendToMrs().

Here is the call graph for this function:

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

private destructor

Definition at line 81 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 307 of file Fitter.cpp.

long SctFitter::Fitter::busy  ) 
 

number of busy workers

Definition at line 350 of file Fitter.cpp.

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

Here is the call graph for this function:

bool SctFitter::Fitter::debug  ) 
 

get debug flag

Definition at line 287 of file Fitter.cpp.

References SctFitter::FitterWorkerGroup::debug(), and workergroup.

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

Here is the call graph for this function:

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

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 131 of file Fitter.cpp.

Referenced by updateSubscriptions().

void SctFitter::Fitter::fit const char *  name  )  throw ()
 

Fit a named RawScanResult from IS.

Definition at line 141 of file Fitter.cpp.

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

Algorithm may be complex! Check actual code.

Definition at line 313 of file Fitter.cpp.

References counterMutex, m_ioTimeTaken, m_nScans, m_scanTimeTaken, SctService::WorkerGroup< T >::nWorkers(), and workergroup.

Here is the call graph for this function:

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

Finds the FitStrategy options.

Makes a new char[] which ipc then deletes.

Definition at line 177 of file Fitter.cpp.

References Sct::copyStringToCorba(), counterMutex, and internal_getFitStrategy().

Here is the call graph for this function:

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

Finds the FitStrategy name.

Makes a new char[] which ipc then deletes.

Definition at line 204 of file Fitter.cpp.

References Sct::copyStringToCorba(), counterMutex, and internal_getFitStrategy().

Here is the call graph for this function:

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

Get the Fitter IPC server.

Definition at line 88 of file Fitter.cpp.

Referenced by shutdown().

std::string SctFitter::Fitter::getOutputIsServer  )  const
 

Server to write fits to.

..

Definition at line 84 of file Fitter.cpp.

References SctService::Arguments::getOutputISServer(), and m_args.

Referenced by fitAll().

Here is the call graph for this function:

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

The command to start the workers.

Definition at line 95 of file Fitter.cpp.

References fitAll(), SctService::Arguments::getNWorkers(), SctService::WorkerGroup< T >::go(), m_args, SctService::Arguments::recoveryMode(), and workergroup.

Here is the call graph for this function:

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

Increments the number of fit errors by 1.

Definition at line 291 of file Fitter.cpp.

References counterMutex, and m_nFitErrors.

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

Increments the number of fits done by 1.

Definition at line 296 of file Fitter.cpp.

References counterMutex, and m_nFitsDone.

Fitter & SctFitter::Fitter::initialize FitterArguments  args  )  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 44 of file Fitter.cpp.

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 38 of file Fitter.cpp.

References fitter.

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

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

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

Definition at line 374 of file Fitter.cpp.

References counterMutex, and m_fitStrategy.

Referenced by getFitOptions(), getFitStrategy(), and internal_status().

std::string SctFitter::Fitter::internal_lastScan  )  const throw () [private]
 

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

Definition at line 355 of file Fitter.cpp.

References counterMutex, and m_scan.

Referenced by internal_status().

long SctFitter::Fitter::internal_nFitErrors  )  const throw () [private]
 

returns the number of fit errors so far;

Definition at line 326 of file Fitter.cpp.

References counterMutex, and m_nFitErrors.

Referenced by internal_status(), and nFitErrors().

long SctFitter::Fitter::internal_nFitsDone  )  const throw () [private]
 

returns the number of fits done so far;

Definition at line 321 of file Fitter.cpp.

References counterMutex, and m_nFitsDone.

Referenced by internal_status(), and nFitsDone().

void SctFitter::Fitter::internal_setFitStrategy const string &  name  )  throw (LogicError) [private]
 

Set the stragegy from a name the the FitStrategy map.

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

Definition at line 381 of file Fitter.cpp.

References SctFitter::FitStrategyFactory::getStrategy(), and SctFitter::FitStrategyFactory::instance().

Here is the call graph for this function:

string SctFitter::Fitter::internal_status  )  const throw () [private]
 

Get the status information.

Definition at line 233 of file Fitter.cpp.

References SctService::WorkerGroup< T >::busy(), counterMutex, SctFitter::FitStrategy::getName(), SctFitter::FitStrategy::getOptions(), internal_getFitStrategy(), internal_lastScan(), internal_nFitErrors(), internal_nFitsDone(), SctService::WorkerGroup< T >::isFifo(), m_args, m_nScans, SctService::WorkerGroup< T >::nWorkers(), SctService::Arguments::print(), SctService::WorkerGroup< T >::queueSize(), and workergroup.

Referenced by status().

Here is the call graph for this function:

bool SctFitter::Fitter::isFifo  ) 
 

set true for FIFO, false for FILO - see WorkerGroup for pros and cons!

Definition at line 366 of file Fitter.cpp.

References SctService::WorkerGroup< T >::isFifo(), and workergroup.

Here is the call graph for this function:

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

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

Definition at line 361 of file Fitter.cpp.

References Sct::copyStringToCorba(), counterMutex, and m_scan.

Here is the call graph for this function:

FitterI::StringList * SctFitter::Fitter::listFitAlgorithms  ) 
 

list available fit algorithms for CORBA

Definition at line 209 of file Fitter.cpp.

References SctFitter::FitAlgorithmMap::instance(), and SctFitter::FitAlgorithmMap::listAlgorithms().

Here is the call graph for this function:

FitterI::StringList * SctFitter::Fitter::listFitStrategies  ) 
 

list available fit strategies for CORBA

Definition at line 213 of file Fitter.cpp.

References SctFitter::FitStrategyFactory::instance(), and SctFitter::FitStrategyFactory::listStrategies().

Here is the call graph for this function:

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

returns the number of fit errors so far over ipc;

Definition at line 338 of file Fitter.cpp.

References counterMutex, and internal_nFitErrors().

Here is the call graph for this function:

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

returns the number of fits done so far over ipc;

Definition at line 332 of file Fitter.cpp.

References counterMutex, and internal_nFitsDone().

Here is the call graph for this function:

long SctFitter::Fitter::queueLength  ) 
 

number of jobs in the queue

Definition at line 344 of file Fitter.cpp.

References counterMutex, SctService::WorkerGroup< T >::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 301 of file Fitter.cpp.

void SctFitter::Fitter::setDebug CORBA::Boolean  value  ) 
 

set debug flag

Definition at line 283 of file Fitter.cpp.

References SctFitter::FitterWorkerGroup::setDebug(), and workergroup.

Here is the call graph for this function:

void SctFitter::Fitter::setFifo bool   ) 
 

set true for FIFO, false for FILO - see WorkerGroup for pros and cons!

Definition at line 370 of file Fitter.cpp.

References SctService::WorkerGroup< T >::setFifo(), and workergroup.

Here is the call graph for this function:

void SctFitter::Fitter::setFitOptions const char *  opt  )  throw () [virtual]
 

as for setFitOptions, but 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 194 of file Fitter.cpp.

void SctFitter::Fitter::setFitStrategy const 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 218 of file Fitter.cpp.

void SctFitter::Fitter::setLastScanName const std::string &  name  )  [inline, private]
 

update record of last scan attempted.

Definition at line 257 of file Fitter.h.

void SctFitter::Fitter::shutdown  )  [private]
 

The following method is a new requirement of IPCNamedObjects under the omni-orb.

Definition at line 49 of file Fitter.cpp.

References getFitterServer(), SctService::WorkerGroup< T >::stop(), and workergroup.

Here is the call graph for this function:

char * SctFitter::Fitter::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 183 of file Fitter.cpp.

References Sct::copyStringToCorba(), counterMutex, and internal_status().

Here is the call graph for this function:


Friends And Related Function Documentation

friend class FitterWorkerGroup [friend]
 

FitterWorker is allowed to update stuff.

Definition at line 264 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 235 of file Fitter.h.

Referenced by busy(), getAverageTimePerScan(), getFitOptions(), getFitStrategy(), incrementFitErrors(), incrementFitsDone(), internal_getFitStrategy(), internal_lastScan(), internal_nFitErrors(), internal_nFitsDone(), internal_status(), lastScan(), nFitErrors(), nFitsDone(), queueLength(), status(), and updateSubscriptions().

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

Pointer to the fit strategy.

Definition at line 248 of file Fitter.h.

Referenced by internal_getFitStrategy().

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

An InfoReveiver for RawRODData objects.

Definition at line 254 of file Fitter.h.

Referenced by updateSubscriptions().

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 244 of file Fitter.h.

FitterWorkerGroup* SctFitter::Fitter::workergroup [private]
 

Group of workers which do the actual fitting.

Definition at line 250 of file Fitter.h.

Referenced by busy(), debug(), fitAll(), getAverageTimePerScan(), go(), internal_status(), isFifo(), queueLength(), setDebug(), setFifo(), shutdown(), and updateSubscriptions().


The documentation for this class was generated from the following files:
Generated on Mon Feb 6 14:09:46 2006 for SCT DAQ/DCS Software - C++ by  doxygen 1.4.6