Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:05:13

0001 
0002 #ifndef DataFormats_SiStripCommon_ConstantsForHardwareSystems_H
0003 #define DataFormats_SiStripCommon_ConstantsForHardwareSystems_H
0004 
0005 #include "DataFormats/FEDRawData/interface/FEDNumbering.h"
0006 #include "DataFormats/SiStripCommon/interface/Constants.h"
0007 
0008 /**
0009    @file ConstantsForHardwareSystems.h
0010    @brief Constants and enumerated types for FED/FEC systems
0011 */
0012 
0013 namespace sistrip {
0014 
0015   // -------------------- FED misc --------------------
0016 
0017   static const uint16_t FED_ADC_RANGE = 0x400;  // 1024
0018 
0019   // -------------------- FED ids --------------------
0020 
0021   static const uint16_t FED_ID_MIN = static_cast<uint16_t>(FEDNumbering::MINSiStripFEDID);
0022   static const uint16_t FED_ID_MAX = static_cast<uint16_t>(FEDNumbering::MAXSiStripFEDID);
0023   static const uint16_t CMS_FED_ID_MAX = static_cast<uint16_t>(FEDNumbering::MAXFEDID);
0024   static const uint16_t NUMBER_OF_FEDS = static_cast<uint16_t>(FED_ID_MAX - FED_ID_MIN + 1);
0025 
0026   // -------------------- FEDs to channels --------------------
0027 
0028   static const uint16_t FEDCH_PER_FEUNIT = 12;
0029   static const uint16_t FEUNITS_PER_FED = 8;
0030   static const uint16_t FEDCH_PER_FED = FEDCH_PER_FEUNIT * FEUNITS_PER_FED;  // 96
0031 
0032   // -------------------- Front-end devices --------------------
0033 
0034   static const uint16_t APVS_PER_FEDCH = 2;
0035   static const uint16_t APVS_PER_FEUNIT = APVS_PER_FEDCH * FEDCH_PER_FEUNIT;  // 24
0036   static const uint16_t APVS_PER_FED = APVS_PER_FEUNIT * FEUNITS_PER_FED;     // 194
0037 
0038   static const uint16_t APVS_PER_CHAN = 2;
0039   static const uint16_t CHANS_PER_LLD = 3;
0040 
0041   // -------------------- Detector strips --------------------
0042 
0043   static const uint16_t STRIPS_PER_APV = 128;
0044   static const uint16_t STRIPS_PER_FEDCH = STRIPS_PER_APV * APVS_PER_FEDCH;
0045   static const uint16_t STRIPS_PER_FEUNIT = STRIPS_PER_FEDCH * FEDCH_PER_FEUNIT;  // 3072
0046   static const uint16_t STRIPS_PER_FED = STRIPS_PER_FEUNIT * FEUNITS_PER_FED;     // 24576
0047   static constexpr float MeVperADCStrip = 9.5665E-4;
0048 
0049   // -------------------- FED buffers --------------------
0050 
0051   static const uint16_t DAQ_HDR_SIZE = 8;
0052   static const uint16_t TRK_HDR_SIZE = 8;
0053   static const uint16_t FE_HDR_SIZE = 16;
0054   static const uint16_t APV_ERROR_HDR_SIZE = 24;
0055   static const uint16_t FULL_DEBUG_HDR_SIZE = 8 * FE_HDR_SIZE;
0056 
0057   // -------------------- Control system --------------------
0058 
0059   //static const uint16_t FEC_CRATE_OFFSET =  1; //@@ temporary
0060   //static const uint16_t FEC_RING_OFFSET  =  1; //@@ temporary
0061 
0062   static const uint16_t FEC_RING_MIN = 1;
0063   static const uint16_t FEC_RING_MAX = 8;
0064 
0065   static const uint16_t CCU_ADDR_MIN = 1;
0066   static const uint16_t CCU_ADDR_MAX = 127;
0067 
0068   static const uint16_t CCU_CHAN_MIN = 16;
0069   static const uint16_t CCU_CHAN_MAX = 31;
0070 
0071   static const uint16_t LLD_CHAN_MIN = 1;
0072   static const uint16_t LLD_CHAN_MAX = 3;
0073 
0074   static const uint16_t APV_I2C_MIN = 32;
0075   static const uint16_t APV_I2C_MAX = 37;
0076 
0077   // -------------------- VME crates --------------------
0078 
0079   static const uint16_t SLOTS_PER_CRATE = 20;
0080 
0081   static const uint16_t CRATE_SLOT_MIN = 2;  // slot 1 is reserved for VME controller
0082   static const uint16_t CRATE_SLOT_MAX = 21;
0083 
0084   static const uint16_t MAX_FEDS_PER_CRATE = 16;
0085   static const uint16_t MAX_FECS_PER_CRATE = 20;
0086 
0087   static const uint16_t FED_CRATE_MIN = 1;
0088   static const uint16_t FED_CRATE_MAX = 60;
0089 
0090   static const uint16_t FEC_CRATE_MIN = 1;
0091   static const uint16_t FEC_CRATE_MAX = 4;
0092 
0093   // -------------------- String constants --------------------
0094 
0095   static const char unknownApvReadoutMode_[] = "UnknownApvReadoutMode";
0096   static const char undefinedApvReadoutMode_[] = "UndefinedApvReadoutMode";
0097 
0098   static const char apvPeakMode_[] = "ApvPeakMode";
0099   static const char apvDeconMode_[] = "ApvDeconMode";
0100   static const char apvMultiMode_[] = "ApvMultiMode";
0101 
0102   static const char unknownFedReadoutMode_[] = "UnknownFedReadoutMode";
0103   static const char undefinedFedReadoutMode_[] = "UndefinedFedReadoutMode";
0104 
0105   static const char fedScopeMode_[] = "FedScopeMode";
0106   static const char fedVirginRaw_[] = "FedVirginRaw";
0107   static const char fedProcRaw_[] = "FedProcessedRaw";
0108   static const char fedZeroSuppr_[] = "FedZeroSuppressed";
0109   static const char fedZeroSupprCMO_[] = "FedZeroSuppressedCMOverride";
0110   static const char fedZeroSupprLite_[] = "FedZeroSupprressedLite";
0111   static const char fedZeroSupprLiteCMO_[] = "FedZeroSuppressedLiteCMOverride";
0112   static const char fedZeroSupprLite8TT_[] = "FedZeroSuppressedLite8TT";
0113   static const char fedZeroSupprLite8TTCMO_[] = "FedZeroSuppressedLite8TTCMOverride";
0114   static const char fedZeroSupprLite8TB_[] = "FedZeroSuppressedLite8TB";
0115   static const char fedZeroSupprLite8TBCMO_[] = "FedZeroSuppressedLite8TBCMOverride";
0116   static const char fedZeroSupprLite8BB_[] = "FedZeroSuppressedLite8BB";
0117   static const char fedZeroSupprLite8BBCMO_[] = "FedZeroSuppressedLite8BBCMOverride";
0118   static const char fedPreMixRaw_[] = "FedPreMixRaw";
0119 
0120   // -------------------- Enumerators --------------------
0121 
0122   enum ApvReadoutMode {
0123     UNKNOWN_APV_READOUT_MODE = sistrip::unknown_,
0124     UNDEFINED_APV_READOUT_MODE = sistrip::invalid_,
0125     APV_PEAK_MODE = 1,
0126     APV_DECON_MODE = 2,
0127     APV_MULTI_MODE = 3
0128   };
0129 
0130   enum FedReadoutMode {
0131     UNKNOWN_FED_READOUT_MODE = sistrip::unknown_,
0132     UNDEFINED_FED_READOUT_MODE = sistrip::invalid_,
0133     FED_SCOPE_MODE = 1,
0134     FED_VIRGIN_RAW = 2,
0135     FED_PROC_RAW = 6,
0136     FED_ZERO_SUPPR = 10,
0137     FED_ZERO_SUPPR_LITE = 3,
0138     FED_ZERO_SUPPR_LITE_CMO = 4,
0139     FED_ZERO_SUPPR_LITE8_TT = 12,
0140     FED_ZERO_SUPPR_LITE8_TT_CMO = 8,
0141     FED_ZERO_SUPPR_LITE8_TB = 5,
0142     FED_ZERO_SUPPR_LITE8_TB_CMO = 7,
0143     FED_ZERO_SUPPR_LITE8_BB = 9,
0144     FED_ZERO_SUPPR_LITE8_BB_CMO = 11,
0145     FED_PREMIX_RAW = 15
0146   };
0147 
0148   enum FedReadoutPath {
0149     UNKNOWN_FED_READOUT_PATH = sistrip::unknown_,
0150     UNDEFINED_FED_READOUT_PATH = sistrip::invalid_,
0151     VME_READOUT = 1,
0152     SLINK_READOUT = 2
0153   };
0154 
0155   enum FedBufferFormat {
0156     UNKNOWN_FED_BUFFER_FORMAT = sistrip::unknown_,
0157     UNDEFINED_FED_BUFFER_FORMAT = sistrip::invalid_,
0158     FULL_DEBUG_FORMAT = 1,
0159     APV_ERROR_FORMAT = 2
0160   };
0161 
0162   enum FedSuperMode {
0163     UNKNOWN_FED_SUPER_MODE = sistrip::unknown_,
0164     UNDEFINED_FED_SUPER_MODE = sistrip::invalid_,
0165     REAL = 0,
0166     FAKE = 1
0167   };
0168 
0169 }  // namespace sistrip
0170 
0171 #endif  // DataFormats_SiStripCommon_ConstantsForHardwareSystems_H