ATLAS Offline Software
Loading...
Searching...
No Matches
L1TopoHardware.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef L1TopoHardware_L1TopoHardware
6#define L1TopoHardware_L1TopoHardware
7
8#include <stdint.h>
9#include <string>
10#include <map>
11
12
13
14namespace TCS {
15
17 std::string name{""};
18 uint32_t value{0};
19 std::string description{""};
20 std::string rule{""};
21 };
22
24 static const std::map<std::string, HardwareParam>& get();
25 };
26
27 // New constants for the Phase-1 Topo system
28 const uint32_t eEmInputWidth = 144; // 24 eFEX modules * 6 TOBs per module
29 const uint32_t eTauInputWidth = 144; // 24 eFEX modules * 6 TOBs per module
30
31 const uint32_t jJetInputWidth = 168; // 24 jFEX FPGAs * 7 TOBs per FPGA
32 const uint32_t jLargeRJetInputWidth = 24; // 24 jFEX FPGAs * 1 TOB per FPGA
33 const uint32_t jTauInputWidth = 144; // 24 jFEX FPGAs * 6 TOBs per FPGA
34 const uint32_t jEmInputWidth = 48; // 8 forward jFEX FPGAs * 6 TOBs per FPGA
35 const uint32_t jMetInputWidth = 1;
36
37 const uint32_t muonInputWidth = 32;
38 // Two fibers from each gFEX pFPGA (A,B,C) to Topo => 6 fibers
39 const uint32_t gJetInputWidth = 12; // 6 fibers * 2 TOBs / fiber
40 const uint32_t gLargeRJetInputWidth = 6; // 6 fibers * 1 TOB / fiber
41 const uint32_t gMetInputWidth = 3;
42
43 const uint32_t eEmOutputWidthSort = 6;
44 const uint32_t eTauOutputWidthSort = 6;
45 const uint32_t jJetOutputWidthSort = 6;
46 const uint32_t jLargeRJetOutputWidthSort = 6;
47 const uint32_t jTauOutputWidthSort = 6;
48 const uint32_t jEmOutputWidthSort = 6;
49 const uint32_t muonOutputWidthSort = 6;
50 const uint32_t metOutputWidth = 1;
51
52 const uint32_t eEmOutputWidthSelect = 10;
53 const uint32_t eTauOutputWidthSelect = 10;
54 const uint32_t jJetOutputWidthSelect = 10;
55 const uint32_t jLJetOutputWidthSelect = 10;
56 const uint32_t jTauOutputWidthSelect = 10;
57 const uint32_t jEmOutputWidthSelect = 10;
58 const uint32_t muonOutputWidthSelect = 10;
59 const uint32_t jSumEtTotalInputWidth = 12;
60
61
62 // Legacy Topo constants
63 const uint32_t InputWidthEM = 120;
64 const uint32_t InputWidthTAU = 120;
65 const uint32_t InputWidthJET = 64;
66 const uint32_t InputWidthMU = 32;
67
68 const uint32_t InputWidth1stStageSortEM = 20;
69 const uint32_t InputWidth1stStageSortTAU = 20;
70 const uint32_t InputWidth1stStageSortJET = 16;
71 const uint32_t InputWidth1stStageSortMU = 16;
72
73 const uint32_t InputWidth1stStageSelectEM = 30;
74 const uint32_t InputWidth1stStageSelectTAU = 30;
75 const uint32_t InputWidth1stStageSelectJET = 16;
76 const uint32_t InputWidth1stStageSelectMU = 16;
77
78 const uint32_t OutputWidthSortEM = 6;
79 const uint32_t OutputWidthSelectEM = 10;
80 const uint32_t OutputWidthSortTAU = 6;
81 const uint32_t OutputWidthSelectTAU = 10;
82 const uint32_t OutputWidthSortJET = 6;
83 const uint32_t OutputWidthSelectJET = 8;
84 const uint32_t OutputWidthSortMU = 6;
85 const uint32_t NumberOfDelayedMuons = 1;
86 const uint32_t OutputWidthSelectMU = 10;
87
88 const uint32_t NumberOfAlgorithms = 30;
89 const uint32_t NumberOfSortAlgorithms = 35;
90 const uint32_t NumberOfResultBits = 31; // ratio of results to overflow is adjustable (needs some more thoughts, which overflows are useful)
91 const uint32_t NumberOfOverflowBits = 32; // fixed! do not touch!
92 const uint32_t NumberOfOutputBits = 32; // there are only 32 lines from a L1Topo-Module to CTP => 16 lines per processor -> TODO: Change to 16! (but now 32 needed for testing)
93
94
95 const uint32_t KalmanMETCorrection_numberOfEtaBins = 8; // needs to be multiple of 2
96 const uint32_t KalmanMETCorrection_numberOfEtBins = 10; // needs to be multiple of 2
97 const uint32_t KalmanMETCorrection_correctionBitWidth = 8; // assuming format unsigned [0.0000000]
98
99 const uint32_t InputWidthMET = 1;
100 const uint32_t OutputWidthMET = 1;
101 const uint32_t METEnergyBitWidth = 16;
103 const uint32_t Arctan2InputEnergyBitWidth = 15;
104
105
106 const uint32_t CosSinBitWidth = 9;
107 const uint32_t CoshBitWidth = 11 + 7;
108 const uint32_t SechTanhBitWidth = 8;
109
110 const uint32_t DefaultJetSize = 2;
111
112 const uint32_t ClusterEtBitWidth = 8;
113 const uint32_t ClusterIsolBitWidth = 5;
114 const uint32_t ClusterEtaBitWidth = 6;
115 const uint32_t ClusterPhiBitWidth = 6;
116
117 const uint32_t JetEt1BitWidth = 9;
118 const uint32_t JetEt2BitWidth = 10;
119 const uint32_t JetEtaBitWidth = 5;
120 const uint32_t JetPhiBitWidth = 5;
121
122 const uint32_t MuonPtBitWidth = 2;
123 const uint32_t MuonEtaBitWidth = 3;
124 const uint32_t MuonPhiBitWidth = 3;
125
126 const uint32_t GenericEtBitWidth = 10;
127 const uint32_t GenericEtaBitWidth = 7;
129 const uint32_t GenericPhiBitWidth = 6;
130
132 const uint32_t RatioBitWidth = 8;
136}
137
138#endif
const uint32_t eTauInputWidth
const uint32_t InputWidth1stStageSortEM
const uint32_t ClusterIsolBitWidth
const uint32_t InputWidthMU
const uint32_t METEnergyBitWidth
const uint32_t eEmOutputWidthSelect
const uint32_t KalmanMETCorrection_correctionBitWidth
const uint32_t jSumEtTotalInputWidth
const uint32_t InputWidth1stStageSelectTAU
const uint32_t GenericEtBitWidth
const uint32_t OutputWidthMET
const uint32_t JetPhiBitWidth
const uint32_t DefaultJetSize
const uint32_t MassSqrBitWidth
const uint32_t CoshBitWidth
const uint32_t metOutputWidth
const uint32_t OutputWidthSelectEM
const uint32_t jEmOutputWidthSort
const uint32_t jLargeRJetInputWidth
const uint32_t InputWidth1stStageSelectEM
const uint32_t jTauOutputWidthSelect
const uint32_t OutputWidthSelectMU
const uint32_t eTauOutputWidthSort
const uint32_t InputWidth1stStageSelectMU
const uint32_t NumberOfSortAlgorithms
const uint32_t JetEtaBitWidth
const uint32_t ContratransverseMassSqrBitWidth
const uint32_t eTauOutputWidthSelect
const uint32_t GenericEtaBitWidth
const uint32_t muonOutputWidthSort
const uint32_t jJetOutputWidthSelect
const uint32_t CosSinBitWidth
const uint32_t InputWidthTAU
const uint32_t jLJetOutputWidthSelect
const uint32_t jMetInputWidth
const uint32_t NumberOfOutputBits
const uint32_t jTauOutputWidthSort
const uint32_t muonOutputWidthSelect
const uint32_t KalmanMETCorrection_numberOfEtaBins
const uint32_t OutputWidthSortJET
const uint32_t NumberOfDelayedMuons
const uint32_t JetEt2BitWidth
const uint32_t InputWidthJET
const uint32_t OutputWidthSortMU
const uint32_t eEmOutputWidthSort
const uint32_t ClusterEtBitWidth
const uint32_t GenericAbsoluteEtaBitWidth
const uint32_t METSqrEnergyBitWidth
const uint32_t gMetInputWidth
const uint32_t InputWidth1stStageSelectJET
const uint32_t JetEt1BitWidth
const uint32_t OutputWidthSortTAU
const uint32_t gLargeRJetInputWidth
const uint32_t RatioBitWidth
const uint32_t muonInputWidth
const uint32_t GenericPhiBitWidth
const uint32_t InputWidth1stStageSortTAU
const uint32_t NumberOfOverflowBits
const uint32_t eEmInputWidth
const uint32_t Arctan2InputEnergyBitWidth
const uint32_t jTauInputWidth
const uint32_t KalmanMETCorrection_numberOfEtBins
const uint32_t MuonPhiBitWidth
const uint32_t InvariantMassSqrBitWidth
const uint32_t ClusterPhiBitWidth
const uint32_t ClusterEtaBitWidth
const uint32_t NumberOfResultBits
const uint32_t jJetInputWidth
const uint32_t NumberOfAlgorithms
const uint32_t jLargeRJetOutputWidthSort
const uint32_t MuonEtaBitWidth
const uint32_t InputWidth1stStageSortJET
const uint32_t jEmOutputWidthSelect
const uint32_t jJetOutputWidthSort
const uint32_t InputWidthMET
const uint32_t OutputWidthSelectTAU
const uint32_t OutputWidthSortEM
const uint32_t gJetInputWidth
const uint32_t OutputWidthSelectJET
const uint32_t InputWidthEM
const uint32_t jEmInputWidth
const uint32_t MuonPtBitWidth
const uint32_t InputWidth1stStageSortMU
const uint32_t TransverseMassSqrBitWidth
const uint32_t SechTanhBitWidth
std::string description
static const std::map< std::string, HardwareParam > & get()