#include "QFramework/TQGraphMakerAnalysisJob.h"
#include "QFramework/TQIterator.h"
#include "QFramework/TQHistogramUtils.h"
#include "QFramework/TQObservable.h"
#include "QFramework/TQStringUtils.h"
#include "QFramework/TQCompiledCut.h"
#include "QFramework/TQTaggable.h"
#include "TObjArray.h"
#include "TList.h"
#include "TObjString.h"
#include "QFramework/TQSample.h"
#include "TFolder.h"
#include "TGraph.h"
#include "TGraph2D.h"
#include "QFramework/TQUtils.h"
#include "TH1.h"
#include "TH1F.h"
#include "TH2F.h"
#include "QFramework/TQLibrary.h"
#include <iostream>
#include <fstream>
#include <stdexcept>
#include <sstream>
#include <cstdlib>
TQMessageStream TQGraphMakerAnalysisJob::f_ErrMsg(new std::stringstream());
ClassImp(TQGraphMakerAnalysisJob)
TQGraphMakerAnalysisJob::TQGraphMakerAnalysisJob() :
TQAnalysisJob("TQGraphMakerAnalysisJob"),
  f_Verbose(0),
  poolAt(NULL)
{
  
}
TQGraphMakerAnalysisJob::TQGraphMakerAnalysisJob(TQGraphMakerAnalysisJob* other) :
  TQAnalysisJob(other ? other->GetName() : "TQGraphMakerAnalysisJob"),
  f_Verbose(other ? other->f_Verbose : 0),
  poolAt(other ? other->poolAt : NULL)
{
  
  for(size_t i=0; i<other->fGraphTemplates.size(); ++i){
    this->fGraphTemplates.push_back(TQHistogramUtils::copyGraph(other->fGraphTemplates[i]));
    this->fGraphTypes.push_back(other->fGraphTypes[i]);
    this->fExpressions.push_back(std::vector<TString>());
    for(size_t j=0; j<other->fExpressions[i].size(); ++j){
      this->fExpressions[i].push_back(other->fExpressions[i][j]);
    }
  }
}
void TQGraphMakerAnalysisJob::setVerbose(int verbose) {
  
  f_Verbose = verbose;
}
int TQGraphMakerAnalysisJob::getVerbose() {
  
  return f_Verbose;
}
void TQGraphMakerAnalysisJob::setErrorMessage(TString message) {
  
  f_ErrMsg.sendClassFunctionMessage(TQMessageStream::INFO,this->Class(),"<anonymous>",message);
  
  if (f_Verbose > 0) INFOclass(message);
}
void TQGraphMakerAnalysisJob::clearMessages(){
  
  f_ErrMsg.clearMessages();
}
TString TQGraphMakerAnalysisJob::getErrorMessage() {
  
  return f_ErrMsg.getMessages();
}
const TString& TQGraphMakerAnalysisJob::getValidNameCharacters() {
  
  return TQFolder::getValidNameCharacters();
}
void TQGraphMakerAnalysisJob::cancelGraph(const TString& name) {
  
  for(size_t i=fGraphTemplates.size(); i >0 ; i--){
    if(fGraphTemplates.at(i)->GetName() == name){
      fGraphTemplates.erase(fGraphTemplates.begin()+i-1);
      fExpressions.at(i-1).clear();
      fExpressions.erase(fExpressions.begin()+i-1);
      fGraphTypes.erase(fGraphTypes.begin()+i-1);
      return;
    }
  }
}
bool TQGraphMakerAnalysisJob::bookGraph(TString definition, TQTaggable* aliases) {
	
  DEBUGclass("entering function - booking graph '%s'",definition.Data());
  if(definition.IsNull()){
    this->f_ErrMsg.sendClassFunctionMessage(TQMessageStream::INFO,this->Class(),__FUNCTION__,"obtained empty graph definition");
    return false;
  }
  
  TString graphDef;
  TQStringUtils::readUpTo(definition, graphDef, "<", "()[]{}", "''\"\"");
  if(graphDef.IsNull()){
    this->f_ErrMsg.sendClassFunctionMessage(TQMessageStream::INFO,this->Class(),__FUNCTION__,"graph constructor is empty, remainder is '%s'",definition.Data());
    return false;
  }
  
  DEBUGclass("creating graph '%s'",graphDef.Data());
  TString msg;
  TNamed * graph = TQHistogramUtils::createGraph(graphDef, msg);
  DEBUGclass(graph ? "success" : "failure");
  if (!graph) {
    this->f_ErrMsg.sendClassFunctionMessage(TQMessageStream::ERROR,this->Class(),__FUNCTION__,msg);
    return false;
  }
  
  if (!TQFolder::isValidName(graph->GetName())) {
    this->f_ErrMsg.sendClassFunctionMessage(TQMessageStream::INFO,this->Class(),__FUNCTION__,"'%s' is an invalid graph name", graph->GetName());
    delete graph;
    return false;
  }
  
  if (TQStringUtils::removeLeading(definition, "<") != 2) {
    this->f_ErrMsg.sendClassFunctionMessage(TQMessageStream::INFO,this->Class(),__FUNCTION__,"Operator '<<' expected after graph definition");
    delete graph;
    return false;
  }
  
  std::vector<TString> settingTokens = TQStringUtils::split(definition, "<<", "([{'\"", ")]}'\"");
  if (settingTokens.size()<1) {
    this->f_ErrMsg.sendClassFunctionMessage(TQMessageStream::INFO,this->Class(),__FUNCTION__,"cannot parse definition block '%s'",definition.Data());
    delete graph;
    return false;
  }
  definition = settingTokens[0];
  TQTaggable options;
  if (settingTokens.size()>1) {
    TString optionBlock;
    TQStringUtils::readBlanksAndNewlines(settingTokens[1]);
    if (!TQStringUtils::readBlock(settingTokens[1], optionBlock, "()[]{}", "''\"\"")) {
      this->f_ErrMsg.sendClassFunctionMessage(TQMessageStream::INFO,this->Class(),__FUNCTION__,"Failed to parse graph option block '%s'", settingTokens[1].Data());
      delete graph;
      return false;
    }
    options.importTags(optionBlock);
  }
  
  TString expressionBlock;
  TQStringUtils::readBlanksAndNewlines(definition);
  if (!TQStringUtils::readBlock(definition, expressionBlock, "()[]{}", "''\"\"")) {
    this->f_ErrMsg.sendClassFunctionMessage(TQMessageStream::INFO,this->Class(),__FUNCTION__,"Missing expression block after '<<' operator");
    delete graph;
    return false;
  }
  
  TList * expressionTokens = TQStringUtils::tokenize(expressionBlock, ",", true, "()[]{}", "''\"\"");
  if(expressionTokens->GetEntries() < 1){
    this->f_ErrMsg.sendClassFunctionMessage(TQMessageStream::INFO,this->Class(),__FUNCTION__,"cannot parse expression block '%s'",expressionBlock.Data());
    delete graph;
    return false;
  }
  DEBUGclass("parsing expression block '%s', found %d entries",expressionBlock.Data(),expressionTokens->GetEntries());
  
  std::vector<TString> exprs;
  std::vector<TString> titles;
  TQIterator itr(expressionTokens);
  while (itr.hasNext()) {
    TString token(itr.readNext()->GetName());
    
    TString expr;
    int nColon = 0;
    while(nColon != 1){
      TQStringUtils::readUpTo(token, expr, "\\:", "()[]{}", "''\"\"");
      nColon = TQStringUtils::countLeading(token, ":");
      if (nColon == 1) {
        break;
      } else if (nColon == 0) {
        if(TQStringUtils::removeLeading(token,"\\")){
          TQStringUtils::readToken(token,expr,":");
          continue;
        }
        this->f_ErrMsg.sendClassFunctionMessage(TQMessageStream::INFO,this->Class(),__FUNCTION__,"':' expected after expression");
        DEBUGclass("':' expected after expression");
        delete graph;
        return false;
      } else {
        TQStringUtils::readToken(token,expr,":");
        continue;
      }
    }
    TQStringUtils::readBlanksAndNewlines(token);
    TQStringUtils::removeLeading(token,":");
    TQStringUtils::readBlanksAndNewlines(token);
    
    TString buffer;
    TString title = TQStringUtils::unquote(token);
    
    const TString expression(aliases ? aliases->replaceInTextRecursive(expr) : expr);
    exprs.push_back(TQStringUtils::trim(expression));
    titles.push_back(TQStringUtils::trim(title));
    DEBUGclass("found expression and title: '%s' and '%s'",expr.Data(),title.Data());
  }
  
  TString name = graph->GetName();
  int dim = (graph->InheritsFrom(TGraph2D::Class()) ? 3 : 2);
  
  if ( ( dim > 0 && dim != (int)exprs.size() ) || ( dim < 0 && (int)exprs.size() != abs(dim)+1) ) { 
    this->f_ErrMsg.sendClassFunctionMessage(TQMessageStream::INFO,this->Class(),__FUNCTION__,"Dimensionality of graph (%d) and expression block (%d) don't match", dim, (int)(exprs.size()));
    delete graph;
    DEBUGclass("Dimensionality of graph (%d) and expression block (%d) don't match", dim, (int)(exprs.size()));
    return false;
  }
  
  if (!TQStringUtils::isValidIdentifier(name, getValidNameCharacters())) {
    this->f_ErrMsg.sendClassFunctionMessage(TQMessageStream::INFO,this->Class(),__FUNCTION__,"Invalid graph name '%s'", name.Data());
    DEBUGclass("Invalid graph name '%s'", name.Data());
    delete graph;
    return false;
  }
  
  bool exists = false;
  int i = 0;
  while (!exists && i < (int)(fGraphTemplates.size()))
    exists = (name.CompareTo(fGraphTemplates.at(i++)->GetName()) == 0);
  if (exists) {
    this->f_ErrMsg.sendClassFunctionMessage(TQMessageStream::INFO,this->Class(),__FUNCTION__,"Graph with name '%s' has already been booked", name.Data());
    DEBUGclass("Graph with name '%s' has already been booked", name.Data());
    delete graph;
    return false;
  }
  
  for (int i = 0; i < (int)exprs.size(); i++) {
		TAxis* axis = TQHistogramUtils::getAxis_nonconst(graph,i);
		axis->SetTitle(titles[i]);
    axis->SetName(exprs[i]);
  }
  fExpressions.push_back(exprs);
  fGraphTypes.push_back(graph->IsA());
  fGraphTemplates.push_back(graph);
  return true;
}
void TQGraphMakerAnalysisJob::print(const TString& options) {
  
  if(options.Contains("TeX")){
    this->printBookingTeX(this->GetName());
  } else {
    this->printBooking(this->GetName());
  }
}
void TQGraphMakerAnalysisJob::printBookingTeX(const TString& moretext) {
  
  std::cout << "\\begin{tabular}{l l l l }" << std::endl;;
  std::cout << "\\multicolumn{2}{l}{\\bfseries Booked Graphs}" << " & \\multicolumn{2}{l}{" << moretext  << "}\\tabularnewline" << std::endl;
  for (size_t i = 0;i < fGraphTemplates.size(); i++) {
    TString exp(TQStringUtils::concat(fExpressions.at(i),","));
    exp.ReplaceAll("$","\\$");
    std::cout << fGraphTemplates.at(i)->GetName() << " & "
              << fGraphTemplates.at(i)->GetTitle()  << " & "
              << TQHistogramUtils::getDetailsAsString(fGraphTemplates.at(i), 2)  << " & "
              << exp;
    if(i != fGraphTemplates.size() -1) std::cout << " \\tabularnewline ";
    std::cout<< std::endl;
  }
  std::cout << "\\end{tabular}" << std::endl;
}
void TQGraphMakerAnalysisJob::printBooking(const TString& moretext) {
  
  std::cout << TQStringUtils::makeBoldBlue("Booked Graphs") << " " << TQStringUtils::makeBoldWhite(moretext) << std::endl;
  for (size_t i = 0;i < fGraphTemplates.size(); i++) {
    std::cout << TQStringUtils::fixedWidth(fGraphTemplates.at(i)->GetName(),20)
              << TQStringUtils::fixedWidth(fGraphTemplates.at(i)->GetTitle(),20)
              << TQHistogramUtils::getDetailsAsString(fGraphTemplates.at(i), 2)
              << " << " << TQStringUtils::concat(fExpressions.at(i)," : ")
              << std::endl;
  }
}
bool TQGraphMakerAnalysisJob::execute(double) {
  DEBUGclass("filling graphs for event...");
  
  for (unsigned int i = 0; i < fGraphs.size(); ++i) {
    #ifdef _DEBUG_
    if(this->fObservables.size() < i){
      throw std::runtime_error("insufficient size of observable vector!");
    }
    #endif
    if(fGraphTypes[i] == TGraph::Class()){
      TGraph* g = (TGraph*)(fGraphs[i]);
			
			g->Expand(g->GetN()+10,1000);
      TRY(
					g->SetPoint(g->GetN(),fObservables[i][0]->getValue(),fObservables[i][1]->getValue())
					,TString::Format("Failed to add event to graph '%s' using the observable '%s' at cut '%s'.", g->GetName(), fObservables[i][0]->GetName(), this->getCut()->GetName())
					);
    }
  }
  return true;
}
TObjArray * TQGraphMakerAnalysisJob::getBranchNames() {
  
  if(!this->fSample){
    throw std::runtime_error("cannot retrieve branches on uninitialized object!");
  }
  TObjArray * bNames = new TObjArray();
  
  for (size_t i = 0; i < fObservables.size(); ++i) {
    for (size_t j = 0; j < fObservables[i].size(); ++j) {
      TQObservable* obs = fObservables[i][j];
      if(obs){
        TCollection* c = obs->getBranchNames();
        if(c){
          if(c->GetEntries() > 0) bNames -> AddAll(c);
          c->SetOwner(false);
          delete c;
        }
      }
    }
  }
  return bNames;
}
bool TQGraphMakerAnalysisJob::initializeSelf() {
  
  DEBUGclass("initializing analysis job '%s'",this->GetName());
  if(fGraphs.size() < 1){
    this->poolAt = this->fSample;
    DEBUGclass("initializing graphs");
    this->initializeGraphs();
  }
  bool success = true;
  
  DEBUGclass("initializing observables");
  for (unsigned int i = 0; i < fExpressions.size(); ++i) {
    std::vector<TQObservable*> observables;
    for (unsigned int j = 0; j < fExpressions[i].size(); ++j) {
      TString expr(fExpressions[i][j]);
      TQObservable* obs = TQObservable::getObservable(expr,this->fSample);
      if(obs && success){
        DEBUGclass("initializing...");
        if (!obs->initialize(this->fSample)) {
          ERRORclass("Failed to initialize observable created from expression '%s' for sample '%s' in TQGraphMAnalysisJob '%s' for graph named '%s'",this->fExpressions[i][j].Data(), this->fSample->getPath().Data(), this->GetName(), this->fGraphs[i]->GetName());
          success=false;
        }
        DEBUGclass("initialized observable '%s' of type '%s' with '%s'",
                   obs->getExpression().Data(),
                   obs->ClassName(),
                   obs->getActiveExpression().Data());
      }
      if(!obs){
        DEBUGclass("creating const observable");
        obs = TQObservable::getObservable("Const:nan",this->fSample);
        obs->initialize(this->fSample);
      }
      observables.push_back(obs);
    }
    this->fObservables.push_back(observables);
  }
  DEBUG("successfully initialized graph job");
  return success;
}
void TQGraphMakerAnalysisJob::initializeGraphs(){
  
  DEBUGclass("Size of graph template vector : %i", fGraphTemplates.size());
  for (unsigned int i = 0; i < fGraphTemplates.size(); i++) {
    
    TNamed * graph = TQHistogramUtils::copyGraph((fGraphTemplates)[i]);
    fGraphs.push_back(graph);
  }
}
bool TQGraphMakerAnalysisJob::finalizeSelf() {
  
  for (unsigned int i = 0; i < fObservables.size(); ++i) {
    for (unsigned int j = 0; j < fObservables[i].size(); ++j) {
      fObservables[i][j]->finalize();
    }
  }
  this->fObservables.clear();
  if(this->poolAt == this->fSample)
    if(!this->finalizeGraphs())
      return false;
  return true;
}
bool TQGraphMakerAnalysisJob::finalizeGraphs(){
  
  if (!getCut()) { return false; }
  
  TQFolder * folder = this->poolAt->getFolder(TString::Format(
                                                              ".graphs/%s+", getCut()->GetName()));
  if (!folder) { return false; }
  DEBUGclass("successfully created folder for cut %s", getCut()->GetName());
  
  DEBUGclass("length of graph list is %i", fGraphs.size());
  for (unsigned int i = 0; i < fGraphs.size(); i++) {
    TNamed * graph = (fGraphs)[i];
    if (!graph){ DEBUGclass("Graph is 0!"); };
    
    TObject *g = folder->FindObject(graph->GetName());
    if (g){
      DEBUGclass("removing previous object %s", g->GetName());
      folder->Remove(g);
    }
		
		TQHistogramUtils::copyGraphAxisTitles(graph,fGraphTemplates[i]);
    
    DEBUGclass("saving graph %s", graph->GetName());
    folder->Add(graph);
  }
  
  this->fGraphs.clear();
  this->poolAt = NULL;
  return true;
}
bool TQGraphMakerAnalysisJob::initializeSampleFolder(TQSampleFolder* sf){
  
  bool pool = false;
  sf->getTagBool(".aj.pool.graphs",pool);
  if(pool && (this->fGraphs.size() == 0)){
    this->initializeGraphs();
    this->poolAt = sf;
  }
  return true;
}
bool TQGraphMakerAnalysisJob::finalizeSampleFolder(TQSampleFolder* sf){
  
  if(sf == this->poolAt)
    return this->finalizeGraphs();
  return true;
}
TQGraphMakerAnalysisJob::~TQGraphMakerAnalysisJob() {
  
  for (unsigned int i = 0; i < fGraphTemplates.size(); i++) {
    delete (fGraphTemplates)[i]; }
}
TQAnalysisJob* TQGraphMakerAnalysisJob::getClone(){
  
  TQGraphMakerAnalysisJob* newJob = new TQGraphMakerAnalysisJob(this);
  return newJob;
}
void TQGraphMakerAnalysisJob::reset() {
  
  
  
  TQAnalysisJob::reset();
  
  fGraphs.clear();
}
int TQGraphMakerAnalysisJob::importJobsFromTextFiles(const TString& files, TQCompiledCut* basecut, const TString& channelFilter, bool verbose){
  
  
  
  std::vector <TString> filenames = TQStringUtils::split(files,",");
  return TQGraphMakerAnalysisJob::importJobsFromTextFiles(filenames,basecut,channelFilter,verbose);
}
int TQGraphMakerAnalysisJob::importJobsFromTextFiles(const TString& files, TQCompiledCut* basecut, TQTaggable* aliases, const TString& channelFilter, bool verbose){
  
  
  
  std::vector <TString> filenames = TQStringUtils::split(files,",");
  return TQGraphMakerAnalysisJob::importJobsFromTextFiles(filenames,basecut,aliases,channelFilter,verbose);
}
int TQGraphMakerAnalysisJob::importJobsFromTextFiles(const std::vector<TString>& filenames, TQCompiledCut* basecut, const TString& channelFilter, bool verbose){
  
  
  
  return TQGraphMakerAnalysisJob::importJobsFromTextFiles(filenames, basecut, NULL, channelFilter, verbose);
}
int TQGraphMakerAnalysisJob::importJobsFromTextFiles(const std::vector<TString>& filenames, TQCompiledCut* basecut, TQTaggable* aliases, const TString& channelFilter, bool verbose){
  
  
  
  if(filenames.size() < 1){
    ERRORfunc("importing no graphs from empty files list!");
    return -1;
  }
  std::map<TString,TString> graphDefinitions;
  std::vector<TString> assignments;
  TString buffer;
  for(size_t i=0; i<filenames.size(); i++){
    std::vector<TString>* lines = TQStringUtils::readFileLines(filenames[i],2048);
    if(!lines){
      ERRORfunc("unable to open file '%s'",filenames[i].Data());
      continue;
    }
    for(size_t j=0; j<lines->size(); ++j){
      TString line(TQStringUtils::trim(lines->at(j)));
      DEBUGclass("looking at line '%s'",line.Data());
      if(line.IsNull()) continue;
      if(line.BeginsWith("T")){
        size_t namestart = TQStringUtils::findFirstOf(line,"'\"",0)+1;
        size_t nameend = TQStringUtils::findFirstOf(line,"'\"",namestart);
        if(namestart == 0 || namestart > (size_t)line.Length() || nameend > (size_t)line.Length() || nameend == namestart){
          ERRORfunc("unable to parse graph definition '%s'",line.Data());
          continue;
        }
        TString name(TQStringUtils::trim(line(namestart,nameend-namestart),"\t ,"));
        DEBUGclass("found definition: '%s', assigning as '%s'",line.Data(),name.Data());
        graphDefinitions[name] = line;
      } else if(TQStringUtils::removeLeading(line,"@") == 1){
        DEBUGclass("found assignment: '%s'",line.Data());
        assignments.push_back(line);
      } else {
        WARNfunc("encountered unknown token: '%s'",line.Data());
      }
    }
    delete lines;
  }
  if(verbose) VERBOSEfunc("going to create '%d' jobs",(int)(assignments.size()));
  int retval = 0;
  for(size_t i=0; i<assignments.size(); i++){
    TString assignment = assignments[i];
    DEBUGclass("looking at assignment '%s'",assignment.Data());
    TString channel;
    if(TQStringUtils::readBlock(assignment,channel) && !channel.IsNull() && !TQStringUtils::matches(channel,channelFilter)) continue;
    TString cuts,graphs;
    TQStringUtils::readUpTo(assignment,cuts,":");
    TQStringUtils::readToken(assignment,buffer," :");
    TQStringUtils::readUpTo(assignment,graphs,";");
    TQStringUtils::readToken(assignment,buffer,"; ");
    DEBUGclass("graphs: '%s'",graphs.Data());
    DEBUGclass("cuts: '%s'",cuts.Data());
    if(verbose) VERBOSEfunc("building job for cuts '%s'",cuts.Data());
    DEBUGclass("spare symbols: '%s'",buffer.Data());
    std::vector<TString> vGraphs = TQStringUtils::split(graphs,",");
    if(vGraphs.size() < 1){
      ERRORfunc("no graphs listed in assignment '%s'",assignments[i].Data());
      continue;
    }
    TQGraphMakerAnalysisJob* job = new TQGraphMakerAnalysisJob();
    for(size_t j=0; j<vGraphs.size(); ++j){
      const TString def = graphDefinitions[TQStringUtils::trim(vGraphs[j],"\t ,")];
      if(def.IsNull()){
        ERRORfunc("unable to find graph definition for name '%s', skipping",TQStringUtils::trim(vGraphs[j],"\t ,").Data());
        continue;
      }
      bool ok = job->bookGraph(def,aliases);
      if(ok){
        if(verbose) VERBOSEfunc("\tbooked graph '%s'",def.Data());
      } else {
        retval += 1;
        if(verbose) f_ErrMsg.writeMessagesToStdout();
        DEBUGclass("error booking graph for '%s', function says '%s'",def.Data(),f_ErrMsg.getMessages().Data());
      }
    }
    if(verbose) job->printBooking(cuts);
    basecut->addAnalysisJob(job,cuts);
    delete job;
  }
  DEBUGclass("end of function call, encountered %d error messages",retval);
  return retval;
}
 TQGraphMakerAnalysisJob.cxx:1  TQGraphMakerAnalysisJob.cxx:2  TQGraphMakerAnalysisJob.cxx:3  TQGraphMakerAnalysisJob.cxx:4  TQGraphMakerAnalysisJob.cxx:5  TQGraphMakerAnalysisJob.cxx:6  TQGraphMakerAnalysisJob.cxx:7  TQGraphMakerAnalysisJob.cxx:8  TQGraphMakerAnalysisJob.cxx:9  TQGraphMakerAnalysisJob.cxx:10  TQGraphMakerAnalysisJob.cxx:11  TQGraphMakerAnalysisJob.cxx:12  TQGraphMakerAnalysisJob.cxx:13  TQGraphMakerAnalysisJob.cxx:14  TQGraphMakerAnalysisJob.cxx:15  TQGraphMakerAnalysisJob.cxx:16  TQGraphMakerAnalysisJob.cxx:17  TQGraphMakerAnalysisJob.cxx:18  TQGraphMakerAnalysisJob.cxx:19  TQGraphMakerAnalysisJob.cxx:20  TQGraphMakerAnalysisJob.cxx:21  TQGraphMakerAnalysisJob.cxx:22  TQGraphMakerAnalysisJob.cxx:23  TQGraphMakerAnalysisJob.cxx:24  TQGraphMakerAnalysisJob.cxx:25  TQGraphMakerAnalysisJob.cxx:26  TQGraphMakerAnalysisJob.cxx:27  TQGraphMakerAnalysisJob.cxx:28  TQGraphMakerAnalysisJob.cxx:29  TQGraphMakerAnalysisJob.cxx:30  TQGraphMakerAnalysisJob.cxx:31  TQGraphMakerAnalysisJob.cxx:32  TQGraphMakerAnalysisJob.cxx:33  TQGraphMakerAnalysisJob.cxx:34  TQGraphMakerAnalysisJob.cxx:35  TQGraphMakerAnalysisJob.cxx:36  TQGraphMakerAnalysisJob.cxx:37  TQGraphMakerAnalysisJob.cxx:38  TQGraphMakerAnalysisJob.cxx:39  TQGraphMakerAnalysisJob.cxx:40  TQGraphMakerAnalysisJob.cxx:41  TQGraphMakerAnalysisJob.cxx:42  TQGraphMakerAnalysisJob.cxx:43  TQGraphMakerAnalysisJob.cxx:44  TQGraphMakerAnalysisJob.cxx:45  TQGraphMakerAnalysisJob.cxx:46  TQGraphMakerAnalysisJob.cxx:47  TQGraphMakerAnalysisJob.cxx:48  TQGraphMakerAnalysisJob.cxx:49  TQGraphMakerAnalysisJob.cxx:50  TQGraphMakerAnalysisJob.cxx:51  TQGraphMakerAnalysisJob.cxx:52  TQGraphMakerAnalysisJob.cxx:53  TQGraphMakerAnalysisJob.cxx:54  TQGraphMakerAnalysisJob.cxx:55  TQGraphMakerAnalysisJob.cxx:56  TQGraphMakerAnalysisJob.cxx:57  TQGraphMakerAnalysisJob.cxx:58  TQGraphMakerAnalysisJob.cxx:59  TQGraphMakerAnalysisJob.cxx:60  TQGraphMakerAnalysisJob.cxx:61  TQGraphMakerAnalysisJob.cxx:62  TQGraphMakerAnalysisJob.cxx:63  TQGraphMakerAnalysisJob.cxx:64  TQGraphMakerAnalysisJob.cxx:65  TQGraphMakerAnalysisJob.cxx:66  TQGraphMakerAnalysisJob.cxx:67  TQGraphMakerAnalysisJob.cxx:68  TQGraphMakerAnalysisJob.cxx:69  TQGraphMakerAnalysisJob.cxx:70  TQGraphMakerAnalysisJob.cxx:71  TQGraphMakerAnalysisJob.cxx:72  TQGraphMakerAnalysisJob.cxx:73  TQGraphMakerAnalysisJob.cxx:74  TQGraphMakerAnalysisJob.cxx:75  TQGraphMakerAnalysisJob.cxx:76  TQGraphMakerAnalysisJob.cxx:77  TQGraphMakerAnalysisJob.cxx:78  TQGraphMakerAnalysisJob.cxx:79  TQGraphMakerAnalysisJob.cxx:80  TQGraphMakerAnalysisJob.cxx:81  TQGraphMakerAnalysisJob.cxx:82  TQGraphMakerAnalysisJob.cxx:83  TQGraphMakerAnalysisJob.cxx:84  TQGraphMakerAnalysisJob.cxx:85  TQGraphMakerAnalysisJob.cxx:86  TQGraphMakerAnalysisJob.cxx:87  TQGraphMakerAnalysisJob.cxx:88  TQGraphMakerAnalysisJob.cxx:89  TQGraphMakerAnalysisJob.cxx:90  TQGraphMakerAnalysisJob.cxx:91  TQGraphMakerAnalysisJob.cxx:92  TQGraphMakerAnalysisJob.cxx:93  TQGraphMakerAnalysisJob.cxx:94  TQGraphMakerAnalysisJob.cxx:95  TQGraphMakerAnalysisJob.cxx:96  TQGraphMakerAnalysisJob.cxx:97  TQGraphMakerAnalysisJob.cxx:98  TQGraphMakerAnalysisJob.cxx:99  TQGraphMakerAnalysisJob.cxx:100  TQGraphMakerAnalysisJob.cxx:101  TQGraphMakerAnalysisJob.cxx:102  TQGraphMakerAnalysisJob.cxx:103  TQGraphMakerAnalysisJob.cxx:104  TQGraphMakerAnalysisJob.cxx:105  TQGraphMakerAnalysisJob.cxx:106  TQGraphMakerAnalysisJob.cxx:107  TQGraphMakerAnalysisJob.cxx:108  TQGraphMakerAnalysisJob.cxx:109  TQGraphMakerAnalysisJob.cxx:110  TQGraphMakerAnalysisJob.cxx:111  TQGraphMakerAnalysisJob.cxx:112  TQGraphMakerAnalysisJob.cxx:113  TQGraphMakerAnalysisJob.cxx:114  TQGraphMakerAnalysisJob.cxx:115  TQGraphMakerAnalysisJob.cxx:116  TQGraphMakerAnalysisJob.cxx:117  TQGraphMakerAnalysisJob.cxx:118  TQGraphMakerAnalysisJob.cxx:119  TQGraphMakerAnalysisJob.cxx:120  TQGraphMakerAnalysisJob.cxx:121  TQGraphMakerAnalysisJob.cxx:122  TQGraphMakerAnalysisJob.cxx:123  TQGraphMakerAnalysisJob.cxx:124  TQGraphMakerAnalysisJob.cxx:125  TQGraphMakerAnalysisJob.cxx:126  TQGraphMakerAnalysisJob.cxx:127  TQGraphMakerAnalysisJob.cxx:128  TQGraphMakerAnalysisJob.cxx:129  TQGraphMakerAnalysisJob.cxx:130  TQGraphMakerAnalysisJob.cxx:131  TQGraphMakerAnalysisJob.cxx:132  TQGraphMakerAnalysisJob.cxx:133  TQGraphMakerAnalysisJob.cxx:134  TQGraphMakerAnalysisJob.cxx:135  TQGraphMakerAnalysisJob.cxx:136  TQGraphMakerAnalysisJob.cxx:137  TQGraphMakerAnalysisJob.cxx:138  TQGraphMakerAnalysisJob.cxx:139  TQGraphMakerAnalysisJob.cxx:140  TQGraphMakerAnalysisJob.cxx:141  TQGraphMakerAnalysisJob.cxx:142  TQGraphMakerAnalysisJob.cxx:143  TQGraphMakerAnalysisJob.cxx:144  TQGraphMakerAnalysisJob.cxx:145  TQGraphMakerAnalysisJob.cxx:146  TQGraphMakerAnalysisJob.cxx:147  TQGraphMakerAnalysisJob.cxx:148  TQGraphMakerAnalysisJob.cxx:149  TQGraphMakerAnalysisJob.cxx:150  TQGraphMakerAnalysisJob.cxx:151  TQGraphMakerAnalysisJob.cxx:152  TQGraphMakerAnalysisJob.cxx:153  TQGraphMakerAnalysisJob.cxx:154  TQGraphMakerAnalysisJob.cxx:155  TQGraphMakerAnalysisJob.cxx:156  TQGraphMakerAnalysisJob.cxx:157  TQGraphMakerAnalysisJob.cxx:158  TQGraphMakerAnalysisJob.cxx:159  TQGraphMakerAnalysisJob.cxx:160  TQGraphMakerAnalysisJob.cxx:161  TQGraphMakerAnalysisJob.cxx:162  TQGraphMakerAnalysisJob.cxx:163  TQGraphMakerAnalysisJob.cxx:164  TQGraphMakerAnalysisJob.cxx:165  TQGraphMakerAnalysisJob.cxx:166  TQGraphMakerAnalysisJob.cxx:167  TQGraphMakerAnalysisJob.cxx:168  TQGraphMakerAnalysisJob.cxx:169  TQGraphMakerAnalysisJob.cxx:170  TQGraphMakerAnalysisJob.cxx:171  TQGraphMakerAnalysisJob.cxx:172  TQGraphMakerAnalysisJob.cxx:173  TQGraphMakerAnalysisJob.cxx:174  TQGraphMakerAnalysisJob.cxx:175  TQGraphMakerAnalysisJob.cxx:176  TQGraphMakerAnalysisJob.cxx:177  TQGraphMakerAnalysisJob.cxx:178  TQGraphMakerAnalysisJob.cxx:179  TQGraphMakerAnalysisJob.cxx:180  TQGraphMakerAnalysisJob.cxx:181  TQGraphMakerAnalysisJob.cxx:182  TQGraphMakerAnalysisJob.cxx:183  TQGraphMakerAnalysisJob.cxx:184  TQGraphMakerAnalysisJob.cxx:185  TQGraphMakerAnalysisJob.cxx:186  TQGraphMakerAnalysisJob.cxx:187  TQGraphMakerAnalysisJob.cxx:188  TQGraphMakerAnalysisJob.cxx:189  TQGraphMakerAnalysisJob.cxx:190  TQGraphMakerAnalysisJob.cxx:191  TQGraphMakerAnalysisJob.cxx:192  TQGraphMakerAnalysisJob.cxx:193  TQGraphMakerAnalysisJob.cxx:194  TQGraphMakerAnalysisJob.cxx:195  TQGraphMakerAnalysisJob.cxx:196  TQGraphMakerAnalysisJob.cxx:197  TQGraphMakerAnalysisJob.cxx:198  TQGraphMakerAnalysisJob.cxx:199  TQGraphMakerAnalysisJob.cxx:200  TQGraphMakerAnalysisJob.cxx:201  TQGraphMakerAnalysisJob.cxx:202  TQGraphMakerAnalysisJob.cxx:203  TQGraphMakerAnalysisJob.cxx:204  TQGraphMakerAnalysisJob.cxx:205  TQGraphMakerAnalysisJob.cxx:206  TQGraphMakerAnalysisJob.cxx:207  TQGraphMakerAnalysisJob.cxx:208  TQGraphMakerAnalysisJob.cxx:209  TQGraphMakerAnalysisJob.cxx:210  TQGraphMakerAnalysisJob.cxx:211  TQGraphMakerAnalysisJob.cxx:212  TQGraphMakerAnalysisJob.cxx:213  TQGraphMakerAnalysisJob.cxx:214  TQGraphMakerAnalysisJob.cxx:215  TQGraphMakerAnalysisJob.cxx:216  TQGraphMakerAnalysisJob.cxx:217  TQGraphMakerAnalysisJob.cxx:218  TQGraphMakerAnalysisJob.cxx:219  TQGraphMakerAnalysisJob.cxx:220  TQGraphMakerAnalysisJob.cxx:221  TQGraphMakerAnalysisJob.cxx:222  TQGraphMakerAnalysisJob.cxx:223  TQGraphMakerAnalysisJob.cxx:224  TQGraphMakerAnalysisJob.cxx:225  TQGraphMakerAnalysisJob.cxx:226  TQGraphMakerAnalysisJob.cxx:227  TQGraphMakerAnalysisJob.cxx:228  TQGraphMakerAnalysisJob.cxx:229  TQGraphMakerAnalysisJob.cxx:230  TQGraphMakerAnalysisJob.cxx:231  TQGraphMakerAnalysisJob.cxx:232  TQGraphMakerAnalysisJob.cxx:233  TQGraphMakerAnalysisJob.cxx:234  TQGraphMakerAnalysisJob.cxx:235  TQGraphMakerAnalysisJob.cxx:236  TQGraphMakerAnalysisJob.cxx:237  TQGraphMakerAnalysisJob.cxx:238  TQGraphMakerAnalysisJob.cxx:239  TQGraphMakerAnalysisJob.cxx:240  TQGraphMakerAnalysisJob.cxx:241  TQGraphMakerAnalysisJob.cxx:242  TQGraphMakerAnalysisJob.cxx:243  TQGraphMakerAnalysisJob.cxx:244  TQGraphMakerAnalysisJob.cxx:245  TQGraphMakerAnalysisJob.cxx:246  TQGraphMakerAnalysisJob.cxx:247  TQGraphMakerAnalysisJob.cxx:248  TQGraphMakerAnalysisJob.cxx:249  TQGraphMakerAnalysisJob.cxx:250  TQGraphMakerAnalysisJob.cxx:251  TQGraphMakerAnalysisJob.cxx:252  TQGraphMakerAnalysisJob.cxx:253  TQGraphMakerAnalysisJob.cxx:254  TQGraphMakerAnalysisJob.cxx:255  TQGraphMakerAnalysisJob.cxx:256  TQGraphMakerAnalysisJob.cxx:257  TQGraphMakerAnalysisJob.cxx:258  TQGraphMakerAnalysisJob.cxx:259  TQGraphMakerAnalysisJob.cxx:260  TQGraphMakerAnalysisJob.cxx:261  TQGraphMakerAnalysisJob.cxx:262  TQGraphMakerAnalysisJob.cxx:263  TQGraphMakerAnalysisJob.cxx:264  TQGraphMakerAnalysisJob.cxx:265  TQGraphMakerAnalysisJob.cxx:266  TQGraphMakerAnalysisJob.cxx:267  TQGraphMakerAnalysisJob.cxx:268  TQGraphMakerAnalysisJob.cxx:269  TQGraphMakerAnalysisJob.cxx:270  TQGraphMakerAnalysisJob.cxx:271  TQGraphMakerAnalysisJob.cxx:272  TQGraphMakerAnalysisJob.cxx:273  TQGraphMakerAnalysisJob.cxx:274  TQGraphMakerAnalysisJob.cxx:275  TQGraphMakerAnalysisJob.cxx:276  TQGraphMakerAnalysisJob.cxx:277  TQGraphMakerAnalysisJob.cxx:278  TQGraphMakerAnalysisJob.cxx:279  TQGraphMakerAnalysisJob.cxx:280  TQGraphMakerAnalysisJob.cxx:281  TQGraphMakerAnalysisJob.cxx:282  TQGraphMakerAnalysisJob.cxx:283  TQGraphMakerAnalysisJob.cxx:284  TQGraphMakerAnalysisJob.cxx:285  TQGraphMakerAnalysisJob.cxx:286  TQGraphMakerAnalysisJob.cxx:287  TQGraphMakerAnalysisJob.cxx:288  TQGraphMakerAnalysisJob.cxx:289  TQGraphMakerAnalysisJob.cxx:290  TQGraphMakerAnalysisJob.cxx:291  TQGraphMakerAnalysisJob.cxx:292  TQGraphMakerAnalysisJob.cxx:293  TQGraphMakerAnalysisJob.cxx:294  TQGraphMakerAnalysisJob.cxx:295  TQGraphMakerAnalysisJob.cxx:296  TQGraphMakerAnalysisJob.cxx:297  TQGraphMakerAnalysisJob.cxx:298  TQGraphMakerAnalysisJob.cxx:299  TQGraphMakerAnalysisJob.cxx:300  TQGraphMakerAnalysisJob.cxx:301  TQGraphMakerAnalysisJob.cxx:302  TQGraphMakerAnalysisJob.cxx:303  TQGraphMakerAnalysisJob.cxx:304  TQGraphMakerAnalysisJob.cxx:305  TQGraphMakerAnalysisJob.cxx:306  TQGraphMakerAnalysisJob.cxx:307  TQGraphMakerAnalysisJob.cxx:308  TQGraphMakerAnalysisJob.cxx:309  TQGraphMakerAnalysisJob.cxx:310  TQGraphMakerAnalysisJob.cxx:311  TQGraphMakerAnalysisJob.cxx:312  TQGraphMakerAnalysisJob.cxx:313  TQGraphMakerAnalysisJob.cxx:314  TQGraphMakerAnalysisJob.cxx:315  TQGraphMakerAnalysisJob.cxx:316  TQGraphMakerAnalysisJob.cxx:317  TQGraphMakerAnalysisJob.cxx:318  TQGraphMakerAnalysisJob.cxx:319  TQGraphMakerAnalysisJob.cxx:320  TQGraphMakerAnalysisJob.cxx:321  TQGraphMakerAnalysisJob.cxx:322  TQGraphMakerAnalysisJob.cxx:323  TQGraphMakerAnalysisJob.cxx:324  TQGraphMakerAnalysisJob.cxx:325  TQGraphMakerAnalysisJob.cxx:326  TQGraphMakerAnalysisJob.cxx:327  TQGraphMakerAnalysisJob.cxx:328  TQGraphMakerAnalysisJob.cxx:329  TQGraphMakerAnalysisJob.cxx:330  TQGraphMakerAnalysisJob.cxx:331  TQGraphMakerAnalysisJob.cxx:332  TQGraphMakerAnalysisJob.cxx:333  TQGraphMakerAnalysisJob.cxx:334  TQGraphMakerAnalysisJob.cxx:335  TQGraphMakerAnalysisJob.cxx:336  TQGraphMakerAnalysisJob.cxx:337  TQGraphMakerAnalysisJob.cxx:338  TQGraphMakerAnalysisJob.cxx:339  TQGraphMakerAnalysisJob.cxx:340  TQGraphMakerAnalysisJob.cxx:341  TQGraphMakerAnalysisJob.cxx:342  TQGraphMakerAnalysisJob.cxx:343  TQGraphMakerAnalysisJob.cxx:344  TQGraphMakerAnalysisJob.cxx:345  TQGraphMakerAnalysisJob.cxx:346  TQGraphMakerAnalysisJob.cxx:347  TQGraphMakerAnalysisJob.cxx:348  TQGraphMakerAnalysisJob.cxx:349  TQGraphMakerAnalysisJob.cxx:350  TQGraphMakerAnalysisJob.cxx:351  TQGraphMakerAnalysisJob.cxx:352  TQGraphMakerAnalysisJob.cxx:353  TQGraphMakerAnalysisJob.cxx:354  TQGraphMakerAnalysisJob.cxx:355  TQGraphMakerAnalysisJob.cxx:356  TQGraphMakerAnalysisJob.cxx:357  TQGraphMakerAnalysisJob.cxx:358  TQGraphMakerAnalysisJob.cxx:359  TQGraphMakerAnalysisJob.cxx:360  TQGraphMakerAnalysisJob.cxx:361  TQGraphMakerAnalysisJob.cxx:362  TQGraphMakerAnalysisJob.cxx:363  TQGraphMakerAnalysisJob.cxx:364  TQGraphMakerAnalysisJob.cxx:365  TQGraphMakerAnalysisJob.cxx:366  TQGraphMakerAnalysisJob.cxx:367  TQGraphMakerAnalysisJob.cxx:368  TQGraphMakerAnalysisJob.cxx:369  TQGraphMakerAnalysisJob.cxx:370  TQGraphMakerAnalysisJob.cxx:371  TQGraphMakerAnalysisJob.cxx:372  TQGraphMakerAnalysisJob.cxx:373  TQGraphMakerAnalysisJob.cxx:374  TQGraphMakerAnalysisJob.cxx:375  TQGraphMakerAnalysisJob.cxx:376  TQGraphMakerAnalysisJob.cxx:377  TQGraphMakerAnalysisJob.cxx:378  TQGraphMakerAnalysisJob.cxx:379  TQGraphMakerAnalysisJob.cxx:380  TQGraphMakerAnalysisJob.cxx:381  TQGraphMakerAnalysisJob.cxx:382  TQGraphMakerAnalysisJob.cxx:383  TQGraphMakerAnalysisJob.cxx:384  TQGraphMakerAnalysisJob.cxx:385  TQGraphMakerAnalysisJob.cxx:386  TQGraphMakerAnalysisJob.cxx:387  TQGraphMakerAnalysisJob.cxx:388  TQGraphMakerAnalysisJob.cxx:389  TQGraphMakerAnalysisJob.cxx:390  TQGraphMakerAnalysisJob.cxx:391  TQGraphMakerAnalysisJob.cxx:392  TQGraphMakerAnalysisJob.cxx:393  TQGraphMakerAnalysisJob.cxx:394  TQGraphMakerAnalysisJob.cxx:395  TQGraphMakerAnalysisJob.cxx:396  TQGraphMakerAnalysisJob.cxx:397  TQGraphMakerAnalysisJob.cxx:398  TQGraphMakerAnalysisJob.cxx:399  TQGraphMakerAnalysisJob.cxx:400  TQGraphMakerAnalysisJob.cxx:401  TQGraphMakerAnalysisJob.cxx:402  TQGraphMakerAnalysisJob.cxx:403  TQGraphMakerAnalysisJob.cxx:404  TQGraphMakerAnalysisJob.cxx:405  TQGraphMakerAnalysisJob.cxx:406  TQGraphMakerAnalysisJob.cxx:407  TQGraphMakerAnalysisJob.cxx:408  TQGraphMakerAnalysisJob.cxx:409  TQGraphMakerAnalysisJob.cxx:410  TQGraphMakerAnalysisJob.cxx:411  TQGraphMakerAnalysisJob.cxx:412  TQGraphMakerAnalysisJob.cxx:413  TQGraphMakerAnalysisJob.cxx:414  TQGraphMakerAnalysisJob.cxx:415  TQGraphMakerAnalysisJob.cxx:416  TQGraphMakerAnalysisJob.cxx:417  TQGraphMakerAnalysisJob.cxx:418  TQGraphMakerAnalysisJob.cxx:419  TQGraphMakerAnalysisJob.cxx:420  TQGraphMakerAnalysisJob.cxx:421  TQGraphMakerAnalysisJob.cxx:422  TQGraphMakerAnalysisJob.cxx:423  TQGraphMakerAnalysisJob.cxx:424  TQGraphMakerAnalysisJob.cxx:425  TQGraphMakerAnalysisJob.cxx:426  TQGraphMakerAnalysisJob.cxx:427  TQGraphMakerAnalysisJob.cxx:428  TQGraphMakerAnalysisJob.cxx:429  TQGraphMakerAnalysisJob.cxx:430  TQGraphMakerAnalysisJob.cxx:431  TQGraphMakerAnalysisJob.cxx:432  TQGraphMakerAnalysisJob.cxx:433  TQGraphMakerAnalysisJob.cxx:434  TQGraphMakerAnalysisJob.cxx:435  TQGraphMakerAnalysisJob.cxx:436  TQGraphMakerAnalysisJob.cxx:437  TQGraphMakerAnalysisJob.cxx:438  TQGraphMakerAnalysisJob.cxx:439  TQGraphMakerAnalysisJob.cxx:440  TQGraphMakerAnalysisJob.cxx:441  TQGraphMakerAnalysisJob.cxx:442  TQGraphMakerAnalysisJob.cxx:443  TQGraphMakerAnalysisJob.cxx:444  TQGraphMakerAnalysisJob.cxx:445  TQGraphMakerAnalysisJob.cxx:446  TQGraphMakerAnalysisJob.cxx:447  TQGraphMakerAnalysisJob.cxx:448  TQGraphMakerAnalysisJob.cxx:449  TQGraphMakerAnalysisJob.cxx:450  TQGraphMakerAnalysisJob.cxx:451  TQGraphMakerAnalysisJob.cxx:452  TQGraphMakerAnalysisJob.cxx:453  TQGraphMakerAnalysisJob.cxx:454  TQGraphMakerAnalysisJob.cxx:455  TQGraphMakerAnalysisJob.cxx:456  TQGraphMakerAnalysisJob.cxx:457  TQGraphMakerAnalysisJob.cxx:458  TQGraphMakerAnalysisJob.cxx:459  TQGraphMakerAnalysisJob.cxx:460  TQGraphMakerAnalysisJob.cxx:461  TQGraphMakerAnalysisJob.cxx:462  TQGraphMakerAnalysisJob.cxx:463  TQGraphMakerAnalysisJob.cxx:464  TQGraphMakerAnalysisJob.cxx:465  TQGraphMakerAnalysisJob.cxx:466  TQGraphMakerAnalysisJob.cxx:467  TQGraphMakerAnalysisJob.cxx:468  TQGraphMakerAnalysisJob.cxx:469  TQGraphMakerAnalysisJob.cxx:470  TQGraphMakerAnalysisJob.cxx:471  TQGraphMakerAnalysisJob.cxx:472  TQGraphMakerAnalysisJob.cxx:473  TQGraphMakerAnalysisJob.cxx:474  TQGraphMakerAnalysisJob.cxx:475  TQGraphMakerAnalysisJob.cxx:476  TQGraphMakerAnalysisJob.cxx:477  TQGraphMakerAnalysisJob.cxx:478  TQGraphMakerAnalysisJob.cxx:479  TQGraphMakerAnalysisJob.cxx:480  TQGraphMakerAnalysisJob.cxx:481  TQGraphMakerAnalysisJob.cxx:482  TQGraphMakerAnalysisJob.cxx:483  TQGraphMakerAnalysisJob.cxx:484  TQGraphMakerAnalysisJob.cxx:485  TQGraphMakerAnalysisJob.cxx:486  TQGraphMakerAnalysisJob.cxx:487  TQGraphMakerAnalysisJob.cxx:488  TQGraphMakerAnalysisJob.cxx:489  TQGraphMakerAnalysisJob.cxx:490  TQGraphMakerAnalysisJob.cxx:491  TQGraphMakerAnalysisJob.cxx:492  TQGraphMakerAnalysisJob.cxx:493  TQGraphMakerAnalysisJob.cxx:494  TQGraphMakerAnalysisJob.cxx:495  TQGraphMakerAnalysisJob.cxx:496  TQGraphMakerAnalysisJob.cxx:497  TQGraphMakerAnalysisJob.cxx:498  TQGraphMakerAnalysisJob.cxx:499  TQGraphMakerAnalysisJob.cxx:500  TQGraphMakerAnalysisJob.cxx:501  TQGraphMakerAnalysisJob.cxx:502  TQGraphMakerAnalysisJob.cxx:503  TQGraphMakerAnalysisJob.cxx:504  TQGraphMakerAnalysisJob.cxx:505  TQGraphMakerAnalysisJob.cxx:506  TQGraphMakerAnalysisJob.cxx:507  TQGraphMakerAnalysisJob.cxx:508  TQGraphMakerAnalysisJob.cxx:509  TQGraphMakerAnalysisJob.cxx:510  TQGraphMakerAnalysisJob.cxx:511  TQGraphMakerAnalysisJob.cxx:512  TQGraphMakerAnalysisJob.cxx:513  TQGraphMakerAnalysisJob.cxx:514  TQGraphMakerAnalysisJob.cxx:515  TQGraphMakerAnalysisJob.cxx:516  TQGraphMakerAnalysisJob.cxx:517  TQGraphMakerAnalysisJob.cxx:518  TQGraphMakerAnalysisJob.cxx:519  TQGraphMakerAnalysisJob.cxx:520  TQGraphMakerAnalysisJob.cxx:521  TQGraphMakerAnalysisJob.cxx:522  TQGraphMakerAnalysisJob.cxx:523  TQGraphMakerAnalysisJob.cxx:524  TQGraphMakerAnalysisJob.cxx:525  TQGraphMakerAnalysisJob.cxx:526  TQGraphMakerAnalysisJob.cxx:527  TQGraphMakerAnalysisJob.cxx:528  TQGraphMakerAnalysisJob.cxx:529  TQGraphMakerAnalysisJob.cxx:530  TQGraphMakerAnalysisJob.cxx:531  TQGraphMakerAnalysisJob.cxx:532  TQGraphMakerAnalysisJob.cxx:533  TQGraphMakerAnalysisJob.cxx:534  TQGraphMakerAnalysisJob.cxx:535  TQGraphMakerAnalysisJob.cxx:536  TQGraphMakerAnalysisJob.cxx:537  TQGraphMakerAnalysisJob.cxx:538  TQGraphMakerAnalysisJob.cxx:539  TQGraphMakerAnalysisJob.cxx:540  TQGraphMakerAnalysisJob.cxx:541  TQGraphMakerAnalysisJob.cxx:542  TQGraphMakerAnalysisJob.cxx:543  TQGraphMakerAnalysisJob.cxx:544  TQGraphMakerAnalysisJob.cxx:545  TQGraphMakerAnalysisJob.cxx:546  TQGraphMakerAnalysisJob.cxx:547  TQGraphMakerAnalysisJob.cxx:548  TQGraphMakerAnalysisJob.cxx:549  TQGraphMakerAnalysisJob.cxx:550  TQGraphMakerAnalysisJob.cxx:551  TQGraphMakerAnalysisJob.cxx:552  TQGraphMakerAnalysisJob.cxx:553  TQGraphMakerAnalysisJob.cxx:554  TQGraphMakerAnalysisJob.cxx:555  TQGraphMakerAnalysisJob.cxx:556  TQGraphMakerAnalysisJob.cxx:557  TQGraphMakerAnalysisJob.cxx:558  TQGraphMakerAnalysisJob.cxx:559  TQGraphMakerAnalysisJob.cxx:560  TQGraphMakerAnalysisJob.cxx:561  TQGraphMakerAnalysisJob.cxx:562  TQGraphMakerAnalysisJob.cxx:563  TQGraphMakerAnalysisJob.cxx:564  TQGraphMakerAnalysisJob.cxx:565  TQGraphMakerAnalysisJob.cxx:566  TQGraphMakerAnalysisJob.cxx:567  TQGraphMakerAnalysisJob.cxx:568  TQGraphMakerAnalysisJob.cxx:569  TQGraphMakerAnalysisJob.cxx:570  TQGraphMakerAnalysisJob.cxx:571  TQGraphMakerAnalysisJob.cxx:572  TQGraphMakerAnalysisJob.cxx:573  TQGraphMakerAnalysisJob.cxx:574  TQGraphMakerAnalysisJob.cxx:575  TQGraphMakerAnalysisJob.cxx:576  TQGraphMakerAnalysisJob.cxx:577  TQGraphMakerAnalysisJob.cxx:578  TQGraphMakerAnalysisJob.cxx:579  TQGraphMakerAnalysisJob.cxx:580  TQGraphMakerAnalysisJob.cxx:581  TQGraphMakerAnalysisJob.cxx:582  TQGraphMakerAnalysisJob.cxx:583  TQGraphMakerAnalysisJob.cxx:584  TQGraphMakerAnalysisJob.cxx:585  TQGraphMakerAnalysisJob.cxx:586  TQGraphMakerAnalysisJob.cxx:587  TQGraphMakerAnalysisJob.cxx:588  TQGraphMakerAnalysisJob.cxx:589  TQGraphMakerAnalysisJob.cxx:590  TQGraphMakerAnalysisJob.cxx:591  TQGraphMakerAnalysisJob.cxx:592  TQGraphMakerAnalysisJob.cxx:593  TQGraphMakerAnalysisJob.cxx:594  TQGraphMakerAnalysisJob.cxx:595  TQGraphMakerAnalysisJob.cxx:596  TQGraphMakerAnalysisJob.cxx:597  TQGraphMakerAnalysisJob.cxx:598  TQGraphMakerAnalysisJob.cxx:599  TQGraphMakerAnalysisJob.cxx:600  TQGraphMakerAnalysisJob.cxx:601  TQGraphMakerAnalysisJob.cxx:602  TQGraphMakerAnalysisJob.cxx:603  TQGraphMakerAnalysisJob.cxx:604  TQGraphMakerAnalysisJob.cxx:605  TQGraphMakerAnalysisJob.cxx:606  TQGraphMakerAnalysisJob.cxx:607  TQGraphMakerAnalysisJob.cxx:608  TQGraphMakerAnalysisJob.cxx:609  TQGraphMakerAnalysisJob.cxx:610  TQGraphMakerAnalysisJob.cxx:611  TQGraphMakerAnalysisJob.cxx:612  TQGraphMakerAnalysisJob.cxx:613  TQGraphMakerAnalysisJob.cxx:614  TQGraphMakerAnalysisJob.cxx:615  TQGraphMakerAnalysisJob.cxx:616  TQGraphMakerAnalysisJob.cxx:617  TQGraphMakerAnalysisJob.cxx:618  TQGraphMakerAnalysisJob.cxx:619  TQGraphMakerAnalysisJob.cxx:620  TQGraphMakerAnalysisJob.cxx:621  TQGraphMakerAnalysisJob.cxx:622  TQGraphMakerAnalysisJob.cxx:623  TQGraphMakerAnalysisJob.cxx:624  TQGraphMakerAnalysisJob.cxx:625  TQGraphMakerAnalysisJob.cxx:626  TQGraphMakerAnalysisJob.cxx:627  TQGraphMakerAnalysisJob.cxx:628  TQGraphMakerAnalysisJob.cxx:629  TQGraphMakerAnalysisJob.cxx:630  TQGraphMakerAnalysisJob.cxx:631  TQGraphMakerAnalysisJob.cxx:632  TQGraphMakerAnalysisJob.cxx:633  TQGraphMakerAnalysisJob.cxx:634  TQGraphMakerAnalysisJob.cxx:635  TQGraphMakerAnalysisJob.cxx:636  TQGraphMakerAnalysisJob.cxx:637  TQGraphMakerAnalysisJob.cxx:638  TQGraphMakerAnalysisJob.cxx:639  TQGraphMakerAnalysisJob.cxx:640  TQGraphMakerAnalysisJob.cxx:641  TQGraphMakerAnalysisJob.cxx:642  TQGraphMakerAnalysisJob.cxx:643  TQGraphMakerAnalysisJob.cxx:644  TQGraphMakerAnalysisJob.cxx:645  TQGraphMakerAnalysisJob.cxx:646  TQGraphMakerAnalysisJob.cxx:647  TQGraphMakerAnalysisJob.cxx:648  TQGraphMakerAnalysisJob.cxx:649  TQGraphMakerAnalysisJob.cxx:650  TQGraphMakerAnalysisJob.cxx:651  TQGraphMakerAnalysisJob.cxx:652  TQGraphMakerAnalysisJob.cxx:653  TQGraphMakerAnalysisJob.cxx:654  TQGraphMakerAnalysisJob.cxx:655  TQGraphMakerAnalysisJob.cxx:656  TQGraphMakerAnalysisJob.cxx:657  TQGraphMakerAnalysisJob.cxx:658  TQGraphMakerAnalysisJob.cxx:659  TQGraphMakerAnalysisJob.cxx:660  TQGraphMakerAnalysisJob.cxx:661  TQGraphMakerAnalysisJob.cxx:662  TQGraphMakerAnalysisJob.cxx:663  TQGraphMakerAnalysisJob.cxx:664  TQGraphMakerAnalysisJob.cxx:665  TQGraphMakerAnalysisJob.cxx:666  TQGraphMakerAnalysisJob.cxx:667  TQGraphMakerAnalysisJob.cxx:668  TQGraphMakerAnalysisJob.cxx:669  TQGraphMakerAnalysisJob.cxx:670  TQGraphMakerAnalysisJob.cxx:671  TQGraphMakerAnalysisJob.cxx:672  TQGraphMakerAnalysisJob.cxx:673  TQGraphMakerAnalysisJob.cxx:674  TQGraphMakerAnalysisJob.cxx:675  TQGraphMakerAnalysisJob.cxx:676  TQGraphMakerAnalysisJob.cxx:677  TQGraphMakerAnalysisJob.cxx:678  TQGraphMakerAnalysisJob.cxx:679  TQGraphMakerAnalysisJob.cxx:680  TQGraphMakerAnalysisJob.cxx:681  TQGraphMakerAnalysisJob.cxx:682  TQGraphMakerAnalysisJob.cxx:683  TQGraphMakerAnalysisJob.cxx:684  TQGraphMakerAnalysisJob.cxx:685  TQGraphMakerAnalysisJob.cxx:686  TQGraphMakerAnalysisJob.cxx:687  TQGraphMakerAnalysisJob.cxx:688  TQGraphMakerAnalysisJob.cxx:689