ATLAS Offline Software
MuonTPMetaDataAlg.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 #include "MuonTPMetaDataAlg.h"
5 
10 #include <StoreGate/ReadHandle.h>
13 
14 
15 namespace {
16  std::string ReplaceExpInString(std::string str, const std::string &exp, const std::string &rep) {
17  size_t ExpPos = str.find(exp);
18  if (ExpPos == std::string::npos) return str;
19  str.replace(ExpPos,exp.size(),rep);
20  if (str.find(exp) != std::string::npos) return ReplaceExpInString(str, exp, rep);
21  return str;
22  }
23 
24 }
25 namespace MuonVal{
26 MuonTPMetaDataAlg::MuonTPMetaDataAlg(const std::string& name, ISvcLocator* pSvcLocator) : AthAnalysisAlgorithm(name, pSvcLocator) {
27 }
28 
30  ATH_MSG_INFO("Initializing " << name() << "...");
32  m_MetaDataTree = std::make_unique<MuonTesterTree>("MetaDataTree", m_stream);
33  ATH_CHECK(m_MetaDataTree->init(this));
34 
35  if (!m_prwTool.empty()) {
36  ATH_CHECK(m_prwTool.retrieve());
37  m_hasPrwTool = true;
38  }
39  if (m_storeLHE && !m_isData) {
40  std::map<std::string, int> weight_names{};
41  AthAnalysisHelper::retrieveMetadata("/Generation/Parameters", "HepMCWeightNames", weight_names).isSuccess();
42  EventInfoBranch::setNumLHE(weight_names.size());
43  }
44  return StatusCode::SUCCESS;
45 }
46 
48  if (m_sim_meta.empty() == m_run_meta.empty()) {
49  ATH_MSG_FATAL("Found run and simulation meta data");
50  return StatusCode::FAILURE;
51  }
53  m_MetaDataTree->newScalar<bool>("isData", m_isData);
54  m_MetaDataTree->newScalar<bool>("isDerivedAOD", m_isDerivedAOD);
57  ATH_CHECK(m_MetaDataTree->write());
58  m_MetaDataTree.reset();
59 
60  return StatusCode::SUCCESS;
61 }
62 
64  const EventContext& ctx = Gaudi::Hive::currentContext();
65  ATH_MSG_DEBUG("Executing " << name() << "...");
66  setFilterPassed(true);
67 
69  if (!evtInfo.isValid()) {
70  ATH_MSG_FATAL("Failed to retrieve " << m_infoKey.fullKey());
71  return StatusCode::FAILURE;
72  }
73 
74  bool isData = !evtInfo->eventType(xAOD::EventInfo::IS_SIMULATION);
75 
76  int mc_channel = !isData ? evtInfo->mcChannelNumber() : 0.;
77  unsigned int run_number = evtInfo->runNumber();
78  if (isData) {
79  std::string trigger_stream{};
80  ATH_CHECK(AthAnalysisHelper::retrieveMetadata("/TagInfo", "triggerStreamOfFile", trigger_stream));
81 
83  std::find_if(m_run_meta.begin(), m_run_meta.end(), [&run_number, &trigger_stream](const RunMetaData& meta) {
84  return meta.run_number == run_number && meta.trigger_stream == trigger_stream;
85  });
86  if (itr == m_run_meta.end()) {
87  ATH_MSG_WARNING("No meta data information is available for " << run_number << ". Please check on which stream you're running");
88  m_run_meta.emplace_back(run_number, trigger_stream);
89  itr = m_run_meta.end() - 1;
90  }
91  itr->proc_events += 1;
92  itr->processed_blocks.insert(evtInfo->lumiBlock());
93  if (!itr->has_book_keeper) {
94  itr->total_lumi_blocks.insert(evtInfo->lumiBlock());
95  itr->tot_events += 1;
96  }
97  } else {
98  const unsigned int num_lhe = !m_storeLHE ? 1 : evtInfo->mcEventWeights().size();
99  for (unsigned int lhe_var = 0; lhe_var < num_lhe; ++lhe_var) {
101  std::find_if(m_sim_meta.begin(), m_sim_meta.end(), [&mc_channel, &run_number, &lhe_var](const SimMetaData& meta) {
102  return meta.mc_channel == mc_channel && meta.prw_channel == run_number && meta.variation_number == lhe_var;
103  });
104  if (itr == m_sim_meta.end()) {
105  ATH_MSG_WARNING("Failed to retrieve a proper meta data for dsid: " << mc_channel << " period: " << run_number
106  << " lhe weight: " << lhe_var);
107  m_sim_meta.emplace_back(mc_channel, run_number);
108  itr = m_sim_meta.end() - 1;
109  itr->weight_name = "IncompleteMetaData";
110  itr->variation_number = lhe_var;
111  }
112  itr->proc_events += 1;
113  if (itr->has_book_keeper) continue;
114  if (!itr->warned) {
115  ATH_MSG_WARNING("Cut book keeper has not been loaded for sample DSID: "
116  << itr->mc_channel << " period: " << itr->prw_channel << " lhe variation: " << lhe_var);
117  itr->warned = true;
118  }
119  itr->tot_events += 1;
120  const double weight = evtInfo->mcEventWeight(lhe_var);
121  itr->sum_w += weight;
122  itr->sum_w_squared += weight * weight;
123  }
124  }
125 
126  return StatusCode::SUCCESS;
127 }
128 const xAOD::CutBookkeeper* MuonTPMetaDataAlg::RetrieveCutBookKeeper(const std::string& Stream, const std::string& cbk_name) const {
129  const xAOD::CutBookkeeper* all = nullptr;
130  if (inputMetaStore()->contains<xAOD::CutBookkeeperContainer>("CutBookkeepers")) {
131  const xAOD::CutBookkeeperContainer* bks = nullptr;
132  if (!inputMetaStore()->retrieve(bks, "CutBookkeepers").isSuccess()) {
133  ATH_MSG_WARNING("Could not retrieve the CutBookKeeperContainer. Although it should be there");
134  return all;
135  }
136  int maxCycle = -1; // need to find the max cycle where input stream is StreamAOD and the name is AllExecutedEvents
137  for (const xAOD::CutBookkeeper* cbk : *bks) {
138  ATH_MSG_INFO("Check cutbook keeper "<<cbk->inputStream()<<" name: "<<cbk->name()<<" cycle: "<<cbk->cycle());
139  if (cbk->inputStream() == Stream && cbk->name() == cbk_name && cbk->cycle() > maxCycle) {
140  maxCycle = cbk->cycle();
141  all = cbk;
142  }
143  }
144  } else ATH_MSG_WARNING("The CutBookkeepers are not present in the file ");
145  if (!all) ATH_MSG_DEBUG("Failed to retrieve cut book keeper for Stream: "<<Stream<<" cbk_name: "<<cbk_name);
146  return all;
147 }
149  //
150  // This method is called at the start of each input file, even if
151  // the input file contains no events. Accumulate metadata information here
152  //
153  const EventStreamInfo* esi = nullptr;
155  if (esi->getEventTypes().size() > 1) { ATH_MSG_WARNING("There seem to be more event types than one"); }
156  if (esi->getEventTypes().size() == 0) {
157  ATH_MSG_FATAL("The EventTypes() container of the EventStreamInfo is empty! Something wrong with the input file?");
158  return StatusCode::FAILURE;
159  }
160 
161  bool isData = !esi->getEventTypes().begin()->test(EventType::IS_SIMULATION);
162 
163  const xAOD::FileMetaData* fmd = nullptr;
164  if (inputMetaStore()->contains<xAOD::FileMetaData>("FileMetaData")) ATH_CHECK(inputMetaStore()->retrieve(fmd, "FileMetaData"));
165  if (!fmd) {
166  ATH_MSG_WARNING("FileMetaData not found in input file, setting m_isDerivedAOD=false.");
167  // m_isDerivedAOD = false;
168  } else {
169  std::string dataType{};
171  ATH_MSG_WARNING("MetaDataType::dataType not found in xAOD::FileMetaData, setting m_isDerivedAOD=false.");
172  // m_isDerivedAOD = false;
173  }
174  ATH_MSG_DEBUG("Data type is " << dataType);
175  }
176  const xAOD::CutBookkeeper* all{nullptr};
177  std::string cbk_stream{};
178  for (std::string trial: {"StreamAOD", "StreamESD", "unknownStream" }) {
179  all = RetrieveCutBookKeeper(trial);
180  cbk_stream = trial;
181  if (all) break;
182  }
183  const bool contains_keeper = all != nullptr;
184  if (!contains_keeper) {
185  ATH_MSG_WARNING("No Common CutBook keeper has been found");
186  }
188  if (isData) {
189  std::string trigger_stream{};
190  ATH_CHECK(AthAnalysisHelper::retrieveMetadata("/TagInfo", "triggerStreamOfFile", trigger_stream));
191  unsigned int run_number = (*esi->getRunNumbers().begin());
193  std::find_if(m_run_meta.begin(), m_run_meta.end(), [&run_number, &trigger_stream](const RunMetaData& meta) {
194  return meta.run_number == run_number && trigger_stream == meta.trigger_stream;
195  });
197  if (itr == m_run_meta.end()) {
198  m_run_meta.emplace_back(run_number, trigger_stream);
199  itr = m_run_meta.end() - 1;
200  }
201 
203  for (const auto& Lumi : esi->getLumiBlockNumbers()) { itr->total_lumi_blocks.insert(Lumi); }
204  itr->has_book_keeper = contains_keeper;
205  if (contains_keeper) itr->tot_events += all->nAcceptedEvents();
206  } else {
207  int dsid = esi->getEventTypes().begin()->mc_channel_number();
208  unsigned int run = (*esi->getRunNumbers().begin());
209  ATH_MSG_DEBUG("DSID: "<<dsid<<" prw number: "<<run);
211  std::vector<std::string> weight_names{};
212  if (m_storeLHE) {
213  std::map<std::string, int> weight_map{};
214  AthAnalysisHelper::retrieveMetadata("/Generation/Parameters", "HepMCWeightNames", weight_map).isSuccess();
215  weight_names.resize(weight_map.size());
216  for (const auto& w_pair : weight_map) { weight_names[w_pair.second] = w_pair.first; }
217  if (weight_names.empty()) {
218  ATH_MSG_WARNING("No weight names extracted from the meta data ");
219  weight_names.push_back("");
220  }
221  } else
222  weight_names.push_back("");
223 
224  for (unsigned int lhe_var = 0; lhe_var < weight_names.size(); ++lhe_var) {
225  const std::string& lhe_weight = weight_names[lhe_var];
227  std::find_if(m_sim_meta.begin(), m_sim_meta.end(), [&dsid, &run, &lhe_var](const SimMetaData& meta) {
228  return meta.mc_channel == dsid && meta.prw_channel == run && meta.variation_number == lhe_var;
229  });
230  if (itr == m_sim_meta.end()) {
231  m_sim_meta.emplace_back(dsid, run);
232  itr = m_sim_meta.end() - 1;
233  itr->weight_name = weight_names[lhe_var];
234  itr->variation_number = lhe_var;
235  if (m_hasPrwTool) itr->prw_lumi = m_prwTool->expert()->GetIntegratedLumi(run, 0, -1);
236  }
237 
238  const xAOD::CutBookkeeper* mc_keeper = lhe_var == 0 ? all : nullptr;
239  if (lhe_var) {
240  std::vector<std::string> cb_names;
241  cb_names.emplace_back(lhe_weight);
242  cb_names.emplace_back("LHE3Weight_" + ReplaceExpInString(lhe_weight, ".", ""));
243  cb_names.push_back(ReplaceExpInString(cb_names.back(), " ", ""));
244  cb_names.emplace_back("AllExecutedEvents_NonNominalMCWeight_" + std::to_string(lhe_var));
245  for (const std::string& cb_name : cb_names) {
246  mc_keeper = RetrieveCutBookKeeper(cbk_stream, cb_name);
247  if (mc_keeper) {
248  ATH_MSG_DEBUG("Found LHE cut book keeper " << cb_name);
249  break;
250  }
251  }
252  }
253 
254  itr->has_book_keeper = mc_keeper != nullptr;
255 
256  if (itr->has_book_keeper) {
257  itr->tot_events += mc_keeper->nAcceptedEvents();
258  itr->sum_w += mc_keeper->sumOfEventWeights();
259  itr->sum_w_squared += mc_keeper->sumOfEventWeightsSquared();
260  }
261  }
262  }
263  std::sort(m_sim_meta.begin(), m_sim_meta.end());
264  std::sort(m_run_meta.begin(), m_run_meta.end());
265  if (m_sim_meta.empty() == m_run_meta.empty()) {
266  ATH_MSG_FATAL("Found run and simulation meta data");
267  return StatusCode::FAILURE;
268  }
269  if (m_run_meta.empty() == m_isData) {
270  ATH_MSG_FATAL("Metadata is inconsistent with the configuration");
271  return StatusCode::FAILURE;
272  }
273  return StatusCode::SUCCESS;
274 }
276 
277  ScalarBranch<Long64_t>& tot_ev {m_MetaDataTree->newScalar<Long64_t>("TotalEvents")};
278  ScalarBranch<Long64_t>& proc_ev {m_MetaDataTree->newScalar<Long64_t>("ProcessedEvents")};
279  ScalarBranch<unsigned int>& run_number{m_MetaDataTree->newScalar<unsigned int>("runNumber")};
280 
281  SetBranch<unsigned int>& tot_lumi{m_MetaDataTree->newSet<unsigned int>("TotalLumiBlocks")};
282  SetBranch<unsigned int>& proc_lumi{m_MetaDataTree->newSet<unsigned int>("ProcessedLumiBlocks")};
283  ScalarBranch<std::string>& stream_name{m_MetaDataTree->newScalar<std::string>("triggerStream")};
284  ATH_CHECK(m_MetaDataTree->init(this));
285  for (const RunMetaData& meta : m_run_meta) {
286  run_number = meta.run_number;
287  tot_ev = meta.tot_events;
288  proc_ev = meta.proc_events;
289  stream_name = meta.trigger_stream;
290  tot_lumi = meta.total_lumi_blocks;
291  proc_lumi = meta.processed_blocks;
292  m_MetaDataTree->fill(Gaudi::Hive::currentContext());
293  }
294  return StatusCode::SUCCESS;
295 }
297  m_MetaDataTree->newScalar<bool>("isAF2", m_isAF2);
298  ScalarBranch<Long64_t>& tot_ev {m_MetaDataTree->newScalar<Long64_t>("TotalEvents")};
299  ScalarBranch<Long64_t>& proc_ev {m_MetaDataTree->newScalar<Long64_t>("ProcessedEvents")};
300  ScalarBranch<unsigned int>& run_number{m_MetaDataTree->newScalar<unsigned int>("runNumber")};
301 
302  ScalarBranch<double>& sum_w{m_MetaDataTree->newScalar<double>("TotalSumW")};
303  ScalarBranch<double>& sum_w2{m_MetaDataTree->newScalar<double>("TotalSumW2")};
304  ScalarBranch<double>& prw_lumi{m_MetaDataTree->newScalar<double>("prwLuminosity")};
305 
306  ScalarBranch<int>& mc_dsid{m_MetaDataTree->newScalar<int>("mcChannelNumber")};
307  ScalarBranch<unsigned int>& lhe_var{m_MetaDataTree->newScalar<unsigned int>("LheId")};
308  ScalarBranch<std::string>& stream_name{m_MetaDataTree->newScalar<std::string>("LheWeightName")};
309 
310  if (!m_hasPrwTool) m_MetaDataTree->disableBranch(prw_lumi.name());
311  ATH_CHECK(m_MetaDataTree->init(this));
312 
313  for (const SimMetaData& meta : m_sim_meta) {
314  run_number = meta.prw_channel;
315  mc_dsid = meta.mc_channel;
316  lhe_var = meta.variation_number;
317 
318  prw_lumi = meta.prw_lumi;
319  sum_w = meta.sum_w;
320  sum_w2 = meta.sum_w_squared;
321  stream_name = meta.weight_name;
322 
323  tot_ev = meta.tot_events;
324  proc_ev = meta.proc_events;
325  m_MetaDataTree->fill(Gaudi::Hive::currentContext());
326  }
327  return StatusCode::SUCCESS;
328 }
329 }
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
AthAnalysisAlgorithm
Definition: AthAnalysisAlgorithm.h:34
plotting.plot_kinematics.run_number
run_number
Definition: plot_kinematics.py:29
MuonVal::EventInfoBranch::setNumLHE
static void setNumLHE(unsigned int numLHE) ATLAS_THREAD_SAFE
Specify the number of LHE variations that are available in the sample.
Definition: EventInfoBranch.cxx:15
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
MuonVal::MuonTPMetaDataAlg::RunMetaData
Helper structs to cache the meta-data for simulation and recorded data.
Definition: MuonTPMetaDataAlg.h:47
EventStreamInfo::getRunNumbers
const std::set< unsigned int > & getRunNumbers() const
Definition: EventStreamInfo.cxx:23
MuonVal::MuonTPMetaDataAlg::m_hasPrwTool
bool m_hasPrwTool
Definition: MuonTPMetaDataAlg.h:41
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
make_hlt_rep.rep
rep
Definition: make_hlt_rep.py:32
xAOD::CutBookkeeper_v1
Description of the class that is used to keep track of event counts.
Definition: CutBookkeeper_v1.h:29
MuonTPMetaDataAlg.h
sct_calib_tf.Stream
string Stream
Definition: sct_calib_tf.py:31
MuonVal::MuonTPMetaDataAlg::m_isDerivedAOD
Gaudi::Property< bool > m_isDerivedAOD
Is derived DAOD property.
Definition: MuonTPMetaDataAlg.h:34
downloadSingle.dataType
string dataType
Definition: downloadSingle.py:18
EventStreamInfo::getEventTypes
const std::set< EventType > & getEventTypes() const
Definition: EventStreamInfo.cxx:47
xAOD::CutBookkeeper_v1::sumOfEventWeightsSquared
double sumOfEventWeightsSquared() const
Get the sum-of-(event-weights-squared) that this CutBookkeeper has seen.
Definition: CutBookkeeper_v1.cxx:327
EventInfoBranch.h
AthAnalysisAlgorithm::inputMetaStore
const ServiceHandle< StoreGateSvc > & inputMetaStore() const
Const accessor for the input metadata store.
Definition: AthAnalysisAlgorithm.h:49
drawFromPickle.exp
exp
Definition: drawFromPickle.py:36
xAOD::EventInfo_v1::IS_SIMULATION
@ IS_SIMULATION
true: simulation, false: data
Definition: EventInfo_v1.h:151
EventStreamInfo.h
This file contains the class definition for the EventStreamInfo class.
EventStreamInfo::getLumiBlockNumbers
const std::set< unsigned int > & getLumiBlockNumbers() const
Definition: EventStreamInfo.cxx:29
xAOD::FileMetaData_v1::value
bool value(MetaDataType type, std::string &val) const
Get a pre-defined string value out of the object.
Definition: FileMetaData_v1.cxx:195
MuonVal::MuonTPMetaDataAlg::finalize
StatusCode finalize() override
Definition: MuonTPMetaDataAlg.cxx:47
MuonVal::MuonTPMetaDataAlg::m_sim_meta
std::vector< SimMetaData > m_sim_meta
Definition: MuonTPMetaDataAlg.h:101
dqt_zlumi_pandas.weight
int weight
Definition: dqt_zlumi_pandas.py:200
MuonVal::MuonTPMetaDataAlg::beginInputFile
StatusCode beginInputFile() override
Function called when a new input file is opened user can read input metadata from inputMetaStore()
Definition: MuonTPMetaDataAlg.cxx:148
TPileupReweighting.h
MuonVal::MuonTPMetaDataAlg::MuonTPMetaDataAlg
MuonTPMetaDataAlg(const std::string &name, ISvcLocator *pSvcLocator)
Definition: MuonTPMetaDataAlg.cxx:26
MuonVal::SetBranch
Definition: SetBranch.h:12
MuonVal::MuonTPMetaDataAlg::m_stream
Gaudi::Property< std::string > m_stream
Output file stream.
Definition: MuonTPMetaDataAlg.h:29
Generate_dsid_ranseed.dsid
dsid
Definition: Generate_dsid_ranseed.py:6
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
MuonVal::MuonTPMetaDataAlg::RetrieveCutBookKeeper
const xAOD::CutBookkeeper * RetrieveCutBookKeeper(const std::string &stream, const std::string &cbk_name="AllExecutedEvents") const
Definition: MuonTPMetaDataAlg.cxx:128
CutBookkeeperContainer.h
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
MuonVal::MuonTPMetaDataAlg::m_storeLHE
Gaudi::Property< bool > m_storeLHE
Store LHE weights.
Definition: MuonTPMetaDataAlg.h:38
xAOD::CutBookkeeperContainer_v1
Container that holds the Container of all CutBookkeepers.
Definition: CutBookkeeperContainer_v1.h:27
run
Definition: run.py:1
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
xAOD::FileMetaData_v1
Class holding file-level metadata about an xAOD file.
Definition: FileMetaData_v1.h:34
EventType::IS_SIMULATION
static const EventTypeCode IS_SIMULATION
true: IS_SIMULATION, false: IS_DATA
Definition: EventType.h:151
MuonVal::MuonTPMetaDataAlg::execute
StatusCode execute() override
Definition: MuonTPMetaDataAlg.cxx:63
MuonVal::MuonTPMetaDataAlg::m_infoKey
SG::ReadHandleKey< xAOD::EventInfo > m_infoKey
Definition: MuonTPMetaDataAlg.h:27
MuonVal
Class to store array like branches into the n-tuples.
Definition: MuonTPMetaDataAlg.cxx:25
xAOD::CutBookkeeper_v1::nAcceptedEvents
uint64_t nAcceptedEvents() const
Get the number of accepted events that this CutBookkeeper has seen.
Definition: CutBookkeeper_v1.cxx:291
MuonVal::ScalarBranch
Definition: ScalarBranch.h:12
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
MuonVal::MuonTPMetaDataAlg::m_prwTool
ToolHandle< CP::IPileupReweightingTool > m_prwTool
Definition: MuonTPMetaDataAlg.h:40
ActsTrk::to_string
std::string to_string(const DetectorType &type)
Definition: GeometryDefs.h:34
xAOD::CutBookkeeper_v1::sumOfEventWeights
double sumOfEventWeights() const
Get the sum-of-event-weights that this CutBookkeeper has seen.
Definition: CutBookkeeper_v1.cxx:309
AthAnalysisHelper.h
Cut::all
@ all
Definition: SUSYToolsAlg.cxx:64
CP::ReplaceExpInString
std::string ReplaceExpInString(std::string str, const std::string &exp, const std::string &rep)
Replaces all expressions an string by something else.
Definition: PhysicsAnalysis/MuonID/MuonIDAnalysis/MuonEfficiencyCorrections/Root/UtilFunctions.cxx:24
MuonVal::MuonTPMetaDataAlg::m_MetaDataTree
std::unique_ptr< MuonTesterTree > m_MetaDataTree
Meta data tree object.
Definition: MuonTPMetaDataAlg.h:43
FileMetaData.h
EventStreamInfo
This class provides the summary information stored for data written as a Event Stream.
Definition: EventStreamInfo.h:28
python.CaloScaleNoiseConfig.str
str
Definition: CaloScaleNoiseConfig.py:78
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
MuonVal::MuonTPMetaDataAlg::fillSimulationTree
StatusCode fillSimulationTree()
Definition: MuonTPMetaDataAlg.cxx:296
MuonVal::MuonTPMetaDataAlg::fillDataTree
StatusCode fillDataTree()
Definition: MuonTPMetaDataAlg.cxx:275
MuonVal::MuonTPMetaDataAlg::initialize
StatusCode initialize() override
Definition: MuonTPMetaDataAlg.cxx:29
MuonVal::MuonTPMetaDataAlg::m_isAF2
Gaudi::Property< bool > m_isAF2
On AFII simulation.
Definition: MuonTPMetaDataAlg.h:36
python.grid.isData
def isData(dataset)
Definition: grid.py:491
str
Definition: BTagTrackIpAccessor.cxx:11
ReadHandle.h
Handle class for reading from StoreGate.
MuonVal::MuonTPMetaDataAlg::m_isData
Gaudi::Property< bool > m_isData
Definition: MuonTPMetaDataAlg.h:32
MuonVal::MuonTPMetaDataAlg::m_run_meta
std::vector< RunMetaData > m_run_meta
Definition: MuonTPMetaDataAlg.h:102
AthAnalysisHelper::retrieveMetadata
static std::string retrieveMetadata(const std::string &folder, const std::string &key, const ServiceHandle< StoreGateSvc > &inputMetaStore)
method that always returns as a string you can use from, e.g, pyROOT with evt = ROOT....
Definition: AthAnalysisHelper.h:254
MuonVal::MuonTPMetaDataAlg::SimMetaData
Definition: MuonTPMetaDataAlg.h:66