14 #include "CLHEP/Units/SystemOfUnits.h"
31 ATH_MSG_INFO(
"Successfully retrieved the CaloIsolationTool!" );
36 ATH_MSG_INFO(
"Successfully retrieved the TrackIsolationTool!" );
51 for(
unsigned int i=0;
i<
m_iso.size();
i++){
86 return StatusCode::SUCCESS;
94 return StatusCode::SUCCESS;
106 entries = m_parser->evaluateAsVector();
108 ATH_MSG_ERROR(
"Sizes incompatible! Are you sure your selection string used ID TrackParticles?");
109 return StatusCode::FAILURE;
114 std::vector<SG::WriteDecorHandle<xAOD::TrackParticleContainer, float>> ptconeDecorators;
115 for(
unsigned int i=0;
i<m_ptconeTypes.size();
i++){
116 ptconeDecorators.emplace_back(m_ptconeDecoratorsKey[
i], ctx);
118 std::vector<SG::WriteDecorHandle<xAOD::TrackParticleContainer, float>> ptvarconeDecorators;
119 for(
unsigned int i=0;
i<m_ptvarconeTypes.size();
i++){
120 ptvarconeDecorators.emplace_back(m_ptconeDecoratorsKey[
i], ctx);
122 std::vector<SG::WriteDecorHandle<xAOD::TrackParticleContainer, float>> topoetconeDecorators;
123 for(
unsigned int i=0;
i<m_topoetconeTypes.size();
i++){
124 topoetconeDecorators.emplace_back(m_topoetconeDecoratorsKey[
i], ctx);
126 std::vector<SG::WriteDecorHandle<xAOD::TrackParticleContainer, float>> topoetconeNonCoreConeDecorators;
127 for(
unsigned int i=0;
i<m_topoetconeTypes.size();
i++){
128 topoetconeNonCoreConeDecorators.emplace_back(m_topoetconeNonCoreConeDecoratorsKey[
i], ctx);
139 if (!
entries[ipar++]) IsPassed=
false;
142 if(not m_selFlag.empty()){
143 if(dec_trkFlag(*
particle)!=m_selFlagValue) IsPassed=
false;
153 if(m_ptconeTypes.size()) {
155 if (m_trackIsolationTool->trackIsolation(resultTrack, *
particle, m_ptconeTypes, m_trkCorrList)){
156 for(
unsigned int i=0;
i<m_ptconeTypes.size();
i++){
157 ptconeDecorators[
i](*particle) = resultTrack.
ptcones[
i];
164 if(m_ptvarconeTypes.size()) {
166 std::vector<xAOD::Iso::IsolationType> ptconeTypes = {};
167 for(
auto isoType : m_ptvarconeTypes) {
168 int iso_tmp =
static_cast<int>(isoType);
169 iso_tmp -= m_diff_ptvarcone;
173 if (m_trackIsolationTool->trackIsolation(resultTrackVar, *
particle, ptconeTypes, m_trkCorrList)){
174 for(
unsigned int i=0;
i<m_ptvarconeTypes.size();
i++){
182 if(m_topoetconeTypes.size()) {
184 if (m_caloIsolationTool->caloTopoClusterIsolation(resultCalo, *
particle, m_topoetconeTypes, m_topoconeCorrList)){
185 for(
unsigned int i=0;
i<m_topoetconeTypes.size();
i++){
186 topoetconeDecorators[
i](*particle) = resultCalo.
etcones[
i];
192 if (m_caloIsolationTool->caloTopoClusterIsolation(resultCaloNonCoreCone, *
particle, m_topoetconeTypes, m_topoclusCorrList)){
193 for(
unsigned int i=0;
i<m_topoetconeTypes.size();
i++){
194 topoetconeNonCoreConeDecorators[
i](*particle) = resultCaloNonCoreCone.
etcones[
i];
197 ATH_MSG_WARNING(
"Failed to apply the topo calo isolation for a particle ( non CoreCone )");
203 for(
unsigned int i=0;
i<m_ptconeTypes.size();
i++){
204 ptconeDecorators[
i](*particle) = -999.e3;
206 for(
unsigned int i=0;
i<m_ptvarconeTypes.size();
i++){
207 ptvarconeDecorators[
i](*particle) = -999.e3;
209 for(
unsigned int i=0;
i<m_topoetconeTypes.size();
i++){
210 topoetconeDecorators[
i](*particle) = -999.e3;
211 topoetconeNonCoreConeDecorators[
i](*particle) = -999.e3;
217 return StatusCode::SUCCESS;