21 asg::AsgTool(
"top::EventSaverxAOD"),
22 m_prefix(
"CorrectedSelected"),
24 m_outputFile(nullptr) {
31 const std::vector<std::string>& extraBranches) {
37 std::string eventInfoList =
"runNumber.eventNumber.eventTypeBitmask.averageInteractionsPerCrossing";
38 if (
config->isMC()) eventInfoList +=
".mcChannelNumber.mcEventWeights.PileupWeight";
41 for (
const auto& branchName : extraBranches)
42 eventInfoList +=
"." + branchName;
44 evtStore()->event()->setAuxItemList(
"EventInfoAux.", eventInfoList);
51 m_prefix +
m_config->sgKeyMuons() +
"Aux.",
"pt.eta.phi.m.charge.muonType.combinedTrackParticleLink");
55 evtStore()->event()->setAuxItemList(
"InDetTrackParticlesAux.",
"qOverP");
56 evtStore()->event()->setAuxItemList(
"ExtrapolatedMuonTrackParticlesAux.",
"qOverP");
57 evtStore()->event()->setAuxItemList(
"CombinedMuonTrackParticlesAux.",
"qOverP");
66 if (
event.m_hashValue !=
m_config->nominalHashValue())
return;
69 if (
m_config->saveOnlySelectedEvents() && !
event.m_saveEvent)
return;
74 m_config->sgKeyTopSystematicEvents()),
75 "Failed to retrieve xAOD::SystematicEventContainer");
79 allSystematics_output->setStore(allSystematics_aux);
80 for (
const auto *currentSystematic : *allSystematics) {
83 out->makePrivateStore(*currentSystematic);
87 m_config->sgKeyTopSystematicEvents()),
88 "Failed to record xAOD::SystematicEventContainer");
92 if (
m_config->doTopPartonHistory()) {
93 if (
evtStore()->contains<xAOD::PartonHistoryContainer>(
m_config->sgKeyTopPartonHistory())) {
96 m_config->sgKeyTopPartonHistory()),
"Failed to retrieve Top Parton History");
100 partonHistory_output->setStore(partonHistory_aux);
101 for (
const auto *
x : *partonHistory) {
104 out->makePrivateStore(*
x);
108 m_config->sgKeyTopPartonHistory()),
"Failed to record Parton History");
121 electrons_output->setStore(electrons_aux);
123 for (
const auto*
const elPtr :
event.m_electrons) {
126 electrons_output->
push_back(outputElPtr);
131 "xAOD::TEvent record " +
m_prefix +
m_config->sgKeyElectrons() +
" failed");
138 muons_output->setStore(muons_aux);
140 for (
const auto*
const muPtr :
event.m_muons) {
155 "ExtrapolatedMuonTrackParticles"),
156 "xAOD::TEvent copy InDetTrackParticles ExtrapolatedMuonTrackParticles");
158 "CombinedMuonTrackParticles"),
"xAOD::TEvent copy InDetTrackParticles CombinedMuonTrackParticles");
165 jets_output->setStore(jets_aux);
167 for (
const auto*
const jetPtr :
event.m_jets) {
179 const std::string btagName =
"BTagging_" +
m_config->sgKeyJets().substr(0,
m_config->sgKeyJets().size() - 4);
187 largeJets_output->setStore(largeJets_aux);
189 for (
const auto*
const jetPtr :
event.m_largeJets) {
192 largeJets_output->
push_back(outputJetPtr);
197 "xAOD::TEvent record " +
m_prefix +
m_config->sgKeyLargeRJets() +
" failed");
202 "xAOD::TEvent copy " +
m_config->sgKeyMissingEt() +
" failed");
211 m_outputFile),
"EventSaverxAOD::finalise trying to call finishWritingTo");