// <a href="https://twiki.cern.ch/twiki/bin/view/AtlasProtected/TauWG">
// https://twiki.cern.ch/twiki/bin/view/AtlasProtected/TauWG</a>
// END_HTML
#ifndef ATLAS_AtlTau
#include <AtlTau.h>
#endif
#include <TSystem.h>
#include <iostream>
using namespace std;
#ifndef __CINT__
ClassImp(AtlTau);
#endif
const Int_t AtlTau::fgNAuthors = 3;
const char* AtlTau::fgAuthorNames[] = {
"Invalid", "TauRec", "Tau1P3P"
};
const Int_t AtlTau::fgNTauFlags = 20;
const char* AtlTau::fgTauFlagNames[] = {
"Invalid", "TauCutLoose", "TauCutMedium", "TauCutTight",
"ElectronVeto", "MuonVeto", "TauLlhTight", "TauLlhMedium",
"TauLlhLoose", "TauRecOld", "Tau1P3POld", "TauCutSafeLoose",
"TauCutSafeMedium", "TauCutSafeTight", "TauCutSafeCaloLoose",
"TauCutSafeCaloMedium", "TauCutSafeCaloTight", "ElectronVetoLoose",
"ElectronVetoMedium", "ElectronVetoTight"
};
AtlTau::AtlTau() {
}
AtlTau::AtlTau(Int_t Id, Float_t Px, Float_t Py, Float_t Pz,
Float_t E, Bool_t IsTauPlus,
EAuthor Author, ETauFlag TauFlag):
HepTau(Id, Px, Py, Pz, E, IsTauPlus), fAuthor(Author),
fTauFlag(TauFlag) {
}
AtlTau::~AtlTau() {
}
void AtlTau::Clear(Option_t *option) {
HepTau::Clear(option);
AtlTriggerMatch::Clear(option);
fAuthor = kInvalidAuthor;
fTauFlag = kInvalidTauFlag;
}
void AtlTau::Print(Option_t *option) {
TString opt = option;
opt.ToLower();
if ( !opt.Contains("nohead") ) PrintHeader();
cout.setf(ios::showpoint | ios::fixed, ios::floatfield);
cout.precision(3);
cout.width(4); cout << fId;
cout.width(3); cout << (( IsPositive() ) ? "+" : "-");
cout.width(12); cout << Pt();
cout.width(12); cout << E();
cout.precision(6);
cout.width(12); cout << M("REC");
cout.precision(3);
cout.width(12);
cout.width(12); cout << Theta()*180/TMath::Pi();
cout.width(12); cout << Phi()*180/TMath::Pi();
cout.width(12); cout << Eta();
cout.width(14);
cout << NameOfAuthor();
cout << endl;
if ( opt.Contains("flag") ) PrintTauFlag();
if ( !opt.Contains("nohead") ) PrintFooter();
}
void AtlTau::PrintHeader() {
cout << "------------------------------------------------------------------------------------------------"
<< endl
<< " Id Chg Pt E Minv Theta Phi Eta Author "
<< endl
<< "------------------------------------------------------------------------------------------------"
<< endl;
}
void AtlTau::PrintFooter() {
cout << "------------------------------------------------------------------------------------------------"
<< endl;
}
const char* AtlTau::NameOfAuthor() {
TString author("");
if ( IsInvalidAuthor() ) {
if ( author.Length() > 0 ) author.Append(",");
author.Append("invalid");
}
if ( IsTauRec() ) {
if ( author.Length() > 0 ) author.Append(",");
author.Append("rec");
}
if ( IsTau1P3P() ) {
if ( author.Length() > 0 ) author.Append(",");
author.Append("1P3P");
}
return author.Data();
}
void AtlTau::PrintTauFlag() {
cout << endl
<< "==========================" << endl
<< " Tau reconstruction" << endl
<< "--------------------------" << endl
<< "Invalid " << IsInvalidTauFlag() << endl
<< "MuonVeto " << IsMuonVeto() << endl
<< "ElectronVetoLoose " << IsElectronVetoLoose() << endl
<< "ElectronVetoMedium " << IsElectronVetoMedium() << endl
<< "ElectronVetoTight " << IsElectronVetoTight() << endl
<< "JetVetoLoose " << IsJetVetoLoose() << endl
<< "JetVetoMedium " << IsJetVetoMedium() << endl
<< "JetVetoTight " << IsJetVetoTight() << endl
<< "==========================" << endl << endl;
}