ATLAS Offline Software
Ratio.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3 */
4 /*********************************
5  * Ratio.cpp
6  * Created by Joerg Stelzer on 11/16/12.
7  *
8  * @brief algorithm calculates the phi-distance between one or two lists and applies delta-phi criteria
9  *
10  * @param NumberLeading
11 **********************************/
12 
13 #include <cmath>
14 
15 #include "L1TopoAlgorithms/Ratio.h"
16 #include "L1TopoCommon/Exception.h"
18 
19 
20 REGISTER_ALG_TCS(Ratio)
21 
22 // not the best solution but we will move to athena where this comes for free
23 #define LOG std::cout << name() << ": "
24 
25 
26 TCS::Ratio::Ratio(const std::string & name) : DecisionAlg(name)
27 {
28  defineParameter("InputWidth1", 9);
29  defineParameter("InputWidth2", 9);
30  defineParameter("MaxTob1", 0);
31  defineParameter("MaxTob2", 0);
32  defineParameter("NumResultBits", 2);
33  defineParameter("isXE2",0);
34  defineParameter("MinET2",0);
35  defineParameter("EtaMin",0);
36  defineParameter("EtaMax",49);
37  defineParameter("MinET1",0);
38  defineParameter("HT",0);
39  defineParameter("Ratio",0,0);
40  defineParameter("Ratio",0,1);
42 }
43 
45 {}
46 
47 
50  p_MinET1 = parameter("MinET1").value();
51  p_MinET2 = parameter("MinET2").value();
52  p_EtaMin = parameter("EtaMin").value();
53  p_EtaMax = parameter("EtaMax").value();
54  p_HT = parameter("HT").value();
55  TRG_MSG_INFO("MinET1 : " << p_MinET1);
56  TRG_MSG_INFO("MinET2 : " << p_MinET2);
57  TRG_MSG_INFO("EtaMin : " << p_EtaMin);
58  TRG_MSG_INFO("EtaMax : " << p_EtaMax);
59  TRG_MSG_INFO("HT : " << p_HT);
60 
61  p_isXE2 = parameter("isXE2").value();
62  TRG_MSG_INFO("isXE2 : " << p_isXE2);
63 
64  for(int i=0; i<2; ++i) {
65  p_Ratio[i] = parameter("Ratio", i).value();
66  TRG_MSG_INFO("Ratio " << i << " : " << p_Ratio[i]);
67  }
68  TRG_MSG_INFO("number output : " << numberOutputBits());
69  return StatusCode::SUCCESS;
70 }
71 
73 TCS::Ratio::processBitCorrect( const std::vector<TCS::TOBArray const *> & input,
74  const std::vector<TCS::TOBArray *> & output,
75  Decision & decision )
76 
77 {
78  return process(input,output,decision);
79 }
80 
81 
83 TCS::Ratio::process( const std::vector<TCS::TOBArray const *> & input,
84  const std::vector<TCS::TOBArray *> & output,
85  Decision & decision )
86 {
87 
88  if(input.size()!=2) {
89  TCS_EXCEPTION("Ratio alg must have exactly 2 input lists, but got " << input.size());
90  }
91 
92  unsigned int sumET = 0;
93 
94 
95  const TCS::GenericTOB & met = (*input[0])[0];
96 
97 
98  // loop over all jets
99  unsigned int objC(0);
100  for( TCS::GenericTOB * tob : *input[1]) {
101 
102 
103  if( parType_t(std::abs(tob->eta())) > p_EtaMax ) continue; // Eta cut
104  if( parType_t(std::abs(tob->eta())) < p_EtaMin ) continue; // Eta cut
105  if( tob->Et() <= p_MinET2 ) continue; // E_T cut
106 
107  TRG_MSG_DEBUG("Jet ET = " << tob->Et());
108  ++objC;
109  sumET += tob->Et();
110  }
111 
112  for(unsigned int i=0; i<numberOutputBits(); ++i) {
113 
114  bool accept = objC!=0 && met.Et() > p_MinET1 && 10*met.Et() >= p_Ratio[i]*sumET;
115 
116  if (p_isXE2) accept = objC!=0 && met.Et() > p_MinET1 && 10*(met.Et()*met.Et()) >= p_Ratio[i]*sumET;
117 
118  decision.setBit( i, accept );
119 
120  if(accept)
121  output[i]->push_back( CompositeTOB( GenericTOB::createOnHeap( GenericTOB(sumET,0,0) ) ));
122 
123  TRG_MSG_DEBUG("Decision " << i << ": " << (accept?"pass":"fail") << " HT = " << sumET << " XE = " << met.Et() );
124 
125  }
126 
128 }
TCS::StatusCode::SUCCESS
@ SUCCESS
Definition: Trigger/TrigT1/L1Topo/L1TopoCommon/L1TopoCommon/StatusCode.h:17
TCS::Ratio::processBitCorrect
virtual StatusCode processBitCorrect(const std::vector< TCS::TOBArray const * > &input, const std::vector< TCS::TOBArray * > &output, Decision &decison)
Definition: Ratio.cxx:73
TCS::parType_t
uint32_t parType_t
Definition: Parameter.h:22
Ratio.h
CutsMETMaker::accept
StatusCode accept(const xAOD::Muon *mu)
Definition: CutsMETMaker.cxx:18
Decision.h
SUSY_SimplifiedModel_PostInclude.process
string process
Definition: SUSY_SimplifiedModel_PostInclude.py:42
TCS::Ratio::Ratio
Ratio(const std::string &name)
Definition: Ratio.cxx:26
TCS::DecisionAlg
Definition: Trigger/TrigT1/L1Topo/L1TopoInterfaces/L1TopoInterfaces/DecisionAlg.h:22
TCS::GenericTOB::createOnHeap
static GenericTOB * createOnHeap(const GenericTOB &)
Definition: GenericTOB.cxx:264
TCS::Decision::setBit
void setBit(unsigned int index, bool value)
Definition: L1Topo/L1TopoInterfaces/Root/Decision.cxx:12
met
Definition: IMETSignificance.h:24
TCS::Ratio::~Ratio
virtual ~Ratio()
Definition: Ratio.cxx:44
lumiFormat.i
int i
Definition: lumiFormat.py:92
TCS::ConfigurableAlg::defineParameter
void defineParameter(const std::string &name, TCS::parType_t value)
Definition: ConfigurableAlg.cxx:201
TCS::CompositeTOB
Definition: CompositeTOB.h:16
PlotPulseshapeFromCool.input
input
Definition: PlotPulseshapeFromCool.py:106
TCS::Ratio::process
virtual StatusCode process(const std::vector< TCS::TOBArray const * > &input, const std::vector< TCS::TOBArray * > &output, Decision &decison)
Definition: Ratio.cxx:83
TCS_EXCEPTION
#define TCS_EXCEPTION(MSG)
Definition: Trigger/TrigT1/L1Topo/L1TopoCommon/L1TopoCommon/Exception.h:14
TCS::Decision
Definition: L1Topo/L1TopoInterfaces/L1TopoInterfaces/Decision.h:19
TRG_MSG_INFO
#define TRG_MSG_INFO(x)
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStreamMacros.h:27
TCS::Ratio::initialize
virtual StatusCode initialize()
Definition: Ratio.cxx:49
merge.output
output
Definition: merge.py:17
TCS::GenericTOB
Definition: GenericTOB.h:35
REGISTER_ALG_TCS
#define REGISTER_ALG_TCS(CLASS)
Definition: AlgFactory.h:62
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
TCS::DecisionAlg::setNumberOutputBits
void setNumberOutputBits(unsigned int numberOutputBits)
Definition: Trigger/TrigT1/L1Topo/L1TopoInterfaces/L1TopoInterfaces/DecisionAlg.h:40
Exception.h
TRG_MSG_DEBUG
#define TRG_MSG_DEBUG(x)
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStreamMacros.h:25
TCS::StatusCode
Definition: Trigger/TrigT1/L1Topo/L1TopoCommon/L1TopoCommon/StatusCode.h:15