#include "QFramework/TQEventlistAnalysisJob.h"
#include "QFramework/TQStringUtils.h"
#include "QFramework/TQCut.h"
#include "QFramework/TQAnalysisJob.h"
#include "QFramework/TQCounter.h"
#include "QFramework/TQSample.h"
#include "QFramework/TQTable.h"
#include "TIterator.h"
#include "TList.h"
#include "QFramework/TQLibrary.h"
#include <iostream>
#include <fstream>
#include <stdexcept>
#include <sstream>
#include <cstdlib>
ClassImp(TQEventlistAnalysisJob)
TQMessageStream TQEventlistAnalysisJob::f_ErrMsg(new std::stringstream());
TQEventlistAnalysisJob::TQEventlistAnalysisJob() : TQAnalysisJob(),
fEventlist(0),
fEventIndex(0),
showWeightColumn(false),
f_Verbose(false)
{
}
TQEventlistAnalysisJob::TQEventlistAnalysisJob(const TString& name_) : TQAnalysisJob(name_),
fEventlist(0),
fEventIndex(0),
showWeightColumn(false),
f_Verbose(false)
{
}
TQEventlistAnalysisJob * TQEventlistAnalysisJob::getClone(){
TQEventlistAnalysisJob* newInstance = new TQEventlistAnalysisJob(this->GetName());
newInstance->showWeightColumn = this->showWeightColumn;
for(size_t i=0; i<this->fExpressions.size(); ++i){
newInstance->fExpressions.push_back(this->fExpressions[i]);
newInstance->fTitles.push_back(this->fTitles[i]);
}
return newInstance;
}
void TQEventlistAnalysisJob::reset() {
this->fEventIndex = 0;
TQAnalysisJob::reset();
this->fExpressions.clear();
this->fTitles.clear();
if(fEventlist) delete this->fEventlist;
}
void TQEventlistAnalysisJob::addColumn(const TString& expression, const TString& label) {
this->fExpressions.push_back(expression);
if(!label.IsNull()) this->fTitles.push_back(label);
else this->fTitles.push_back(expression);
}
int TQEventlistAnalysisJob::nColumns() const {
return this->fExpressions.size();
}
void TQEventlistAnalysisJob::setWeightColumn(bool weight){
this->showWeightColumn = weight;
}
TObjArray * TQEventlistAnalysisJob::getBranchNames() {
if(!this->fSample){
throw std::runtime_error("cannot retrieve branches on uninitialized object!");
}
TObjArray * bNames = new TObjArray();
for(size_t i=0; i<this->fObservables.size(); i++){
TCollection* c = this->fObservables[i]->getBranchNames();
bNames->AddAll(c);
delete c;
}
return bNames;
}
bool TQEventlistAnalysisJob::initializeSelf() {
DEBUGclass("initializing analysis job '%s'",this->GetName());
if (!this->getCut()) return false;
DEBUGclass("allocating table");
fEventlist = new TQTable(this->GetName());
fEventlist->clearVlines();
fEventlist->expand(1000,this->fExpressions.size()+this->showWeightColumn);
DEBUGclass("preparing observables");
for (size_t i = 0; i < this->fExpressions.size(); ++i) {
fEventlist->setEntry(0,i,this->fTitles[i]);
TQObservable* obs = TQObservable::getObservable(this->fExpressions[i],this->fSample);
if (!obs) {
ERRORclass("Failed to obtain observable with expression '%s' for sample '%s' in analysis job '%s'",this->fExpressions[i].Data(),this->fSample->getPath().Data(),this->GetName());
return false;
}
if (!obs->initialize(this->fSample)) {
ERRORclass("Failed to initialize observable created from expression '%s' for sample '%s' in analysis job '%s'" ,this->fExpressions[i].Data(),this->fSample->getPath().Data(),this->GetName());
return false;
}
this->fObservables.push_back(obs);
}
if(this->showWeightColumn){
DEBUGclass("handling weight column");
fEventlist->setEntry(0,this->fObservables.size(),"weight");
}
return true;
}
bool TQEventlistAnalysisJob::finalizeSelf() {
for (unsigned int i = 0; i < this->fObservables.size(); i++) {
this->fObservables[i]->finalize();
}
this->fObservables.clear();
fEventlist->shrink();
TQFolder * evlFolder = this->fSample->getFolder(TString::Format(".eventlists/%s/+",this->getCut()->GetName()));
if (!evlFolder)
return false;
evlFolder->Remove(evlFolder->FindObject(fEventlist->GetName()));
evlFolder->Add(fEventlist);
fEventlist = NULL;
return true;
}
bool TQEventlistAnalysisJob::execute(double weight) {
this->fEventIndex++;
if(fEventlist->getNrows() <= this->fEventIndex){
fEventlist->expand(2*this->fEventIndex,this->fObservables.size()+this->showWeightColumn);
}
for (size_t i = 0; i < this->fObservables.size(); ++i) {
double val = 0;
TRY(
val = this->fObservables[i]->getValue();
,TString::Format("Failed to evaluate observable '%s' at cut '%s'.", fObservables[i]->GetName(), this->getCut()->GetName())
)
DEBUGclass("setting entry %d/%d from '%s' to %g",this->fEventIndex,i,this->fObservables[i]->getActiveExpression().Data(),val);
this->fEventlist->setEntryValue(this->fEventIndex,i,val);
}
if(this->showWeightColumn){
DEBUGclass("setting (weight) entry %d/%d to %g",this->fEventIndex,this->fObservables.size(),weight);
this->fEventlist->setEntryValue(this->fEventIndex,this->fObservables.size(),weight);
}
return true;
}
void TQEventlistAnalysisJob::setErrorMessage(TString message) {
f_ErrMsg.sendClassFunctionMessage(TQMessageStream::INFO,this->Class(),"<anonymous>",message);
if (f_Verbose > 0) INFOclass(message);
}
void TQEventlistAnalysisJob::clearMessages(){
f_ErrMsg.clearMessages();
}
TString TQEventlistAnalysisJob::getErrorMessage() {
return f_ErrMsg.getMessages();
}
TQEventlistAnalysisJob::~TQEventlistAnalysisJob() {
this->reset();
}
int TQEventlistAnalysisJob::importJobsFromTextFiles(const TString& files, TQCut* basecut, const TString& channelFilter, bool verbose){
std::vector <TString> filenames = TQStringUtils::split(files,",");
return TQEventlistAnalysisJob::importJobsFromTextFiles(filenames,basecut,channelFilter,verbose);
}
int TQEventlistAnalysisJob::importJobsFromTextFiles(const TString& files, TQCut* basecut, TQTaggable* aliases, const TString& channelFilter, bool verbose){
std::vector <TString> filenames = TQStringUtils::split(files,",");
return TQEventlistAnalysisJob::importJobsFromTextFiles(filenames,basecut,aliases,channelFilter,verbose);
}
int TQEventlistAnalysisJob::importJobsFromTextFiles(const std::vector<TString>& filenames, TQCut* basecut, const TString& channelFilter, bool verbose){
return TQEventlistAnalysisJob::importJobsFromTextFiles(filenames, basecut, NULL, channelFilter, verbose);
}
int TQEventlistAnalysisJob::importJobsFromTextFiles(const std::vector<TString>& filenames, TQCut* basecut, TQTaggable* aliases, const TString& channelFilter, bool verbose){
if(filenames.size() < 1){
ERRORfunc("importing no eventlists from empty files list!");
return -1;
}
std::map<TString,std::vector<TString> > eventlistDefinitions;
std::vector<TString> assignments;
TString buffer;
for(size_t i=0; i<filenames.size(); i++){
std::vector<TString>* lines = TQStringUtils::readFileLines(filenames[i]);
if(!lines){
if(verbose) ERRORfunc("unable to open file '%s'",filenames[i].Data());
continue;
}
for(size_t j=0; j<lines->size(); j++){
TString line(lines->at(j));
TQStringUtils::readBlanks(line);
if(line.IsNull()) continue;
if(!line.BeginsWith("@")){
TString name, def;
if(!TQStringUtils::readUpTo(line,name,":")){
if(verbose) ERRORfunc("unable to parse eventlist definition '%s'",line.Data());
continue;
}
TQStringUtils::removeLeading(line,": ");
TQStringUtils::readUpTo(line,def,";");
DEBUGclass("found definition: '%s', assigning as '%s'",def.Data(),name.Data());
eventlistDefinitions[TQStringUtils::trim(name)] = TQStringUtils::split(def,",","{","}");
} else if(TQStringUtils::removeLeading(line,"@") == 1){
DEBUGclass("found assignment: '%s'",line.Data());
assignments.push_back(line);
} else {
if(verbose) WARNfunc("encountered unknown token: '%s'",line.Data());
}
}
delete lines;
}
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,eventlists;
TQStringUtils::readUpTo(assignment,cuts,":");
TQStringUtils::readToken(assignment,buffer," :");
TQStringUtils::readUpTo(assignment,eventlists,";");
TQStringUtils::readToken(assignment,buffer,"; ");
DEBUGclass("eventlists: '%s'",eventlists.Data());
DEBUGclass("cuts: '%s'",cuts.Data());
DEBUGclass("spare symbols: '%s'",buffer.Data());
std::vector<TString> vEvtlists = TQStringUtils::split(eventlists,",");
if(vEvtlists.size() < 1){
if(verbose) ERRORfunc("no eventlists listed in assignment '%s'",assignments[i].Data());
continue;
}
for(size_t j=0; j<vEvtlists.size(); j++){
TString evtlist(vEvtlists[j]);
bool showWeight = (TQStringUtils::removeTrailing(evtlist,"+") > 0);
std::vector<TString> def = eventlistDefinitions[evtlist];
if(def.empty()){
if(verbose) ERRORfunc("unable to find eventlist definition for name '%s', skipping",vEvtlists[j].Data());
continue;
}
TQEventlistAnalysisJob* job = new TQEventlistAnalysisJob(evtlist);
job->setWeightColumn(showWeight);
for(size_t i=0; i<def.size(); i++){
TString col(aliases ? aliases->replaceInTextRecursive(def[i]) : def[i]);
TString title;
TQStringUtils::readUpToText(col,title,"<<");
TQStringUtils::removeLeading(col," <");
if(!title.IsNull() && ! col.IsNull()){
job->addColumn(col,title);
}
}
if(job->nColumns() < 1){
DEBUGclass("error booking eventlist for '%s', function says '%s'",f_ErrMsg.getMessages().Data());
} else {
basecut->addAnalysisJob(job,cuts);
retval += 1;
}
delete job;
}
}
DEBUGclass("end of function call, found %d event lists",retval);
return retval;
}
TQEventlistAnalysisJob.cxx:1 TQEventlistAnalysisJob.cxx:2 TQEventlistAnalysisJob.cxx:3 TQEventlistAnalysisJob.cxx:4 TQEventlistAnalysisJob.cxx:5 TQEventlistAnalysisJob.cxx:6 TQEventlistAnalysisJob.cxx:7 TQEventlistAnalysisJob.cxx:8 TQEventlistAnalysisJob.cxx:9 TQEventlistAnalysisJob.cxx:10 TQEventlistAnalysisJob.cxx:11 TQEventlistAnalysisJob.cxx:12 TQEventlistAnalysisJob.cxx:13 TQEventlistAnalysisJob.cxx:14 TQEventlistAnalysisJob.cxx:15 TQEventlistAnalysisJob.cxx:16 TQEventlistAnalysisJob.cxx:17 TQEventlistAnalysisJob.cxx:18 TQEventlistAnalysisJob.cxx:19 TQEventlistAnalysisJob.cxx:20 TQEventlistAnalysisJob.cxx:21 TQEventlistAnalysisJob.cxx:22 TQEventlistAnalysisJob.cxx:23 TQEventlistAnalysisJob.cxx:24 TQEventlistAnalysisJob.cxx:25 TQEventlistAnalysisJob.cxx:26 TQEventlistAnalysisJob.cxx:27 TQEventlistAnalysisJob.cxx:28 TQEventlistAnalysisJob.cxx:29 TQEventlistAnalysisJob.cxx:30 TQEventlistAnalysisJob.cxx:31 TQEventlistAnalysisJob.cxx:32 TQEventlistAnalysisJob.cxx:33 TQEventlistAnalysisJob.cxx:34 TQEventlistAnalysisJob.cxx:35 TQEventlistAnalysisJob.cxx:36 TQEventlistAnalysisJob.cxx:37 TQEventlistAnalysisJob.cxx:38 TQEventlistAnalysisJob.cxx:39 TQEventlistAnalysisJob.cxx:40 TQEventlistAnalysisJob.cxx:41 TQEventlistAnalysisJob.cxx:42 TQEventlistAnalysisJob.cxx:43 TQEventlistAnalysisJob.cxx:44 TQEventlistAnalysisJob.cxx:45 TQEventlistAnalysisJob.cxx:46 TQEventlistAnalysisJob.cxx:47 TQEventlistAnalysisJob.cxx:48 TQEventlistAnalysisJob.cxx:49 TQEventlistAnalysisJob.cxx:50 TQEventlistAnalysisJob.cxx:51 TQEventlistAnalysisJob.cxx:52 TQEventlistAnalysisJob.cxx:53 TQEventlistAnalysisJob.cxx:54 TQEventlistAnalysisJob.cxx:55 TQEventlistAnalysisJob.cxx:56 TQEventlistAnalysisJob.cxx:57 TQEventlistAnalysisJob.cxx:58 TQEventlistAnalysisJob.cxx:59 TQEventlistAnalysisJob.cxx:60 TQEventlistAnalysisJob.cxx:61 TQEventlistAnalysisJob.cxx:62 TQEventlistAnalysisJob.cxx:63 TQEventlistAnalysisJob.cxx:64 TQEventlistAnalysisJob.cxx:65 TQEventlistAnalysisJob.cxx:66 TQEventlistAnalysisJob.cxx:67 TQEventlistAnalysisJob.cxx:68 TQEventlistAnalysisJob.cxx:69 TQEventlistAnalysisJob.cxx:70 TQEventlistAnalysisJob.cxx:71 TQEventlistAnalysisJob.cxx:72 TQEventlistAnalysisJob.cxx:73 TQEventlistAnalysisJob.cxx:74 TQEventlistAnalysisJob.cxx:75 TQEventlistAnalysisJob.cxx:76 TQEventlistAnalysisJob.cxx:77 TQEventlistAnalysisJob.cxx:78 TQEventlistAnalysisJob.cxx:79 TQEventlistAnalysisJob.cxx:80 TQEventlistAnalysisJob.cxx:81 TQEventlistAnalysisJob.cxx:82 TQEventlistAnalysisJob.cxx:83 TQEventlistAnalysisJob.cxx:84 TQEventlistAnalysisJob.cxx:85 TQEventlistAnalysisJob.cxx:86 TQEventlistAnalysisJob.cxx:87 TQEventlistAnalysisJob.cxx:88 TQEventlistAnalysisJob.cxx:89 TQEventlistAnalysisJob.cxx:90 TQEventlistAnalysisJob.cxx:91 TQEventlistAnalysisJob.cxx:92 TQEventlistAnalysisJob.cxx:93 TQEventlistAnalysisJob.cxx:94 TQEventlistAnalysisJob.cxx:95 TQEventlistAnalysisJob.cxx:96 TQEventlistAnalysisJob.cxx:97 TQEventlistAnalysisJob.cxx:98 TQEventlistAnalysisJob.cxx:99 TQEventlistAnalysisJob.cxx:100 TQEventlistAnalysisJob.cxx:101 TQEventlistAnalysisJob.cxx:102 TQEventlistAnalysisJob.cxx:103 TQEventlistAnalysisJob.cxx:104 TQEventlistAnalysisJob.cxx:105 TQEventlistAnalysisJob.cxx:106 TQEventlistAnalysisJob.cxx:107 TQEventlistAnalysisJob.cxx:108 TQEventlistAnalysisJob.cxx:109 TQEventlistAnalysisJob.cxx:110 TQEventlistAnalysisJob.cxx:111 TQEventlistAnalysisJob.cxx:112 TQEventlistAnalysisJob.cxx:113 TQEventlistAnalysisJob.cxx:114 TQEventlistAnalysisJob.cxx:115 TQEventlistAnalysisJob.cxx:116 TQEventlistAnalysisJob.cxx:117 TQEventlistAnalysisJob.cxx:118 TQEventlistAnalysisJob.cxx:119 TQEventlistAnalysisJob.cxx:120 TQEventlistAnalysisJob.cxx:121 TQEventlistAnalysisJob.cxx:122 TQEventlistAnalysisJob.cxx:123 TQEventlistAnalysisJob.cxx:124 TQEventlistAnalysisJob.cxx:125 TQEventlistAnalysisJob.cxx:126 TQEventlistAnalysisJob.cxx:127 TQEventlistAnalysisJob.cxx:128 TQEventlistAnalysisJob.cxx:129 TQEventlistAnalysisJob.cxx:130 TQEventlistAnalysisJob.cxx:131 TQEventlistAnalysisJob.cxx:132 TQEventlistAnalysisJob.cxx:133 TQEventlistAnalysisJob.cxx:134 TQEventlistAnalysisJob.cxx:135 TQEventlistAnalysisJob.cxx:136 TQEventlistAnalysisJob.cxx:137 TQEventlistAnalysisJob.cxx:138 TQEventlistAnalysisJob.cxx:139 TQEventlistAnalysisJob.cxx:140 TQEventlistAnalysisJob.cxx:141 TQEventlistAnalysisJob.cxx:142 TQEventlistAnalysisJob.cxx:143 TQEventlistAnalysisJob.cxx:144 TQEventlistAnalysisJob.cxx:145 TQEventlistAnalysisJob.cxx:146 TQEventlistAnalysisJob.cxx:147 TQEventlistAnalysisJob.cxx:148 TQEventlistAnalysisJob.cxx:149 TQEventlistAnalysisJob.cxx:150 TQEventlistAnalysisJob.cxx:151 TQEventlistAnalysisJob.cxx:152 TQEventlistAnalysisJob.cxx:153 TQEventlistAnalysisJob.cxx:154 TQEventlistAnalysisJob.cxx:155 TQEventlistAnalysisJob.cxx:156 TQEventlistAnalysisJob.cxx:157 TQEventlistAnalysisJob.cxx:158 TQEventlistAnalysisJob.cxx:159 TQEventlistAnalysisJob.cxx:160 TQEventlistAnalysisJob.cxx:161 TQEventlistAnalysisJob.cxx:162 TQEventlistAnalysisJob.cxx:163 TQEventlistAnalysisJob.cxx:164 TQEventlistAnalysisJob.cxx:165 TQEventlistAnalysisJob.cxx:166 TQEventlistAnalysisJob.cxx:167 TQEventlistAnalysisJob.cxx:168 TQEventlistAnalysisJob.cxx:169 TQEventlistAnalysisJob.cxx:170 TQEventlistAnalysisJob.cxx:171 TQEventlistAnalysisJob.cxx:172 TQEventlistAnalysisJob.cxx:173 TQEventlistAnalysisJob.cxx:174 TQEventlistAnalysisJob.cxx:175 TQEventlistAnalysisJob.cxx:176 TQEventlistAnalysisJob.cxx:177 TQEventlistAnalysisJob.cxx:178 TQEventlistAnalysisJob.cxx:179 TQEventlistAnalysisJob.cxx:180 TQEventlistAnalysisJob.cxx:181 TQEventlistAnalysisJob.cxx:182 TQEventlistAnalysisJob.cxx:183 TQEventlistAnalysisJob.cxx:184 TQEventlistAnalysisJob.cxx:185 TQEventlistAnalysisJob.cxx:186 TQEventlistAnalysisJob.cxx:187 TQEventlistAnalysisJob.cxx:188 TQEventlistAnalysisJob.cxx:189 TQEventlistAnalysisJob.cxx:190 TQEventlistAnalysisJob.cxx:191 TQEventlistAnalysisJob.cxx:192 TQEventlistAnalysisJob.cxx:193 TQEventlistAnalysisJob.cxx:194 TQEventlistAnalysisJob.cxx:195 TQEventlistAnalysisJob.cxx:196 TQEventlistAnalysisJob.cxx:197 TQEventlistAnalysisJob.cxx:198 TQEventlistAnalysisJob.cxx:199 TQEventlistAnalysisJob.cxx:200 TQEventlistAnalysisJob.cxx:201 TQEventlistAnalysisJob.cxx:202 TQEventlistAnalysisJob.cxx:203 TQEventlistAnalysisJob.cxx:204 TQEventlistAnalysisJob.cxx:205 TQEventlistAnalysisJob.cxx:206 TQEventlistAnalysisJob.cxx:207 TQEventlistAnalysisJob.cxx:208 TQEventlistAnalysisJob.cxx:209 TQEventlistAnalysisJob.cxx:210 TQEventlistAnalysisJob.cxx:211 TQEventlistAnalysisJob.cxx:212 TQEventlistAnalysisJob.cxx:213 TQEventlistAnalysisJob.cxx:214 TQEventlistAnalysisJob.cxx:215 TQEventlistAnalysisJob.cxx:216 TQEventlistAnalysisJob.cxx:217 TQEventlistAnalysisJob.cxx:218 TQEventlistAnalysisJob.cxx:219 TQEventlistAnalysisJob.cxx:220 TQEventlistAnalysisJob.cxx:221 TQEventlistAnalysisJob.cxx:222 TQEventlistAnalysisJob.cxx:223 TQEventlistAnalysisJob.cxx:224 TQEventlistAnalysisJob.cxx:225 TQEventlistAnalysisJob.cxx:226 TQEventlistAnalysisJob.cxx:227 TQEventlistAnalysisJob.cxx:228 TQEventlistAnalysisJob.cxx:229 TQEventlistAnalysisJob.cxx:230 TQEventlistAnalysisJob.cxx:231 TQEventlistAnalysisJob.cxx:232 TQEventlistAnalysisJob.cxx:233 TQEventlistAnalysisJob.cxx:234 TQEventlistAnalysisJob.cxx:235 TQEventlistAnalysisJob.cxx:236 TQEventlistAnalysisJob.cxx:237 TQEventlistAnalysisJob.cxx:238 TQEventlistAnalysisJob.cxx:239 TQEventlistAnalysisJob.cxx:240 TQEventlistAnalysisJob.cxx:241 TQEventlistAnalysisJob.cxx:242 TQEventlistAnalysisJob.cxx:243 TQEventlistAnalysisJob.cxx:244 TQEventlistAnalysisJob.cxx:245 TQEventlistAnalysisJob.cxx:246 TQEventlistAnalysisJob.cxx:247 TQEventlistAnalysisJob.cxx:248 TQEventlistAnalysisJob.cxx:249 TQEventlistAnalysisJob.cxx:250 TQEventlistAnalysisJob.cxx:251 TQEventlistAnalysisJob.cxx:252 TQEventlistAnalysisJob.cxx:253 TQEventlistAnalysisJob.cxx:254 TQEventlistAnalysisJob.cxx:255 TQEventlistAnalysisJob.cxx:256 TQEventlistAnalysisJob.cxx:257 TQEventlistAnalysisJob.cxx:258 TQEventlistAnalysisJob.cxx:259 TQEventlistAnalysisJob.cxx:260 TQEventlistAnalysisJob.cxx:261 TQEventlistAnalysisJob.cxx:262 TQEventlistAnalysisJob.cxx:263 TQEventlistAnalysisJob.cxx:264 TQEventlistAnalysisJob.cxx:265 TQEventlistAnalysisJob.cxx:266 TQEventlistAnalysisJob.cxx:267 TQEventlistAnalysisJob.cxx:268 TQEventlistAnalysisJob.cxx:269 TQEventlistAnalysisJob.cxx:270 TQEventlistAnalysisJob.cxx:271 TQEventlistAnalysisJob.cxx:272 TQEventlistAnalysisJob.cxx:273 TQEventlistAnalysisJob.cxx:274 TQEventlistAnalysisJob.cxx:275 TQEventlistAnalysisJob.cxx:276 TQEventlistAnalysisJob.cxx:277 TQEventlistAnalysisJob.cxx:278 TQEventlistAnalysisJob.cxx:279 TQEventlistAnalysisJob.cxx:280 TQEventlistAnalysisJob.cxx:281 TQEventlistAnalysisJob.cxx:282 TQEventlistAnalysisJob.cxx:283 TQEventlistAnalysisJob.cxx:284 TQEventlistAnalysisJob.cxx:285 TQEventlistAnalysisJob.cxx:286 TQEventlistAnalysisJob.cxx:287 TQEventlistAnalysisJob.cxx:288 TQEventlistAnalysisJob.cxx:289 TQEventlistAnalysisJob.cxx:290 TQEventlistAnalysisJob.cxx:291 TQEventlistAnalysisJob.cxx:292 TQEventlistAnalysisJob.cxx:293 TQEventlistAnalysisJob.cxx:294 TQEventlistAnalysisJob.cxx:295 TQEventlistAnalysisJob.cxx:296 TQEventlistAnalysisJob.cxx:297 TQEventlistAnalysisJob.cxx:298 TQEventlistAnalysisJob.cxx:299 TQEventlistAnalysisJob.cxx:300 TQEventlistAnalysisJob.cxx:301 TQEventlistAnalysisJob.cxx:302 TQEventlistAnalysisJob.cxx:303 TQEventlistAnalysisJob.cxx:304 TQEventlistAnalysisJob.cxx:305 TQEventlistAnalysisJob.cxx:306 TQEventlistAnalysisJob.cxx:307 TQEventlistAnalysisJob.cxx:308 TQEventlistAnalysisJob.cxx:309 TQEventlistAnalysisJob.cxx:310 TQEventlistAnalysisJob.cxx:311 TQEventlistAnalysisJob.cxx:312 TQEventlistAnalysisJob.cxx:313 TQEventlistAnalysisJob.cxx:314 TQEventlistAnalysisJob.cxx:315 TQEventlistAnalysisJob.cxx:316 TQEventlistAnalysisJob.cxx:317 TQEventlistAnalysisJob.cxx:318 TQEventlistAnalysisJob.cxx:319 TQEventlistAnalysisJob.cxx:320 TQEventlistAnalysisJob.cxx:321 TQEventlistAnalysisJob.cxx:322 TQEventlistAnalysisJob.cxx:323 TQEventlistAnalysisJob.cxx:324 TQEventlistAnalysisJob.cxx:325 TQEventlistAnalysisJob.cxx:326 TQEventlistAnalysisJob.cxx:327 TQEventlistAnalysisJob.cxx:328 TQEventlistAnalysisJob.cxx:329 TQEventlistAnalysisJob.cxx:330 TQEventlistAnalysisJob.cxx:331 TQEventlistAnalysisJob.cxx:332 TQEventlistAnalysisJob.cxx:333 TQEventlistAnalysisJob.cxx:334 TQEventlistAnalysisJob.cxx:335 TQEventlistAnalysisJob.cxx:336 TQEventlistAnalysisJob.cxx:337 TQEventlistAnalysisJob.cxx:338 TQEventlistAnalysisJob.cxx:339 TQEventlistAnalysisJob.cxx:340 TQEventlistAnalysisJob.cxx:341 TQEventlistAnalysisJob.cxx:342 TQEventlistAnalysisJob.cxx:343 TQEventlistAnalysisJob.cxx:344 TQEventlistAnalysisJob.cxx:345 TQEventlistAnalysisJob.cxx:346 TQEventlistAnalysisJob.cxx:347 TQEventlistAnalysisJob.cxx:348 TQEventlistAnalysisJob.cxx:349 TQEventlistAnalysisJob.cxx:350 TQEventlistAnalysisJob.cxx:351 TQEventlistAnalysisJob.cxx:352 TQEventlistAnalysisJob.cxx:353 TQEventlistAnalysisJob.cxx:354 TQEventlistAnalysisJob.cxx:355 TQEventlistAnalysisJob.cxx:356 TQEventlistAnalysisJob.cxx:357 TQEventlistAnalysisJob.cxx:358 TQEventlistAnalysisJob.cxx:359 TQEventlistAnalysisJob.cxx:360 TQEventlistAnalysisJob.cxx:361 TQEventlistAnalysisJob.cxx:362 TQEventlistAnalysisJob.cxx:363 TQEventlistAnalysisJob.cxx:364 TQEventlistAnalysisJob.cxx:365 TQEventlistAnalysisJob.cxx:366 TQEventlistAnalysisJob.cxx:367 TQEventlistAnalysisJob.cxx:368 TQEventlistAnalysisJob.cxx:369 TQEventlistAnalysisJob.cxx:370 TQEventlistAnalysisJob.cxx:371 TQEventlistAnalysisJob.cxx:372 TQEventlistAnalysisJob.cxx:373 TQEventlistAnalysisJob.cxx:374 TQEventlistAnalysisJob.cxx:375 TQEventlistAnalysisJob.cxx:376 TQEventlistAnalysisJob.cxx:377 TQEventlistAnalysisJob.cxx:378 TQEventlistAnalysisJob.cxx:379 TQEventlistAnalysisJob.cxx:380 TQEventlistAnalysisJob.cxx:381 TQEventlistAnalysisJob.cxx:382 TQEventlistAnalysisJob.cxx:383 TQEventlistAnalysisJob.cxx:384