FACT++  1.0
void FitsDumper::DumpRoot ( ostream &  ,
const vector< string > &  ,
const string &  ,
size_t  ,
size_t  ,
const string &   
)
private

Definition at line 641 of file fitsdump.cc.

References data, fFilename, first, GetDouble(), fits::GetKeys(), zfits::GetNumRows(), fits::GetRow(), InitColumnsRoot(), and ListKeywords().

Referenced by Exec(), and InitColumnsRoot().

643 {
644 #ifdef HAVE_ROOT
645  vector<string> names(cols);
646  names.insert(names.begin(), filter);
647 
648  const vector<MyColumn> vec = InitColumnsRoot(names);
649  if (vec.empty())
650  return;
651 
652  vector<TFormula> form(names.size());
653 
654  auto ifo = form.begin();
655  for (auto it=names.begin(); it!=names.end(); it++, ifo++)
656  {
657  if (!it->empty() && ifo->Compile(it->c_str()))
658  throw runtime_error("Syntax Error: TFormula::Compile failed for '"+*it+"'");
659  }
660 
661  const fits::Table::Keys &fKeyMap = GetKeys();
662 
663  fout << "## --------------------------------------------------------------------------\n";
664  fout << "## Fits file: \t" << fFilename << '\n';
665  if (filename!="-")
666  fout << "## File: \t" << filename << '\n';
667  fout << "## Table: \t" << fKeyMap.find("EXTNAME")->second.value << '\n';
668  fout << "## NumRows: \t" << GetNumRows() << '\n';
669  fout << "## Comment: \t" << ((fKeyMap.find("COMMENT") != fKeyMap.end()) ? fKeyMap.find("COMMENT")->second.value : "") << '\n';
670  fout << "## --------------------------------------------------------------------------\n";
671  ListKeywords(fout);
672  fout << "## --------------------------------------------------------------------------\n";
673  fout << "##\n";
674  if (!filter.empty())
675  fout << "## Selection: " << form[0].GetExpFormula() << "\n##\n";
676 
677  size_t num = 0;
678  for (auto it=vec.begin(); it!=vec.end(); it++, num++)
679  {
680  fout << "## [" << num << "] = " << it->name;
681 
682  if (it->first==it->last)
683  {
684  if (it->first!=0)
685  fout << "[" << it->first << "]";
686  }
687  else
688  fout << "[" << it->first << ":" << it->last << "]";
689 
690  if (!it->col.unit.empty())
691  fout << ": " << it->col.unit;
692  fout << '\n';
693  }
694  fout << "##\n";
695  fout << "## --------------------------------------------------------------------------\n";
696  fout << "#\n";
697 
698  fout << "# ";
699  for (auto it=form.begin()+1; it!=form.end(); it++)
700  fout << " \"" << it->GetExpFormula() << "\"";
701  fout << "\n#" << endl;
702 
703  // -----------------------------------------------------------------
704 
705  vector<Double_t> data(vec.size()+1);
706 
707  const size_t last = limit ? first + limit : size_t(-1);
708 
709  while (GetRow(first++))
710  {
711  const size_t row = GetRow();
712  if (row==GetNumRows() || row==last)
713  break;
714 
715  size_t p = 0;
716  for (auto it=vec.begin(); it!=vec.end(); it++, p++)
717  data[p] = GetDouble(*it, it->first);
718 
719  data[p] = first;
720 
721  if (!filter.empty() && form[0].EvalPar(0, data.data())<0.5)
722  continue;
723 
724  for (auto iform=form.begin()+1; iform!=form.end(); iform++)
725  fout << iform->EvalPar(0, data.data()) << " ";
726 
727  fout << endl;
728  }
729 #endif
730 }
string fFilename
Definition: fitsdump.cc:67
size_t GetNumRows() const
Definition: zfits.h:57
int64_t first
Size of this column in the tile.
Definition: zofits.h:26
size_t GetRow() const
Definition: fits.h:1019
const Table::Keys & GetKeys() const
Definition: fits.h:1006
void ListKeywords(ostream &)
Definition: fitsdump.cc:147
std::map< std::string, Entry > Keys
Definition: fits.h:112
vector< MyColumn > InitColumnsRoot(vector< string > &list)
Definition: fitsdump.cc:542
float data[4 *1440]
double GetDouble(const MyColumn &, size_t) const
Definition: fitsdump.cc:275

+ Here is the call graph for this function:

+ Here is the caller graph for this function: