41 if (
m_tTST->m_bCreateControlPlots)
43 auto hHist = std::make_unique<TH1F>(sName, sTitle, iBins, dXLow, dXUp);
44 hHist->SetDirectory(0);
67 std::map<std::string, std::string&>::iterator it =
m_mProperties.find(name);
69 throw std::runtime_error ((
"Undeclared property: " + name +
"\n").c_str());
76 std::pair<std::string, std::string&> p(name, loc);
83 std::map<std::string, std::string&>::iterator it =
m_mProperties.find(name);
85 throw std::runtime_error ((
"Undeclared property: " + name +
"\n").c_str());
103 hHist.Fill(xTau.
pt()/1000.);
110 "Selection of taus according to their transverse momentum" );
117 double pt = xTau.
pt() / 1000.;
119 if (
m_tTST->m_vPtRegion.size() == 1)
121 if ( pt >=
m_tTST->m_vPtRegion.at(0) )
127 unsigned int iNumPtRegion =
m_tTST->m_vPtRegion.size()/2;
128 for(
unsigned int iPtRegion = 0; iPtRegion < iNumPtRegion; iPtRegion++ )
130 if ( pt >=
m_tTST->m_vPtRegion.at(iPtRegion*2) and pt <= m_tTST->m_vPtRegion.at(iPtRegion*2+1))
136 m_tTST->msg() << MSG::VERBOSE <<
"Tau failed pt requirement, tau pt [GeV]: " << pt <<
endmsg;
152 hHist.Fill(xTau.
eta());
158 info.addCut(
"AbsEta",
159 "Selection of taus according to their absolute pseudorapidity" );
166 unsigned int iNumEtaRegion =
m_tTST->m_vAbsEtaRegion.size()/2;
167 for(
unsigned int iEtaRegion = 0; iEtaRegion < iNumEtaRegion; iEtaRegion++ )
169 if ( std::abs( xTau.
eta() ) >=
m_tTST->m_vAbsEtaRegion.at(iEtaRegion*2) and std::abs( xTau.
eta() ) <=
m_tTST->m_vAbsEtaRegion.at(iEtaRegion*2+1))
175 m_tTST->msg() << MSG::VERBOSE <<
"Tau failed eta requirement, tau eta: " << xTau.
eta() <<
endmsg;
191 hHist.Fill(xTau.
charge());
197 info.addCut(
"AbsCharge",
198 "Selection of taus according to their absolute charge" );
205 for(
unsigned int iCharge = 0; iCharge <
m_tTST->m_vAbsCharges.size(); iCharge++ )
207 if ( std::abs( xTau.
charge() ) ==
m_tTST->m_vAbsCharges.at(iCharge) )
213 m_tTST->msg() << MSG::VERBOSE <<
"Tau failed charge requirement, tau charge: " << xTau.
charge() <<
endmsg;
235 info.addCut(
"NTrack",
236 "Selection of taus according to their number of associated tracks" );
243 for(
size_t iNumTrack = 0; iNumTrack <
m_tTST->m_vNTracks.size(); iNumTrack++ )
245 if (
static_cast<unsigned> (xTau.
nTracks()) ==
m_tTST->m_vNTracks.at(iNumTrack) )
251 m_tTST->msg() << MSG::VERBOSE <<
"Tau failed nTracks requirement, tau number of tracks: " << xTau.
nTracks() <<
endmsg;
271 info.addCut(
"JetRNNScoreSigTrans",
272 "Selection of taus according to their JetRNNScore" );
280 unsigned int iNumJetRNNSigTransRegion =
m_tTST->m_vJetRNNSigTransRegion.size()/2;
281 for(
unsigned int iJetRNNSigTransRegion = 0; iJetRNNSigTransRegion < iNumJetRNNSigTransRegion; iJetRNNSigTransRegion++ )
283 if ( dJetRNNScoreSigTrans >=
m_tTST->m_vJetRNNSigTransRegion.at(iJetRNNSigTransRegion*2) and dJetRNNScoreSigTrans <= m_tTST->m_vJetRNNSigTransRegion.at(iJetRNNSigTransRegion*2+1))
289 m_tTST->msg() << MSG::VERBOSE <<
"Tau failed JetRNNScore requirement, tau JetRNNScore: " << dJetRNNScoreSigTrans <<
endmsg;
305 hHist.Fill(acc_GNTauScoreSigTrans(xTau));
310 info.addCut(
"GNTauScoreSigTrans",
311 "Selection of taus according to their GNTauScore" );
319 float dGNTauScoreSigTrans = acc(xTau);
320 unsigned int iNumGNTauSigTransRegion =
m_tTST->m_vGNTauSigTransRegion.size()/2;
321 for(
unsigned int iGNTauSigTransRegion = 0; iGNTauSigTransRegion < iNumGNTauSigTransRegion; iGNTauSigTransRegion++ )
323 if ( dGNTauScoreSigTrans >=
m_tTST->m_vGNTauSigTransRegion.at(iGNTauSigTransRegion*2) and dGNTauScoreSigTrans <= m_tTST->m_vGNTauSigTransRegion.at(iGNTauSigTransRegion*2+1))
329 m_tTST->msg() << MSG::VERBOSE <<
"Tau failed GNTauScore requirement, tau GNTauScore: " << dGNTauScoreSigTrans <<
endmsg;
352 m_hHistCut->GetXaxis()->SetBinLabel(1,
"!VeryLoose");
353 m_hHistCut->GetXaxis()->SetBinLabel(2,
"VeryLoose");
354 m_hHistCut->GetXaxis()->SetBinLabel(3,
"!Loose");
355 m_hHistCut->GetXaxis()->SetBinLabel(4,
"Loose");
356 m_hHistCut->GetXaxis()->SetBinLabel(5,
"!Medium");
357 m_hHistCut->GetXaxis()->SetBinLabel(6,
"Medium");
358 m_hHistCut->GetXaxis()->SetBinLabel(7,
"!Tight");
359 m_hHistCut->GetXaxis()->SetBinLabel(8,
"Tight");
370 hHist.Fill(acc_gnTauVeryLoose(xTau));
371 hHist.Fill(acc_gnTauLoose(xTau)+2);
372 hHist.Fill(acc_gnTauMedium(xTau)+4);
373 hHist.Fill(acc_gnTauTight(xTau)+6);
385 info.addCut(
"JetIDWP",
386 "Selection of taus according to their JetIDScore" );
394 switch (
m_tTST->m_iJetIDWP)
413 if (!acc_gnTauVeryLoose.
isAvailable(xTau))
m_tTST->msg() << MSG::WARNING <<
"GnTau VeryLoose WP not available" <<
endmsg;
414 else bPass = acc_gnTauVeryLoose(xTau);
418 if (!acc_gnTauLoose.
isAvailable(xTau))
m_tTST->msg() << MSG::WARNING <<
"GnTau Loose WP not available" <<
endmsg;
419 else bPass = acc_gnTauLoose(xTau);
423 if (!acc_gnTauMedium.
isAvailable(xTau))
m_tTST->msg() << MSG::WARNING <<
"GnTau Medium WP not available" <<
endmsg;
424 else bPass = acc_gnTauMedium(xTau);
428 if (!acc_gnTauTight.
isAvailable(xTau))
m_tTST->msg() << MSG::WARNING <<
"GnTau Tight WP not available" <<
endmsg;
429 else bPass = acc_gnTauTight(xTau);
432 m_tTST->msg() << MSG::WARNING <<
"The jet ID working point with the enum " <<
m_tTST->m_iJetIDWP <<
" is not available" <<
endmsg;
457 if(
m_tTST->m_iEleIDVersion!=0){
458 hHist.Fill(acc(xTau));
467 info.addCut(
"EleRNNScoreSigTrans",
468 "Selection of taus according to their EleRNNScoreSigTrans" );
475 float fEleRNNScoreSigTrans = 0.;
476 if(
m_tTST->m_iEleIDVersion!=0){
477 fEleRNNScoreSigTrans = acc(xTau);
481 unsigned int iNumEleRNNSigTransRegion =
m_tTST->m_vEleRNNSigTransRegion.size()/2;
482 for(
unsigned int iEleRNNSigTransRegion = 0; iEleRNNSigTransRegion < iNumEleRNNSigTransRegion; iEleRNNSigTransRegion++ )
484 if ( fEleRNNScoreSigTrans >=
m_tTST->m_vEleRNNSigTransRegion.at(iEleRNNSigTransRegion*2) and fEleRNNScoreSigTrans <= m_tTST->m_vEleRNNSigTransRegion.at(iEleRNNSigTransRegion*2+1))
490 m_tTST->msg() << MSG::VERBOSE <<
"Tau failed EleRNNScoreSigTrans requirement, tau EleRNNScoreSigTrans: " << fEleRNNScoreSigTrans <<
endmsg;
510 m_hHistCut->GetXaxis()->SetBinLabel(1,
"!Loose");
511 m_hHistCut->GetXaxis()->SetBinLabel(2,
"Loose");
512 m_hHistCut->GetXaxis()->SetBinLabel(3,
"!Medium");
513 m_hHistCut->GetXaxis()->SetBinLabel(4,
"Medium");
514 m_hHistCut->GetXaxis()->SetBinLabel(5,
"!Tight");
515 m_hHistCut->GetXaxis()->SetBinLabel(6,
"Tight");
521 if (
m_tTST->m_iEleIDVersion!=0){
525 hHist.Fill((accLoose(xTau) == 1));
526 hHist.Fill((accMedium(xTau) == 1)+2);
527 hHist.Fill((accTight(xTau) == 1)+4);
539 info.addCut(
"EleIDWP",
540 "Selection of taus according to their EleID working point" );
548 switch (
m_tTST->m_iEleIDWP)
557 if (
m_tTST->m_iEleIDVersion!=0){
559 if (accLoose(xTau) == 1)bPass =
true;
564 if (
m_tTST->m_iEleIDVersion!=0){
566 if (accMedium(xTau) == 1)bPass =
true;
571 if (
m_tTST->m_iEleIDVersion!=0){
573 if (accTight(xTau) == 1)bPass =
true;
578 m_tTST->msg() << MSG::WARNING <<
"The electron ID working point with the enum " <<
m_tTST->m_iEleIDWP <<
" is not available" <<
endmsg;
592 m_tTST->msg() << MSG::VERBOSE <<
"Tau failed EleID WP requirement" <<
endmsg;
610 m_hHistCut->GetXaxis()->SetBinLabel(1,
"!MuonOLR");
611 m_hHistCut->GetXaxis()->SetBinLabel(2,
"MuonOLR");
623 info.addCut(
"MuonOLR",
624 "Selection of taus according to their MuonOLR" );
645 if (!muonContainerHandle.
isValid()) {
646 m_tTST->msg() << MSG::ERROR <<
"Could not retrieve xAOD::MuonContainer with key " << muonContainerHandle.
key() <<
endmsg;
653 if(xMuon->pt() < 2000.)
continue;
654 if(xMuon->muonType() == xAOD::Muon::CaloTagged)
continue;
655 if(xMuon->p4().DeltaR( xTau.
p4() ) > 0.2 )
continue;
667 m_tTST->msg() << MSG::VERBOSE <<
"Tau failed MuonOLR requirement" <<
endmsg;
Helper class to provide constant type-safe access to aux data.
xAOD::MuonContainer * muonContainer
Helper class to provide constant type-safe access to aux data.
bool isAvailable(const ELT &e) const
Test to see if this variable exists in the store.
virtual bool isValid() override final
Can the handle be successfully dereferenced?
const_pointer_type cptr()
Dereference the pointer.
virtual const std::string & key() const override final
Return the StoreGate ID for the referenced object.
void setCutResult(const std::string &cutName, bool cutResult)
Set the result of a cut, based on the cut name (safer)
virtual FourMom_t p4() const
The full 4-momentum of the particle.
virtual double pt() const
The transverse momentum ( ) of the particle.
double discriminant(TauJetParameters::TauID discID) const
Get value of discriminant.
bool isTau(TauJetParameters::IsTauFlag flag) const
Get Flag for tau acceptance based on predefined arbitrary criteria.
virtual double eta() const
The pseudorapidity ( ) of the particle.
size_t nTracks(TauJetParameters::TauTrackFlag flag=TauJetParameters::TauTrackFlag::classifiedCharged) const
@ RNNEleScoreSigTrans
RNN score which is signal transformed/flattened.
@ RNNJetScoreSigTrans
RNN score which is signal transformed/flattened.
TauJet_v3 TauJet
Definition of the current "tau version".
MuonContainer_v1 MuonContainer
Definition of the current "Muon container version".