34{
   36 
   39  string         title;
   41 
   42  try {
   43 
   44    JParser<> zap(
"Auxiliary program to create TGraph2D from input file with ASCII data.");
 
   45    
   50 
   51    zap(argc, argv);
   52  }
   53  catch(const exception &error) {
   54    FATAL(error.what() << endl);
 
   55  }
   56 
   58 
   60 
   61  
   62  for (vector<string>::const_iterator file_name = inputFile.begin(); file_name != inputFile.end(); ++file_name) {
   63 
   64    const string gname = (title != "" ? title : getFilename(*file_name));
   65    
   66    ifstream in(file_name->c_str());
   67 
   68    while (in.peek() == '#') {
   69      in.ignore(numeric_limits<streamsize>::max(), '\n');
   70    }
   71    
   72    Double_t 
x, 
y, z, ex, ey, ez;
 
   73 
   80    
   81    for (
string buffer; 
getline(in,buffer); ) {
 
   82 
   83      istringstream is(buffer);
   84      
   85      if (is >> x)  X .push_back(x);
   86      if (is >> y)  Y .push_back(y);
   87      if (is >> z)  Z .push_back(z);
   88      if (is >> ex) EX.push_back(ex);
   89      if (is >> ey) EY.push_back(ey);
   90      if (is >> ez) EZ.push_back(ez);
   91    }
   92 
   93    if (X.size() != Y.size() || X.size() != Z.size()) {
   94      FATAL(
"Number of points " << X.size() <<  
' ' << Y.size() << 
' ' << Z.size() << endl);
 
   95    }
   96 
   97    TGraph2D* graph = NULL;
   98 
   99    if (EX.empty()) {
  100      
  101      graph = new TGraph2D(X.size(), X.data(), Y.data(), Z.data());
  102 
  103    } else {
  104 
  105      if (X.size() != EX.size()) {
  106        FATAL(
"Number of x points " << X.size() <<  
' ' << EX.size() << endl);
 
  107      }
  108 
  109      if (EZ.empty()) {
  110        EZ.swap(EX);
  111        EX.resize(X.size(), 0.0);
  112        EY.resize(Y.size(), 0.0);
  113      }
  114 
  115      if (Y.size() != EY.size()) {
  116        FATAL(
"Number of y points " << Y.size() <<  
' ' << EY.size() << endl);
 
  117      }
  118 
  119      if (Z.size() != EZ.size()) {
  120        FATAL(
"Number of z points " << Z.size() <<  
' ' << EZ.size() << endl);
 
  121      }
  122      
  123      graph = new TGraph2DErrors(X.size(), X.data(), Y.data(), Z.data(), EX.data(), EY.data(), EZ.data());
  124    }
  125 
  126    if (graph != NULL) {
  127 
  128      graph->SetName(gname.c_str());
  129      
  131 
  132      DEBUG(
"TGraph " << graph->GetName() << endl);
 
  133        
  134      
  135    }
  136 
  137    in.close();
  138  }
  139 
  140  out.Write();
  141  out.Close();
  142}
#define DEBUG(A)
Message macros.
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
 
Utility class to parse command line options.
 
void setLimits(TGraph &g1)
Set limits of TGraph.
 
std::istream & getline(std::istream &in, JString &object)
Read string from input stream until end of line.
 
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).