16 std::unique_ptr<AtTPCXSManager> AtTPCXSManager::fInstance = 
nullptr;
 
   20    if (fInstance == 
nullptr)
 
   21       fInstance = std::make_unique<concrete_AtTPCXSManager>();
 
   22    return fInstance.get();
 
   27    fExFunctionFile = filename;
 
   29    file.exceptions(std::ifstream::failbit | std::ifstream::badbit);
 
   32       file.open(fExFunctionFile);
 
   41       Float_t ERangeDown = 0;
 
   42       Float_t ARangeDown = 0;
 
   47       std::getline(file, line);
 
   48       std::cout << line << 
"\n";
 
   49       std::getline(file, line);
 
   50       std::istringstream isheader(line);
 
   51       isheader >> Ebinsize >> Abinsize >> ERangeUp >> ERangeDown >> ARangeUp >> ARangeDown >> XSTot;
 
   52       std::cout << 
" Energy bin size : " << Ebinsize << 
" - Angular bin size : " << Abinsize
 
   53                 << 
" - Energy range Up : " << ERangeUp << 
" - Energy range down :" << ERangeDown
 
   54                 << 
" - Angular range Up : " << ARangeUp << 
" - Angular range Down : " << ARangeDown
 
   55                 << 
" - Total cross section : " << XSTot << 
"\n";
 
   57       auto nEbins = 
static_cast<Int_t
>(((ERangeUp + 0.000001) - ERangeDown) / Ebinsize);
 
   58       auto nAbins = 
static_cast<Int_t
>(((ARangeUp + 0.000001) - ARangeDown) / Abinsize);
 
   60       std::cout << 
" Number of energy - angle bins : " << nEbins << 
" - " << nAbins << 
"\n";
 
   62       fExFunction = std::make_shared<TH2F>(
"fExFunction", 
"fExFunction", nEbins + 1, ERangeDown - Ebinsize / 2.0,
 
   63                                            ERangeUp + Ebinsize / 2.0, nAbins + 1, ARangeDown - Abinsize / 2.0,
 
   64                                            ARangeUp + Abinsize / 2.0);
 
   68          std::getline(file, line);
 
   70          Float_t ecm, acm, xs, ph; 
 
   73          std::istringstream isxs(line);
 
   75          isxs >> ecm >> xs >> acm >> ph;
 
   77          std::cout << 
" Energy cm (MeV) : " << ecm << 
" - Cross section (mb/sr or mb) : " << xs
 
   78                    << 
" - Angle cm (deg) : " << acm << 
" - Place holder : " << ph << 
"\n";
 
   80          Int_t bin = fExFunction->Fill(ecm, acm, xs);
 
   81          std::cout << 
" Bin fill " << bin << 
"\n";
 
   88       std::cout << 
"Successfully read " << nPoints << 
" points in " << nLines << 
" lines!" << std::endl;
 
   89       kIsExFunction = kTRUE;