ATLAS Offline Software
Public Member Functions | Private Member Functions | Private Attributes | List of all members
GlobalSim::eEmMultAlgTool Class Reference

AlgTool to count GlobalSim::IOBitwise::eEmTOB objects. More...

#include <eEmMultAlgTool.h>

Inheritance diagram for GlobalSim::eEmMultAlgTool:
Collaboration diagram for GlobalSim::eEmMultAlgTool:

Public Member Functions

 eEmMultAlgTool (const std::string &type, const std::string &name, const IInterface *parent)
 
virtual ~eEmMultAlgTool () override=default
 
virtual StatusCode initialize () override
 Initialize function running before first event. More...
 
virtual StatusCode updateTIP (std::bitset< s_nbits_TIP > &, const EventContext &) const override
 
virtual std::string toString () const override
 

Private Member Functions

void dump () const
 

Private Attributes

std::unique_ptr< ICommonSelectorm_c_selector {nullptr}
 
std::unique_ptr< IeEmSelectorm_e_selector {nullptr}
 
SG::ReadHandleKey< GlobalSim::IOBitwise::IeEmTOBContainerm_eEmTOBContainerKey
 
Gaudi::Property< std::string > m_et_low_str
 
Gaudi::Property< std::string > m_et_high_str
 
Gaudi::Property< std::string > m_eta_low_str
 
Gaudi::Property< std::string > m_eta_high_str
 
Gaudi::Property< std::string > m_phi_low_str
 
Gaudi::Property< std::string > m_phi_high_str
 
Gaudi::Property< std::string > m_rhad_str
 
Gaudi::Property< std::string > m_rhad_op
 
Gaudi::Property< std::string > m_reta_str
 
Gaudi::Property< std::string > m_reta_op
 
Gaudi::Property< std::string > m_wstot_str
 
Gaudi::Property< std::string > m_wstot_op
 
Gaudi::Property< int > m_TIP_position
 
Gaudi::Property< int > m_n_multbits
 
Gaudi::Property< std::string > m_menu_name
 
Gaudi::Property< bool > m_enableDump
 
ulong m_maxtob {0}
 

Detailed Description

AlgTool to count GlobalSim::IOBitwise::eEmTOB objects.

Definition at line 30 of file eEmMultAlgTool.h.

Constructor & Destructor Documentation

◆ eEmMultAlgTool()

GlobalSim::eEmMultAlgTool::eEmMultAlgTool ( const std::string &  type,
const std::string &  name,
const IInterface *  parent 
)

Definition at line 13 of file eEmMultAlgTool.cxx.

15  :
16  base_class(type, name, parent) {
17  }

◆ ~eEmMultAlgTool()

virtual GlobalSim::eEmMultAlgTool::~eEmMultAlgTool ( )
overridevirtualdefault

Member Function Documentation

◆ dump()

void GlobalSim::eEmMultAlgTool::dump ( ) const
private

◆ initialize()

StatusCode GlobalSim::eEmMultAlgTool::initialize ( )
overridevirtual

Initialize function running before first event.

Definition at line 21 of file eEmMultAlgTool.cxx.

21  {
22 
23  CHECK(m_eEmTOBContainerKey.initialize());
24 
25  if (m_n_multbits < 0) {
26  ATH_MSG_ERROR("number of bits to write to TIP is negative");
27  return StatusCode::FAILURE;
28  }
29 
30  int max_tip_pos = s_nbits_TIP - m_n_multbits;
31 
32  if (m_TIP_position < 0 or m_TIP_position > max_tip_pos) {
33  ATH_MSG_ERROR("TIP word out of bounds " << m_TIP_position);
34  return StatusCode::FAILURE;
35  }
36 
37  // create the necessary selector objects
38  m_c_selector = std::make_unique<CommonSelector>(m_et_low_str,
44  );
45 
46  try {
47  m_e_selector = std::make_unique<eEmSelector>(std::stoul(m_rhad_str),
48  m_rhad_op,
49  std::stoul(m_reta_str),
50  m_reta_op,
51  std::stoul(m_wstot_str),
53  );
54  } catch (const std::exception& e) {
55 
56  ATH_MSG_ERROR("Error initialising eEMSelector " << e.what());
57  return StatusCode::FAILURE;
58  }
59 
60 
61 
62  if (m_n_multbits == 0){
63  m_maxtob = 0;
64  } else {
65  ulong maxtob = 1;
66  for (ulong i = m_n_multbits; i != 0; --i) { maxtob *= 2;}
67  m_maxtob = maxtob - 1;
68  }
69 
70  return StatusCode::SUCCESS;
71  }

