ATLAS Offline Software
EfexDefs.h
Go to the documentation of this file.
1 //==============================================================================
2 // EfexDefs.h
3 //==============================================================================
4 /*
5  * Class to define eFEX constants.
6  */
7 
8 #ifndef EfexDefs_H
9 #define EfexDefs_H
10 
11 #include "defsL1Calo/FexDefs.h"
12 
13 class EfexDefs {
14 public:
15  // Here "ribbon" is what goes to a minipod.
17  static int numRibbonsPerConnector() { return 4; }
19 
20  // For the moment this ignores the spare connector.
21  static int numInputConnectors() { return 4; }
23  static int numInputFibres() { return numInputRibbons() * numFibresPerRibbon(); }
24  // NB what if not all input ribbons are fully used (which seems likely)?
25  static int numInputChannels() { return numInputFibres(); }
26 
27  static int maxSuperCellsPerFibre() { return 20; }
29  static int numBitsPerSuperCell() { return 10; } // TODO: CHECK THIS!!
30 
31  static int numOutputRibbons() { return 2; } // TODO: CHECK THIS!!
32  static int numOutputFibres() { return numOutputRibbons() * numFibresPerRibbon(); }
33 
34  static int nProcessorFpgas() { return 4; }
35  static int numInputFibresPerFpga() { return 49; } // 40 EM + 9 Hadronic (total number actually in use)
36  static int numInputMgtsPerFpga() { return 80; } // NB not all are used, but index is 0-79 for all FPGAs
37  static int numQuadsPerFpga() {return 20; }
38  static int numMgtsPerQuad() {return 4; }
39 
40  static int nCaloReadoutStreams() { return 4; } // Sent separately
41  static int nTobReadoutStreams() { return 1; } // Merged in control FPGA
42 
43  // Maximum number of eta bins. NB only one end FPGA uses more than four
44  // (and the TOB coordinate may be 0-4 or 1-5 in those cases).
45  static int maxEtaBinsPerFpga() { return 5; }
46  static int numEtaBinsPerModule() { return 17; }
47  static int maxEtaBinsPerModule() { return maxEtaBinsPerFpga() * nProcessorFpgas(); }
48 
49  // N. BCs of playback memory. **FIXME** This is very likely wrong!
51  static int roSpyMemoryDepth() { return 0x800; }
52 
53  // Mapping between minipods and MTP connectors. **FIXME** This is very likely wrong!
54  static int connectorForMinipod(int minipod);
55  static int connectorFirstFibre(int minipod);
56 
57  // Methods for converting internal to global eta.
58  static unsigned int globalEtaIndex(unsigned int efexLogicalID,
59  unsigned int fpgaNumber,
60  unsigned int etaWithinFpga);
61  static int globalEtaValue(unsigned int efexLogicalID,
62  unsigned int fpgaNumber,
63  unsigned int etaWithinFpga);
64 };
65 
66 #endif // EfexDefs_H
EfexDefs::connectorFirstFibre
static int connectorFirstFibre(int minipod)
Return first fibre in the input MTP connector for a given minipod.
Definition: EfexDefs.cxx:51
FexDefs::num32BitWordsPerFibre
static int num32BitWordsPerFibre()
Definition: FexDefs.h:17
EfexDefs::numFibresPerRibbon
static int numFibresPerRibbon()
Definition: EfexDefs.h:16
FexDefs::inputPlaybackDepth
static int inputPlaybackDepth()
Definition: FexDefs.h:22
FexDefs.h
EfexDefs::numQuadsPerFpga
static int numQuadsPerFpga()
Definition: EfexDefs.h:37
EfexDefs
Definition: EfexDefs.h:13
EfexDefs::maxEtaBinsPerFpga
static int maxEtaBinsPerFpga()
Definition: EfexDefs.h:45
EfexDefs::roSpyMemoryDepth
static int roSpyMemoryDepth()
Definition: EfexDefs.h:51
EfexDefs::globalEtaIndex
static unsigned int globalEtaIndex(unsigned int efexLogicalID, unsigned int fpgaNumber, unsigned int etaWithinFpga)
Return unsigned eta bin within eFEX system (used for calibration channels).
Definition: EfexDefs.cxx:87
EfexDefs::globalEtaValue
static int globalEtaValue(unsigned int efexLogicalID, unsigned int fpgaNumber, unsigned int etaWithinFpga)
Return signed eta bin within eFEX system (used for trigger menu API).
Definition: EfexDefs.cxx:108
EfexDefs::numInputConnectors
static int numInputConnectors()
Definition: EfexDefs.h:21
EfexDefs::maxSuperCellsPerFibre
static int maxSuperCellsPerFibre()
Definition: EfexDefs.h:27
EfexDefs::num32BitWordsPerFibre
static int num32BitWordsPerFibre()
Definition: EfexDefs.h:28
EfexDefs::numRibbonsPerConnector
static int numRibbonsPerConnector()
Definition: EfexDefs.h:17
EfexDefs::inputPlaybackDepth
static int inputPlaybackDepth()
Definition: EfexDefs.h:50
EfexDefs::numInputChannels
static int numInputChannels()
Definition: EfexDefs.h:25
EfexDefs::nTobReadoutStreams
static int nTobReadoutStreams()
Definition: EfexDefs.h:41
EfexDefs::numOutputFibres
static int numOutputFibres()
Definition: EfexDefs.h:32
FexDefs::numFibresPerRibbon
static int numFibresPerRibbon()
Definition: FexDefs.h:14
EfexDefs::nProcessorFpgas
static int nProcessorFpgas()
Definition: EfexDefs.h:34
EfexDefs::numOutputRibbons
static int numOutputRibbons()
Definition: EfexDefs.h:31
EfexDefs::nCaloReadoutStreams
static int nCaloReadoutStreams()
Definition: EfexDefs.h:40
EfexDefs::maxEtaBinsPerModule
static int maxEtaBinsPerModule()
Definition: EfexDefs.h:47
EfexDefs::numMgtsPerQuad
static int numMgtsPerQuad()
Definition: EfexDefs.h:38
EfexDefs::numInputMgtsPerFpga
static int numInputMgtsPerFpga()
Definition: EfexDefs.h:36
EfexDefs::numFibresPerConnector
static int numFibresPerConnector()
Definition: EfexDefs.h:18
EfexDefs::numBitsPerSuperCell
static int numBitsPerSuperCell()
Definition: EfexDefs.h:29
EfexDefs::numInputFibres
static int numInputFibres()
Definition: EfexDefs.h:23
EfexDefs::connectorForMinipod
static int connectorForMinipod(int minipod)
Return MTP connector number (0-3) for a given minipod.
Definition: EfexDefs.cxx:28
EfexDefs::numEtaBinsPerModule
static int numEtaBinsPerModule()
Definition: EfexDefs.h:46
EfexDefs::numInputFibresPerFpga
static int numInputFibresPerFpga()
Definition: EfexDefs.h:35
EfexDefs::numInputRibbons
static int numInputRibbons()
Definition: EfexDefs.h:22