ATLAS Offline Software
Loading...
Searching...
No Matches
jTauSelect.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3*/
4// jTauSelect.cxx
5// TopoCore
6// Algorithm to select the abbreviated list of jTaus , no order is applied
7//
8
13#include <algorithm>
14
15REGISTER_ALG_TCS(jTauSelect)
16
17// constructor
19 defineParameter( "InputWidth", 120); // for fw
20 defineParameter( "OutputWidth", 6);
21 defineParameter( "MinET", 0 );
22 defineParameter( "MinEta", 0 );
23 defineParameter( "MaxEta", 196 );
24 defineParameter( "Isolation", 1024);
25 defineParameter( "passIsolation", false);
26}
27
28
29// destructor
31
34
35 m_numberOfjTaus = parameter("OutputWidth").value();
36 m_minET = parameter("MinET").value();
37 m_minEta = parameter("MinEta").value();
38 m_maxEta = parameter("MaxEta").value();
39 m_iso = parameter("Isolation").value();
40 m_passIsolation = parameter("passIsolation").value();
41
43}
44
47
48 const jTauTOBArray & clusters = dynamic_cast<const jTauTOBArray&>(input);
49
50 // fill output array with GenericTOB built from clusters
51 for(jTauTOBArray::const_iterator jtau = clusters.begin(); jtau!= clusters.end(); ++jtau ) {
52 if ( parType_t((*jtau)-> Et()) < m_minET ) continue;
53 if ( parType_t(std::abs((*jtau)-> eta())) < m_minEta ) continue;
54 if ( parType_t(std::abs((*jtau)-> eta())) > m_maxEta ) continue;
55 if (! ( m_passIsolation || checkIsolation(*jtau) ) ) continue;
56
57 const GenericTOB gtob(**jtau);
58 output.push_back( gtob );
59 }
60
61
62 // keep only max number of jTaus
63 int par = m_numberOfjTaus ;
64 unsigned int maxNumberOfJTaus = std::clamp(par, 0, std::abs(par));
65 if(maxNumberOfJTaus>0) {
66 while( output.size()> maxNumberOfJTaus ) {
67 if (output.size() == (maxNumberOfJTaus+1)) {
68 bool isAmbiguous = output[maxNumberOfJTaus-1].Et() == output[maxNumberOfJTaus].Et();
69 if (isAmbiguous) { output.setAmbiguityFlag(true); }
70 }
71 output.pop_back();
72 }
73 }
75}
76
77
78bool
80 if(m_passIsolation) return true;
81 return jtau->EtIso()*1024 < jtau->Et()*m_iso;
82}
83
#define REGISTER_ALG_TCS(CLASS)
Definition AlgFactory.h:62
Scalar eta() const
pseudorapidity method
const Parameter & parameter(const std::string &parameterName) const
const std::string & name() const
void defineParameter(const std::string &name, TCS::parType_t value)
data_t::const_iterator const_iterator
SortingAlg(const std::string &name)
Definition SortingAlg.h:21
parType_t m_passIsolation
Definition jTauSelect.h:36
jTauSelect(const std::string &name)
parType_t m_maxEta
Definition jTauSelect.h:34
virtual TCS::StatusCode initialize() override
parType_t m_iso
Definition jTauSelect.h:35
parType_t m_minEta
Definition jTauSelect.h:33
virtual ~jTauSelect()
virtual TCS::StatusCode sort(const InputTOBArray &input, TOBArray &output) override final
parType_t m_numberOfjTaus
Definition jTauSelect.h:31
bool checkIsolation(const TCS::jTauTOB *jtau) const
parType_t m_minET
Definition jTauSelect.h:32
unsigned int EtIso() const
Definition jTauTOB.h:40
unsigned int Et() const
Definition jTauTOB.h:32
uint32_t parType_t
Definition Parameter.h:22
STL namespace.