◆ toString()

std::string GlobalSim::eEmMultAlgTool::toString ( ) const
overridevirtual

Definition at line 134 of file eEmMultAlgTool.cxx.

134  {
135  std::stringstream ss;
136  ss <<name () << ": " <<m_menu_name << ' '
137  << "eEmMultAlgTool read, select, count and report number of related eEmTOBS\n"
138  << m_c_selector->to_string() << '\n'
139  << m_e_selector->to_string() << '\n'
140  << m_TIP_position << ' ' << m_n_multbits;
141 
142  return ss.str();
143  }

◆ updateTIP()

StatusCode GlobalSim::eEmMultAlgTool::updateTIP ( std::bitset< s_nbits_TIP > &  word,
const EventContext &  ctx 
) const
overridevirtual

Definition at line 74 of file eEmMultAlgTool.cxx.

75  {
76  auto tobs =
78  ctx);
79 
80  CHECK(tobs.isValid());
81 
82  // check if any of the incoming tobs is selected.
83 
84  auto selected = std::make_unique<bool>(false);
85 
86  ulong tob_count{0};
87  std::vector<bool> tob_pass(tobs->size(), false);
88  for (const auto& t : *tobs){
89  if (m_c_selector->select(*t) and m_e_selector->select(*t)) {
90  tob_pass[tob_count] = true;
91  if (++tob_count == m_maxtob){
92  tob_pass[tob_count] = true;
93  break;
94  }
95  }
96  }
97 
98 
99 
100  ATH_MSG_DEBUG("no of passing TOBS" << tob_count);
101 
102  auto count_bits = std::bitset<s_nbits_TIP>(tob_count);
103 
104  int p0{0};
105  int p1{m_TIP_position};
106 
107  const int& mxb = m_n_multbits;
108 
109  for (; p0 != mxb; ++p0, ++p1) {
110  if (count_bits.test(p0)) {word.set(p1);}
111  }
112 
113  ATH_MSG_DEBUG("TIP word " << word);
114 
115 
116  if (m_enableDump) {
117  std::stringstream ss;
118  ss << "\nRun " << ctx <<' ' << "TIP:\n" << word << '\n';
119  std::size_t ind{0};
120  for (const auto& tob : *tobs) {
121  ss << *tob << ' ' << std::boolalpha << " pass " << tob_pass[ind++] << '\n';
122  }
123  ss << "tob count " << tob_count << '\n';
124 
125  std::ofstream out(name() + ".log", std::ios_base::app);
126  out << ss.str();
127  out.close();
128  }
129 
130 
131  return StatusCode::SUCCESS;
132  }

Member Data Documentation

◆ m_c_selector

std::unique_ptr<ICommonSelector> GlobalSim::eEmMultAlgTool::m_c_selector {nullptr}
private

Definition at line 49 of file eEmMultAlgTool.h.

◆ m_e_selector

std::unique_ptr<IeEmSelector> GlobalSim::eEmMultAlgTool::m_e_selector {nullptr}
private

Definition at line 50 of file eEmMultAlgTool.h.

◆ m_eEmTOBContainerKey

SG::ReadHandleKey<GlobalSim::IOBitwise::IeEmTOBContainer> GlobalSim::eEmMultAlgTool::m_eEmTOBContainerKey
private
Initial value:
{
this,
"eEmTOBs",
"eEmTOBs",
"Key for GlobalSim eEmTOB container"}

Definition at line 53 of file eEmMultAlgTool.h.

◆ m_enableDump

Gaudi::Property<bool> GlobalSim::eEmMultAlgTool::m_enableDump
private
Initial value:
{
this,
"enable_dump",
"False",
"floag to eanble debug dumps"
}

Definition at line 151 of file eEmMultAlgTool.h.

◆ m_et_high_str

Gaudi::Property<std::string> GlobalSim::eEmMultAlgTool::m_et_high_str
private
Initial value:
{
this,
"et_high",
"inf",
"et high for window selector"}

