ATLAS Offline Software
Loading...
Searching...
No Matches
JetSort.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3*/
4// JetSort.cxx
5// TopoCore
6// Created by Joerg Stelzer on 11/10/12.
7// algorithm to make sorted Jets lists
8//
13#include <algorithm>
14
15REGISTER_ALG_TCS(JetSort)
16
17bool SortByEtLargest2(TCS::GenericTOB* tob1, TCS::GenericTOB* tob2)
18{
19 return tob1->Et() > tob2->Et();
20}
21
22
23// constructor
24TCS::JetSort::JetSort(const std::string & name) :
26{
27 defineParameter( "InputWidth", 64 ); // for FW
28 defineParameter( "InputWidth1stStage", 16 ); // for FW
29 defineParameter( "OutputWidth", 10 );
30 defineParameter( "JetSize", 2 );
31 defineParameter( "MinEta", 0 );
32 defineParameter( "MaxEta", 31);
33 defineParameter( "DoEtaCut", 1);
35}
36
37
40
41
42
45 m_numberOfJets = parameter("OutputWidth").value();
46 m_jsize = parameter("JetSize").value();
47 m_minEta = parameter("MinEta").value();
48 m_maxEta = parameter("MaxEta").value();
49 m_doEtaCut = parameter("DoEtaCut").value();
51}
52
53
55TCS::JetSort::sort(const InputTOBArray & input, TOBArray & output) {
56 const JetTOBArray & jets = dynamic_cast<const JetTOBArray&>(input);
57 // because hw seems to be using different notation, for now 2 means 8x8 or JS1, and 1 JS2 a 4x4
59
60 // fill output array with GenericTOBs builds from jets
61 for(JetTOBArray::const_iterator cl = jets.begin(); cl!= jets.end(); ++cl ) {
62 if (m_doEtaCut && (parType_t(std::abs((*cl)-> eta())) < m_minEta)) continue;
63 if (m_doEtaCut && (parType_t(std::abs((*cl)-> eta())) > m_maxEta)) continue;
64 output.push_back( GenericTOB(**cl, m_jetsize) );
65 }
66
67 // sort
68 output.sort(SortByEtLargest2);
69
70
71 // keep only max number of jets
72 int par = m_numberOfJets;
73 unsigned int maxNumberOfJets = std::clamp(par, 0, std::abs(par));
74 if(maxNumberOfJets>0) {
75 while( output.size()> maxNumberOfJets ) {
76 output.pop_back();
77 }
78 }
80}
81
#define REGISTER_ALG_TCS(CLASS)
Definition AlgFactory.h:62
Scalar eta() const
pseudorapidity method
bool SortByEtLargest2(TCS::GenericTOB *tob1, TCS::GenericTOB *tob2)
Definition JetSort.cxx:17
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
virtual TCS::StatusCode initialize()
Definition JetSort.cxx:44
JetTOB::JetSize m_jetsize
Definition JetSort.h:40
parType_t m_minEta
Definition JetSort.h:33
parType_t m_maxEta
Definition JetSort.h:34
parType_t m_jsize
Definition JetSort.h:35
parType_t m_numberOfJets
Definition JetSort.h:32
parType_t m_doEtaCut
Definition JetSort.h:36
virtual ~JetSort()
Definition JetSort.cxx:38
virtual TCS::StatusCode sort(const InputTOBArray &input, TOBArray &output)
Definition JetSort.cxx:55
JetSort(const std::string &name)
Definition JetSort.cxx:24
SortingAlg(const std::string &name)
Definition SortingAlg.h:21
uint32_t parType_t
Definition Parameter.h:22