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