ATLAS Offline Software
Loading...
Searching...
No Matches
L1JEPEtSumsTools.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
3*/
5// L1JEPEtSumsTools.cxx,
7
8#include <map>
9#include <utility>
10
18#include "L1JEPEtSumsTools.h"
19
20namespace LVL1 {
21
23
25 const std::string& name,
26 const IInterface* parent)
27 :
28 AthAlgTool(type, name, parent),
29 m_jeTool("LVL1::L1JetElementTools/L1JetElementTools"),
30 m_etTool("LVL1::L1EtTools/L1EtTools")
31{
32 declareInterface<IL1JEPEtSumsTools>(this);
33 declareProperty( "JetElementTool", m_jeTool);
34 declareProperty( "EtTool", m_etTool);
35}
36
38
42
43
45
47{
48
49 ATH_CHECK( m_L1MenuKey.initialize() );
50 // Retrieve jet element tool
51
52 ATH_CHECK(m_jeTool.retrieve());
53
54 // Retrieve energy sums tool
55
56 ATH_CHECK(m_etTool.retrieve());
57
58 return StatusCode::SUCCESS;
59}
60
62
64 const DataVector<xAOD::JetElement>* jetElementVec,
65 DataVector<JEMEtSums>* jemEtSumsVec) const
66{
67 // Find number of slices
68 int peak = 0;
69 unsigned int nslices = 1;
72 for (; iter != iterE; ++iter) {
73 if ((*iter)->emJetElementETVec().size() > nslices) {
74 nslices = (*iter)->emJetElementETVec().size();
75 peak = (*iter)->peak();
76 break;
77 }
78 if ((*iter)->hadJetElementETVec().size() > nslices) {
79 nslices = (*iter)->emJetElementETVec().size();
80 peak = (*iter)->peak();
81 break;
82 }
83 }
84 // Process each slice
86 m_jeTool->mapJetElements(jetElementVec, &jeMap);
87 MultiSliceModuleEnergy modulesVec;
88 for (unsigned int slice = 0; slice < nslices; ++slice) {
90 modulesVec.push_back(modules);
91 m_etTool->moduleSums(&jeMap, modules, slice);
92 }
93 // Convert to JEMEtSums
94 moduleEnergyToEtSums(modulesVec, jemEtSumsVec, peak);
95 MultiSliceModuleEnergy::iterator miter = modulesVec.begin();
96 MultiSliceModuleEnergy::iterator miterE = modulesVec.end();
97 for (; miter != miterE; ++miter) delete *miter;
98}
99
101
103 DataVector<CMMEtSums>* cmmEtSumsVec) const
104{
105 formCMMEtSumsModule(jemEtSumsVec, cmmEtSumsVec);
106 // Convert to internal containers
107 int peak = 0;
108 MultiSliceModuleEnergy modulesVec;
109 MultiSliceCrateEnergy cratesVec;
110 MultiSliceSystemEnergy systemVec;
111 etSumsToModuleEnergy(cmmEtSumsVec, modulesVec, peak);
112 // Process each slice
113 MultiSliceModuleEnergy::iterator iter = modulesVec.begin();
114 MultiSliceModuleEnergy::iterator iterE = modulesVec.end();
115 for (; iter != iterE; ++iter) {
116 DataVector<ModuleEnergy>* modules = *iter;
118 cratesVec.push_back(crates);
119 m_etTool->crateSums(modules, crates);
120 systemVec.push_back(new SystemEnergy(m_etTool->systemSums(crates)));
121 delete modules;
122 }
123 // Convert back to CMMEtSums
124 crateEnergyToEtSums(cratesVec, cmmEtSumsVec, peak);
125 MultiSliceCrateEnergy::iterator citer = cratesVec.begin();
126 MultiSliceCrateEnergy::iterator citerE = cratesVec.end();
127 for (; citer != citerE; ++citer) delete *citer;
128 systemEnergyToEtSums(systemVec, cmmEtSumsVec, peak);
129 etMapsToEtSums(systemVec, cmmEtSumsVec, peak);
130 MultiSliceSystemEnergy::iterator siter = systemVec.begin();
131 MultiSliceSystemEnergy::iterator siterE = systemVec.end();
132 for (; siter != siterE; ++siter) delete *siter;
133}
134
136
138 const DataVector<JEMEtSums>* jemEtSumsVec,
139 DataVector<CMMEtSums>* cmmEtSumsMod) const
140{
141 DataVector<JEMEtSums>::const_iterator pos = jemEtSumsVec->begin();
142 DataVector<JEMEtSums>::const_iterator pose = jemEtSumsVec->end();
143 for (; pos != pose; ++pos) {
144 const JEMEtSums* sums = *pos;
145 ErrorVector err(sums->EtVec().size());
146 cmmEtSumsMod->push_back(new CMMEtSums(sums->crate(), sums->module(),
147 sums->EtVec(), sums->ExVec(), sums->EyVec(),
148 err, err, err, sums->peak()));
149 }
150}
151
153
155 const DataVector<CMMEtSums>* cmmEtSumsMod,
156 DataVector<CMMEtSums>* cmmEtSumsCrate) const
157{
158 // Convert to internal containers
159 int peak = 0;
160 MultiSliceModuleEnergy modulesVec;
161 MultiSliceCrateEnergy cratesVec;
162 etSumsToModuleEnergy(cmmEtSumsMod, modulesVec, peak);
163 // Process each slice
164 MultiSliceModuleEnergy::iterator iter = modulesVec.begin();
165 MultiSliceModuleEnergy::iterator iterE = modulesVec.end();
166 for (; iter != iterE; ++iter) {
167 DataVector<ModuleEnergy>* modules = *iter;
169 cratesVec.push_back(crates);
170 m_etTool->crateSums(modules, crates);
171 delete modules;
172 }
173 // Convert back to CMMEtSums
174 crateEnergyToEtSums(cratesVec, cmmEtSumsCrate, peak);
175 MultiSliceCrateEnergy::iterator miter = cratesVec.begin();
176 MultiSliceCrateEnergy::iterator miterE = cratesVec.end();
177 for (; miter != miterE; ++miter) delete *miter;
178}
179
181
183 const DataVector<CMMEtSums>* cmmEtSumsCrate,
184 DataVector<CMMEtSums>* cmmEtSumsSys) const
185{
186 // Convert to internal containers
187 int peak = 0;
188 MultiSliceCrateEnergy cratesVec;
189 MultiSliceSystemEnergy systemVec;
190 etSumsToCrateEnergy(cmmEtSumsCrate, cratesVec, peak);
191 // Process each slice
192 MultiSliceCrateEnergy::iterator iter = cratesVec.begin();
193 MultiSliceCrateEnergy::iterator iterE = cratesVec.end();
194 for (; iter != iterE; ++iter) {
195 DataVector<CrateEnergy>* crates = *iter;
196 systemVec.push_back(new SystemEnergy(m_etTool->systemSums(crates)));
197 delete crates;
198 }
199 // Convert back to CMMEtSums
200 systemEnergyToEtSums(systemVec, cmmEtSumsSys, peak);
201 MultiSliceSystemEnergy::iterator siter = systemVec.begin();
202 MultiSliceSystemEnergy::iterator siterE = systemVec.end();
203 for (; siter != siterE; ++siter) delete *siter;
204}
205
208
210 const DataVector<CMMEtSums>* cmmEtSumsSys,
211 DataVector<CMMEtSums>* cmmEtSumsMap) const
212{
213 // Convert to internal objects
214 int peak = 0;
215 MultiSliceSystemEnergy systemVec;
216 etSumsToSystemEnergy(cmmEtSumsSys, systemVec, peak);
217 // Convert back to CMMEtSums
218 etMapsToEtSums(systemVec, cmmEtSumsMap, peak);
219 MultiSliceSystemEnergy::iterator iter = systemVec.begin();
220 MultiSliceSystemEnergy::iterator iterE = systemVec.end();
221 for (; iter != iterE; ++iter) delete *iter;
222}
223
225
227 const DataVector<CMMEtSums>* etSums,
228 MultiSliceModuleEnergy& modulesVec, int& peak) const
229{
230 peak = 0;
231 unsigned int nslices = 0;
234 for (; pos != pose; ++pos) {
235 const CMMEtSums* sums = *pos;
236 int dataId = sums->dataID();
237 if (dataId > 15) continue;
238 int crate = sums->crate();
239 if (sums->peak() > peak) peak = sums->peak();
240 const EnergyVector& ex(sums->ExVec());
241 const EnergyVector& ey(sums->EyVec());
242 const EnergyVector& et(sums->EtVec());
243 unsigned int slices = et.size();
244 if (slices > nslices) {
245 for (unsigned int i = nslices; i < slices; ++i) {
246 modulesVec.push_back(new DataVector<ModuleEnergy>);
247 }
248 nslices = slices;
249 }
250 for (unsigned int sl = 0; sl < slices; ++sl) {
251 DataVector<ModuleEnergy>* modules = modulesVec[sl];
252 modules->push_back(new ModuleEnergy(crate, dataId,
253 et[sl], ex[sl], ey[sl]));
254 }
255 }
256}
257
259
261 MultiSliceCrateEnergy& crateVec, int& peak) const
262{
263 peak = 0;
264 unsigned int nslices = 0;
267 for (; pos != pose; ++pos) {
268 const CMMEtSums* sums = *pos;
269 int crate = sums->crate();
270 if (crate != 1) continue;
271 int dataId = sums->dataID();
272 if (dataId != CMMEtSums::LOCAL &&
273 dataId != CMMEtSums::REMOTE) continue;
274 if (dataId == CMMEtSums::REMOTE) crate = 0;
275 if (sums->peak() > peak) peak = sums->peak();
276 const EnergyVector& ex(sums->ExVec());
277 const EnergyVector& ey(sums->EyVec());
278 const EnergyVector& et(sums->EtVec());
279 const ErrorVector& exErrVec(sums->ExErrorVec());
280 const ErrorVector& eyErrVec(sums->EyErrorVec());
281 const ErrorVector& etErrVec(sums->EtErrorVec());
282 unsigned int slices = et.size();
283 if (slices > nslices) {
284 for (unsigned int i = nslices; i < slices; ++i) {
285 crateVec.push_back(new DataVector<CrateEnergy>);
286 }
287 nslices = slices;
288 }
289 for (unsigned int sl = 0; sl < slices; ++sl) {
290 DataVector<CrateEnergy>* crates = crateVec[sl];
291 DataError exErr(exErrVec[sl]);
292 DataError eyErr(eyErrVec[sl]);
293 DataError etErr(etErrVec[sl]);
294 crates->push_back(new CrateEnergy(crate, et[sl], ex[sl], ey[sl],
297 eyErr.get(DataError::Overflow)));
298 }
299 }
300}
301
303
305 const DataVector<CMMEtSums>* etSums,
306 MultiSliceSystemEnergy& systemVec, int& peak) const
307{
308 peak = 0;
309 int restricted = 0;
312 for (; pos != pose; ++pos) {
313 const CMMEtSums* sums = *pos;
314 int dataId = sums->dataID();
315 if (dataId != CMMEtSums::TOTAL) continue;
316 if (sums->peak() > peak) peak = sums->peak();
317 const EnergyVector& ex(sums->ExVec());
318 const EnergyVector& ey(sums->EyVec());
319 const EnergyVector& et(sums->EtVec());
320 const ErrorVector& exErrVec(sums->ExErrorVec());
321 const ErrorVector& eyErrVec(sums->EyErrorVec());
322 const ErrorVector& etErrVec(sums->EtErrorVec());
323 unsigned int slices = et.size();
324 auto l1Menu = SG::makeHandle( m_L1MenuKey );
325 for (unsigned int sl = 0; sl < slices; ++sl) {
326 DataError exErr(exErrVec[sl]);
327 DataError eyErr(eyErrVec[sl]);
328 DataError etErr(etErrVec[sl]);
329 systemVec.push_back(new SystemEnergy(et[sl], ex[sl], ey[sl],
333 restricted,
334 &(*l1Menu)));
335 }
336 }
337}
338
340
342 const MultiSliceModuleEnergy& modulesVec,
343 DataVector<JEMEtSums>* jemEtSumsVec, int peak) const
344{
345 std::map<int, JEMEtSums*> etMap;
346 unsigned int nslices = modulesVec.size();
347 std::vector<unsigned int> dummy(nslices);
348 for (unsigned int slice = 0; slice < nslices; ++slice) {
349 const DataVector<ModuleEnergy>* modules = modulesVec[slice];
352 for (; pos != pose; ++pos) {
353 const ModuleEnergy* energy = *pos;
354 unsigned int ex = energy->ex();
355 unsigned int ey = energy->ey();
356 unsigned int et = energy->et();
357 if (ex == 0 && ey == 0 && et == 0) continue;
358 int crate = energy->crate();
359 int module = energy->module();
360 JEMEtSums* sums = 0;
361 int key = crate*100 + module;
362 std::map<int, JEMEtSums*>::iterator iter = etMap.find(key);
363 if (iter == etMap.end()) {
364 sums = new JEMEtSums(crate, module, dummy, dummy, dummy, peak);
365 etMap.insert(std::make_pair(key, sums));
366 jemEtSumsVec->push_back(sums);
367 } else sums = iter->second;
368 std::vector<unsigned int> exVec(sums->ExVec());
369 std::vector<unsigned int> eyVec(sums->EyVec());
370 std::vector<unsigned int> etVec(sums->EtVec());
371 exVec[slice] = ex;
372 eyVec[slice] = ey;
373 etVec[slice] = et;
374 sums->addEx(exVec);
375 sums->addEy(eyVec);
376 sums->addEt(etVec);
377 }
378 }
379}
380
382
384 const MultiSliceCrateEnergy& cratesVec,
385 DataVector<CMMEtSums>* cmmEtSumsVec, int peak) const
386{
387 std::map<int, CMMEtSums*> etMap;
388 unsigned int nslices = cratesVec.size();
389 std::vector<unsigned int> dummy(nslices);
390 std::vector<int> error(nslices);
391 for (unsigned int slice = 0; slice < nslices; ++slice) {
392 const DataVector<CrateEnergy>* crates = cratesVec[slice];
395 for (; pos != pose; ++pos) {
396 const CrateEnergy* energy = *pos;
397 unsigned int ex = energy->exTC();
398 unsigned int ey = energy->eyTC();
399 unsigned int et = energy->et();
400 int exOverflow = energy->exOverflow();
401 int eyOverflow = energy->eyOverflow();
402 int etOverflow = energy->etOverflow();
403 if (ex == 0 && ey == 0 && et == 0 &&
404 exOverflow == 0 && eyOverflow == 0 && etOverflow == 0) continue;
405 int crate = energy->crate();
406 CMMEtSums* sums = 0;
407 int dataId = CMMEtSums::LOCAL;
408 for (int i = 0; i < 2; ++i) {
409 int key = crate*100 + dataId;
410 std::map<int, CMMEtSums*>::iterator iter = etMap.find(key);
411 if (iter == etMap.end()) {
412 sums = new CMMEtSums(crate, dataId, dummy, dummy, dummy,
413 error, error, error, peak);
414 etMap.insert(std::make_pair(key, sums));
415 cmmEtSumsVec->push_back(sums);
416 } else sums = iter->second;
417 std::vector<unsigned int> exVec(sums->ExVec());
418 std::vector<unsigned int> eyVec(sums->EyVec());
419 std::vector<unsigned int> etVec(sums->EtVec());
420 std::vector<int> exErr(sums->ExErrorVec());
421 std::vector<int> eyErr(sums->EyErrorVec());
422 std::vector<int> etErr(sums->EtErrorVec());
423 exVec[slice] = ex;
424 eyVec[slice] = ey;
425 etVec[slice] = et;
426 if (exOverflow) {
427 DataError dEx(exErr[slice]);
429 exErr[slice] = dEx.error();
430 }
431 if (eyOverflow) {
432 DataError dEy(eyErr[slice]);
434 eyErr[slice] = dEy.error();
435 }
436 if (etOverflow) {
437 DataError dEt(etErr[slice]);
439 etErr[slice] = dEt.error();
440 }
441 sums->addEx(exVec, exErr);
442 sums->addEy(eyVec, eyErr);
443 sums->addEt(etVec, etErr);
444 if (crate == 1) break;
445 crate = 1;
446 dataId = CMMEtSums::REMOTE;
447 }
448 }
449 }
450}
451
453
455 const MultiSliceSystemEnergy& systemVec,
456 DataVector<CMMEtSums>* cmmEtSumsVec, int peak) const
457{
458 CMMEtSums* sums = 0;
459 unsigned int nslices = systemVec.size();
460 std::vector<unsigned int> data(nslices);
461 std::vector<int> error(nslices);
462 for (unsigned int slice = 0; slice < nslices; ++slice) {
463 SystemEnergy* energy = systemVec[slice];
464 unsigned int ex = energy->exTC();
465 unsigned int ey = energy->eyTC();
466 unsigned int et = energy->et();
467 int exOverflow = energy->exOverflow();
468 int eyOverflow = energy->eyOverflow();
469 int etOverflow = energy->etOverflow();
470 if (ex == 0 && ey == 0 && et == 0 &&
471 exOverflow == 0 && eyOverflow == 0 && etOverflow == 0) continue;
472 if ( !sums ) {
473 sums = new CMMEtSums(1, CMMEtSums::TOTAL, data, data, data,
474 error, error, error, peak);
475 cmmEtSumsVec->push_back(sums);
476 }
477 std::vector<unsigned int> exVec(sums->ExVec());
478 std::vector<unsigned int> eyVec(sums->EyVec());
479 std::vector<unsigned int> etVec(sums->EtVec());
480 std::vector<int> exErr(sums->ExErrorVec());
481 std::vector<int> eyErr(sums->EyErrorVec());
482 std::vector<int> etErr(sums->EtErrorVec());
483 exVec[slice] = ex;
484 eyVec[slice] = ey;
485 etVec[slice] = et;
486 if (exOverflow) {
487 DataError dEx(exErr[slice]);
489 exErr[slice] = dEx.error();
490 }
491 if (eyOverflow) {
492 DataError dEy(eyErr[slice]);
494 eyErr[slice] = dEy.error();
495 }
496 if (etOverflow) {
497 DataError dEt(etErr[slice]);
499 etErr[slice] = dEt.error();
500 }
501 sums->addEx(exVec, exErr);
502 sums->addEy(eyVec, eyErr);
503 sums->addEt(etVec, etErr);
504 }
505}
506
508
510 const MultiSliceSystemEnergy& systemVec,
511 DataVector<CMMEtSums>* cmmEtSumsVec, int peak) const
512{
513 CMMEtSums* missEt = 0;
514 CMMEtSums* sumEt = 0;
515 CMMEtSums* missEtSig = 0;
516 unsigned int nslices = systemVec.size();
517 std::vector<unsigned int> data(nslices);
518 std::vector<int> error(nslices);
519 for (unsigned int slice = 0; slice < nslices; ++slice) {
520 SystemEnergy* energy = systemVec[slice];
521 unsigned int etMissHits = energy->etMissHits();
522 if (etMissHits) {
523 if ( !missEt ) {
525 error, error, error, peak);
526 cmmEtSumsVec->push_back(missEt);
527 }
528 std::vector<unsigned int> etVec(missEt->EtVec());
529 etVec[slice] = etMissHits;
530 missEt->addEx(etVec, error);
531 missEt->addEy(etVec, error);
532 missEt->addEt(etVec, error);
533 }
534 unsigned int etSumHits = energy->etSumHits();
535 if (etSumHits) {
536 if ( !sumEt ) {
537 sumEt = new CMMEtSums(1, CMMEtSums::SUM_ET_MAP, data, data, data,
538 error, error, error, peak);
539 cmmEtSumsVec->push_back(sumEt);
540 }
541 std::vector<unsigned int> etVec(sumEt->EtVec());
542 etVec[slice] = etSumHits;
543 sumEt->addEx(etVec, error);
544 sumEt->addEy(etVec, error);
545 sumEt->addEt(etVec, error);
546 }
547 //unsigned int etMissSigHits = energy->etMissSigHits();
548 unsigned int etMissSigHits = ((energy->roiWord0())>>16)&0xff;
549 if (etMissSigHits) {
550 if ( !missEtSig ) {
551 missEtSig = new CMMEtSums(1, CMMEtSums::MISSING_ET_SIG_MAP,
552 data, data, data, error, error, error, peak);
553 cmmEtSumsVec->push_back(missEtSig);
554 }
555 std::vector<unsigned int> etVec(missEtSig->EtVec());
556 etVec[slice] = etMissSigHits;
557 missEtSig->addEx(etVec, error);
558 missEtSig->addEy(etVec, error);
559 missEtSig->addEt(etVec, error);
560 }
561 }
562}
563
564} // end of namespace
#define ATH_CHECK
Evaluate an expression and check for errors.
char data[hepevt_bytes_allocation_ATLAS]
Definition HepEvt.cxx:11
float et(const xAOD::jFexSRJetRoI *j)
AthAlgTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
Derived DataVector<T>.
Definition DataVector.h:795
DataModel_detail::const_iterator< DataVector > const_iterator
Standard const_iterator.
Definition DataVector.h:838
value_type push_back(value_type pElem)
Add an element to the end of the collection.
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
CMMEtSums object stores Et sums from the Energy CMMs.
int peak() const
returns peak slice number
const std::vector< int > & EtErrorVec() const
returns module ET errors
void addEx(const std::vector< unsigned int > &Ex, const std::vector< int > &ExError)
Update Ex sum.
const std::vector< int > & ExErrorVec() const
returns module Ex errors
int dataID() const
returns data ID
Definition CMMEtSums.cxx:59
void addEt(const std::vector< unsigned int > &Et, const std::vector< int > &EtError)
Add data to existing objects.
int crate() const
Data accessors.
Definition CMMEtSums.cxx:54
const std::vector< unsigned int > & EtVec() const
Access multi-slice data.
Definition CMMEtSums.cxx:94
void addEy(const std::vector< unsigned int > &Ey, const std::vector< int > &EyError)
Update Ey sum.
const std::vector< unsigned int > & ExVec() const
returns module Ex sum
Definition CMMEtSums.cxx:99
const std::vector< int > & EyErrorVec() const
returns module Ey errors
const std::vector< unsigned int > & EyVec() const
returns module Ey sum
CrateEnergy class declaration Simulates behaviour of the Crate-CMM System CMM logic is done in Energy...
Definition CrateEnergy.h:29
Error data.
Definition DataError.h:27
int error() const
Return the full error word.
Definition DataError.h:78
void set(ErrorBit bit, int value=1)
Set an error bit or data.
Definition DataError.cxx:28
int get(ErrorBit bit) const
Return an error bit or data.
Definition DataError.cxx:48
int module() const
returns module number
Definition JEMEtSums.cxx:52
const std::vector< unsigned int > & EyVec() const
returns module Ey sum
Definition JEMEtSums.cxx:82
void addEx(const std::vector< unsigned int > &Ex)
Update Ex sum.
Definition JEMEtSums.cxx:97
const std::vector< unsigned int > & ExVec() const
returns module Ex sum
Definition JEMEtSums.cxx:77
void addEt(const std::vector< unsigned int > &Et)
Update ET sum.
Definition JEMEtSums.cxx:92
const std::vector< unsigned int > & EtVec() const
returns module ET sum
Definition JEMEtSums.cxx:72
int crate() const
returns crate number
Definition JEMEtSums.cxx:47
int peak() const
returns peak slice number
void addEy(const std::vector< unsigned int > &Ey)
Update Ey sum.
std::vector< int > ErrorVector
virtual StatusCode initialize()
standard Athena-Algorithm method
std::vector< SystemEnergy * > MultiSliceSystemEnergy
L1JEPEtSumsTools(const std::string &type, const std::string &name, const IInterface *parent)
Constructor.
void etSumsToCrateEnergy(const DataVector< CMMEtSums > *etSums, MultiSliceCrateEnergy &crateVec, int &peak) const
Convert CMMEtSums container to internal CrateEnergy containers.
std::vector< unsigned int > EnergyVector
SG::ReadHandleKey< TrigConf::L1Menu > m_L1MenuKey
virtual void formCMMEtSumsCrate(const DataVector< CMMEtSums > *cmmEtSumsMod, DataVector< CMMEtSums > *cmmEtSumsCrate) const
form partial CMMEtSums (crate) from module CMMEtSums
void etSumsToModuleEnergy(const DataVector< CMMEtSums > *etSums, MultiSliceModuleEnergy &modulesVec, int &peak) const
Convert CMMEtSums container to internal ModuleEnergy containers.
virtual void formCMMEtSumsSystem(const DataVector< CMMEtSums > *cmmEtSumsCrate, DataVector< CMMEtSums > *cmmEtSumsSys) const
form partial CMMEtSums (system) from crate CMMEtSums
virtual void formCMMEtSums(const DataVector< JEMEtSums > *jemEtSumsVec, DataVector< CMMEtSums > *cmmEtSumsVec) const
form complete CMMEtSums from JEMEtSums
virtual void formJEMEtSums(const DataVector< xAOD::JetElement > *jetElementVec, DataVector< JEMEtSums > *jemEtSumsVec) const
form JEMEtSums from JetElements
void etMapsToEtSums(const MultiSliceSystemEnergy &systemVec, DataVector< CMMEtSums > *cmmEtSumsVec, int peak) const
Convert maps from internal SystemEnergy objects to CMMEtSums objects.
void etSumsToSystemEnergy(const DataVector< CMMEtSums > *etSums, MultiSliceSystemEnergy &systemVec, int &peak) const
Convert CMMEtSums container to internal SystemEnergy objects.
std::vector< DataVector< CrateEnergy > * > MultiSliceCrateEnergy
void crateEnergyToEtSums(const MultiSliceCrateEnergy &cratesVec, DataVector< CMMEtSums > *cmmEtSumsVec, int peak) const
Convert internal CrateEnergy containers to CMMEtSums container.
virtual ~L1JEPEtSumsTools()
default destructor
ToolHandle< LVL1::IL1JetElementTools > m_jeTool
Tool for JetElement map.
std::vector< DataVector< ModuleEnergy > * > MultiSliceModuleEnergy
virtual void formCMMEtSumsModule(const DataVector< JEMEtSums > *jemEtSumsVec, DataVector< CMMEtSums > *cmmEtSumsMod) const
form partial CMMEtSums (module) from JEMEtSums
virtual void formCMMEtSumsEtMaps(const DataVector< CMMEtSums > *cmmEtSumsSys, DataVector< CMMEtSums > *cmmEtSumsMap) const
form partial CMMEtSums (sumEt/missingEt maps) from system CMMEtSums
void systemEnergyToEtSums(const MultiSliceSystemEnergy &systemVec, DataVector< CMMEtSums > *cmmEtSumsVec, int peak) const
Convert internal SystemEnergy objects to CMMEtSums object.
void moduleEnergyToEtSums(const MultiSliceModuleEnergy &modulesVec, DataVector< JEMEtSums > *jemEtSumsVec, int peak) const
Convert internal ModuleEnergy containers to JEMEtSums container.
ToolHandle< LVL1::IL1EtTools > m_etTool
Tool for energy sums.
This is an internal class, used in the Energy trigger.
SystemEnergy class declaration Simulates behaviour of the Crate-CMM System CMM logic is done in Energ...
eFexTowerBuilder creates xAOD::eFexTowerContainer from supercells (LATOME) and triggerTowers (TREX) i...
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
std::map< int, const JetElement * > JetElementMap_t
Extra patterns decribing particle interation process.