Definition at line 65 of file eEmMultAlgTool.h.

◆ m_et_low_str

Gaudi::Property<std::string> GlobalSim::eEmMultAlgTool::m_et_low_str
private
Initial value:
{
this,
"et_low",
"0",
"et low for window selector"}

Definition at line 59 of file eEmMultAlgTool.h.

◆ m_eta_high_str

Gaudi::Property<std::string> GlobalSim::eEmMultAlgTool::m_eta_high_str
private
Initial value:
{
this,
"eta_high",
"inf",
"eta high for window selector"}

Definition at line 77 of file eEmMultAlgTool.h.

◆ m_eta_low_str

Gaudi::Property<std::string> GlobalSim::eEmMultAlgTool::m_eta_low_str
private
Initial value:
{
this,
"eta_low",
"0",
"eta low for window selector"}

Definition at line 71 of file eEmMultAlgTool.h.

◆ m_maxtob

ulong GlobalSim::eEmMultAlgTool::m_maxtob {0}
private

Definition at line 159 of file eEmMultAlgTool.h.

◆ m_menu_name

Gaudi::Property<std::string> GlobalSim::eEmMultAlgTool::m_menu_name
private
Initial value:
{
this,
"menu_name",
"unknown",
"name from json menu file"
}

Definition at line 144 of file eEmMultAlgTool.h.

◆ m_n_multbits

Gaudi::Property<int> GlobalSim::eEmMultAlgTool::m_n_multbits
private
Initial value:
{
this,
"n_multbits",
3,
"number of bits to write into the TIP"}

Definition at line 138 of file eEmMultAlgTool.h.

◆ m_phi_high_str

Gaudi::Property<std::string> GlobalSim::eEmMultAlgTool::m_phi_high_str
private
Initial value:
{
this,
"phi_high",
"inf",
"phi high for window selector"}

Definition at line 89 of file eEmMultAlgTool.h.

◆ m_phi_low_str

Gaudi::Property<std::string> GlobalSim::eEmMultAlgTool::m_phi_low_str
private
Initial value:
{
this,
"phi_low",
"0",
"phi low for window selector"}

Definition at line 83 of file eEmMultAlgTool.h.

◆ m_reta_op

Gaudi::Property<std::string> GlobalSim::eEmMultAlgTool::m_reta_op
private
Initial value:
{
this,
"reta_op",
"unknown",
"reta cut operator"}

Definition at line 113 of file eEmMultAlgTool.h.

◆ m_reta_str

Gaudi::Property<std::string> GlobalSim::eEmMultAlgTool::m_reta_str
private
Initial value:
{
this,
"reta",
"0",
"reta cut value"}

Definition at line 107 of file eEmMultAlgTool.h.

◆ m_rhad_op

Gaudi::Property<std::string> GlobalSim::eEmMultAlgTool::m_rhad_op
private
Initial value:
{
this,
"rhad_op",
"unknown",
"rhad cut operator"}

Definition at line 101 of file eEmMultAlgTool.h.

◆ m_rhad_str

Gaudi::Property<std::string> GlobalSim::eEmMultAlgTool::m_rhad_str
private
Initial value:
{
this,
"rhad",
"0",
"rhad cut value"}

Definition at line 95 of file eEmMultAlgTool.h.

◆ m_TIP_position

Gaudi::Property<int> GlobalSim::eEmMultAlgTool::m_TIP_position
private
Initial value:
{
this,
"TIPposition",
0,
"start position to write into the TIP"}

Definition at line 131 of file eEmMultAlgTool.h.

◆ m_wstot_op

Gaudi::Property<std::string> GlobalSim::eEmMultAlgTool::m_wstot_op
private
Initial value:
{
this,
"wstot_op",
"unknown",
"wstot cut_operator"}

Definition at line 125 of file eEmMultAlgTool.h.

◆ m_wstot_str

Gaudi::Property<std::string> GlobalSim::eEmMultAlgTool::m_wstot_str
private
Initial value:
{
this,
"wstot",
"0",
"wstot lcut_value"}

Definition at line 119 of file eEmMultAlgTool.h.


