49 {
51
52
53 SG::ReadHandle<xAOD::TrackParticleContainer> tracks(
m_TP_key, ctx);
54 if (!tracks.isValid()) {
56 return StatusCode::FAILURE;
57 }
58
59
61 std::vector <int> TrackParticleMultiplicity(nTrackSels,0);
62 for (const auto* tp : *tracks) {
63 if (tp) {
64 for (unsigned int its = 0; its < nTrackSels; ++its) {
66 }
67 }
68 }
69
70 for (unsigned int its = 0; its < nTrackSels; ++its) {
72 }
73
74 float FCalEtA = 0;
75 float FCalEtC = 0;
76
81
82 float HalfFCalEtA = 0;
83 float HalfFCalEtC = 0;
84
89
90
91 SG::AuxElement::Decorator< float > decFCalEtA("FCalEtA");
92 SG::AuxElement::Decorator< float > decFCalEtC("FCalEtC");
93
94 SG::AuxElement::Decorator< float > decHalfFCalEtA("HalfFCalEtA");
95 SG::AuxElement::Decorator< float > decHalfFCalEtC("HalfFCalEtC");
96
97
98 SG::ReadHandle<xAOD::HIEventShapeContainer> eventShape(
m_eventShapeKey, ctx);
99 if (!eventShape.isValid()){
101 return StatusCode::FAILURE;
102 }
103
104
105 for(const auto* ptrEvtShp : *eventShape){
106 if(ptrEvtShp->layer()!=21 && ptrEvtShp->layer()!=22 &&
107 ptrEvtShp->layer()!=23) continue;
108
109 float eta = ptrEvtShp->etaMin();
110 const std::vector<float>&
c1 = ptrEvtShp->etCos();
111 const std::vector<float>&
s1 = ptrEvtShp->etSin();
112
114 FCalEtA += ptrEvtShp->et();
116 FCalEtA_Qnx.at(vn-1) +=
c1.at(vn);
117 FCalEtA_Qny.at(vn-1) +=
s1.at(vn);
118 }
120 HalfFCalEtA += ptrEvtShp->et();
122 HalfFCalEtA_Qnx.at(vn-1) +=
c1.at(vn);
123 HalfFCalEtA_Qny.at(vn-1) +=
s1.at(vn);
124 }
125 }
126 }
else if (
eta < 0) {
127 FCalEtC += ptrEvtShp->et();
129 FCalEtC_Qnx.at(vn-1) +=
c1.at(vn);
130 FCalEtC_Qny.at(vn-1) +=
s1.at(vn);
131 }
133 HalfFCalEtC += ptrEvtShp->et();
135 HalfFCalEtC_Qnx.at(vn-1) +=
c1.at(vn);
136 HalfFCalEtC_Qny.at(vn-1) +=
s1.at(vn);
137 }
138 }
139 }
140 }
141
143
144
145 SG::AuxElement::Decorator< bool > decTopoClusterFCalCut("passUPCTopoCaloCut");
146
147 decTopoClusterFCalCut(*eventInfo) = false;
148
149
151 bool hasTowerA{false};
152 bool hasTowerC{false};
153 for (const auto topo : *topos) {
154 float topo_eta =
topo->eta();
155 if (abs(topo_eta) > 3.2 && abs(topo_eta) < 4.9) {
156 float topo_pt =
topo->pt() * 1
e-3;
157 if (topo_pt > 0.4) {
158 if (topo_eta > 0) {
159 hasTowerA = true;
160 } else {
161 hasTowerC = true;
162 }
163 }
164 }
165 }
166
167 decTopoClusterFCalCut(*eventInfo) = (hasTowerA && hasTowerC);
168 }
169
170
171
172 decFCalEtA(*eventInfo) = FCalEtA;
173 decFCalEtC(*eventInfo) = FCalEtC;
174 decHalfFCalEtA(*eventInfo) = HalfFCalEtA;
175 decHalfFCalEtC(*eventInfo) = HalfFCalEtC;
176
186 }
187
188 return StatusCode::SUCCESS;
189 }
Scalar eta() const
pseudorapidity method
StatusCode accept(const xAOD::Muon *mu)