18 m_ExternalJetCollectionName(
""),
19 m_VectorOfOldLinkNames({}),
20 m_VectorOfNewLinkNames({}),
25 declareProperty(
"MomentPrefix" , m_momentPrefix);
26 declareProperty(
"InputJets" , m_containerName);
28 declareProperty(
"ExternalJetCollectionName", m_ExternalJetCollectionName);
29 declareProperty(
"ListOfOldLinkNames" , m_VectorOfOldLinkNames);
30 declareProperty(
"ListOfNewLinkNames" , m_VectorOfNewLinkNames);
32 declareProperty(
"DeltaRMatch" , m_dRMatch);
33 declareProperty(
"DeltaRCut" , m_dRCut);
45 ATH_MSG_ERROR(
"Vector size between old and new link names does not agree!");
46 return StatusCode::FAILURE;
56 return StatusCode::SUCCESS;
61 return StatusCode::SUCCESS;
72 return StatusCode::FAILURE;
79 return StatusCode::FAILURE;
86 if(
jets->size() != ExternalJetCollection->
size()){
88 return StatusCode::FAILURE;
93 auto jet_external = ExternalJetCollection->
at(
index);
95 if( std::abs(
jet->pt() - jet_external->pt()) > 0.1 ){
96 ATH_MSG_WARNING(
"Potential inconsistency between two jet collections: " <<
jet->pt() <<
" v.s. " << jet_external->pt());
100 ATH_MSG_ERROR(
"Failure when transferring link from external jet to current jet!");
101 return StatusCode::FAILURE;
109 std::vector<const xAOD::Jet*> UnAssignedExternalJets;
110 for(
auto jet_external : *ExternalJetCollection){
111 UnAssignedExternalJets.push_back(jet_external);
121 for(
auto external_iter = UnAssignedExternalJets.begin(); external_iter != UnAssignedExternalJets.end(); external_iter++){
122 auto jet_external = (*external_iter);
124 double dR =
jet->p4().DeltaR(jet_external->p4());
128 associated_jet = jet_external;
129 associated_iter = external_iter;
133 if(associated_jet == 0){
134 ATH_MSG_WARNING(
"Unable to find associated external jet! This jet will be skipped");
139 if(associated_jet != (*associated_iter)){
141 return StatusCode::FAILURE;
145 UnAssignedExternalJets.erase(associated_iter);
150 ATH_MSG_ERROR(
"Failure when transferring link from external jet to current jet!");
151 return StatusCode::FAILURE;
156 return StatusCode::SUCCESS;
166 std::vector<const xAOD::IParticle*> targetObjs;
168 ATH_MSG_WARNING(
"Unable to fetch link " << OldLinkName <<
" under associated external jet");
174 for(
auto obj : targetObjs){
178 targetLinks.push_back(el_obj);
182 *dec_handle(
jet) = targetLinks;