ATLAS Offline Software
Loading...
Searching...
No Matches
eTowerBuilder.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3*/
4
5
7
9#include "eTowerBuilder.h"
11
12// TOWER IS A COLLECTION OF SUPER CELLS
13// IT SHOULD HAVE A UNIQUE ID
14// IT SHOULD BE ABLE TO RETURN LIST OF SUPER CELLS BELONGING TO IT
15
16// THIS IS A CLASS DESIGNED TO BUILD AN ETOWER USING THE ETOWER CLASS AND THEN PRINT THE RELEVANT INFORMATION TO THE SCREEN USING FUNCTION CALLS FROM THE ETOWER CLASS
17
18namespace LVL1 {
19
20eTowerBuilder::eTowerBuilder(const std::string& type,const std::string& name,const IInterface* parent):
21 AthAlgTool(type,name,parent)
22{
23 declareInterface<IeTowerBuilder>(this);
24}
25
26
27void eTowerBuilder::init(std::unique_ptr<eTowerContainer> & eTowerContainerRaw) const
28{
29 execute(eTowerContainerRaw);
30}
31
32
33void eTowerBuilder::execute(std::unique_ptr<eTowerContainer> & eTowerContainerRaw) const
34{
35 BuildAllTowers(eTowerContainerRaw);
36}
37
38 // TOWER IDs FOR CLARITY
39 // Left Barrel IETower = 100000 + X
40 // Right Barrel IETower = 200000 + X
41 // Left Transition ID Tower = 300000 + X;
42 // Right Transition ID Tower = 400000 + X;
43 // Left Endcap ID Tower = 500000 + X
44 // Right Endcap ID Tower = 600000 + X
45 // Left Hadronic Endcap ID Tower = 11100000 + X --> These are just Layer 5 of Endcap Towers. They will never be generated as standalone eTowers.
46 // Right Haronic Endcap ID Tower = 22200000 + X --> These are just Layer 5 of Endcap Towers. They will never be generated as standalone eTowers.
47
48 void eTowerBuilder::BuildEMBeTowers(std::unique_ptr<eTowerContainer> & eTowerContainerRaw) const
49{
50 // Regions 0 only. Region 1 is 'transition region'.
51 for (int ieta = 0; ieta < 14; ++ieta) { // loop over 14 eta steps (ignoring last step as it is transition region)
52 for (int iphi = 0; iphi < 64; ++iphi){ // loop over 64 phi steps
53 BuildSingleTower(eTowerContainerRaw, ieta, iphi, 100000, -1);
54 BuildSingleTower(eTowerContainerRaw, ieta, iphi, 200000, 1);
55 }
56 }
57
58}
59
60void eTowerBuilder::BuildTRANSeTowers(std::unique_ptr<eTowerContainer> & eTowerContainerRaw) const
61{
62
63 int TRANS_MODIFIER = 14;
64 int tmpVal = TRANS_MODIFIER;
65
66 for (int ieta = tmpVal; ieta < tmpVal + 1; ieta++){ // loop over eta steps
67 for (int iphi = 0; iphi < 64; ++iphi){ // loop over 64 phi steps
68 BuildSingleTower(eTowerContainerRaw, ieta, iphi, 300000, -1);
69 BuildSingleTower(eTowerContainerRaw, ieta, iphi, 400000, 1);
70 }
71 }
72
73}
74
75 void eTowerBuilder::BuildEMEeTowers(std::unique_ptr<eTowerContainer> & eTowerContainerRaw) const
76{
77 // Region 1
78 int EME_MODIFIER = 15;
79 int tmpVal = EME_MODIFIER;
80
81 for (int ieta = tmpVal; ieta < tmpVal + 3; ++ieta){ // loop over eta steps
82 for (int iphi = 0; iphi < 64; ++iphi){ // loop over 64 phi steps
83 BuildSingleTower(eTowerContainerRaw, ieta, iphi, 500000, -1);
84 BuildSingleTower(eTowerContainerRaw, ieta, iphi, 600000, 1);
85 }
86 EME_MODIFIER++;
87 }
88
89 // Region 2
90 tmpVal = EME_MODIFIER;
91 for (int ieta = tmpVal; ieta < tmpVal + 2; ++ieta){ // loop over eta steps
92 for (int iphi = 0; iphi < 64; ++iphi){ // loop over 64 phi steps
93 BuildSingleTower(eTowerContainerRaw, ieta, iphi, 500000, -1);
94 BuildSingleTower(eTowerContainerRaw, ieta, iphi, 600000, 1);
95 }
96 EME_MODIFIER++;
97 }
98
99 // Region 3
100 tmpVal = EME_MODIFIER;
101 for (int ieta = tmpVal; ieta < tmpVal + 4; ++ieta){ // loop over eta steps
102 for (int iphi = 0; iphi < 64; ++iphi){ // loop over 64 phi steps
103 BuildSingleTower(eTowerContainerRaw, ieta, iphi, 500000, -1);
104 BuildSingleTower(eTowerContainerRaw, ieta, iphi, 600000, 1);
105 }
106 EME_MODIFIER++;
107 }
108
109 // Region 4
110 tmpVal = EME_MODIFIER;
111 for (int ieta = tmpVal; ieta < tmpVal + 1; ++ieta){ // loop over eta steps
112 for (int iphi = 0; iphi < 64; ++iphi){ // loop over 64 phi steps
113 BuildSingleTower(eTowerContainerRaw, ieta, iphi, 500000, -1);
114 BuildSingleTower(eTowerContainerRaw, ieta, iphi, 600000, 1);
115 }
116 EME_MODIFIER++;
117 }
118
119
120}
121
122// REDUNDANT AND NOT USED==========================================================================================================
123 void eTowerBuilder::BuildHECeTowers(std::unique_ptr<eTowerContainer> & eTowerContainerRaw) const
124{
125
126 // Region 0
127 int HEC_MODIFIER = 29;
128 int tmpVal = HEC_MODIFIER;
129 for (int ieta = tmpVal; ieta < tmpVal + 10; ++ieta){ // loop over eta steps
130 for (int iphi = 0; iphi < 64; ++iphi){ // loop over 64 phi steps
131 BuildSingleTower(eTowerContainerRaw, ieta, iphi, 11100000, -1);
132 BuildSingleTower(eTowerContainerRaw, ieta, iphi, 22200000, 1);
133 }
134 HEC_MODIFIER++;
135 }
136
137 // Region 1
138 tmpVal = HEC_MODIFIER;
139 for (int ieta = tmpVal; ieta < tmpVal + 4; ++ieta){ // loop over eta steps
140 for (int iphi = 0; iphi < 32; ++iphi){ // loop over 64 phi steps
141 BuildSingleTower(eTowerContainerRaw, ieta, iphi, 11100000, -1);
142 BuildSingleTower(eTowerContainerRaw, ieta, iphi, 22200000, 1);
143 }
144 HEC_MODIFIER++;
145 }
146
147}
148
149void eTowerBuilder::BuildSingleTower(std::unique_ptr<eTowerContainer> & eTowerContainerRaw,float eta, float phi, float keybase, int posneg) const
150{
151 eTowerContainerRaw->push_back(eta, phi, keybase, posneg);
152}
153
154void eTowerBuilder::BuildAllTowers(std::unique_ptr<eTowerContainer> & eTowerContainerRaw) const
155{
156 BuildEMBeTowers(eTowerContainerRaw);
157 BuildTRANSeTowers(eTowerContainerRaw);
158 BuildEMEeTowers(eTowerContainerRaw);
159
160}
161
162} // end of LVL1 namespace
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method
AthAlgTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
virtual void BuildHECeTowers(std::unique_ptr< eTowerContainer > &eTowerContainerRaw) const override
virtual void execute(std::unique_ptr< eTowerContainer > &eTowerContainerRaw) const override
virtual void BuildAllTowers(std::unique_ptr< eTowerContainer > &eTowerContainerRaw) const override
virtual void BuildTRANSeTowers(std::unique_ptr< eTowerContainer > &eTowerContainerRaw) const override
eTowerBuilder(const std::string &type, const std::string &name, const IInterface *parent)
virtual void BuildEMBeTowers(std::unique_ptr< eTowerContainer > &eTowerContainerRaw) const override
virtual void init(std::unique_ptr< eTowerContainer > &eTowerContainerRaw) const override
virtual void BuildSingleTower(std::unique_ptr< eTowerContainer > &eTowerContainerRawRaw, float eta, float phi, float keybase, int posneg) const override
virtual void BuildEMEeTowers(std::unique_ptr< eTowerContainer > &eTowerContainerRaw) const override
eFexTowerBuilder creates xAOD::eFexTowerContainer from supercells (LATOME) and triggerTowers (TREX) i...