![Logo](../../ATLAS-Logo-Square-Blue-RGB.png) |
ATLAS Offline Software
|
#include <TElectronEfficiencyCorrectionTool.h>
|
int | getHistograms () |
| Load all histograms from the input file(s) More...
|
|
int | setupHistogramsInFolder (const TObjArray &dirNameArray, int lastIdx) |
|
bool | setupUncorrToySyst (std::vector< std::vector< TH1 * >> &objs, std::vector< std::vector< TH1 * >> &sysObjs, std::vector< std::vector< HistArray >> &uncorrToyMCSyst) |
|
std::vector< HistArray > | buildToyMCTable (const std::vector< TH1 * > &sf, const std::vector< TH1 * > &eig, const std::vector< TH1 * > &stat, const std::vector< TH1 * > &uncorr, const std::vector< std::vector< TH1 * >> &corr) |
|
std::vector< TH2 * > | buildSingleToyMC (const TH2 *sf, const TH2 *stat, const TH2 *uncorr, const std::vector< TH1 * > &corr, int &randomCounter) |
|
TH2 * | buildSingleCombToyMC (const TH2 *sf, const TH2 *stat, const TH2 *uncorr, const std::vector< TH1 * > &corr, const int nSys, int &randomCounter) |
|
void | setupTempMapsHelper (TH1 *obj, std::vector< std::vector< TH1 * >> &objs, std::vector< std::vector< TH1 * >> &sysObjs, int &seenSystematics) |
|
int | setup (const std::vector< TH1 * > &hists, std::vector< HistArray > &histList, std::vector< unsigned int > &beginRunNumberList, std::vector< unsigned int > &endRunNumberList, const int runNumBegin, const int runNumEnd) const |
| Fill and interpret the setup, depending on which histograms are found in the input file(s) More...
|
|
void | initMessaging () const |
| Initialize our message level and MessageSvc. More...
|
|
◆ HistArray
◆ TElectronEfficiencyCorrectionTool()
TElectronEfficiencyCorrectionTool::TElectronEfficiencyCorrectionTool |
( |
const char * |
name = "TElectronEfficiencyCorrectionTool" | ) |
|
◆ ~TElectronEfficiencyCorrectionTool()
Root::TElectronEfficiencyCorrectionTool::~TElectronEfficiencyCorrectionTool |
( |
| ) |
|
|
default |
◆ addFileName()
void Root::TElectronEfficiencyCorrectionTool::addFileName |
( |
const std::string & |
val | ) |
|
|
inline |
This is more of an utility so the initialize is different wrt to an athena component.
Add an input file with the auxiliary measurement needed before we call initialize
Definition at line 66 of file TElectronEfficiencyCorrectionTool.h.
◆ bookCombToyMCScaleFactors()
void Root::TElectronEfficiencyCorrectionTool::bookCombToyMCScaleFactors |
( |
const int |
nToyMC | ) |
|
|
inline |
◆ bookToyMCScaleFactors()
void Root::TElectronEfficiencyCorrectionTool::bookToyMCScaleFactors |
( |
const int |
nToyMC | ) |
|
|
inline |
◆ buildSingleCombToyMC()
Definition at line 429 of file TElectronEfficiencyCorrectionTool.cxx.
438 ATH_MSG_DEBUG(
" (file: " << __FILE__ <<
", line: " << __LINE__ <<
")\n"
439 <<
"Entering function buildSingleCombToyMC");
442 const int nBins = (
stat->GetNbinsX() + 2) * (
stat->GetNbinsY() + 2);
445 std::vector<double> rnd(nSys, 0);
446 for (
int s = 0;
s < nSys; ++
s) {
456 double valAdd =
uncorr->GetBinContent(
bin);
462 for (
int s = 0;
s < nSys; ++
s) {
463 if (corr.at(
s) !=
nullptr) {
464 val +=
static_cast<TH2*
>(corr.at(
s))->GetBinContent(
bin) * rnd[
s];
469 tmpHist->SetDirectory(
nullptr);
◆ buildSingleToyMC()
std::vector< TH2 * > TElectronEfficiencyCorrectionTool::buildSingleToyMC |
( |
const TH2 * |
sf, |
|
|
const TH2 * |
stat, |
|
|
const TH2 * |
uncorr, |
|
|
const std::vector< TH1 * > & |
corr, |
|
|
int & |
randomCounter |
|
) |
| |
|
private |
Definition at line 389 of file TElectronEfficiencyCorrectionTool.cxx.
396 ATH_MSG_DEBUG(
" (file: " << __FILE__ <<
", line: " << __LINE__ <<
")! "
397 <<
"Entering function buildSingleToyMC");
398 std::vector<TH2*> tmpHists;
399 int nBins = (
stat->GetNbinsX() + 2) * (
stat->GetNbinsY() + 2);
401 for (
int toy = 0; toy <
m_nToyMC; toy++) {
402 tmpHists.push_back((
TH2*)corr.at(0)->Clone());
410 double valAdd =
uncorr->GetBinContent(
bin);
413 for (
int toy = 0; toy <
m_nToyMC; toy++) {
414 tmpHists.at(toy)->SetBinContent(
417 tmpHists.at(toy)->SetDirectory(
nullptr);
◆ buildToyMCTable()
Definition at line 476 of file TElectronEfficiencyCorrectionTool.cxx.
484 ATH_MSG_DEBUG(
" (file: " << __FILE__ <<
", line: " << __LINE__ <<
")\n"
485 <<
"Entering function buildToyMCTable");
488 int randomCounter(0);
489 std::vector<HistArray> tmpVec;
490 const int stat_entries =
stat.size();
492 for (
int toyMC = 0; toyMC <
m_nToyMC; toyMC++) {
494 for (
int i = 0;
i < stat_entries; ++
i) {
496 nSys = ((
TH1*)
eig.at(
i))->GetNbinsX() - 1;
512 tmpVec.emplace_back(std::move(tmpArray));
515 std::vector<std::vector<TH2*>> tmpVec2;
516 for (
int i = 0;
i < stat_entries; ++
i) {
517 nSys = ((
TH1*)
eig.at(
i))->GetNbinsX() - 1;
524 for (
int toy = 0; toy <
m_nToyMC; toy++) {
526 for (
auto&
i : tmpVec2) {
527 tmpArray.emplace_back(
i.at(toy));
529 tmpVec.emplace_back(std::move(tmpArray));
◆ calculate()
The main calculate method: dataType
PATCore::ParticleDataType::DataType (e.g DATA,FULL etc) @ runnumber the run number.
1st dimension of the stored measurements @ cluster_eta the cluster eta. 2nd dimension of the stored measurements @ electron et. third dimension of the stored measurments @ result struct filled with SF, Total uncertainty, Stat uncertainty, Uncorr uncertainty @ onlyTotal do only the "total" systematic returns 0 in failure
Toy production is controlled by internal flags set by the Asg Tool. As toys are special.
Definition at line 152 of file TElectronEfficiencyCorrectionTool.cxx.
167 int runnumberIndex = -1;
185 if (runnumberIndex < 0) {
197 const std::vector<HistArray>& sfVector = currentmap.at(
mapkey::sf);
203 if (sfVector.empty() || runnumberIndex >=
static_cast<int>(sfVector.size())) {
210 const HistArray& sfObjectArray = sfVector[runnumberIndex];
213 const int entries = edges.size();
219 double yValue(cluster_eta);
223 bool invalid =
false;
224 bool changedEt =
false;
229 const HistEdge& histEdge = edges[
i];
231 if (
et < histEdge.etMin) {
236 if (std::abs(yValue) >= histEdge.etaMax) {
241 if (std::abs(yValue) < histEdge.etaMin) {
251 if (
et > histEdge.etMax) {
252 if (histEdge.isLowPt) {
255 xValue = histEdge.etMax - 1000 ;
279 << yValue <<
" , et = " <<
et <<
" , run number = "
280 <<
runnumber <<
". Please check your input files!");
289 const HistEdge& currentEdge = edges[
index];
293 constexpr
double epsilon = 1
e-6;
294 if (currentEdge.etaMin >= (0 - epsilon)) {
295 yValue = std::abs(yValue);
298 const TH2* currentHist =
static_cast<TH2*
>(sfObjectArray[
index].get()) ;
299 const int globalBinNumber = currentHist->FindFixBin(xValue, yValue);
300 const double scaleFactor = currentHist->GetBinContent(globalBinNumber);
301 const double scaleFactorErr = currentHist->GetBinError(globalBinNumber);
306 result.Total = scaleFactorErr;
308 result.histBinNum = globalBinNumber;
318 double statErr = -999;
319 const std::vector<HistArray>& statVector = currentmap.at(
mapkey::stat);
320 if (!statVector.empty()) {
321 if (!statVector[runnumberIndex].
empty()) {
322 statErr =
static_cast<TH1*
>(statVector[runnumberIndex][
index].get())
323 ->GetBinContent(globalBinNumber);
330 double val = statErr;
331 const std::vector<HistArray>& uncorrVector = currentmap.at(
mapkey::uncorr);
332 if (!uncorrVector.empty()) {
333 if (!uncorrVector.at(runnumberIndex).empty()) {
334 const double valAdd =
335 static_cast<TH1*
>(uncorrVector[runnumberIndex][
index].get())
336 ->GetBinContent(globalBinNumber);
350 const std::vector<std::vector<HistArray>>& sysList =
352 if (sysList.size() >
static_cast<unsigned int>(
index)) {
353 if (sysList.at(
index).size() >
static_cast<unsigned int>(runnumberIndex)) {
354 const int sys_entries = sysList.at(
index).at(runnumberIndex).size();
355 for (
int sys = 0;
sys < sys_entries; ++
sys) {
357 static_cast<TH2*
>(sysList[
index][runnumberIndex][
sys].get())
358 ->GetBinContent(globalBinNumber);
368 const std::vector<std::vector<HistArray>>& toyMCList =
370 if (toyMCList.size() > (
unsigned int)runnumberIndex) {
371 for (
int toy = 0; toy <
m_nToyMC; ++toy) {
372 if (toyMCList[runnumberIndex][toy].
size() >
373 static_cast<unsigned int>(
index)) {
375 static_cast<TH2*
>(toyMCList[runnumberIndex][toy][
index].get())
376 ->GetBinContent(globalBinNumber);
◆ fillHistEdges()
void TElectronEfficiencyCorrectionTool::fillHistEdges |
( |
const std::vector< HistArray > & |
sfPerPeriodHist, |
|
|
std::vector< std::vector< HistEdge >> & |
sfPerPeriodEdges |
|
) |
| |
|
staticprivate |
Definition at line 922 of file TElectronEfficiencyCorrectionTool.cxx.
926 for (
const auto&
vec : sfPerPeriodHist) {
927 const size_t vecSize =
vec.size();
928 std::vector<HistEdge> periodVec;
929 periodVec.reserve(vecSize);
930 for (
size_t i = 0;
i < vecSize; ++
i) {
932 const auto*
const xAxis =
tmpHist->GetXaxis();
933 const auto* yAxis =
tmpHist->GetYaxis();
935 histEdge.etaMax = yAxis->GetXmax();
936 histEdge.etaMin = yAxis->GetXmin();
937 histEdge.etMax = xAxis->GetXmax();
938 histEdge.etMin = xAxis->GetXmin();
940 (std::strstr(
tmpHist->GetName(), LowPt_string) !=
nullptr);
942 periodVec.emplace_back(histEdge);
944 sfPerPeriodEdges.emplace_back(std::move(periodVec));
◆ getHistograms()
int TElectronEfficiencyCorrectionTool::getHistograms |
( |
| ) |
|
|
private |
Load all histograms from the input file(s)
Definition at line 579 of file TElectronEfficiencyCorrectionTool.cxx.
582 ATH_MSG_DEBUG(
" (file: " << __FILE__ <<
", line: " << __LINE__ <<
")\n"
583 <<
"Entering function getHistograms");
593 std::unique_ptr<TObjArray> myStringList(firstFileNameAndPath.Tokenize(
"/"));
594 int lastIdx = myStringList->GetLast();
595 TString
fileName = ((TObjString*)myStringList->At(lastIdx))->GetString();
596 std::unique_ptr<TObjArray> myFileNameTokensList(
fileName.Tokenize(
"."));
598 if (myFileNameTokensList->GetLast() < 3) {
608 const std::unique_ptr<char[]>
fname(gSystem->ExpandPathName(
ifile.c_str()));
609 std::unique_ptr<TFile>
rootFile(TFile::Open(
fname.get(),
"READ"));
616 TIter nextdir(
rootFile->GetListOfKeys());
618 TObject*
obj =
nullptr;
619 while ((
dir = (TKey*)nextdir())) {
621 if (
obj->IsA()->InheritsFrom(
"TDirectory")) {
623 std::unique_ptr<TObjArray> dirNameArray(
624 TString(
obj->GetName()).Tokenize(
"_"));
627 int lastIdx = dirNameArray->GetLast();
630 "The folder name seems to have the wrong format! Directory name:"
637 <<
dir->GetName() <<
"in file " <<
ifile);
641 ATH_MSG_ERROR(
"Wrong file content! Expected only Directories "
◆ getNbins()
int TElectronEfficiencyCorrectionTool::getNbins |
( |
std::map< float, std::vector< float >> & |
ptEta | ) |
const |
Helpers to get the binning of the uncertainties in a std::map (pt, eta)
Definition at line 538 of file TElectronEfficiencyCorrectionTool.cxx.
548 std::vector<float>
eta1;
552 for (
const auto& ikey : tmpVec) {
554 for (
const auto&
entries : ikey) {
558 int nbinsX = h_tmp->GetNbinsX();
559 int nbinsY = h_tmp->GetNbinsY();
561 for (
int biny = 1; biny <= nbinsY; ++biny) {
562 eta1.push_back(h_tmp->GetYaxis()->GetBinLowEdge(biny));
565 for (
int binx = 1; binx <= nbinsX; ++binx) {
566 pt_eta1[h_tmp->GetXaxis()->GetBinLowEdge(binx)] =
eta1;
570 for (
auto&
i : pt_eta1) {
571 nbinsTotal +=
i.second.size();
◆ getNSyst()
int Root::TElectronEfficiencyCorrectionTool::getNSyst |
( |
| ) |
const |
|
inline |
◆ initialize()
int TElectronEfficiencyCorrectionTool::initialize |
( |
| ) |
|
Initialize this class.
Definition at line 87 of file TElectronEfficiencyCorrectionTool.cxx.
97 <<
" configuration file(s)");
101 <<
" Only use one!");
112 const std::unique_ptr<char[]>
fname(
114 std::unique_ptr<TMD5> tmd = std::make_unique<TMD5>();
115 const char* tmd_as_string = tmd->FileChecksum(
fname.get())->AsString();
116 m_seed = *(
reinterpret_cast<const unsigned long int*
>(tmd_as_string));
127 ATH_MSG_ERROR(
" (file: " << __FILE__ <<
", line: " << __LINE__ <<
")\n"
128 <<
"! Problem when calling getHistograms()");
134 ATH_MSG_DEBUG(
" (file: " << __FILE__ <<
", line: " << __LINE__ <<
")\n"
135 <<
"Found " << nRunNumbersFast
136 <<
" run number ranges for fast sim with a total of "
138 <<
" scale factor histograms.");
140 ATH_MSG_DEBUG(
" (file: " << __FILE__ <<
", line: " << __LINE__ <<
")\n"
141 <<
"Found " << nRunNumbersFull
142 <<
" run number ranges for full sim with a total of "
144 <<
" scale factor histograms.");
◆ initMessaging()
void AthMessaging::initMessaging |
( |
| ) |
const |
|
privateinherited |
Initialize our message level and MessageSvc.
This method should only be called once.
Definition at line 39 of file AthMessaging.cxx.
◆ msg() [1/2]
MsgStream & asg::AsgMessaging::msg |
( |
| ) |
const |
|
inherited |
The standard message stream.
- Returns
- A reference to the default message stream of this object.
Definition at line 49 of file AsgMessaging.cxx.
50 #ifndef XAOD_STANDALONE
52 #else // not XAOD_STANDALONE
54 #endif // not XAOD_STANDALONE
◆ msg() [2/2]
MsgStream & asg::AsgMessaging::msg |
( |
const MSG::Level |
lvl | ) |
const |
|
inherited |
The standard message stream.
- Parameters
-
lvl | The message level to set the stream to |
- Returns
- A reference to the default message stream, set to level "lvl"
Definition at line 57 of file AsgMessaging.cxx.
58 #ifndef XAOD_STANDALONE
60 #else // not XAOD_STANDALONE
63 #endif // not XAOD_STANDALONE
◆ msgLvl()
bool asg::AsgMessaging::msgLvl |
( |
const MSG::Level |
lvl | ) |
const |
|
inherited |
Test the output level of the object.
- Parameters
-
lvl | The message level to test against |
- Returns
- boolean Indicting if messages at given level will be printed
-
true
If messages at level "lvl" will be printed
Definition at line 41 of file AsgMessaging.cxx.
42 #ifndef XAOD_STANDALONE
43 return ::AthMessaging::msgLvl( lvl );
44 #else // not XAOD_STANDALONE
45 return m_msg.msgLevel( lvl );
46 #endif // not XAOD_STANDALONE
◆ setLevel()
void AthMessaging::setLevel |
( |
MSG::Level |
lvl | ) |
|
|
inherited |
◆ setSeed()
void Root::TElectronEfficiencyCorrectionTool::setSeed |
( |
const unsigned long int |
seed | ) |
|
|
inline |
◆ setup()
int TElectronEfficiencyCorrectionTool::setup |
( |
const std::vector< TH1 * > & |
hists, |
|
|
std::vector< HistArray > & |
histList, |
|
|
std::vector< unsigned int > & |
beginRunNumberList, |
|
|
std::vector< unsigned int > & |
endRunNumberList, |
|
|
const int |
runNumBegin, |
|
|
const int |
runNumEnd |
|
) |
| const |
|
private |
Fill and interpret the setup, depending on which histograms are found in the input file(s)
Definition at line 883 of file TElectronEfficiencyCorrectionTool.cxx.
892 ATH_MSG_ERROR(
"! Could NOT find histogram with name *_sf in folder");
899 tmpHist->SetDirectory(
nullptr);
900 tmpArray.emplace_back(
tmpHist);
902 histList.emplace_back(std::move(tmpArray));
904 if (!beginRunNumberList.empty()) {
905 if (runNumBegin != (
int)beginRunNumberList.back()) {
906 beginRunNumberList.push_back(runNumBegin);
909 beginRunNumberList.push_back(runNumBegin);
911 if (!endRunNumberList.empty()) {
912 if (runNumEnd != (
int)endRunNumberList.back()) {
913 endRunNumberList.push_back(runNumEnd);
916 endRunNumberList.push_back(runNumEnd);
◆ setupHistogramsInFolder()
int TElectronEfficiencyCorrectionTool::setupHistogramsInFolder |
( |
const TObjArray & |
dirNameArray, |
|
|
int |
lastIdx |
|
) |
| |
|
private |
setup obj arrays at specific indices
Definition at line 655 of file TElectronEfficiencyCorrectionTool.cxx.
660 ATH_MSG_DEBUG(
" (file: " << __FILE__ <<
", line: " << __LINE__ <<
")\n"
661 <<
"Entering funtion setupHistogramsInFolder");
664 TString myBegRunNumString =
665 ((TObjString*)dirNameArray.At(lastIdx - 1))->GetString();
666 if (myBegRunNumString.IsDigit()) {
667 runNumBegin = myBegRunNumString.Atoi();
670 TString myEndRunNumString =
671 ((TObjString*)dirNameArray.At(lastIdx))->GetString();
672 if (myEndRunNumString.IsDigit()) {
673 runNumEnd = myEndRunNumString.Atoi();
675 if (runNumBegin < 0 || runNumEnd < 0 || runNumEnd < runNumBegin) {
676 ATH_MSG_ERROR(
" (file: " << __FILE__ <<
", line: " << __LINE__ <<
")\n"
677 <<
"Could NOT interpret the run number range: "
678 << runNumBegin <<
" - " << runNumEnd);
683 std::vector<std::vector<TH1*>> objsFull(
mapkey::end);
684 std::vector<std::vector<TH1*>> objsFast(
mapkey::end);
686 std::vector<std::vector<TH1*>> sysObjsFull;
687 std::vector<std::vector<TH1*>> sysObjsFast;
690 TObject*
obj =
nullptr;
691 int seenSystematics = 0;
693 while ((
key = (TKey*)nextkey())) {
695 if (
obj->IsA()->InheritsFrom(
"TH1")) {
698 if (std::strstr(
obj->GetName(),
"FullSim") !=
nullptr) {
700 static_cast<TH1*
>(
obj), objsFull, sysObjsFull, seenSystematics);
701 }
else if (std::strstr(
obj->GetName(),
"AtlFast") !=
nullptr) {
703 static_cast<TH1*
>(
obj), objsFast, sysObjsFast, seenSystematics);
706 <<
obj->GetName() <<
" is full or fast simulation!");
711 ATH_MSG_DEBUG(
" (file: " << __FILE__ <<
", line: " << __LINE__ <<
")\n"
712 <<
"Setting up histograms for Run range "
716 for (
int key : s_keys) {
717 if (!objsFull.at(
key).empty()) {
725 <<
" for full sim!");
729 if (!objsFast.at(
key).empty()) {
742 for (
unsigned int sys = 0;
sys < sysObjsFast.size();
sys++) {
749 ATH_MSG_ERROR(
"! Could NOT setup systematic histograms for fast sim");
754 for (
unsigned int sys = 0;
sys < sysObjsFull.size();
sys++) {
761 ATH_MSG_ERROR(
"! Could NOT setup systematic histograms for fast sim");
771 bool fullToysBooked =
773 bool fastToysBooked =
775 if (fullToysBooked || fastToysBooked) {
778 <<
" ToyMC systematics ");
782 <<
" combined ToyMC systematics ");
◆ setupTempMapsHelper()
void TElectronEfficiencyCorrectionTool::setupTempMapsHelper |
( |
TH1 * |
obj, |
|
|
std::vector< std::vector< TH1 * >> & |
objs, |
|
|
std::vector< std::vector< TH1 * >> & |
sysObjs, |
|
|
int & |
seenSystematics |
|
) |
| |
|
private |
Definition at line 793 of file TElectronEfficiencyCorrectionTool.cxx.
800 for (
int key : s_keys) {
801 if (TString(
obj->GetName())
807 const TString tmpName(
obj->GetName());
809 if (tmpName.EndsWith(
"_sys")) {
811 std::vector<TH1*> tmpArray;
813 tmpArray.emplace_back(
static_cast<TH1*
>(
obj->Clone()));
814 sysObjs.emplace_back(tmpArray);
818 if (tmpName.Contains(
"_corr")) {
826 if (tmpName.EndsWith(
"corr0")) {
828 std::vector<TH1*> tmpArray;
830 sysObjs.emplace_back(tmpArray);
838 sysObjs.back().emplace_back(
obj);
◆ setupUncorrToySyst()
bool TElectronEfficiencyCorrectionTool::setupUncorrToySyst |
( |
std::vector< std::vector< TH1 * >> & |
objs, |
|
|
std::vector< std::vector< TH1 * >> & |
sysObjs, |
|
|
std::vector< std::vector< HistArray >> & |
uncorrToyMCSyst |
|
) |
| |
|
private |
◆ ATLAS_THREAD_SAFE
std::atomic_flag m_initialized AthMessaging::ATLAS_THREAD_SAFE = ATOMIC_FLAG_INIT |
|
mutableprivateinherited |
◆ m_begRunNumberList
std::vector<unsigned int> Root::TElectronEfficiencyCorrectionTool::m_begRunNumberList |
|
private |
◆ m_begRunNumberListFastSim
std::vector<unsigned int> Root::TElectronEfficiencyCorrectionTool::m_begRunNumberListFastSim |
|
private |
◆ m_corrFileNameList
std::vector<std::string> Root::TElectronEfficiencyCorrectionTool::m_corrFileNameList |
|
private |
◆ m_doCombToyMC
bool Root::TElectronEfficiencyCorrectionTool::m_doCombToyMC |
|
private |
◆ m_doToyMC
bool Root::TElectronEfficiencyCorrectionTool::m_doToyMC |
|
private |
◆ m_endRunNumberList
std::vector<unsigned int> Root::TElectronEfficiencyCorrectionTool::m_endRunNumberList |
|
private |
◆ m_endRunNumberListFastSim
std::vector<unsigned int> Root::TElectronEfficiencyCorrectionTool::m_endRunNumberListFastSim |
|
private |
◆ m_fastHistEdges
std::vector<std::vector<HistEdge> > Root::TElectronEfficiencyCorrectionTool::m_fastHistEdges |
|
private |
◆ m_fastHistList
std::vector<std::vector<HistArray> > Root::TElectronEfficiencyCorrectionTool::m_fastHistList |
|
private |
◆ m_fastSysList
std::vector<std::vector<HistArray> > Root::TElectronEfficiencyCorrectionTool::m_fastSysList |
|
private |
◆ m_histEdges
std::vector<std::vector<HistEdge> > Root::TElectronEfficiencyCorrectionTool::m_histEdges |
|
private |
◆ m_histList
std::vector<std::vector<HistArray> > Root::TElectronEfficiencyCorrectionTool::m_histList |
|
private |
◆ m_imsg
std::atomic<IMessageSvc*> AthMessaging::m_imsg { nullptr } |
|
mutableprivateinherited |
◆ m_lvl
std::atomic<MSG::Level> AthMessaging::m_lvl { MSG::NIL } |
|
mutableprivateinherited |
◆ m_msg_tls
boost::thread_specific_ptr<MsgStream> AthMessaging::m_msg_tls |
|
mutableprivateinherited |
MsgStream instance (a std::cout like with print-out levels)
Definition at line 132 of file AthMessaging.h.
◆ m_nm
std::string AthMessaging::m_nm |
|
privateinherited |
◆ m_nSysMax
int Root::TElectronEfficiencyCorrectionTool::m_nSysMax |
|
private |
◆ m_nToyMC
int Root::TElectronEfficiencyCorrectionTool::m_nToyMC |
|
private |
◆ m_Rndm
TRandom3 Root::TElectronEfficiencyCorrectionTool::m_Rndm |
|
private |
◆ m_seed
unsigned long int Root::TElectronEfficiencyCorrectionTool::m_seed |
|
private |
◆ m_sysList
std::vector<std::vector<HistArray> > Root::TElectronEfficiencyCorrectionTool::m_sysList |
|
private |
◆ m_uncorrToyMCSystFast
std::vector<std::vector<HistArray> > Root::TElectronEfficiencyCorrectionTool::m_uncorrToyMCSystFast |
|
private |
◆ m_uncorrToyMCSystFull
std::vector<std::vector<HistArray> > Root::TElectronEfficiencyCorrectionTool::m_uncorrToyMCSystFull |
|
private |
The documentation for this class was generated from the following files:
std::atomic< MSG::Level > m_lvl
Current logging level.
Extra patterns decribing particle interation process.
const char * keytostring(int input)
setEt setPhi setE277 setWeta2 eta1
std::vector< size_t > vec
std::atomic< IMessageSvc * > m_imsg
MessageSvc pointer.
IMessageSvc * getMessageSvc(bool quiet=false)
def tmpHist(what, wmin=-1e10, wmax=+1e10)
Class mimicking the AthMessaging class from the offline software.
#define ATH_MSG_WARNING(x)
std::string m_nm
Message source name.