ATLAS Offline Software
RPCchamberdata.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 
8 
9 #include <iomanip>
10 
11 using namespace RPC_CondCabling;
12 
14  int chams{0}, stripsInEtaCon{0}, stripsInPhiCon{0};
15 
16  reset_data();
17 
18  m_fail = false;
19  if (!(data("station") >> m_station)) return;
20  if (!(data("made of") >> chams >> "chamber. Strips in connectors:")) return;
21  if (!(data("eta") >> stripsInEtaCon)) return;
22  if (!(data("phi") >> stripsInPhiCon)) return;
23  assert(stripsInEtaCon !=0);
24  (++data)("{");
25  do {
27  params.sectorType = type;
28  params.station = m_station;
29  params.stripsInEtaCon = stripsInEtaCon;
30  params.stripsInPhiCon = stripsInPhiCon;
31 
32  if (get_data(data, params)) { m_rpc.emplace_back(params); }
33  ++data;
34  } while (!data("}"));
35 }
36 
38 
40  int strips = (side == ViewType::Phi) ? params.phiStrips : params.etaStrips;
41 
42  if (side == ViewType::Phi)
43  params.phiConnectors = strips / params.stripsInPhiCon;
44  else
45  params.etaConnectors = strips / params.stripsInEtaCon;
46 
47  int connectors = (side == ViewType::Phi) ? params.phiConnectors : params.etaConnectors;
48  int strips_in_conn = (side == ViewType::Phi) ? params.stripsInPhiCon : params.stripsInEtaCon;
49  float str = (float)strips / (float)connectors;
50  std::string view = (side == ViewType::Phi) ? "phi" : "eta";
51 
52  std::ostringstream disp;
53 
54  if (str > strips_in_conn) {
55  REPORT_MESSAGE_WITH_CONTEXT(MSG::ERROR, "RPCchamberdata")
56  << "RPCdata error in configuration for Sector Type " << params.sectorType << ", station " << params.station << ", RPC number "
57  << params.number << std::endl
58  << " " << view << " strips into connectors must be less than " << strips_in_conn << " (instead are " << std::setprecision(2)
59  << str << ")";
60  return false;
61  }
62  if (params.number == 0 && ((params.etaStrips % 2) || params.etaConnectors % 2)) {
63  REPORT_MESSAGE_WITH_CONTEXT(MSG::ERROR, "RPCchamberdata")
64  << "RPCdata error in configuration for Sector Type " << params.sectorType << ", station " << params.station << ", RPC number "
65  << params.number << std::endl
66  << " " << view << " strips and/or connectors must be "
67  << "multiple of 2 "
68  << " (eta_strips " << params.etaStrips << ", eta_conn " << params.etaConnectors << ")";
69  return false;
70  }
71  if (strips_in_conn * connectors != strips) {
72  REPORT_MESSAGE_WITH_CONTEXT(MSG::ERROR, "RPCchamberdata")
73  << "RPCdata error in configuration for Sector Type " << params.sectorType << ", station " << params.station << ", RPC number "
74  << params.number << std::endl
75  << " strips into " << view << " connectors are " << std::setprecision(2) << str << " instead of " << strips_in_conn;
76  return false;
77  }
78  return true;
79 }
80 
82  int ijk = (side == ViewType::Phi) ? params.ijk_PhiReadOut : params.ijk_EtaReadOut;
83  std::string view = (side == ViewType::Phi) ? "phi" : "eta";
84 
85  std::ostringstream disp;
86 
87  if (ijk != 1 && ijk != 10) {
88  REPORT_MESSAGE_WITH_CONTEXT(MSG::ERROR, "RPCchamberdata")
89  << "RPCdata error in configuration for Sector Type " << params.sectorType << ", station " << params.station << ", RPC number "
90  << params.number << std::endl
91  << " " << view << " ijk readout must be 01 or 10; "
92  << " on the contrary it is " << std::setw(2) << std::setfill('0') << ijk << std::setfill(' ');
93  return false;
94  }
95 
96  return true;
97 }
98 
100  reset_data();
101  if (data("cham") >> params.number >> params.chamberName >> params.stationEta >> params.doubletR >> params.doubletZ >>
102  params.phiReadOutPanels >> "Eview" >> params.etaStrips >> params.ijk_EtaReadOut >> "Pview" >> params.phiStrips >>
103  params.ijk_PhiReadOut) {
104  m_fail = false;
107  }
108 
109  return !m_fail;
110 }
111 
112 std::unique_ptr<RPCchamber> RPCchamberdata::give_rpc() {
113  if (!m_rpc.empty()) {
114  std::unique_ptr<RPCchamber> cham = std::make_unique<RPCchamber>(m_rpc.front());
115  m_rpc.pop_front();
116  return cham;
117  }
118  return nullptr;
119 }
120 
121 void RPCchamberdata::Print(std::ostream& stream, bool detail) const {
122  // stream << "RPC data of station n. " << params.station;
123  // stream << " belonging to sector type " << params.sectorType << std::endl;
124  stream << "It contains " << m_rpc.size();
125  stream << " RPC chambers:" << std::endl;
126  std::list<RPCchamber>::const_iterator it;
127  for (it = m_rpc.begin(); it != m_rpc.end(); ++it) stream << ShowRequest<RPCchamber>(*it, detail);
128 }
data
char data[hepevt_bytes_allocation_ATLAS]
Definition: HepEvt.cxx:11
RPC_CondCabling::RPCchamberdata::m_station
int m_station
Definition: RPCchamberdata.h:20
RPC_CondCabling::RPCchamberdata::confirm_ijk
bool confirm_ijk(ViewType, RPCchamber::chamberParameters &params)
Definition: RPCchamberdata.cxx:81
skel.it
it
Definition: skel.GENtoEVGEN.py:423
detail
Definition: extract_histogram_tag.cxx:14
Phi
@ Phi
Definition: RPCdef.h:8
RPC_CondCabling::RPCchamberdata::Print
virtual void Print(std::ostream &, bool) const override
Definition: RPCchamberdata.cxx:121
RPC_CondCabling
Definition: CMAcablingdata.h:18
Logic
@ Logic
Definition: BaseObject.h:11
AthenaPoolTestWrite.stream
string stream
Definition: AthenaPoolTestWrite.py:12
RPC_CondCabling::RPCchamberdata::reset_data
void reset_data()
Definition: RPCchamberdata.cxx:37
TRT::Hit::side
@ side
Definition: HitInfo.h:83
RPC_CondCabling::RPCchamberdata::get_data
bool get_data(DBline &, RPCchamber::chamberParameters &params)
Definition: RPCchamberdata.cxx:99
RPC_CondCabling::RPCchamberdata::m_rpc
RPClist m_rpc
Definition: RPCchamberdata.h:23
ViewType
ViewType
Definition: RPCdef.h:8
RPC_CondCabling::RPCchamberdata::give_rpc
std::unique_ptr< RPCchamber > give_rpc()
Definition: RPCchamberdata.cxx:112
REPORT_MESSAGE_WITH_CONTEXT
#define REPORT_MESSAGE_WITH_CONTEXT(LVL, CONTEXT_NAME)
Report a message, with an explicitly specified context name.
Definition: Control/AthenaKernel/AthenaKernel/errorcheck.h:345
RPC_CondCabling::RPCchamber::chamberParameters
Definition: RPCchamber.h:58
RPC_CondCabling::RPCchamberdata::confirm_connectors
bool confirm_connectors(ViewType, RPCchamber::chamberParameters &params)
Definition: RPCchamberdata.cxx:39
BaseObject
Definition: BaseObject.h:13
errorcheck.h
Helpers for checking error return status codes and reporting errors.
RPCchamberdata.h
DBline
Definition: dbline.h:255
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
if
if(febId1==febId2)
Definition: LArRodBlockPhysicsV0.cxx:569
str
Definition: BTagTrackIpAccessor.cxx:11
PowhegControl_ttFCNC_NLO.params
params
Definition: PowhegControl_ttFCNC_NLO.py:226
readCCLHist.float
float
Definition: readCCLHist.py:83
RPC_CondCabling::RPCchamberdata::RPCchamberdata
RPCchamberdata(DBline &, int)
Definition: RPCchamberdata.cxx:13
Eta
@ Eta
Definition: RPCdef.h:8
RPC_CondCabling::RPCchamberdata::m_fail
bool m_fail
Definition: RPCchamberdata.h:21
drawFromPickle.view
view
Definition: drawFromPickle.py:294