////////////////////////////////////////////////////////////////////////////// // File: L1_Tcc_Monit_Data_Header.hpp // Created: 07-OCT-2001 Philippe Laurens (split away from Tcc_Monit_Data.hpp) ////////////////////////////////////////////////////////////////////////////// #ifndef __L1_Tcc_Monit_Data_Header__ #define __L1_Tcc_Monit_Data_Header__ ////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// // Cosmetic definition of version number // This is used by TCC to fill the ulFormat_Version field of the Tcc_Block_Header // This number will be incremented whenever the meaning of the monitoring data has changed. //#define kTcc_Version_L1fw_Prototype 1 // obsolete //#define kTcc_Version_L1fw_Phase2 kTcc_Version_L1fw_Prototype // obsolete #define kTcc_Version_L1fw_Phase3 2 // For DAQ Monitor //#define kTcc_Version_L1fw_Phase4 3 // short lived #define kTcc_Version_L1fw_Phase5 4 // to implement the Luminosity Services #define kTcc_Version_L1fw_Phase6 6 // big upgrade ////////////////////////////////////////////////////////////////////////////// // All Data Blocks returned by TCC will start with a Header // This data structure is obsolete in implementation phase 6 // It is replaced by L1_Tcc_Block_Header below ////////////////////////////////////////////////////////////////////////////// // Looking in the Header will tell the client what the rest of the Data Block content is #ifdef TCC_SUPPORT_PHASE3_MONIT_DATA struct Tcc_Block_Header { uint32 ulBlock_Type ; /* Holds a value of enum type L1_Tcc_Block_Type */ /* This matches the request TCC received from the client*/ uint32 ulFormat_Version ; /* holds a version number */ /* Made 32 bits to avoid all Endian-ness issues */ /* Initially kTcc_Version_L1fw_Prototype */ } ; #endif // TCC_SUPPORT_PHASE3_MONIT_DATA /////////////////////////////////////////////////////////////////////////////////// // This is an extended version of the now obsolete Tcc_Block_Header /////////////////////////////////////////////////////////////////////////////////// // Tcc_Block_Header is used in "Implementation Phase 2" and "Phase 3" blocks, // L1_Tcc_Block_Header is used in "Phase 4" and "Phase 6" blocks, // This header is also used for Luminosity Server Information struct L1_Tcc_Block_Header { uint32 ulBlock_Type ; /* holds a value of enum type L1_Tcc_Block_Type */ uint32 ulFormat_Version ; /* holds a version number */ /* see the kTcc_Version_L1fw_PhaseN compiler constants */ uint8 ubSystemNonOperational ; /* Flag reporting wheather the L1 Trigger System is opearational */ /* 0 = Operational, 1 = Non-Operational */ uint8 ubMonitDataNotCurrent ; /* Flag reporting wheather the Monit Data in the block is current */ /* When the Monit Data is not current, TCC returns mostly zeroes in all fields*/ /* 0 = Data Current, 1 = Data Not Current */ uint8 ubTriggeredBeamX ; /* TCC tries to capture Monit Data for Beam Crossing that resulted in a L1 Accept */ /* (i.e. a triggered Beam X). This may not be successful when the trigger rate is low */ /* 0 = Random Crossing, 1 = Triggered Crossing */ uint8 ubReserved ; /* Place Holder to reach 32 bit boundary */ uint32 ulReserved ; /* Place Holder to reach 64 bit boundary */ } ; /////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// // compiler constants to be used to decode the ubSystemNonOperational, // ubMonitDataNotCurrent, and ubTriggeredBeamX fields // in the L1_Tcc_Block_Header structure below #define kTcc_System_Operational 0x00 #define kTcc_System_Non_Operational 0x01 #define kTcc_Monit_Data_Current 0x00 #define kTcc_Monit_Data_Not_Current 0x01 #define kTcc_Random_Crossing 0x00 #define kTcc_Triggered_Crossing 0x01 /////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////// // define alias for backwards compatibility typedef L1_Tcc_Block_Header Tcc_Block_Extended_Header ; /////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////// #endif // __L1_Tcc_Monit_Data_Header__