ATLAS Offline Software
NSWPRDValAlg.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 // NSWValAlg inlcudes
6 #include "NSWPRDValAlg.h"
7 
9 
10 #include "EDM_object.h"
11 
12 // Other NSW includes
14 
15 // Misc includes
16 #include "GaudiKernel/ITHistSvc.h"
18 
19 #include <mutex>
20 
21 using namespace MuonPRDTest;
22 NSWPRDValAlg::NSWPRDValAlg(const std::string& name, ISvcLocator* pSvcLocator) : AthHistogramAlgorithm(name, pSvcLocator) {}
23 
25  ATH_MSG_DEBUG("initialize()");
26  unsigned int ev_infomask{EventInfoBranch::writePileUp};
27  if (!m_isData) ev_infomask |= EventInfoBranch::isMC | EventInfoBranch::writeBeamSpot;
28  m_tree.addBranch(std::make_unique<EventInfoBranch>(m_tree,ev_infomask));
29 
30  ATH_CHECK(m_idHelperSvc.retrieve());
31 
32  if (m_doTruth) { m_tree.addBranch(std::make_unique<TruthVariables>(m_tree, m_Truth_ContainerName, msgLevel())); }
33 
34  if (m_doMuEntry) {
35  m_tree.addBranch(std::make_unique<MuEntryVariables>(m_tree, m_MuEntry_ContainerName, msgLevel()));
36  }
37 
38  if (m_doSTGCHit) { m_tree.addBranch(std::make_unique<sTGCSimHitVariables>(m_tree, m_NSWsTGC_ContainerName.value(), msgLevel())); }
39  if (m_doSTGCDigit) {
40  m_tree.addBranch(std::make_unique<sTgcDigitVariables>(m_tree, m_NSWsTGC_DigitContainerName.value(), msgLevel()));
41  }
42  if (m_doSTGCSDO) {
43  m_tree.addBranch(std::make_unique<sTgcSDOVariables>(m_tree, m_NSWsTGC_SDOContainerName.value(), msgLevel()));
44  }
45  if (m_doSTGCFastDigit) { m_tree.addBranch(std::make_unique<sTgcSDOVariables>(m_tree, "sTGCfast_SDO", msgLevel())); }
46  if (m_doSTGCRDO) { m_tree.addBranch(std::make_unique<sTGCRDOVariables>(m_tree, m_NSWsTGC_RDOContainerName.value(), msgLevel())); }
47  if (m_doSTGCPRD) { m_tree.addBranch(std::make_unique<sTGCPRDVariables>(m_tree, m_NSWsTGC_PRDContainerName.value(), msgLevel())); }
48 
49  if (m_doMMHit) { m_tree.addBranch(std::make_unique<MMSimHitVariables>(m_tree, m_NSWMM_ContainerName.value(), msgLevel())); }
50  if (m_doMMDigit) {
51  m_tree.addBranch(std::make_unique<MMDigitVariables>(m_tree, m_NSWMM_DigitContainerName.value(), msgLevel()));
52  }
53  if (m_doMMSDO) {
54  m_tree.addBranch(std::make_unique<MMSDOVariables>(m_tree, m_NSWMM_SDOContainerName.value(), msgLevel()));
55  }
56  if (m_doMMFastDigit) { m_tree.addBranch(std::make_unique<MMSDOVariables>(m_tree, "MMfast_SDO", msgLevel())); }
57  if (m_doMMRDO) { m_tree.addBranch(std::make_unique<MMRDOVariables>(m_tree, m_NSWMM_RDOContainerName.value(), msgLevel())); }
58  if (m_doMMPRD ) { m_tree.addBranch(std::make_unique<MMPRDVariables>(m_tree, m_NSWMM_PRDContainerName.value(), msgLevel())); }
59 
60  if (m_doCSCHit) { m_tree.addBranch(std::make_unique<CSCSimHitVariables>(m_tree, m_CSC_SimContainerName.value(), msgLevel())); }
61  if (m_doCSCSDO) { m_tree.addBranch(std::make_unique<CscSDOVariables>(m_tree, m_CSC_SDOContainerName.value(), msgLevel())); }
62  if (m_doCSCDigit) { m_tree.addBranch(std::make_unique<CscDigitVariables>(m_tree, m_CSC_DigitContainerName.value(), msgLevel())); }
63  if (m_doCSCRDO) {
64  ATH_CHECK(m_csc_decoder.retrieve());
65  m_tree.addBranch(std::make_unique<CSCRDOVariables>(m_tree, m_CSC_RDOContainerName.value(), msgLevel(), &m_idHelperSvc->cscIdHelper(), m_csc_decoder.get()));
66  }
67  if (m_doCSCPRD) { m_tree.addBranch(std::make_unique<CSCPRDVariables>(m_tree, m_CSC_PRDContainerName.value(), msgLevel())); }
68 
69  if (m_doMDTHit) { m_tree.addBranch(std::make_unique<MDTSimHitVariables>(m_tree, m_MDT_SimContainerName.value(), msgLevel())); }
70  if (m_doMDTSDO) { m_tree.addBranch(std::make_unique<MdtSDOVariables>(m_tree, m_MDT_SDOContainerName.value(), msgLevel())); }
71  if (m_doMDTDigit) { m_tree.addBranch(std::make_unique<MdtDigitVariables>(m_tree, m_MDT_DigitContainerName.value(), msgLevel())); }
72 
73  if (m_doRPCHit) { m_tree.addBranch(std::make_unique<RPCSimHitVariables>(m_tree, m_RPC_SimContainerName, msgLevel())); }
74  if (m_doRPCSDO) { m_tree.addBranch(std::make_unique<RpcSDOVariables>(m_tree, m_RPC_SDOContainerName, msgLevel())); }
75  if (m_doRPCDigit) { m_tree.addBranch(std::make_unique<RpcDigitVariables>(m_tree, m_RPC_DigitContainerName, msgLevel())); }
76 
77  if (m_doTGCHit) { m_tree.addBranch(std::make_unique<TGCSimHitVariables>(m_tree, m_TGC_SimContainerName.value(), msgLevel())); }
78  if (m_doTGCSDO) { m_tree.addBranch(std::make_unique<TgcSDOVariables>(m_tree, m_TGC_SDOContainerName.value(), msgLevel())); }
79  if (m_doTGCDigit) { m_tree.addBranch(std::make_unique<TgcDigitVariables>(m_tree, m_TGC_DigitContainerName.value(), msgLevel())); }
80  if (m_doTGCRDO) {
81  const ITGCcablingServerSvc* TgcCabGet = nullptr;
82  ATH_CHECK(service("Muon::TGCCablingServerSvc", TgcCabGet, true));
83  ATH_CHECK(TgcCabGet->giveCabling(m_tgcCabling));
84  m_tree.addBranch(std::make_unique<TGCRDOVariables>(m_tree, m_TGC_RDOContainerName.value(), msgLevel(), m_tgcCabling));
85  }
86  if (m_doTGCPRD) { m_tree.addBranch(std::make_unique<TGCPRDVariables>(m_tree, m_TGC_PRDContainerName.value(), msgLevel())); }
87 
88  ATH_MSG_DEBUG("Init TTree");
89  ATH_CHECK(m_tree.init(this));
90 
91  ATH_MSG_DEBUG("Finished with the initialization");
92  return StatusCode::SUCCESS;
93 }
94 
96  ATH_MSG_DEBUG("NSWPRDValAlg:: Finalize + Matching");
99  return StatusCode::SUCCESS;
100 }
101 
103  ATH_MSG_DEBUG("execute()");
104  const EventContext& ctx = Gaudi::Hive::currentContext();
105  ATH_MSG_DEBUG("Fill TTree");
106  if (!m_tree.fill(ctx)) return StatusCode::FAILURE;
107 
108  return StatusCode::SUCCESS;
109 }
110 
111 /*****************************************************************************************************************************************
112 The rest of this file is the NSW matching algorithm. This can be (de)activated with the input variable doNSWMatchingAlg.
113 The matching algorithm will check each conversion in the Hit->PRD digitization chain.
114 For each conversion, the algorithm will try to match the two objects.
115 The input variable setMaxStripDistance (default value = 3) give the maximum strip distance two objects can have, while still be considered a
116 match The input variable doNSWMatchingMuonOnly can be set to true to only use events which contain exclusively muons
117 ******************************************************************************************************************************************/
118 
119 // First set up which object should be matched, given the input used to fill the NSW Ntuple
121  ATH_MSG_DEBUG("NSWMatchingAlg: building Data objects");
122 
123  // Use the EDM object, as defined in EDM_object.h, to build the hits, digits, SDO, RDO and PRD for both sTGC and MM
124  EDM_object Hits_sTGC, Digits_sTGC, SDO_sTGC, RDO_sTGC, PRD_sTGC;
125  EDM_object Hits_MM, Digits_MM, SDO_MM, RDO_MM, PRD_MM;
126 
127  Hits_sTGC.setName("Hits", "sTGC");
128  Digits_sTGC.setName("Digits", "sTGC");
129  SDO_sTGC.setName("SDO", "sTGC");
130  RDO_sTGC.setName("RDO", "sTGC");
131  PRD_sTGC.setName("PRD", "sTGC");
132 
133  Hits_MM.setName("Hits", "MM");
134  Digits_MM.setName("Digits", "MM");
135  SDO_MM.setName("SDO", "MM");
136  RDO_MM.setName("RDO", "MM");
137  PRD_MM.setName("PRD", "MM");
138 
139  // Match the EDM objects with the variables in the NSW Validation Ntuple
140  TString branch_name;
141  TObjArray* brlst = m_tree->GetListOfBranches();
142  for (TBranch* branch = (TBranch*)brlst->First(); branch; branch = (TBranch*)brlst->After(branch)) {
143  branch_name = branch->GetName();
144  ATH_MSG_VERBOSE("About to check branch: " << branch_name);
145 
146  ATH_CHECK(setDataAdress(Hits_sTGC, branch_name));
147  ATH_CHECK(setDataAdress(Digits_sTGC, branch_name));
148  ATH_CHECK(setDataAdress(SDO_sTGC, branch_name));
149  ATH_CHECK(setDataAdress(RDO_sTGC, branch_name));
150  ATH_CHECK(setDataAdress(PRD_sTGC, branch_name));
151 
152  ATH_CHECK(setDataAdress(Hits_MM, branch_name));
153  ATH_CHECK(setDataAdress(Digits_MM, branch_name));
154  ATH_CHECK(setDataAdress(SDO_MM, branch_name));
155  ATH_CHECK(setDataAdress(RDO_MM, branch_name));
156  ATH_CHECK(setDataAdress(PRD_MM, branch_name));
157  }
158 
159  // Prepare the output file
160  std::ofstream efficiencies;
161  efficiencies.open("NSWMatchingAlg_efficiencies.txt");
162  efficiencies << "NSW Matching algorithm, efficiencies of conversion from and to various EDM objects" << std::endl;
163  efficiencies << "Settings:\n" << m_doNSWMatchingMuon << std::endl;
164  efficiencies << " 'Maximum Strip Distance':" << m_maxStripDiff << std::endl;
165  efficiencies.close();
166 
167  // sTGC matching
168  if (m_doSTGCHit && m_doSTGCDigit) {
169  ATH_CHECK(NSWMatchingAlg(Hits_sTGC, Digits_sTGC));
170  ATH_CHECK(NSWMatchingAlg(Hits_sTGC, SDO_sTGC));
171  }
172  if (m_doSTGCDigit && m_doSTGCRDO) {
173  ATH_CHECK(NSWMatchingAlg(Digits_sTGC, RDO_sTGC));
174  ATH_CHECK(NSWMatchingAlg(SDO_sTGC, RDO_sTGC));
175  }
176  if (m_doSTGCRDO && m_doSTGCPRD) { ATH_CHECK(NSWMatchingAlg(RDO_sTGC, PRD_sTGC)); }
177 
178  // sTGC fast digitization
180  ATH_CHECK(NSWMatchingAlg(Hits_sTGC, PRD_sTGC));
181  ATH_CHECK(NSWMatchingAlg(Hits_sTGC, SDO_sTGC));
182  ATH_CHECK(NSWMatchingAlg(SDO_sTGC, PRD_sTGC));
183  }
184 
185  // MM matching
186  if (m_doMMHit && m_doMMDigit) {
187  ATH_CHECK(NSWMatchingAlg(Hits_MM, Digits_MM));
188  ATH_CHECK(NSWMatchingAlg(Hits_MM, SDO_MM));
189  }
190  if (m_doMMDigit && m_doMMRDO) {
191  ATH_CHECK(NSWMatchingAlg(Digits_MM, RDO_MM));
192  ATH_CHECK(NSWMatchingAlg(SDO_MM, RDO_MM));
193  }
194  if (m_doMMRDO && m_doMMPRD) { ATH_CHECK(NSWMatchingAlg(RDO_MM, PRD_MM)); }
195 
196  // MM fast digitization
197  if (m_doMMHit && m_doMMFastDigit) {
198  ATH_CHECK(NSWMatchingAlg(Hits_MM, PRD_MM));
199  ATH_CHECK(NSWMatchingAlg(Hits_MM, SDO_MM));
200  ATH_CHECK(NSWMatchingAlg(SDO_MM, PRD_MM));
201  }
202 
203  return StatusCode::SUCCESS;
204 }
205 
206 // This part of the matching algortihm does the actual comparison given two EDM obects
208  if (data0.getDetector() != data1.getDetector()) {
209  ATH_MSG_ERROR("Matching " << data0.getDetector() << " data with " << data1.getDetector()
210  << " data. This is not implemented in this algorithm");
211  }
212 
213  ATH_MSG_DEBUG("NSWMatchingAlg: Start matching " << data0.getName() << " and " << data1.getName() << " for " << data0.getDetector());
214  data0.setMatchedwith(data1.getName());
215  data1.setMatchedwith(data0.getName());
216 
217  // Prepare Muon only check
218  std::vector<int>* TruthParticle_Pdg;
219  if (m_doNSWMatchingMuon) {
220  TruthParticle_Pdg = nullptr;
221  m_tree->SetBranchAddress("TruthParticle_Pdg", &TruthParticle_Pdg);
222  }
223 
224  Long64_t nEntries = m_tree->GetEntriesFast();
225  for (Long64_t i_entry = 0; i_entry < nEntries; ++i_entry) {
226  // event numbering starts at 1
227  ATH_MSG_DEBUG("Now checking event number " << i_entry + 1);
228  m_tree->GetEntry(i_entry);
229 
230  if (data0.empty()) {
231  ATH_MSG_WARNING("No " << data0.getDetector() << data0.getName() << " found in event " << i_entry + 1);
232  continue;
233  }
234  if (data1.empty()) {
235  ATH_MSG_WARNING("No " << data1.getDetector() << data1.getName() << " found in event " << i_entry + 1);
236  continue;
237  }
238 
239  ATH_MSG_DEBUG("Number of " << data0.getDetector() << data0.getName() << ": " << data0.size() << ", number of "
240  << data1.getDetector() << data1.getName() << ": " << data1.size());
241 
242  // only muon events:
243  if (m_doNSWMatchingMuon) {
244  bool allMu = true;
245  int mu_pdg = 13;
246  for (int pdg : *TruthParticle_Pdg) { allMu &= (abs(pdg) == mu_pdg); }
247  if (!allMu) {
248  ATH_MSG_VERBOSE("Skipping event, because doNSWMatchingMuonOnly is true and there non muon particles");
249  continue;
250  }
251  }
252 
253  // Reset variables to have a clean sheet
254  data0.init_matching();
255  data1.init_matching();
256 
257  // Actual Matching
258  for (uint i = 0; i < data0.size(); ++i) {
259  int nMatch = 0;
260  for (uint j = 0; j < data1.size(); ++j) {
261  if (data0.identifierMatch(data0, data1, i, j)) {
262  nMatch++;
263  data0.update_match(i, data1.m_channel->at(j));
264  data1.update_match(j, data0.m_channel->at(i));
265  }
266  }
267  ATH_MSG_VERBOSE("Total Number of matches found: " << nMatch << " " << data1.getName() << " for a single " << data0.getName());
268  if (nMatch == 0) {
269  if (m_noMatchWarning) {
270  static std::once_flag flag;
271  std::call_once(flag, [&]() {
272  ATH_MSG_WARNING("No match found! Will now disable this kind of WARNING but please be "
273  "aware that you are running with suppressNoMatchWarning set to true!");
274  });
275  } else {
276  ATH_MSG_DEBUG("No match found!");
277  }
278  }
279  }
280  if (msgLevel() <= MSG::DEBUG) {
281  ATH_MSG_DEBUG("Full info for " << data0.getName() << data0.getDetector());
282  data0.printInfo();
283  ATH_MSG_DEBUG("Full info for " << data1.getName() << data1.getDetector());
284  data1.printInfo();
285  }
286 
288  data1.update_efficiency(m_maxStripDiff);
289 
290  // The data0 vs data1 matching will now be overwritten
291  data0.clearVars();
292  data1.clearVars();
293  }
294 
295  // Write result to file
296  std::ofstream efficiencies;
297  efficiencies.open("NSWMatchingAlg_efficiencies.txt", std::ofstream::app);
299  data1.printEfficiency(efficiencies);
300  efficiencies.close();
301 
302  return StatusCode::SUCCESS;
303 }
304 
305 // This function couples the branch of the NSW validation Ntuple with the EDM object.
306 // In case the brach does not exist, or is completely empty, the object will remain empty and the code will skip the matching entirly,
307 // giving a ATH_WARNING in the process
308 StatusCode NSWPRDValAlg::setDataAdress(EDM_object& oData, const TString& branch_name) {
309  bool setBranch = false;
310  if (!(branch_name.Contains(oData.getName()) && branch_name.Contains(oData.getDetector()))) { return StatusCode::SUCCESS; }
311  // For sim hits select the offline identifiers, rather than the sim identifiers
312  if (branch_name.Contains("_sim_")) { return StatusCode::SUCCESS; }
313  if (branch_name.EndsWith("stationName")) {
314  m_tree->SetBranchAddress(branch_name, &oData.m_stationName);
315  setBranch = true;
316  }
317  if (branch_name.EndsWith("stationEta")) {
318  m_tree->SetBranchAddress(branch_name, &oData.m_stationEta);
319  setBranch = true;
320  }
321  if (branch_name.EndsWith("stationPhi")) {
322  m_tree->SetBranchAddress(branch_name, &oData.m_stationPhi);
323  setBranch = true;
324  }
325  if (branch_name.EndsWith("multiplet")) {
326  m_tree->SetBranchAddress(branch_name, &oData.m_multiplet);
327  setBranch = true;
328  }
329  if (branch_name.EndsWith("gas_gap")) {
330  m_tree->SetBranchAddress(branch_name, &oData.m_gas_gap);
331  setBranch = true;
332  }
333  if (branch_name.EndsWith("channel") && !branch_name.Contains("rdos")) {
334  m_tree->SetBranchAddress(branch_name, &oData.m_channel);
335  setBranch = true;
336  }
337  if (branch_name.EndsWith("channel_type")) {
338  m_tree->SetBranchAddress(branch_name, &oData.m_channel_type);
339  setBranch = true;
340  }
341  if (setBranch) { ATH_MSG_DEBUG("Set data adress of branch " << branch_name); }
342 
343  return StatusCode::SUCCESS;
344 }
NSWPRDValAlg::m_doMMRDO
Gaudi::Property< bool > m_doMMRDO
Definition: NSWPRDValAlg.h:52
NSWPRDValAlg::m_maxStripDiff
Gaudi::Property< uint > m_maxStripDiff
Definition: NSWPRDValAlg.h:112
EDM_object::identifierMatch
bool identifierMatch(EDM_object &data0, EDM_object &data1, uint i, uint j)
Definition: EDM_object.cxx:69
NSWPRDValAlg::m_doMDTDigit
Gaudi::Property< bool > m_doMDTDigit
Definition: NSWPRDValAlg.h:61
sTgcDigitEffiDump.efficiencies
list efficiencies
translate the station name indices into the string staiton name
Definition: sTgcDigitEffiDump.py:23
NSWPRDValAlg::m_doCSCHit
Gaudi::Property< bool > m_doCSCHit
Definition: NSWPRDValAlg.h:54
NSWPRDValAlg::m_NSWsTGC_PRDContainerName
Gaudi::Property< std::string > m_NSWsTGC_PRDContainerName
Definition: NSWPRDValAlg.h:80
NSWPRDValAlg::m_doCSCRDO
Gaudi::Property< bool > m_doCSCRDO
Definition: NSWPRDValAlg.h:57
NSWPRDValAlg::m_NSWMM_ContainerName
Gaudi::Property< std::string > m_NSWMM_ContainerName
Definition: NSWPRDValAlg.h:82
EDM_object::m_stationName
std::vector< std::string > * m_stationName
Definition: EDM_object.h:46
NSWPRDValAlg::m_doTGCPRD
Gaudi::Property< bool > m_doTGCPRD
Definition: NSWPRDValAlg.h:69
NSWPRDValAlg::m_CSC_DigitContainerName
Gaudi::Property< std::string > m_CSC_DigitContainerName
Definition: NSWPRDValAlg.h:90
MuonVal::MuonTesterTree::init
StatusCode init(OWNER *instance)
Initialize method.
NSWPRDValAlg::m_TGC_SDOContainerName
Gaudi::Property< std::string > m_TGC_SDOContainerName
Definition: NSWPRDValAlg.h:103
EDM_object
Definition: EDM_object.h:14
NSWPRDValAlg::m_TGC_SimContainerName
Gaudi::Property< std::string > m_TGC_SimContainerName
Definition: NSWPRDValAlg.h:102
NSWPRDValAlg::m_doMMHit
Gaudi::Property< bool > m_doMMHit
Definition: NSWPRDValAlg.h:49
NSWPRDValAlg::m_doNSWMatchingMuon
Gaudi::Property< bool > m_doNSWMatchingMuon
Definition: NSWPRDValAlg.h:111
EDM_object::setMatchedwith
void setMatchedwith(TString matchedwith)
Definition: EDM_object.h:29
NSWPRDValAlg::setDataAdress
StatusCode setDataAdress(EDM_object &oData, const TString &branch_name)
Definition: NSWPRDValAlg.cxx:308
NSWPRDValAlg::NSWPRDValAlg
NSWPRDValAlg(const std::string &name, ISvcLocator *pSvcLocator)
Definition: NSWPRDValAlg.cxx:22
NSWPRDValAlg::m_doMMSDO
Gaudi::Property< bool > m_doMMSDO
Definition: NSWPRDValAlg.h:70
NSWPRDValAlg::m_NSWsTGC_DigitContainerName
Gaudi::Property< std::string > m_NSWsTGC_DigitContainerName
Definition: NSWPRDValAlg.h:78
EDM_object::setName
void setName(TString name)
Definition: EDM_object.h:26
EDM_object::size
size_t size()
Definition: EDM_object.cxx:35
NSWPRDValAlg::m_doMDTSDO
Gaudi::Property< bool > m_doMDTSDO
Definition: NSWPRDValAlg.h:60
NSWPRDValAlg::m_doCSCDigit
Gaudi::Property< bool > m_doCSCDigit
Definition: NSWPRDValAlg.h:56
EDM_object::m_stationPhi
std::vector< int > * m_stationPhi
Definition: EDM_object.h:48
EDM_object::m_channel
std::vector< int > * m_channel
Definition: EDM_object.h:52
NSWPRDValAlg::m_CSC_SDOContainerName
Gaudi::Property< std::string > m_CSC_SDOContainerName
Definition: NSWPRDValAlg.h:89
EDM_object::update_efficiency
void update_efficiency(int maximum_difference)
Definition: EDM_object.cxx:107
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
NSWPRDValAlg::m_tgcCabling
const ITGCcablingSvc * m_tgcCabling
Definition: NSWPRDValAlg.h:36
NSWPRDValAlg::m_RPC_SDOContainerName
Gaudi::Property< std::string > m_RPC_SDOContainerName
Definition: NSWPRDValAlg.h:99
NSWPRDValAlg::m_doSTGCPRD
Gaudi::Property< bool > m_doSTGCPRD
Definition: NSWPRDValAlg.h:48
NSWPRDValAlg::m_doSTGCHit
Gaudi::Property< bool > m_doSTGCHit
Definition: NSWPRDValAlg.h:44
NSWPRDValAlg::m_NSWsTGC_RDOContainerName
Gaudi::Property< std::string > m_NSWsTGC_RDOContainerName
Definition: NSWPRDValAlg.h:79
NSWPRDValAlg::m_doTruth
Gaudi::Property< bool > m_doTruth
Definition: NSWPRDValAlg.h:42
NSWPRDValAlg::m_doRPCSDO
Gaudi::Property< bool > m_doRPCSDO
Definition: NSWPRDValAlg.h:63
EDM_object::empty
bool empty()
Definition: EDM_object.cxx:101
NSWPRDValAlg::m_MDT_SDOContainerName
Gaudi::Property< std::string > m_MDT_SDOContainerName
Definition: NSWPRDValAlg.h:95
NSWPRDValAlg::m_tree
MuonVal::MuonTesterTree m_tree
Definition: NSWPRDValAlg.h:34
NSWPRDValAlg::m_MuEntry_ContainerName
Gaudi::Property< std::string > m_MuEntry_ContainerName
Definition: NSWPRDValAlg.h:74
NSWPRDValAlg::m_doMMPRD
Gaudi::Property< bool > m_doMMPRD
Definition: NSWPRDValAlg.h:53
NSWPRDValAlg::m_TGC_DigitContainerName
Gaudi::Property< std::string > m_TGC_DigitContainerName
Definition: NSWPRDValAlg.h:104
NSWPRDValAlg::m_NSWsTGC_ContainerName
Gaudi::Property< std::string > m_NSWsTGC_ContainerName
Definition: NSWPRDValAlg.h:76
EDM_object::m_gas_gap
std::vector< int > * m_gas_gap
Definition: EDM_object.h:50
EDM_object::m_channel_type
std::vector< int > * m_channel_type
Definition: EDM_object.h:51
NSWPRDValAlg::m_doMMFastDigit
Gaudi::Property< bool > m_doMMFastDigit
Definition: NSWPRDValAlg.h:50
NSWPRDValAlg::m_RPC_DigitContainerName
Gaudi::Property< std::string > m_RPC_DigitContainerName
Definition: NSWPRDValAlg.h:100
NSWPRDValAlg::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition: NSWPRDValAlg.h:38
uint
unsigned int uint
Definition: LArOFPhaseFill.cxx:20
NSWPRDValAlg::m_doMuEntry
Gaudi::Property< bool > m_doMuEntry
Definition: NSWPRDValAlg.h:43
NSWPRDValAlg::initialize
StatusCode initialize() override
Definition: NSWPRDValAlg.cxx:24
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
lumiFormat.i
int i
Definition: lumiFormat.py:92
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
MuonPRDTestDict.h
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
NSWPRDValAlg::m_CSC_SimContainerName
Gaudi::Property< std::string > m_CSC_SimContainerName
Definition: NSWPRDValAlg.h:88
master.flag
bool flag
Definition: master.py:29
NSWPRDValAlg::m_doTGCRDO
Gaudi::Property< bool > m_doTGCRDO
Definition: NSWPRDValAlg.h:68
NSWPRDValAlg::execute
StatusCode execute() override
Definition: NSWPRDValAlg.cxx:102
EDM_object::init_matching
void init_matching()
Definition: EDM_object.cxx:95
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
NSWPRDValAlg::NSWMatchingAlg
StatusCode NSWMatchingAlg()
Definition: NSWPRDValAlg.cxx:120
NSWPRDValAlg::m_RPC_SimContainerName
Gaudi::Property< std::string > m_RPC_SimContainerName
Definition: NSWPRDValAlg.h:98
NSWPRDValAlg::m_MDT_SimContainerName
Gaudi::Property< std::string > m_MDT_SimContainerName
Definition: NSWPRDValAlg.h:94
AthHistogramAlgorithm
Definition: AthHistogramAlgorithm.h:32
NSWPRDValAlg::m_doCSCPRD
Gaudi::Property< bool > m_doCSCPRD
Definition: NSWPRDValAlg.h:58
EDM_object::getDetector
TString getDetector()
Definition: EDM_object.h:33
NSWPRDValAlg::m_doTGCDigit
Gaudi::Property< bool > m_doTGCDigit
Definition: NSWPRDValAlg.h:67
NSWPRDValAlg::m_doTGCSDO
Gaudi::Property< bool > m_doTGCSDO
Definition: NSWPRDValAlg.h:66
NSWPRDValAlg::m_doNSWMatching
Gaudi::Property< bool > m_doNSWMatching
Definition: NSWPRDValAlg.h:110
EDM_object::update_match
bool update_match(int index, int ch_candidate)
Definition: EDM_object.cxx:80
NSWPRDValAlg.h
NSWPRDValAlg::m_NSWMM_PRDContainerName
Gaudi::Property< std::string > m_NSWMM_PRDContainerName
Definition: NSWPRDValAlg.h:86
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
NSWPRDValAlg::m_CSC_PRDContainerName
Gaudi::Property< std::string > m_CSC_PRDContainerName
Definition: NSWPRDValAlg.h:92
EDM_object::getName
TString getName()
Definition: EDM_object.h:32
NSWPRDValAlg::finalize
StatusCode finalize() override
Definition: NSWPRDValAlg.cxx:95
NSWPRDValAlg::m_doSTGCDigit
Gaudi::Property< bool > m_doSTGCDigit
Definition: NSWPRDValAlg.h:46
NSWPRDValAlg::m_doSTGCRDO
Gaudi::Property< bool > m_doSTGCRDO
Definition: NSWPRDValAlg.h:47
NSWPRDValAlg::m_isData
Gaudi::Property< bool > m_isData
Definition: NSWPRDValAlg.h:41
MuonDetectorManager.h
ITGCcablingServerSvc.h
RTTAlgmain.data1
data1
Definition: RTTAlgmain.py:54
NSWPRDValAlg::m_Truth_ContainerName
Gaudi::Property< std::string > m_Truth_ContainerName
Definition: NSWPRDValAlg.h:73
RTTAlgmain.branch
branch
Definition: RTTAlgmain.py:61
NSWPRDValAlg::m_NSWMM_SDOContainerName
Gaudi::Property< std::string > m_NSWMM_SDOContainerName
Definition: NSWPRDValAlg.h:83
NSWPRDValAlg::m_doRPCDigit
Gaudi::Property< bool > m_doRPCDigit
Definition: NSWPRDValAlg.h:64
EDM_object::printEfficiency
void printEfficiency(std::ofstream &file)
Definition: EDM_object.cxx:120
EDM_object.h
NSWPRDValAlg::m_doCSCSDO
Gaudi::Property< bool > m_doCSCSDO
Definition: NSWPRDValAlg.h:55
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
NSWPRDValAlg::m_TGC_RDOContainerName
Gaudi::Property< std::string > m_TGC_RDOContainerName
Definition: NSWPRDValAlg.h:105
NSWPRDValAlg::m_doSTGCFastDigit
Gaudi::Property< bool > m_doSTGCFastDigit
Definition: NSWPRDValAlg.h:45
DEBUG
#define DEBUG
Definition: page_access.h:11
MuonPRDTest
Definition: CSCDigitVariables.h:10
NSWPRDValAlg::m_NSWMM_RDOContainerName
Gaudi::Property< std::string > m_NSWMM_RDOContainerName
Definition: NSWPRDValAlg.h:85
EDM_object::m_multiplet
std::vector< int > * m_multiplet
Definition: EDM_object.h:49
NSWPRDValAlg::m_doTGCHit
Gaudi::Property< bool > m_doTGCHit
Definition: NSWPRDValAlg.h:65
MuonVal::MuonTesterTree::fill
bool fill(const EventContext &ctx)
Fills the tree per call.
Definition: MuonTesterTree.cxx:89
NSWPRDValAlg::m_doSTGCSDO
Gaudi::Property< bool > m_doSTGCSDO
Definition: NSWPRDValAlg.h:71
MuonVal::MuonTesterTree::write
StatusCode write()
Finally write the TTree objects.
Definition: MuonTesterTree.cxx:178
EventInfoRead.isMC
isMC
Definition: EventInfoRead.py:11
ITGCcablingServerSvc::giveCabling
virtual StatusCode giveCabling(const ITGCcablingSvc *&) const =0
NSWPRDValAlg::m_doMDTHit
Gaudi::Property< bool > m_doMDTHit
Definition: NSWPRDValAlg.h:59
EDM_object::clearVars
void clearVars()
Definition: EDM_object.cxx:28
NSWPRDValAlg::m_NSWMM_DigitContainerName
Gaudi::Property< std::string > m_NSWMM_DigitContainerName
Definition: NSWPRDValAlg.h:84
ITGCcablingServerSvc
Definition: ITGCcablingServerSvc.h:16
NSWPRDValAlg::m_TGC_PRDContainerName
Gaudi::Property< std::string > m_TGC_PRDContainerName
Definition: NSWPRDValAlg.h:106
NSWPRDValAlg::m_csc_decoder
PublicToolHandle< Muon::ICSC_RDO_Decoder > m_csc_decoder
Definition: NSWPRDValAlg.h:39
dqBeamSpot.nEntries
int nEntries
Definition: dqBeamSpot.py:73
EDM_object::printInfo
void printInfo()
Definition: EDM_object.cxx:55
NSWPRDValAlg::m_CSC_RDOContainerName
Gaudi::Property< std::string > m_CSC_RDOContainerName
Definition: NSWPRDValAlg.h:91
NSWPRDValAlg::m_doMMDigit
Gaudi::Property< bool > m_doMMDigit
Definition: NSWPRDValAlg.h:51
NSWPRDValAlg::m_NSWsTGC_SDOContainerName
Gaudi::Property< std::string > m_NSWsTGC_SDOContainerName
Definition: NSWPRDValAlg.h:77
EDM_object::m_stationEta
std::vector< int > * m_stationEta
Definition: EDM_object.h:47
MuonVal::MuonTesterTree::addBranch
bool addBranch(std::shared_ptr< IMuonTesterBranch > branch)
Branch is added to the tree without transferring the ownership.
Definition: MuonTesterTree.cxx:61
NSWPRDValAlg::m_doRPCHit
Gaudi::Property< bool > m_doRPCHit
Definition: NSWPRDValAlg.h:62
NSWPRDValAlg::m_MDT_DigitContainerName
Gaudi::Property< std::string > m_MDT_DigitContainerName
Definition: NSWPRDValAlg.h:96
NSWPRDValAlg::m_noMatchWarning
Gaudi::Property< bool > m_noMatchWarning
Definition: NSWPRDValAlg.h:114