Documenting event segment packet typesTailoring the softwareSpecifying a trigger managerSpecifying a busy manager

Specifying a busy manager

Busy managers are responsible for indicating when the computer is dead or unable to accept a new trigger. The computer is dead in the time between a trigger occuring and the event readout completing. It is also dead when the run is paused or halted.

Substituting a user written busy manager for one of the standard busy managers is a matter of:

To write a busy manager, subclass the CStatusModule class. The important functions that must be defined are:

void GoBusy() Called when the system must assert the busy for software reasons (e.g. end of run).
void GoClear() Called when the system should deasser the busy. This is called at the end of each event and at the beginning of each run, for example.
void ModuleClear() Called to emit any end of event hardware clears.

Once your busy manager has been created, you must instantiate it and register the object you created. You should do this in your SetupReadout function. The fragment below shows how to do this for a class CMyStatus:

      void
      MyReadout::SetupReadout(CExperiment& rExperiment)
      
	 CReadoutMain::SetupReadout(rExperiment);
	 rExperiment.EstablishBusy(new CMyStatus);
	 ...
      
      

Report documentation errors to Ron Fox (fox@nscl.msu.edu)or NSCL's Bugzilla page

Documenting event segment packet typesTailoring the softwareSpecifying a trigger managerSpecifying a busy manager