29 ATH_MSG_ERROR(
"Vector size between old and new link names does not agree!");
30 return StatusCode::FAILURE;
40 return StatusCode::SUCCESS;
48 if (!
jets.isValid()) {
50 return StatusCode::FAILURE;
55 if (!ExternalJetCollection.isValid()) {
57 return StatusCode::FAILURE;
64 if(
jets->size() != ExternalJetCollection->size()){
66 return StatusCode::FAILURE;
71 auto jet_external = ExternalJetCollection->at(
index);
73 if( std::abs(
jet->pt() - jet_external->pt()) > 0.1 ){
74 ATH_MSG_WARNING(
"Potential inconsistency between two jet collections: " <<
jet->pt() <<
" v.s. " << jet_external->pt());
78 ATH_MSG_ERROR(
"Failure when transferring link from external jet to current jet!");
79 return StatusCode::FAILURE;
87 std::vector<const xAOD::Jet*> UnAssignedExternalJets;
88 for (
auto jet_external : *ExternalJetCollection) {
89 UnAssignedExternalJets.push_back(jet_external);
99 for(
auto external_iter = UnAssignedExternalJets.begin(); external_iter != UnAssignedExternalJets.end(); external_iter++){
100 auto jet_external = (*external_iter);
102 double dR =
jet->p4().DeltaR(jet_external->p4());
106 associated_jet = jet_external;
107 associated_iter = external_iter;
111 if(associated_jet == 0){
112 ATH_MSG_WARNING(
"Unable to find associated external jet! This jet will be skipped");
117 if(associated_jet != (*associated_iter)){
119 return StatusCode::FAILURE;
123 UnAssignedExternalJets.erase(associated_iter);
128 ATH_MSG_ERROR(
"Failure when transferring link from external jet to current jet!");
129 return StatusCode::FAILURE;
134 return StatusCode::SUCCESS;
144 std::vector<const xAOD::IParticle*> targetObjs;
146 ATH_MSG_ERROR(
"Unable to fetch link " << OldLinkName <<
" under associated external jet");
147 return StatusCode::FAILURE;
152 for(
auto obj : targetObjs){
156 targetLinks.push_back(el_obj);
160 *dec_handle(
jet) = std::move(targetLinks);
164 return StatusCode::SUCCESS;