|  | ATLAS Offline Software
    | 
 
 
 
#include <TElectronEfficiencyCorrectionTool.h>
|  | 
| using | HistArray = std::vector< std::unique_ptr< TH1 > > | 
|  | 
|  | 
| 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 TH1 *sf, const TH1 *stat, const TH1 *uncorr, const std::vector< TH1 * > &corr, int &randomCounter) | 
|  | 
| TH2 * | buildSingleCombToyMC (const TH1 *sf, const TH1 *stat, const TH1 *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()
  
  | 
        
          | TH2 * TElectronEfficiencyCorrectionTool::buildSingleCombToyMC | ( | const TH1 * | sf, |  
          |  |  | const TH1 * | stat, |  
          |  |  | const TH1 * | uncorr, |  
          |  |  | const std::vector< TH1 * > & | corr, |  
          |  |  | const int | nSys, |  
          |  |  | int & | randomCounter |  
          |  | ) |  |  |  | private | 
 
Definition at line 437 of file TElectronEfficiencyCorrectionTool.cxx.
  446   ATH_MSG_DEBUG(
" (file: " << __FILE__ << 
", line: " << __LINE__ << 
")\n" 
  447                            << 
"Entering function buildSingleCombToyMC");
 
  450   const int nBins = (
stat->GetNbinsX() + 2) * (
stat->GetNbinsY() + 2);
 
  451   tmpHist = (TH2*)corr.at(0)->Clone();
 
  453   std::vector<double> rnd(nSys, 0);
 
  454   for (
int s = 0; 
s < nSys; ++
s) {
 
  464       double valAdd = 
uncorr->GetBinContent(
bin);
 
  470     for (
int s = 0; 
s < nSys; ++
s) {
 
  471       if (corr.at(
s) != 
nullptr) {
 
  472         val += 
static_cast<TH2*
>(corr.at(
s))->GetBinContent(
bin) * rnd[
s];
 
  477   tmpHist->SetDirectory(
nullptr);
 
 
 
 
◆ buildSingleToyMC()
  
  | 
        
          | std::vector< TH2 * > TElectronEfficiencyCorrectionTool::buildSingleToyMC | ( | const TH1 * | sf, |  
          |  |  | const TH1 * | stat, |  
          |  |  | const TH1 * | uncorr, |  
          |  |  | const std::vector< TH1 * > & | corr, |  
          |  |  | int & | randomCounter |  
          |  | ) |  |  |  | private | 
 
Definition at line 397 of file TElectronEfficiencyCorrectionTool.cxx.
  404   ATH_MSG_DEBUG(
" (file: " << __FILE__ << 
", line: " << __LINE__ << 
")! " 
  405                            << 
"Entering function buildSingleToyMC");
 
  406   std::vector<TH2*> tmpHists;
 
  407   int nBins = (
stat->GetNbinsX() + 2) * (
stat->GetNbinsY() + 2);
 
  409   for (
int toy = 0; toy < 
m_nToyMC; toy++) {
 
  410     tmpHists.push_back((TH2*)corr.at(0)->Clone());
 
  418       double valAdd = 
uncorr->GetBinContent(
bin);
 
  421     for (
int toy = 0; toy < 
m_nToyMC; toy++) {
 
  422       tmpHists.at(toy)->SetBinContent(
 
  425       tmpHists.at(toy)->SetDirectory(
nullptr);
 
 
 
 
◆ buildToyMCTable()
Definition at line 484 of file TElectronEfficiencyCorrectionTool.cxx.
  492   ATH_MSG_DEBUG(
" (file: " << __FILE__ << 
", line: " << __LINE__ << 
")\n" 
  493                            << 
"Entering function buildToyMCTable");
 
  496   int randomCounter(0);
 
  497   std::vector<HistArray> tmpVec;
 
  498   const int stat_entries = 
stat.size();
 
  500     for (
int toyMC = 0; toyMC < 
m_nToyMC; toyMC++) {
 
  502       for (
int i = 0; 
i < stat_entries; ++
i) {
 
  504           nSys = (
eig.at(
i))->GetNbinsX() - 1;
 
  520       tmpVec.emplace_back(std::move(tmpArray));
 
  523     std::vector<std::vector<TH2*>> tmpVec2;
 
  524     for (
int i = 0; 
i < stat_entries; ++
i) {
 
  525       nSys = (
eig.at(
i))->GetNbinsX() - 1;
 
  532     for (
int toy = 0; toy < 
m_nToyMC; toy++) {
 
  534       for (
auto& 
i : tmpVec2) {
 
  535         tmpArray.emplace_back(
i.at(toy));
 
  537       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 160 of file TElectronEfficiencyCorrectionTool.cxx.
  175   int runnumberIndex = -1;
 
  193   if (runnumberIndex < 0) {
 
  205   const std::vector<HistArray>& sfVector = currentmap.at(
mapkey::sf);
 
  211   if (sfVector.empty() || runnumberIndex >= 
static_cast<int>(sfVector.size())) {
 
  218   const HistArray& sfObjectArray = sfVector[runnumberIndex];
 
  221   const int entries = edges.size();
 
  227   double yValue(cluster_eta);
 
  231   bool invalid = 
false;
 
  232   bool changedEt = 
false;
 
  237     const HistEdge& histEdge = edges[
i];
 
  239     if (
et < histEdge.etMin) {
 
  244     if (std::abs(yValue) >= histEdge.etaMax) {
 
  249     if (std::abs(yValue) < histEdge.etaMin) {
 
  259     if (
et > histEdge.etMax) {
 
  260       if (histEdge.isLowPt) {
 
  263         xValue = histEdge.etMax - 1000 ; 
 
  287                     << yValue << 
" , et = " << 
et << 
" , run number = " 
  288                     << 
runnumber << 
". Please check your input files!");
 
  297   const HistEdge& currentEdge = edges[
index];
 
  302   if (currentEdge.etaMin >= (0 - 
epsilon)) {
 
  303     yValue = std::abs(yValue);
 
  306   const TH2* currentHist = 
static_cast<TH2*
>(sfObjectArray[
index].get()) ;
 
  307   const int globalBinNumber = currentHist->FindFixBin(xValue, yValue);
 
  308   const double scaleFactor = currentHist->GetBinContent(globalBinNumber);
 
  309   const double scaleFactorErr = currentHist->GetBinError(globalBinNumber);
 
  314   result.Total = scaleFactorErr;
 
  316   result.histBinNum = globalBinNumber;
 
  326   double statErr = -999;
 
  327   const std::vector<HistArray>& statVector = currentmap.at(
mapkey::stat);
 
  328   if (!statVector.empty()) {
 
  329     if (!statVector[runnumberIndex].
empty()) {
 
  330       statErr = 
static_cast<TH1*
>(statVector[runnumberIndex][
index].get())
 
  331                   ->GetBinContent(globalBinNumber);
 
  338   double val = statErr;
 
  339   const std::vector<HistArray>& uncorrVector = currentmap.at(
mapkey::uncorr);
 
  340   if (!uncorrVector.empty()) {
 
  341     if (!uncorrVector.at(runnumberIndex).empty()) {
 
  342       const double valAdd =
 
  343         static_cast<TH1*
>(uncorrVector[runnumberIndex][
index].get())
 
  344           ->GetBinContent(globalBinNumber);
 
  358   const std::vector<std::vector<HistArray>>& sysList =
 
  360   if (sysList.size() > 
static_cast<unsigned int>(
index)) {
 
  361     if (sysList.at(
index).size() > 
static_cast<unsigned int>(runnumberIndex)) {
 
  362       const int sys_entries = sysList.at(
index).at(runnumberIndex).size();
 
  363       for (
int sys = 0; 
sys < sys_entries; ++
sys) {
 
  365             static_cast<TH2*
>(sysList[
index][runnumberIndex][
sys].get())
 
  366                 ->GetBinContent(globalBinNumber);
 
  376     const std::vector<std::vector<HistArray>>& toyMCList =
 
  378     if (toyMCList.size() > (
unsigned int)runnumberIndex) {
 
  379       for (
int toy = 0; toy < 
m_nToyMC; ++toy) {
 
  380         if (toyMCList[runnumberIndex][toy].
size() >
 
  381             static_cast<unsigned int>(
index)) {
 
  383               static_cast<TH2*
>(toyMCList[runnumberIndex][toy][
index].get())
 
  384                   ->GetBinContent(globalBinNumber);
 
 
 
 
◆ fillHistEdges()
  
  | 
        
          | void TElectronEfficiencyCorrectionTool::fillHistEdges | ( | const std::vector< HistArray > & | sfPerPeriodHist, |  
          |  |  | std::vector< std::vector< HistEdge >> & | sfPerPeriodEdges |  
          |  | ) |  |  |  | staticprivate | 
 
Definition at line 930 of file TElectronEfficiencyCorrectionTool.cxx.
  934   for (
const auto& 
vec : sfPerPeriodHist) {
 
  935     const size_t vecSize = 
vec.size();
 
  936     std::vector<HistEdge> periodVec;
 
  937     periodVec.reserve(vecSize);
 
  938     for (
size_t i = 0; 
i < vecSize; ++
i) {
 
  939       const auto* 
tmpHist = 
static_cast<TH2*
>(
vec[
i].get());
 
  940       const auto* 
const xAxis = 
tmpHist->GetXaxis();
 
  941       const auto* yAxis = 
tmpHist->GetYaxis();
 
  943       histEdge.etaMax = yAxis->GetXmax();
 
  944       histEdge.etaMin = yAxis->GetXmin();
 
  945       histEdge.etMax = xAxis->GetXmax();
 
  946       histEdge.etMin = xAxis->GetXmin();
 
  948           (std::strstr(
tmpHist->GetName(), LowPt_string) != 
nullptr);
 
  950       periodVec.emplace_back(histEdge);
 
  952     sfPerPeriodEdges.emplace_back(std::move(periodVec));
 
 
 
 
◆ getHistograms()
  
  | 
        
          | int TElectronEfficiencyCorrectionTool::getHistograms | ( |  | ) |  |  | private | 
 
Load all histograms from the input file(s) 
Definition at line 587 of file TElectronEfficiencyCorrectionTool.cxx.
  590   ATH_MSG_DEBUG(
" (file: " << __FILE__ << 
", line: " << __LINE__ << 
")\n" 
  591                            << 
"Entering function getHistograms");
 
  601     std::unique_ptr<TObjArray> myStringList(firstFileNameAndPath.Tokenize(
"/"));
 
  602     int lastIdx = myStringList->GetLast();
 
  603     TString 
fileName = ((TObjString*)myStringList->At(lastIdx))->GetString();
 
  604     std::unique_ptr<TObjArray> myFileNameTokensList(
fileName.Tokenize(
"."));
 
  606     if (myFileNameTokensList->GetLast() < 3) {
 
  616     const std::unique_ptr<char[]> 
fname(gSystem->ExpandPathName(
ifile.c_str()));
 
  617     std::unique_ptr<TFile> 
rootFile(TFile::Open(
fname.get(), 
"READ"));
 
  624     TIter nextdir(
rootFile->GetListOfKeys());
 
  626     TObject* 
obj = 
nullptr;
 
  627     while ((
dir = (TKey*)nextdir())) {
 
  629       if (
obj->IsA()->InheritsFrom(
"TDirectory")) {
 
  631         std::unique_ptr<TObjArray> dirNameArray(
 
  632           TString(
obj->GetName()).Tokenize(
"_"));
 
  635         int lastIdx = dirNameArray->GetLast();
 
  638             "The folder name seems to have the wrong format! Directory name:" 
  645                         << 
dir->GetName() << 
"in file " << 
ifile);
 
  649         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 546 of file TElectronEfficiencyCorrectionTool.cxx.
  556   std::vector<float> 
eta1;
 
  560   for (
const auto& ikey : tmpVec) {
 
  562     for (
const auto& 
entries : ikey) {
 
  565       TH2* h_tmp = ((TH2*)
entries.get());
 
  566       int nbinsX = h_tmp->GetNbinsX();
 
  567       int nbinsY = h_tmp->GetNbinsY();
 
  569       for (
int biny = 1; biny <= nbinsY; ++biny) {
 
  570         eta1.push_back(h_tmp->GetYaxis()->GetBinLowEdge(biny));
 
  573       for (
int binx = 1; binx <= nbinsX; ++binx) {
 
  574         pt_eta1[h_tmp->GetXaxis()->GetBinLowEdge(binx)] = 
eta1;
 
  578   for (
auto& 
i : pt_eta1) {
 
  579     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 
- 
trueIf 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 891 of file TElectronEfficiencyCorrectionTool.cxx.
  900     ATH_MSG_ERROR(
"! Could NOT find histogram with name *_sf in folder");
 
  907     tmpHist->SetDirectory(
nullptr);
 
  908     tmpArray.emplace_back(
tmpHist);
 
  910   histList.emplace_back(std::move(tmpArray));
 
  912   if (!beginRunNumberList.empty()) {
 
  913     if (runNumBegin != (
int)beginRunNumberList.back()) {
 
  914       beginRunNumberList.push_back(runNumBegin);
 
  917     beginRunNumberList.push_back(runNumBegin);
 
  919   if (!endRunNumberList.empty()) {
 
  920     if (runNumEnd != (
int)endRunNumberList.back()) {
 
  921       endRunNumberList.push_back(runNumEnd);
 
  924     endRunNumberList.push_back(runNumEnd);
 
 
 
 
◆ setupHistogramsInFolder()
  
  | 
        
          | int TElectronEfficiencyCorrectionTool::setupHistogramsInFolder | ( | const TObjArray & | dirNameArray, |  
          |  |  | int | lastIdx |  
          |  | ) |  |  |  | private | 
 
setup obj arrays at specific indices
Definition at line 663 of file TElectronEfficiencyCorrectionTool.cxx.
  668   ATH_MSG_DEBUG(
" (file: " << __FILE__ << 
", line: " << __LINE__ << 
")\n" 
  669                            << 
"Entering funtion setupHistogramsInFolder");
 
  672   TString myBegRunNumString =
 
  673     ((TObjString*)dirNameArray.At(lastIdx - 1))->GetString();
 
  674   if (myBegRunNumString.IsDigit()) {
 
  675     runNumBegin = myBegRunNumString.Atoi();
 
  678   TString myEndRunNumString =
 
  679     ((TObjString*)dirNameArray.At(lastIdx))->GetString();
 
  680   if (myEndRunNumString.IsDigit()) {
 
  681     runNumEnd = myEndRunNumString.Atoi();
 
  683   if (runNumBegin < 0 || runNumEnd < 0 || runNumEnd < runNumBegin) {
 
  684     ATH_MSG_ERROR(
" (file: " << __FILE__ << 
", line: " << __LINE__ << 
")\n" 
  685                              << 
"Could NOT interpret the run number range: " 
  686                              << runNumBegin << 
" - " << runNumEnd);
 
  691   std::vector<std::vector<TH1*>> objsFull(
mapkey::end);
 
  692   std::vector<std::vector<TH1*>> objsFast(
mapkey::end);
 
  694   std::vector<std::vector<TH1*>> sysObjsFull;
 
  695   std::vector<std::vector<TH1*>> sysObjsFast;
 
  698   TObject* 
obj = 
nullptr;
 
  699   int seenSystematics = 0;
 
  701   while ((
key = (TKey*)nextkey())) {
 
  703     if (
obj->IsA()->InheritsFrom(
"TH1")) {
 
  706       if (std::strstr(
obj->GetName(), 
"FullSim") != 
nullptr) {
 
  708           static_cast<TH1*
>(
obj), objsFull, sysObjsFull, seenSystematics);
 
  709       } 
else if (std::strstr(
obj->GetName(), 
"AtlFast") != 
nullptr) {
 
  711           static_cast<TH1*
>(
obj), objsFast, sysObjsFast, seenSystematics);
 
  714                       << 
obj->GetName() << 
" is full or fast simulation!");
 
  719   ATH_MSG_DEBUG(
" (file: " << __FILE__ << 
", line: " << __LINE__ << 
")\n" 
  720                            << 
"Setting up histograms for Run range  " 
  724   for (
int key : s_keys) {
 
  725     if (!objsFull.at(
key).empty()) {
 
  733                                                      << 
" for full sim!");
 
  737     if (!objsFast.at(
key).empty()) {
 
  750   for (
unsigned int sys = 0; 
sys < sysObjsFast.size(); 
sys++) {
 
  757       ATH_MSG_ERROR(
"! Could NOT setup systematic histograms for fast sim");
 
  762   for (
unsigned int sys = 0; 
sys < sysObjsFull.size(); 
sys++) {
 
  769       ATH_MSG_ERROR(
"! Could NOT setup systematic histograms for fast sim");
 
  779     bool fullToysBooked =
 
  781     bool fastToysBooked =
 
  783     if (fullToysBooked || fastToysBooked) {
 
  786                                             << 
" ToyMC systematics ");
 
  790                                             << 
" 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 801 of file TElectronEfficiencyCorrectionTool.cxx.
  808   for (
int key : s_keys) {
 
  809     if (TString(
obj->GetName())
 
  815   const TString tmpName(
obj->GetName());
 
  817   if (tmpName.EndsWith(
"_sys")) {
 
  819     std::vector<TH1*> tmpArray;
 
  821     tmpArray.emplace_back(
static_cast<TH1*
>(
obj->Clone()));
 
  822     sysObjs.emplace_back(tmpArray);
 
  826   if (tmpName.Contains(
"_corr")) {
 
  834     if (tmpName.EndsWith(
"corr0")) {
 
  836       std::vector<TH1*> tmpArray;
 
  838       sysObjs.emplace_back(tmpArray);
 
  846     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 | 
 
 
◆ uncorrEmpty()
◆ 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.
bool empty() const noexcept
#define ATH_MSG_WARNING(x)
std::string m_nm
Message source name.