46 if (
m_tTST->m_bCreateControlPlots)
48 TH1F* hHist =
new TH1F(sName, sTitle, iBins, dXLow, dXUp);
49 hHist->SetDirectory(0);
72 std::map<std::string, std::string&>::iterator it =
m_mProperties.find(name);
74 throw std::runtime_error ((
"Undeclared property: " + name +
"\n").c_str());
81 std::pair<std::string, std::string&> p(name, loc);
88 std::map<std::string, std::string&>::iterator it =
m_mProperties.find(name);
90 throw std::runtime_error ((
"Undeclared property: " + name +
"\n").c_str());
108 hHist.Fill(xTau.
pt()/1000.);
115 "Selection of taus according to their transverse momentum" );
122 double pt = xTau.
pt() / 1000.;
124 if (
m_tTST->m_vPtRegion.size() == 1)
126 if ( pt >=
m_tTST->m_vPtRegion.at(0) )
132 unsigned int iNumPtRegion =
m_tTST->m_vPtRegion.size()/2;
133 for(
unsigned int iPtRegion = 0; iPtRegion < iNumPtRegion; iPtRegion++ )
135 if ( pt >=
m_tTST->m_vPtRegion.at(iPtRegion*2) and pt <= m_tTST->m_vPtRegion.at(iPtRegion*2+1))
141 m_tTST->msg() << MSG::VERBOSE <<
"Tau failed pt requirement, tau pt [GeV]: " << pt <<
endmsg;
157 hHist.Fill(xTau.
eta());
163 info.addCut(
"AbsEta",
164 "Selection of taus according to their absolute pseudorapidity" );
171 unsigned int iNumEtaRegion =
m_tTST->m_vAbsEtaRegion.size()/2;
172 for(
unsigned int iEtaRegion = 0; iEtaRegion < iNumEtaRegion; iEtaRegion++ )
174 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))
180 m_tTST->msg() << MSG::VERBOSE <<
"Tau failed eta requirement, tau eta: " << xTau.
eta() <<
endmsg;
196 hHist.Fill(xTau.
charge());
202 info.addCut(
"AbsCharge",
203 "Selection of taus according to their absolute charge" );
210 for(
unsigned int iCharge = 0; iCharge <
m_tTST->m_vAbsCharges.size(); iCharge++ )
212 if ( std::abs( xTau.
charge() ) ==
m_tTST->m_vAbsCharges.at(iCharge) )
218 m_tTST->msg() << MSG::VERBOSE <<
"Tau failed charge requirement, tau charge: " << xTau.
charge() <<
endmsg;
240 info.addCut(
"NTrack",
241 "Selection of taus according to their number of associated tracks" );
248 for(
size_t iNumTrack = 0; iNumTrack <
m_tTST->m_vNTracks.size(); iNumTrack++ )
250 if (
static_cast<unsigned> (xTau.
nTracks()) ==
m_tTST->m_vNTracks.at(iNumTrack) )
256 m_tTST->msg() << MSG::VERBOSE <<
"Tau failed nTracks requirement, tau number of tracks: " << xTau.
nTracks() <<
endmsg;
276 info.addCut(
"JetRNNScoreSigTrans",
277 "Selection of taus according to their JetRNNScore" );
285 unsigned int iNumJetRNNSigTransRegion =
m_tTST->m_vJetRNNSigTransRegion.size()/2;
286 for(
unsigned int iJetRNNSigTransRegion = 0; iJetRNNSigTransRegion < iNumJetRNNSigTransRegion; iJetRNNSigTransRegion++ )
288 if ( dJetRNNScoreSigTrans >=
m_tTST->m_vJetRNNSigTransRegion.at(iJetRNNSigTransRegion*2) and dJetRNNScoreSigTrans <= m_tTST->m_vJetRNNSigTransRegion.at(iJetRNNSigTransRegion*2+1))
294 m_tTST->msg() << MSG::VERBOSE <<
"Tau failed JetRNNScore requirement, tau JetRNNScore: " << dJetRNNScoreSigTrans <<
endmsg;
310 hHist.Fill(acc_GNTauScoreSigTrans(xTau));
315 info.addCut(
"GNTauScoreSigTrans",
316 "Selection of taus according to their GNTauScore" );
324 float dGNTauScoreSigTrans = acc(xTau);
325 unsigned int iNumGNTauSigTransRegion =
m_tTST->m_vGNTauSigTransRegion.size()/2;
326 for(
unsigned int iGNTauSigTransRegion = 0; iGNTauSigTransRegion < iNumGNTauSigTransRegion; iGNTauSigTransRegion++ )
328 if ( dGNTauScoreSigTrans >=
m_tTST->m_vGNTauSigTransRegion.at(iGNTauSigTransRegion*2) and dGNTauScoreSigTrans <= m_tTST->m_vGNTauSigTransRegion.at(iGNTauSigTransRegion*2+1))
334 m_tTST->msg() << MSG::VERBOSE <<
"Tau failed GNTauScore requirement, tau GNTauScore: " << dGNTauScoreSigTrans <<
endmsg;
357 m_hHistCut->GetXaxis()->SetBinLabel(1,
"!VeryLoose");
358 m_hHistCut->GetXaxis()->SetBinLabel(2,
"VeryLoose");
359 m_hHistCut->GetXaxis()->SetBinLabel(3,
"!Loose");
360 m_hHistCut->GetXaxis()->SetBinLabel(4,
"Loose");
361 m_hHistCut->GetXaxis()->SetBinLabel(5,
"!Medium");
362 m_hHistCut->GetXaxis()->SetBinLabel(6,
"Medium");
363 m_hHistCut->GetXaxis()->SetBinLabel(7,
"!Tight");
364 m_hHistCut->GetXaxis()->SetBinLabel(8,
"Tight");
375 hHist.Fill(acc_gnTauVeryLoose(xTau));
376 hHist.Fill(acc_gnTauLoose(xTau)+2);
377 hHist.Fill(acc_gnTauMedium(xTau)+4);
378 hHist.Fill(acc_gnTauTight(xTau)+6);
390 info.addCut(
"JetIDWP",
391 "Selection of taus according to their JetIDScore" );
399 switch (
m_tTST->m_iJetIDWP)
418 if (!acc_gnTauVeryLoose.
isAvailable(xTau))
m_tTST->msg() << MSG::WARNING <<
"GnTau VeryLoose WP not available" <<
endmsg;
419 else bPass = acc_gnTauVeryLoose(xTau);
423 if (!acc_gnTauLoose.
isAvailable(xTau))
m_tTST->msg() << MSG::WARNING <<
"GnTau Loose WP not available" <<
endmsg;
424 else bPass = acc_gnTauLoose(xTau);
428 if (!acc_gnTauMedium.
isAvailable(xTau))
m_tTST->msg() << MSG::WARNING <<
"GnTau Medium WP not available" <<
endmsg;
429 else bPass = acc_gnTauMedium(xTau);
433 if (!acc_gnTauTight.
isAvailable(xTau))
m_tTST->msg() << MSG::WARNING <<
"GnTau Tight WP not available" <<
endmsg;
434 else bPass = acc_gnTauTight(xTau);
437 m_tTST->msg() << MSG::WARNING <<
"The jet ID working point with the enum " <<
m_tTST->m_iJetIDWP <<
" is not available" <<
endmsg;
462 if(
m_tTST->m_iEleIDVersion!=0){
463 hHist.Fill(acc(xTau));
472 info.addCut(
"EleRNNScoreSigTrans",
473 "Selection of taus according to their EleRNNScoreSigTrans" );
480 float fEleRNNScoreSigTrans = 0.;
481 if(
m_tTST->m_iEleIDVersion!=0){
482 fEleRNNScoreSigTrans = acc(xTau);
486 unsigned int iNumEleRNNSigTransRegion =
m_tTST->m_vEleRNNSigTransRegion.size()/2;
487 for(
unsigned int iEleRNNSigTransRegion = 0; iEleRNNSigTransRegion < iNumEleRNNSigTransRegion; iEleRNNSigTransRegion++ )
489 if ( fEleRNNScoreSigTrans >=
m_tTST->m_vEleRNNSigTransRegion.at(iEleRNNSigTransRegion*2) and fEleRNNScoreSigTrans <= m_tTST->m_vEleRNNSigTransRegion.at(iEleRNNSigTransRegion*2+1))
495 m_tTST->msg() << MSG::VERBOSE <<
"Tau failed EleRNNScoreSigTrans requirement, tau EleRNNScoreSigTrans: " << fEleRNNScoreSigTrans <<
endmsg;
515 m_hHistCut->GetXaxis()->SetBinLabel(1,
"!Loose");
516 m_hHistCut->GetXaxis()->SetBinLabel(2,
"Loose");
517 m_hHistCut->GetXaxis()->SetBinLabel(3,
"!Medium");
518 m_hHistCut->GetXaxis()->SetBinLabel(4,
"Medium");
519 m_hHistCut->GetXaxis()->SetBinLabel(5,
"!Tight");
520 m_hHistCut->GetXaxis()->SetBinLabel(6,
"Tight");
526 if (
m_tTST->m_iEleIDVersion!=0){
530 hHist.Fill((accLoose(xTau) == 1));
531 hHist.Fill((accMedium(xTau) == 1)+2);
532 hHist.Fill((accTight(xTau) == 1)+4);
544 info.addCut(
"EleIDWP",
545 "Selection of taus according to their EleID working point" );
553 switch (
m_tTST->m_iEleIDWP)
562 if (
m_tTST->m_iEleIDVersion!=0){
564 if (accLoose(xTau) == 1)bPass =
true;
569 if (
m_tTST->m_iEleIDVersion!=0){
571 if (accMedium(xTau) == 1)bPass =
true;
576 if (
m_tTST->m_iEleIDVersion!=0){
578 if (accTight(xTau) == 1)bPass =
true;
583 m_tTST->msg() << MSG::WARNING <<
"The electron ID working point with the enum " <<
m_tTST->m_iEleIDWP <<
" is not available" <<
endmsg;
597 m_tTST->msg() << MSG::VERBOSE <<
"Tau failed EleID WP requirement" <<
endmsg;
615 m_hHistCut->GetXaxis()->SetBinLabel(1,
"!MuonOLR");
616 m_hHistCut->GetXaxis()->SetBinLabel(2,
"MuonOLR");
628 info.addCut(
"MuonOLR",
629 "Selection of taus according to their MuonOLR" );
650 if (!muonContainerHandle.
isValid()) {
651 m_tTST->msg() << MSG::ERROR <<
"Could not retrieve xAOD::MuonContainer with key " << muonContainerHandle.
key() <<
endmsg;
658 if(xMuon->pt() < 2000.)
continue;
659 if(xMuon->muonType() == xAOD::Muon::CaloTagged)
continue;
660 if(xMuon->p4().DeltaR( xTau.
p4() ) > 0.2 )
continue;
672 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".