//////////////////////////////////////////////////////////////////// /// \class RAT::ProcBlockManager /// /// \brief This class manages the various RAT event processors /// /// \author Stan Seibert /// /// REVISION HISTORY: /// - 29 Mar 2010 : Gabriel Orebi Gann - add the ``pack'' processor /// - 28 Apr 2010 : Gabriel Orebi Gann - add the ``calibratePMT'' processor /// - 14 May 2010 : Gabriel Orebi Gann - add the ``sanitychecks'' processor /// - 2013-11-26 : P G Jones - add commands to deal with conditional processing /// - 2014-02-03 added SOCPeakProc processor /// - 2014-11-13 : M Mottram - added trigTypeSelector command. /// - 2014-11-26 : added DQTriggerProc processor /// - 2014-11-30 : P G Jones - added dataCleaningCut. /// - 2015-07-13 : Kevin Nuckolls - added DCAProc /// - 2015-07-31 : Kevin Nuckolls - added PMTNoiseProc /// - 2021-03-10 : Lauren Smart - added PositionCutProc /// /// \details Deals with commands to add and order rat processors to the /// ProcBlocks. /// //////////////////////////////////////////////////////////////////////// #ifndef __RAT_ProcBlockManager__ #define __RAT_ProcBlockManager__ #include #include class G4UIcmdWithAString; class G4UIcommand; namespace RAT { class ProcBlock; class ProcAllocator; class Processor; class ProcBlockManager : public G4UImessenger { public: ProcBlockManager( ProcBlock *theMainBlock ); virtual ~ProcBlockManager(); // override G4UImessenger methods to parse commands virtual G4String GetCurrentValue(G4UIcommand * command); virtual void SetNewValue(G4UIcommand * command,G4String newValue); // Methods implementing the commands virtual void SelectProcessor( const std::string& procname ); virtual void DoProcSetCmd( const std::string& cmdstring ); protected: std::map fProcAllocators; Processor* fLastProc; ProcBlock* fMainBlock; // interface commands G4UIcmdWithAString* fAddProcCmd; G4UIcmdWithAString* fDeferAddProcCmd; G4UIcmdWithAString* fIfCmd; G4UIcommand* fElseCmd; G4UIcmdWithAString* fWhileCmd; G4UIcommand* fEndBlockCmd; G4UIcommand* fEndIfCmd; G4UIcommand* fEndWhileCmd; G4UIcommand* fSetCmd; }; } // namespace RAT #endif