The documentation for this class was generated from the following files:
AllowedVariables::e
e
Definition: AsgElectronSelectorTool.cxx:37
GlobalSim::eEmMultAlgTool::m_rhad_op
Gaudi::Property< std::string > m_rhad_op
Definition: eEmMultAlgTool.h:101
GlobalSim::eEmMultAlgTool::m_wstot_str
Gaudi::Property< std::string > m_wstot_str
Definition: eEmMultAlgTool.h:119
PowhegControl_ttHplus_NLO.ss
ss
Definition: PowhegControl_ttHplus_NLO.py:83
GlobalSim::eEmMultAlgTool::m_maxtob
ulong m_maxtob
Definition: eEmMultAlgTool.h:159
GlobalSim::eEmMultAlgTool::m_n_multbits
Gaudi::Property< int > m_n_multbits
Definition: eEmMultAlgTool.h:138
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:67
GlobalSim::eEmMultAlgTool::m_eta_high_str
Gaudi::Property< std::string > m_eta_high_str
Definition: eEmMultAlgTool.h:77
TRTCalib_cfilter.p1
p1
Definition: TRTCalib_cfilter.py:130
python.AthDsoLogger.out
out
Definition: AthDsoLogger.py:70
GlobalSim::eEmMultAlgTool::m_menu_name
Gaudi::Property< std::string > m_menu_name
Definition: eEmMultAlgTool.h:144
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
GlobalSim::eEmMultAlgTool::m_reta_op
Gaudi::Property< std::string > m_reta_op
Definition: eEmMultAlgTool.h:113
GlobalSim::eEmMultAlgTool::m_enableDump
Gaudi::Property< bool > m_enableDump
Definition: eEmMultAlgTool.h:151
GlobalSim::eEmMultAlgTool::m_rhad_str
Gaudi::Property< std::string > m_rhad_str
Definition: eEmMultAlgTool.h:95
GlobalSim::eEmMultAlgTool::m_et_low_str
Gaudi::Property< std::string > m_et_low_str
Definition: eEmMultAlgTool.h:59
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
lumiFormat.i
int i
Definition: lumiFormat.py:85
GlobalSim::eEmMultAlgTool::m_phi_high_str
Gaudi::Property< std::string > m_phi_high_str
Definition: eEmMultAlgTool.h:89
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
GlobalSim::eEmMultAlgTool::m_eta_low_str
Gaudi::Property< std::string > m_eta_low_str
Definition: eEmMultAlgTool.h:71
calibdata.exception
exception
Definition: calibdata.py:495
test_pyathena.parent
parent
Definition: test_pyathena.py:15
CHECK
#define CHECK(...)
Evaluate an expression and check for errors.
Definition: Control/AthenaKernel/AthenaKernel/errorcheck.h:422
GlobalSim::eEmMultAlgTool::m_wstot_op
Gaudi::Property< std::string > m_wstot_op
Definition: eEmMultAlgTool.h:125
GlobalSim::eEmMultAlgTool::m_TIP_position
Gaudi::Property< int > m_TIP_position
Definition: eEmMultAlgTool.h:131
GlobalSim::eEmMultAlgTool::m_c_selector
std::unique_ptr< ICommonSelector > m_c_selector
Definition: eEmMultAlgTool.h:49
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
GlobalSim::eEmMultAlgTool::m_phi_low_str
Gaudi::Property< std::string > m_phi_low_str
Definition: eEmMultAlgTool.h:83
GlobalSim::eEmMultAlgTool::m_e_selector
std::unique_ptr< IeEmSelector > m_e_selector
Definition: eEmMultAlgTool.h:50
GlobalSim::eEmMultAlgTool::m_eEmTOBContainerKey
SG::ReadHandleKey< GlobalSim::IOBitwise::IeEmTOBContainer > m_eEmTOBContainerKey
Definition: eEmMultAlgTool.h:53
GlobalSim::eEmMultAlgTool::m_et_high_str
Gaudi::Property< std::string > m_et_high_str
Definition: eEmMultAlgTool.h:65
GlobalSim::eEmMultAlgTool::m_reta_str
Gaudi::Property< std::string > m_reta_str
Definition: eEmMultAlgTool.h:107
TRTCalib_cfilter.p0
p0
Definition: TRTCalib_cfilter.py:129