#ifndef PREREQ_HH #define PREREQ_HH //========================================== // // Prereq -- filter module for selecting events by Trigger // // Authors: Kevin McFarland, Kirsten Tollefson // //========================================== #include "Framework/APPFilterModule.hh" #include "Framework/AbsParmGeneral.hh" #include "Framework/AbsParmList.hh" #include "Trybos/TRY_Bank_Type.hh" #include "Level3Mods/TriggerMap.hh" // CLHEP Random number classes #include "CLHEP/Random/Ranlux64Engine.h" #include "CLHEP/Random/RandFlat.h" // Constants definitions #include "ConsumerInterface/l3_cs_pointer_space.h" // CLHEP matrix class #include "CLHEP/Matrix/SymMatrix.h" #include #include class Prereq : public AppFilterModule { public: Prereq( const char* const theName = "Prereq", const char* const theDescription = "Online trigger based filter" ); virtual AppResult beginJob( AbsEvent* aJob ); virtual AppResult beginRun( AbsEvent* aRun ); virtual AppResult event( AbsEvent* anEvent ); virtual AppResult endRun( AbsEvent* aRun ); virtual AppResult endJob( AbsEvent* aJob ); virtual AppResult abortJob( AbsEvent* aJob ); virtual AppModule* clone(const char* cloneName); virtual ~Prereq( ); private: // Get Level-1 Bits from TFRD or TL2D AbsParmGeneral _GetL1TriggerBitsFromTFRD; AbsParmGeneral _GetL1TriggerBitsFromTL2D; AbsParmGeneral _GetL3TriggerBitsFromTL3D; AbsParmGeneral _UseUnprescaledBits; // Level-1 - Level-3 Trigger Mask Bit Lists AbsParmList _L1TriggerBits; AbsParmList _L2TriggerBits; AbsParmList _L3TriggerBits; // Level-1 - Level-3 Trigger Id Lists AbsParmList _L1TriggerIds; AbsParmList _L2TriggerIds; AbsParmList _L3TriggerIds; // Level-1 - Level-3 Trigger Name Lists AbsParmList _L1TriggerNames; AbsParmList _L2TriggerNames; AbsParmList _L3TriggerNames; // AbsParmList _TriggerTableNames; // inclusive bit list (constructed at BOR) std::vector _L1BitList; std::vector _L2BitList; std::vector _L3BitList; // AutoAccept AbsParmGeneral _L1Accept; AbsParmGeneral _L2Accept; AbsParmGeneral _L3Accept; // debug AbsParmGeneral _debug; AbsParmGeneral _printTriggerMap; // Do trigger accounting AbsParmGeneral _printTriggerSummary; bool _notPrintedYet; // input data AbsParmGeneral _useEvclBits; AbsParmGeneral _CompareFullName; // prescale info AbsParmGeneral _integralPrescale; AbsParmGeneral _randomPrescale; AbsParmGeneral _randomSeed; static const long _defaultRandomSeed; int _cyclicCount; // Random Number Generating Engine HepRandomEngine* _randomEngine; // Random Number Generator for Passing Throw RandFlat* _flatGenerator; // Parameters for Random Numbers // keeping track of error reporting (severe only once) bool _reportedMissingL1Bits; bool _reportedMissingL2Bits; bool _reportedMissingL3Bits; TriggerMap* _databaseTriggerMap; AbsParmGeneral _databaseForTrigger; bool _PassTriggerTable; // bookkeeping on triggers seen void _printSummary() const; HepSymMatrix _L1Counter; HepSymMatrix _L2Counter; HepSymMatrix _L3Counter; // simulated or real banks AbsParmGeneral _bankType; }; typedef Prereq PrereqAsFilter; #endif