37 m_specifiedSystematics(),
38 m_recommendedSystematics(),
39 m_nominalSystematicSet(),
40 m_smearingTool(
"top::TrackCPTools::InDetTrackSmearingTool"),
41 m_truthOriginTool(
"top::TrackCPTools::InDetTrackTruthOriginTool"),
42 m_truthFilterTool(
"top::TrackCPTools::InDetTrackTruthFilterTool")
53 ATH_MSG_WARNING(
"Usage of tracks in AnalysisTop is experimental for now!\n");
67 const std:: string& syststr =
m_config->systematics();
68 std::set<std::string> syst;
70 if (
m_config->isSystNominal(syststr)) {
75 }
else if (
m_config->isSystAll(syststr)) {
81 std::set<std::string> syst;
82 bool ok =
m_config->getSystematicsList(syststr, syst);
84 ATH_MSG_ERROR(
" top::TrackSystematicsMaker could not determine systematic list");
85 return StatusCode::FAILURE;
97 ATH_MSG_INFO(
" top::TrackSystematicsMaker completed initialize");
98 return StatusCode::SUCCESS;
106 if(
m_config->sgKeyTracks(syst.
hash()) ==
"InDetTrackParticles_")
107 return StatusCode::SUCCESS;
117 "Failed to configure tool for systematic variation");
124 if (not
tool->accept(trkCpy)) trkCpy->auxdecor<
char>(
"passTruthFilter") = 0;
125 else trkCpy->auxdecor<
char>(
"passTruthFilter") = 1;
131 std::string outputSGKey =
m_config->sgKeyTracks(syst.
hash());
132 std::string outputSGKeyAux = outputSGKey +
"Aux.";
136 StatusCode saveAux =
evtStore()->tds()->record(shallow_xaod_copy.second, outputSGKeyAux);
138 if (!
save || !saveAux) {
139 return StatusCode::FAILURE;
142 return StatusCode::SUCCESS;
150 if(
m_config->sgKeyTracks(syst.
hash()) ==
"InDetTrackParticles_")
151 return StatusCode::SUCCESS;
160 top::check(
tool->applySystematicVariation(syst),
"Failed to configure tool for systematic variation");
165 top::check(
tool->applyCorrection(*trkCpy),
"Failure to apply track systematic");
170 std::string outputSGKey =
m_config->sgKeyTracks(syst.
hash());
171 std::string outputSGKeyAux = outputSGKey +
"Aux.";
175 StatusCode saveAux =
evtStore()->tds()->record(shallow_xaod_copy.second, outputSGKeyAux);
177 if (!
save || !saveAux) {
178 return StatusCode::FAILURE;
181 return StatusCode::SUCCESS;
187 if(
m_config->sgKeyTracks(syst.
hash()) ==
"InDetTrackParticles_")
188 return StatusCode::SUCCESS;
199 "Failed to configure tool for systematic variation");
203 top::check(
tool->applyCorrection(*trkCpy),
"Failure to apply track systematic");
208 std::string outputSGKey =
m_config->sgKeyTracks(syst.
hash());
209 std::string outputSGKeyAux = outputSGKey +
"Aux.";
212 StatusCode saveAux =
evtStore()->tds()->record(shallow_xaod_copy.second, outputSGKeyAux);
214 if (!
save || !saveAux) {
215 return StatusCode::FAILURE;
218 return StatusCode::SUCCESS;
225 if (!
m_config->isMC() && executeNominal) {
235 std::string outputSGKeyAux = outputSGKey +
"Aux.";
238 StatusCode saveAux =
evtStore()->tds()->record(shallow_xaod_copy.second, outputSGKeyAux);
240 if (!
save || !saveAux) {
241 return StatusCode::FAILURE;
245 return StatusCode::SUCCESS;
247 if (!
m_config->isMC() && !executeNominal) {
248 return StatusCode::SUCCESS;
263 std::string outputSGKeyAux = outputSGKey +
"Aux.";
266 StatusCode saveAux =
evtStore()->tds()->record(shallow_xaod_copy.second, outputSGKeyAux);
268 if (!
save || !saveAux) {
269 return StatusCode::FAILURE;
273 return StatusCode::SUCCESS;
278 for (
const auto& syst :
m_systs.smearing) {
280 "Failure to apply TrackSystematic");
291 top::check(biasingTool,
"Failure to selected biasing tool");
292 for (
const auto& syst :
m_systs.bias) {
294 "Failure to apply TrackSystematic");
302 "Failure to retrieve EventInfo");
304 top::check(ei->isAvailable<
unsigned int>(
"RandomRunNumber"),
305 "Require that RandomRunNumber decoration is available.");
306 auto randomRunNumber = ei->auxdataConst<
unsigned int>(
"RandomRunNumber");
308 if (randomRunNumber != 0 ){
310 "RandomRunNumber is below valid range.");
312 "RandomRunNumber is above valid range.");
320 top::check(biasingTool,
"Failure to selected biasing tool");
321 for (
const auto& syst :
m_systs.bias) {
323 "Failure to apply TrackSystematic");
329 for (
const auto& syst :
m_systs.truthFilter) {
332 "Failure to apply TrackSystematic");
335 ATH_MSG_DEBUG(
" top::TrackSystematicsMaker completed execute");
336 return StatusCode::SUCCESS;
344 const bool allTrackSystematics =
m_config->contains(specSys,
"AllTracks");
351 std::set<CP::SystematicSet> systs;
367 systs.insert(
m_systs.truthFilter.begin(),
m_systs.truthFilter.end());
370 for (
const auto&
s : systs) {
373 if (
s.name() ==
"") {
383 if (allTrackSystematics) {
389 for (
const auto&
i : specSys) {
391 if (!
filter.filterTree(
s.name())) {
429 std::string biasToolPrefix {
"top::TrackCPTools::InDetTrackBiasingTool"};
436 unsigned int end = 0;
445 for (
unsigned int i = 0;
i <
end;
i++) {
448 std::string biasToolName {
460 if (asg::ToolStore::contains<InDet::InDetTrackBiasingTool>(biasToolName)) {
461 m_biasTool[
i] = asg::ToolStore::get<InDet::InDetTrackBiasingTool>(biasToolName);
464 return StatusCode::FAILURE;
475 return StatusCode::SUCCESS;