#include "AtlBTag.h"
#include <TString.h>
#include <iostream>
using namespace std;
static const char* fgTaggerNames[AtlBTag::kNumTaggers] = {
"IP2D",
"IP3D",
"SVInfoPlus",
"SV1",
"SV2",
"SV0",
"SV0InfoPlus",
"SoftMuonTag",
"JetProb",
"JetFitterTagNN",
"JetFitterCOMBNN",
"Baseline",
"MV1",
"MV1c",
"MV2c20",
"MV2c10_70",
"MV2c10_77",
"MV2c10_85",
};
AtlBTag::AtlBTag() {
fTagger = kInvalidTagger;
}
AtlBTag::AtlBTag(enum ETagger tagger, Double_t weight, Bool_t Valid)
: fTagger(tagger), fWeight(weight), fValid(Valid) {
fNTrk = 0;
fPb = 0.;
fPu = 0.;
fSecVtxMass = 0.;
fN1TrkSecVtx = 0;
fN2TrkSecVtx = 0;
fNManyTrkSecVtx = 0;
fGoodSecVtx = kFALSE;
fNGoodVtxTrk = 0;
fNGoodJetTrk = 0;
fEFrac = 0.;
fSignificance3d = 0.;
fDeltaPhi = 0.;
fDeltaEta = 0.;
}
AtlBTag::~AtlBTag() {
}
void AtlBTag::Clear(Option_t *option) {
fTagger = kInvalidTagger;
fWeight = 0.;
fValid = kFALSE;
fNTrk = 0;
fPb = 0.;
fPu = 0.;
fSecVtxMass = 0.;
fN1TrkSecVtx = 0;
fN2TrkSecVtx = 0;
fNManyTrkSecVtx = 0;
fGoodSecVtx = kFALSE;
fNGoodVtxTrk = 0;
fNGoodJetTrk = 0;
fEFrac = 0.;
fSignificance3d = 0.;
fDeltaPhi = 0.;
fDeltaEta = 0.;
}
const char* AtlBTag::GetTaggerName(ETagger tagger) {
return fgTaggerNames[tagger];
}
AtlBTag::ETagger AtlBTag::GetTaggerByName(const char *name) {
for ( Int_t i = 0; i < kNumTaggers; i++) {
if ( strcasecmp(fgTaggerNames[i], name ) == 0 )
return (ETagger)i;
}
return kInvalidTagger;
}
void AtlBTag::Print(Option_t *option) const {
if ( fTagger == kInvalidTagger ) return;
TString opt = option;
opt.ToLower();
if ( !opt.Contains("nohead") ) PrintHeader();
cout.setf(ios::showpoint | ios::fixed, ios::floatfield);
cout.precision(3);
cout.width(20); cout << GetName();
cout.width(12); cout << fWeight;
cout.width(6); cout << IsValid();
if ( fTagger == kIP2d || fTagger == kIP3d
|| fTagger == kSV1 || fTagger == kSV2 ) {
cout.width(7); cout << fPb;
cout.width(7); cout << fPu;
} else {
cout.width(7); cout << "---";
cout.width(7); cout << "---";
}
cout.width(13); cout << "---";
if ( fTagger == kIP2d || fTagger == kIP3d ) {
cout.width(6); cout << fNTrk;
} else {
cout.width(6); cout << "--";
}
cout << endl;
if ( !opt.Contains("nohead") ) PrintFooter();
}
void AtlBTag::PrintHeader() {
cout << "-----------------------------------------------------------------------" << endl
<< "B-Tagger Weight Valid Pb Pu Mass (GeV) NTrk" << endl
<< "-----------------------------------------------------------------------" << endl;
}
void AtlBTag::PrintFooter() {
cout << "-----------------------------------------------------------------------" << endl;
}