31 TRG_MSG_ERROR(
"Dynamic cast failed in TCS::cTauMultiplicity::initialize");
38 bookHistMult(
m_histAccept,
"cTauMultiplicity_accept_EtaPt_"+
m_threshold->name(),
"Mult_"+
m_threshold->name(),
"#eta#times40",
"E_{t} [GeV]", 200, -200, 200, 100, 0, 100);
43 bookHistMult(
m_histcTauPhiEta,
"cTauTOBPhiEta",
"Matched cTau TOB location",
"#eta#times40",
"#phi#times20", 200, -200, 200, 128, 0, 128);
44 bookHistMult(
m_histcTauEtEta,
"cTauTOBEtEta",
"Matched cTau TOB Et vs eta",
"#eta#times40",
"E_{t} [GeV]", 200, -200, 200, 200, 0, 400);
47 bookHistMult(
m_histcTauIsoFraction,
"cTauTOBIsoFraction", std::string(
"Matched cTAU ") + wp_name +
" isolation fraction", wp_name +
" isolation fraction", 200, 0, 10);
69 if((*etauCand)->tobType() !=
TCS::ETAU)
continue;
72 bool isMatched =
false;
73 bool isIsolated =
false;
74 float isolation_fraction = 0;
78 if((*jtauCand)->tobType() !=
TCS::JTAU)
continue;
83 float etauCand_et =
static_cast<float>((*etauCand)->Et());
84 float etauCand_eta =
static_cast<float>((*etauCand)->etaDouble());
85 float jtauCand_et =
static_cast<float>((*jtauCand)->Et());
86 float jtauCand_etIso =
static_cast<float>((*jtauCand)->EtIso());
91 isolation_fraction = (jtauCand_etIso +
m_extraInfo->isolation(
m_threshold->isolation(), etauCand_eta).isolation_jTAUCoreScale_d() * (jtauCand_et - etauCand_et)) / etauCand_et;
112 if(isMatched && isIsolated) accept =
true;
113 if(!isMatched) accept =
true;
120 if((*etauCand)->eta()%4 >= 0) eta_thr = (*etauCand)->eta() - (*etauCand)->eta()%4;
121 else eta_thr = (*etauCand)->eta() - (*etauCand)->eta()%4 - 4;
123 accept = accept && (*etauCand)->Et() >
m_threshold->thrValue100MeV(eta_thr/4);
135 count.setSizeCount(counting);
142 if(
m_threshold->isolation() == WP::NONE)
return true;
144 return jtauCand->
EtIso()*1024 + jtauCand->
Et()*iso_wp.isolation_jTAUCoreScale_fw() < etauCand->
Et()*iso_wp.isolation_fw();
149 if(
m_threshold->isolation() == WP::NONE)
return true;
151 return etauCand->
RCore() >= iso_wp.eTAU_rCoreMin_WP_fw() && etauCand->
RHad() >= iso_wp.eTAU_rHadMin_WP_fw();
157 bool matching =
false;
164 if(etauCand->
eta()%4 >= 0 ) eTauEtaTower = etauCand->
eta() - etauCand->
eta()%4;
165 else eTauEtaTower = etauCand->
eta() - etauCand->
eta()%4 - 4;
167 if (jtauCand->
eta()%4 >= 0 ) jTauEtaTower = jtauCand->
eta() - jtauCand->
eta()%4;
168 else jTauEtaTower = jtauCand->
eta() - jtauCand->
eta()%4 - 4;
171 unsigned int eTauPhiTower = etauCand->
phi() >> 1;
172 unsigned int jTauPhiTower = jtauCand->
phi() >> 1;
174 matching = (eTauEtaTower == jTauEtaTower) && (eTauPhiTower == jTauPhiTower);
182#ifndef TRIGCONF_STANDALONE
186 size_t i_matched{std::numeric_limits<size_t>::max()};
200 if(jTauEtaTopo%4 >= 0 ) jTauEtaTower = jTauEtaTopo - jTauEtaTopo%4;
201 else jTauEtaTower = jTauEtaTopo - jTauEtaTopo%4 - 4;
204 unsigned int eTauPhiTower =
static_cast<unsigned int>(eTau.
iPhiTopo()) >> 1;
205 bool matching = ( eTauEtaTower == jTauEtaTower ) && ( eTauPhiTower == jTauPhiTower );
230 if(jTauEtaTopo%4 >= 0 ) jTauEtaTower = jTauEtaTopo - jTauEtaTopo%4;
231 else jTauEtaTower = jTauEtaTopo - jTauEtaTopo%4 - 4;
234 unsigned int eTauPhiTower =
static_cast<unsigned int>(eTau.
iPhiTopo()) >> 1;
236 bool matching = ( eTauEtaTower == jTauEtaTower ) && ( eTauPhiTower == jTauPhiTower );
243 if(thr.isolation() == WP::NONE)
return true;
244 auto iso_wp = thr.getExtraInfo()->isolation(thr.isolation(), eTau.
eta());
245 return jTau.
tobIso()*2*1024 + jTau.
tobEt()*2*iso_wp.isolation_jTAUCoreScale_fw() < eTau.
etTOB()*iso_wp.isolation_fw();
250 if(thr.isolation() == WP::NONE)
return true;
251 auto iso_wp = thr.getExtraInfo()->isolation(thr.isolation(), eTau.
eta());
#define REGISTER_ALG_TCS(CLASS)
const std::string & name() const
void fillHist1D(const std::string &histName, double x)
void bookHistMult(std::vector< std::string > ®Name, const std::string &name, const std::string &title, const std::string &xtitle, const int binx, const int xmin, const int xmax)
void fillHist2D(const std::string &histName, double x, double y)
const TrigConf::L1Threshold * getThreshold()
std::vector< std::string > m_histAccept
CountingAlg(const std::string &name)
void setNumberOutputBits(unsigned int numberOutputBits)
data_t::const_iterator const_iterator
static size_t cTauMatching(const xAOD::eFexTauRoI &eTau, const xAOD::jFexTauRoIContainer &jTauRoIs)
static bool checkeTAUWP(const xAOD::eFexTauRoI &eTau, const TrigConf::L1Threshold_cTAU &thr)
static bool checkIsolationWP(const xAOD::eFexTauRoI &eTau, const xAOD::jFexTauRoI &jTau, const TrigConf::L1Threshold_cTAU &thr)
std::vector< std::string > m_histcTauPhiEta
cTauMultiplicity(const std::string &name)
std::shared_ptr< TrigConf::L1ThrExtraInfo_cTAU > m_extraInfo
std::vector< std::string > m_histcTauEtEta
std::vector< std::string > m_histcTauEt
virtual StatusCode processBitCorrect(const TCS::InputTOBArray &input, Count &count) override final
virtual StatusCode process(const TCS::InputTOBArray &input, Count &count) override final
std::vector< std::string > m_histcTauIsoMatchedPass
std::vector< std::string > m_histcTauIsoFraction
const TrigConf::L1Threshold_cTAU * m_threshold
virtual StatusCode initialize() override
unsigned int RCore() const
unsigned int EtIso() const
unsigned int RHad() const
static std::string wpToString(WP)
int iPhiTopo() const
Return phi index in the range used by L1Topo (0->127)
unsigned int tauOneThresholds() const
Tau Condition 1 (generic) results.
unsigned int etTOB() const
Cluster ET (TOB ET scale, 100 MeV/count)
float eta() const
setter for the above
int iEtaTopo() const
Getter for integer phi index (0-63)
unsigned int tauTwoThresholds() const
Tau Condition 2 (generic) results.
const std::string process
int count(std::string s, const std::string ®x)
count how many occurances of a regx are in a string
unsigned int toTopoPhi(float phi)
jFexTauRoIContainer_v1 jFexTauRoIContainer
jFexTauRoI_v1 jFexTauRoI
Define the latest version of the jFexSRJetRoI class.
eFexTauRoI_v1 eFexTauRoI
Define the latest version of the eFexTauRoI class.