ATLAS Offline Software
ForwardDetectors/ZDC/ZdcUtils/Root/ZDCTriggerSim.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 
7 #include <iostream>
8 #include <stdexcept>
9 
10 // dump stream data
11 void ZDCTriggerSimBase::dump(std::ostream& strm) const {
12  for (auto entry : m_stack) {
13  strm << entry->getType() << ": ";
14  entry->dump(strm);
15  strm << std::endl;
16  }
17 }
18 
19 // Obtain 3 bit output from 4*2 bit arm trigger decisions
22  if (ptr->getNumData() != 2 || ptr->getNumBits() != 4)
23  throw std::logic_error("Invalid input data in ZDCTriggerSimCombLUT");
24 
25  unsigned int bitsSideA = ptr->getValueTrunc(0);
26  unsigned int bitsSideC = ptr->getValueTrunc(1);
27 
28  unsigned int address = (bitsSideC << 4) + bitsSideA;
29  unsigned int comLUTvalue = m_combLUT.at(address);
30 
31  // ZDCTriggerSim::SimDataPtr uses shared_ptr semantics so cleanup is
32  // guaranteed
33  //
35  static_cast<ZDCTriggerSim::CombLUTOutput*>(lutOut_p.get())
36  ->setDatum(comLUTvalue);
37 
38  stackPush(lutOut_p);
39 }
40 
41 // Obtain 4x2 bit output from arm energy sums
44  if (ptr->getNumData() != 2 || ptr->getNumBits() != 12)
45  throw std::logic_error("Invalid input data in ZDCTriggerSimAllLUTs");
46  ;
47 
48  unsigned int inputSideA = ptr->getValueTrunc(0);
49  unsigned int inputSideC = ptr->getValueTrunc(1);
50 
51  unsigned int valueA = m_LUTA.at(inputSideA);
52  unsigned int valueC = m_LUTC.at(inputSideC);
53 
54  // ZDCTriggerSim::SimDataPtr uses shared_ptr semantics so cleanup is
55  // guaranteed
56  //
58  static_cast<ZDCTriggerSim::CombLUTInputsInt*>(inputs_p.get())
59  ->setData({valueA, valueC});
60 
63 }
64 
65 // Obtain arm energy sums from Module by Module Calibrated energies
68  if (ptr->getNumData() != 8 || ptr->getNumBits() != 12)
69  throw std::logic_error("Invalid input data in ZDCTriggerSimModuleAmpls");
70 
71  unsigned int sumA = 0;
72  for (size_t i = 0; i < 4; i++) {
73  sumA += ptr->getValueTrunc(i);
74  }
75 
76  unsigned int sumC = 0;
77  for (size_t i = 4; i < 8; i++) {
78  sumC += ptr->getValueTrunc(i);
79  }
80 
81  // The sums get divided by 4
82  //
83  sumA /= 4;
84  sumC /= 4;
85 
87  static_cast<ZDCTriggerSim::SideLUTInputsInt*>(inputs_p.get())
88  ->setData({sumA, sumC});
89 
91 
93 }
ZDCTriggerSimModuleAmpls::doSimStage
virtual void doSimStage() override
Definition: ForwardDetectors/ZDC/ZdcUtils/Root/ZDCTriggerSim.cxx:66
ZDCTriggerSimBase::m_stack
SimStack m_stack
Definition: ForwardDetectors/ZDC/ZdcUtils/ZdcUtils/ZDCTriggerSim.h:176
ZDCTriggerSimAllLUTs::doSimStage
virtual void doSimStage() override
Definition: ForwardDetectors/ZDC/ZdcUtils/Root/ZDCTriggerSim.cxx:42
ZDCTriggerSimBase::stackTopData
const ZDCTriggerSim::SimDataCPtr & stackTopData() const
Definition: ForwardDetectors/ZDC/ZdcUtils/ZdcUtils/ZDCTriggerSim.h:185
lumiFormat.i
int i
Definition: lumiFormat.py:92
ZDCTriggerSim::SimDataCPtr
std::shared_ptr< const ZDCTriggerSimDataBase > SimDataCPtr
Definition: ForwardDetectors/ZDC/ZdcUtils/ZdcUtils/ZDCTriggerSim.h:162
ZDCTriggerSim::SimDataPtr
std::shared_ptr< ZDCTriggerSimDataBase > SimDataPtr
Definition: ForwardDetectors/ZDC/ZdcUtils/ZdcUtils/ZDCTriggerSim.h:163
ZDCTriggerSimCombLUT::doSimStage
virtual void doSimStage() override
Definition: ForwardDetectors/ZDC/ZdcUtils/Root/ZDCTriggerSim.cxx:20
ZDCTriggerSimBase::stackPush
void stackPush(const ZDCTriggerSim::SimDataCPtr &ptr)
Definition: ForwardDetectors/ZDC/ZdcUtils/ZdcUtils/ZDCTriggerSim.h:181
GetAllXsec.entry
list entry
Definition: GetAllXsec.py:132
ZDCTriggerSimAllLUTs::m_LUTC
std::array< unsigned int, 4096 > m_LUTC
Definition: ForwardDetectors/ZDC/ZdcUtils/ZdcUtils/ZDCTriggerSim.h:234
ZDCTriggerSimData
Definition: ForwardDetectors/ZDC/ZdcUtils/ZdcUtils/ZDCTriggerSim.h:58
ZDCTriggerSimCombLUT::m_combLUT
std::array< unsigned int, 256 > m_combLUT
Definition: ForwardDetectors/ZDC/ZdcUtils/ZdcUtils/ZDCTriggerSim.h:208
RTTAlgmain.address
address
Definition: RTTAlgmain.py:55
ZDCTriggerSim.h
A tool to make L1 decision using LUTs.
ZDCTriggerSimBase::dump
void dump(std::ostream &strm) const
Definition: ForwardDetectors/ZDC/ZdcUtils/Root/ZDCTriggerSim.cxx:11
ZDCTriggerSimAllLUTs::m_LUTA
std::array< unsigned int, 4096 > m_LUTA
Definition: ForwardDetectors/ZDC/ZdcUtils/ZdcUtils/ZDCTriggerSim.h:233