//____________________________________________________________________
//
// Run/Event Selection Tool
// 
// With the help of this tool an analysis can be run over a
// pre-selected list of events either given by a text file or by a
// flat Root tree. The tool is designed fot high speed and good
// performance, also for large lists.
//
// Usage:
// ======
// Note that when using tasks the content of the tool's data members
// can be set by using AtlAppAnalysiTask::AtlSetToolVariable() in the
// usual way.
//
// (1) Create tool with text file:
// AtlRunEvtSelectionTool *tool = new AtlRunEvtSelectionTool("runevttool", "Run/Evt Selection Tool");
// tool->fInputName("runevt.dat");
//
// The file runevt.dat looks like (events can be disordered):
// 1243393 1020
// 1243393 998
// 1243393 2346
// 1243393 10044
// 1243355 25
//
// In case the file has a different format, the format string for
// reading the file can be stored by the data member fInputFormat.
//
// (2) Create tool with ntuple:
// AtlRunEvtSelectionTool *tool = new AtlRunEvtSelectionTool("runevt_tool", "RunEvt Tool")
// tool->fInputFilename = "AntiElectronQCDModel.root"
// tool->fInputTreename = "AntiElectrons"
// tool->fBranchnameRun = "runnumber"
// tool->fBranchnameEvent = "eventnumber"
//
// (3) Inside the analysis simply ask by using
// Bool_t IsValid = tool->IsValidEvent();
// if the current event is contained in the list. This information can
// be used, for instance, in ProcessCuut to select only the given
// events. In a similar way an inverted selection would be possible as
// well.  The tool makes it easy to convert a given list (text fiel or
// ntuple) into an EntryList which can be used in a subsequent
// analysis.
//
//
// Author: Oliver Maria Kind <mailto: kind@mail.desy.de>
// Update: $Id: AtlRunEvtSelectionTool.cxx,v 1.3 2011/06/09 08:17:35 kind Exp $
// Copyright: 2011 (C) Oliver Maria Kind
//
#ifndef ATLAS_AtlRunEvtSelectionTool
#include <AtlRunEvtSelectionTool.h>
#endif
#include <TFile.h>
#include <TTree.h>
#include <TString.h>
#include <TList.h>
#include <TSystem.h>
#include <TROOT.h>
#include <iostream>
#include <fstream>

using namespace std;

#ifndef __CINT__
ClassImp(AtlRunEvtSelectionTool);
#endif

//____________________________________________________________________

AtlRunEvtSelectionTool::AtlRunEvtSelectionTool(const char* name,
					       const char* title) :
    AtlAnalysisTool(name, title) {
    //
    // Default constructor
    //
    fProcessMode = kPreAnalysis;
    fListOfRuns = new TList;
    fInputFilename = "";
    fInputFormat = "%d%d";
    fLastRun = 0;
    fNRuns = 0;
    fNEvents = 0;
}

//____________________________________________________________________

AtlRunEvtSelectionTool::~AtlRunEvtSelectionTool() {
    //
    // Default destructor
    //
    fListOfRuns->Delete();
    delete fListOfRuns;
}

//____________________________________________________________________

void AtlRunEvtSelectionTool::BookHistograms() {
    //
    // Initialze the tool
    //
    ParseInputFile();
}

//____________________________________________________________________

void AtlRunEvtSelectionTool::ParseInputFile() {
    //
    // Read from input file (either text or Root file and setup
    // run-event structure for fast comparison
    //

    // Re-set run-evt structure
    Reset();
    
    // Type of file ?
    TString line;
    FILE *ftype = gSystem->OpenPipe(Form("file %s", fInputFilename.Data()), "r");
    line.Gets(ftype);
    gSystem->ClosePipe(ftype);
    if ( line.Contains("ROOT file") ) {
	ParseRootFile();
    } else if ( line.Contains("ASCII text") ) {
	ParseTextFile();
    } else {
	Error("ParseInputFile",
	      "Unrecognized file format \"%s\". Abort!",
	      line.Data());
	gSystem->Abort(0);
    }
}

//____________________________________________________________________

void AtlRunEvtSelectionTool::ParseRootFile() {
    //
    // Parse Root input file
    //

    // Open input file and fetch the tree
    TFile *f_in = new TFile(fInputFilename.Data(), "read");
    TTree *t_in = (TTree*)f_in->Get(fInputTreename.Data());
    Int_t run = 0; Int_t evt = 0;
    t_in->SetBranchAddress(fBranchnameRun.Data(),   &run);
    t_in->SetBranchAddress(fBranchnameEvent.Data(), &evt);

    // Read tree
    for ( Int_t i = 0; i < t_in->GetEntries(); i++ ) {
	t_in->GetEntry(i);
	cout << "Run " << run << "   Evt " << evt << endl;
	Add(run, evt);
    }	
}

//____________________________________________________________________

void AtlRunEvtSelectionTool::ParseTextFile() {
    //
    // Parse text (ASCII) input file
    //

    // Open input file
    ifstream infile(fInputFilename.Data());
    if ( !infile.good() ) {
	Error("ParseTextFile", "Cannot open input file. Abort!");
    }

    // Read input file
    std::string line;
    Int_t run = 0; Int_t evt = 0;
    while ( std::getline(infile, line, '\n') ) {
	if ( 2 != sscanf(line.c_str(), fInputFormat, &run, &evt) ) {
	    continue; // skip empty and ill-formed lines
	}
	cout << "Run " << run << "   Evt " << evt << endl;
	Add(run, evt);
    }
}

//____________________________________________________________________

void AtlRunEvtSelectionTool::Add(Int_t run, Int_t evt) {
    //
    //  Add run/evt to the internal structure
    //  Prevent from double filling
    //
    AtlRunItem *item = 0;
    
    // First run or same run as last time ?
    if ( fLastRun == 0 ) {
	item = AddRun(run);
	fLastRun = item;
    } else {
	if ( run != fLastRun->fRunNr ) {
	    
	    // Run already added ?
	    item = FindRunItem(run);
	    if ( item == 0 ) item = AddRun(run);
	    
	    // Sort list of runs
	    fListOfRuns->Sort();
	    fLastRun = item;
	} else {
	    item = fLastRun;
	}
    }

    // Add event and sort event list (only if not already added before)
    if ( !std::binary_search(item->fEvents->begin(), item->fEvents->end(), evt) ) {
	item->fEvents->push_back(evt);
	std::sort(item->fEvents->begin(), item->fEvents->end());
	fNEvents++;
    }
}

//____________________________________________________________________

void AtlRunEvtSelectionTool::ExportAsText() {
    //
    // Export run-evt structure as text
    //
    TIter next_run(fListOfRuns);
    AtlRunItem *item = 0;
    while ( (item = (AtlRunItem*)next_run()) ) {
	for ( vector<int>::const_iterator it = item->fEvents->begin();
	      it != item->fEvents->end(); ++it ) {
	    cout << "Run " << item->fRunNr << "   Evt " << *it << endl;
	}
    }
}

//____________________________________________________________________

AtlRunItem* AtlRunEvtSelectionTool::FindRunItem(Int_t run) {
    //
    // Returns pointer to item with given run number - otherwise 0
    //
    TIter next_run(fListOfRuns);
    AtlRunItem *item = 0;
    while ( (item = (AtlRunItem*)next_run()) ) {
	if ( item->fRunNr == run ) return item;
    }
    return 0;
}

//____________________________________________________________________

AtlRunItem* AtlRunEvtSelectionTool::AddRun(Int_t run) {
    //
    // Add run item to the list of runs
    //
    AtlRunItem *item = new AtlRunItem(run);
    fListOfRuns->Add(item);
    fNRuns++;
    return item;
}

//____________________________________________________________________

Bool_t AtlRunEvtSelectionTool::Contains(Int_t run, Int_t evt,
					Bool_t remove) {
    //
    // Checks if run/evt is contained in existing run-evt structure
    //
    AtlRunItem *item = FindRunItem(run);
    if ( item == 0 ) return kFALSE;
    Bool_t IsContained = std::binary_search(item->fEvents->begin(),
					    item->fEvents->end(), evt);
    if ( remove == kFALSE || IsContained == kFALSE ) return IsContained;
    cout << "Size " << item->fEvents->size();
    item->fEvents->erase(std::remove(item->fEvents->begin(), item->fEvents->end(), evt),
			 item->fEvents->end());
    cout << "   "  << item->fEvents->size() << endl;
    if ( item->fEvents->size() == 0 ) fListOfRuns->Remove(item);
    return IsContained;
}

//____________________________________________________________________

void AtlRunEvtSelectionTool::SetBranchStatus() {
    //
    // Switch on needed branches
    //
    fTree->SetBranchStatus("fEventHeader.fRunNr*",   kTRUE);
    fTree->SetBranchStatus("fEventHeader.fEventNr*", kTRUE);
}

//____________________________________________________________________

void AtlRunEvtSelectionTool::Reset() {
    //
    // Reset run-evt structure
    //
    fListOfRuns->Delete();
    fNRuns = 0;
    fNEvents = 0;
}

//____________________________________________________________________

void AtlRunEvtSelectionTool::Print() const {
    //
    // Print toof information
    //
    cout << endl
	 << "========================================================" << endl
	 << "  Run/Event Selection Tool \"" << GetName() << "\"" << endl
	 << "========================================================" << endl
	 << "Input file: " << fInputFilename.Data() << endl
	 << "========================================================" << endl
	 << endl;
}
 AtlRunEvtSelectionTool.cxx:1
 AtlRunEvtSelectionTool.cxx:2
 AtlRunEvtSelectionTool.cxx:3
 AtlRunEvtSelectionTool.cxx:4
 AtlRunEvtSelectionTool.cxx:5
 AtlRunEvtSelectionTool.cxx:6
 AtlRunEvtSelectionTool.cxx:7
 AtlRunEvtSelectionTool.cxx:8
 AtlRunEvtSelectionTool.cxx:9
 AtlRunEvtSelectionTool.cxx:10
 AtlRunEvtSelectionTool.cxx:11
 AtlRunEvtSelectionTool.cxx:12
 AtlRunEvtSelectionTool.cxx:13
 AtlRunEvtSelectionTool.cxx:14
 AtlRunEvtSelectionTool.cxx:15
 AtlRunEvtSelectionTool.cxx:16
 AtlRunEvtSelectionTool.cxx:17
 AtlRunEvtSelectionTool.cxx:18
 AtlRunEvtSelectionTool.cxx:19
 AtlRunEvtSelectionTool.cxx:20
 AtlRunEvtSelectionTool.cxx:21
 AtlRunEvtSelectionTool.cxx:22
 AtlRunEvtSelectionTool.cxx:23
 AtlRunEvtSelectionTool.cxx:24
 AtlRunEvtSelectionTool.cxx:25
 AtlRunEvtSelectionTool.cxx:26
 AtlRunEvtSelectionTool.cxx:27
 AtlRunEvtSelectionTool.cxx:28
 AtlRunEvtSelectionTool.cxx:29
 AtlRunEvtSelectionTool.cxx:30
 AtlRunEvtSelectionTool.cxx:31
 AtlRunEvtSelectionTool.cxx:32
 AtlRunEvtSelectionTool.cxx:33
 AtlRunEvtSelectionTool.cxx:34
 AtlRunEvtSelectionTool.cxx:35
 AtlRunEvtSelectionTool.cxx:36
 AtlRunEvtSelectionTool.cxx:37
 AtlRunEvtSelectionTool.cxx:38
 AtlRunEvtSelectionTool.cxx:39
 AtlRunEvtSelectionTool.cxx:40
 AtlRunEvtSelectionTool.cxx:41
 AtlRunEvtSelectionTool.cxx:42
 AtlRunEvtSelectionTool.cxx:43
 AtlRunEvtSelectionTool.cxx:44
 AtlRunEvtSelectionTool.cxx:45
 AtlRunEvtSelectionTool.cxx:46
 AtlRunEvtSelectionTool.cxx:47
 AtlRunEvtSelectionTool.cxx:48
 AtlRunEvtSelectionTool.cxx:49
 AtlRunEvtSelectionTool.cxx:50
 AtlRunEvtSelectionTool.cxx:51
 AtlRunEvtSelectionTool.cxx:52
 AtlRunEvtSelectionTool.cxx:53
 AtlRunEvtSelectionTool.cxx:54
 AtlRunEvtSelectionTool.cxx:55
 AtlRunEvtSelectionTool.cxx:56
 AtlRunEvtSelectionTool.cxx:57
 AtlRunEvtSelectionTool.cxx:58
 AtlRunEvtSelectionTool.cxx:59
 AtlRunEvtSelectionTool.cxx:60
 AtlRunEvtSelectionTool.cxx:61
 AtlRunEvtSelectionTool.cxx:62
 AtlRunEvtSelectionTool.cxx:63
 AtlRunEvtSelectionTool.cxx:64
 AtlRunEvtSelectionTool.cxx:65
 AtlRunEvtSelectionTool.cxx:66
 AtlRunEvtSelectionTool.cxx:67
 AtlRunEvtSelectionTool.cxx:68
 AtlRunEvtSelectionTool.cxx:69
 AtlRunEvtSelectionTool.cxx:70
 AtlRunEvtSelectionTool.cxx:71
 AtlRunEvtSelectionTool.cxx:72
 AtlRunEvtSelectionTool.cxx:73
 AtlRunEvtSelectionTool.cxx:74
 AtlRunEvtSelectionTool.cxx:75
 AtlRunEvtSelectionTool.cxx:76
 AtlRunEvtSelectionTool.cxx:77
 AtlRunEvtSelectionTool.cxx:78
 AtlRunEvtSelectionTool.cxx:79
 AtlRunEvtSelectionTool.cxx:80
 AtlRunEvtSelectionTool.cxx:81
 AtlRunEvtSelectionTool.cxx:82
 AtlRunEvtSelectionTool.cxx:83
 AtlRunEvtSelectionTool.cxx:84
 AtlRunEvtSelectionTool.cxx:85
 AtlRunEvtSelectionTool.cxx:86
 AtlRunEvtSelectionTool.cxx:87
 AtlRunEvtSelectionTool.cxx:88
 AtlRunEvtSelectionTool.cxx:89
 AtlRunEvtSelectionTool.cxx:90
 AtlRunEvtSelectionTool.cxx:91
 AtlRunEvtSelectionTool.cxx:92
 AtlRunEvtSelectionTool.cxx:93
 AtlRunEvtSelectionTool.cxx:94
 AtlRunEvtSelectionTool.cxx:95
 AtlRunEvtSelectionTool.cxx:96
 AtlRunEvtSelectionTool.cxx:97
 AtlRunEvtSelectionTool.cxx:98
 AtlRunEvtSelectionTool.cxx:99
 AtlRunEvtSelectionTool.cxx:100
 AtlRunEvtSelectionTool.cxx:101
 AtlRunEvtSelectionTool.cxx:102
 AtlRunEvtSelectionTool.cxx:103
 AtlRunEvtSelectionTool.cxx:104
 AtlRunEvtSelectionTool.cxx:105
 AtlRunEvtSelectionTool.cxx:106
 AtlRunEvtSelectionTool.cxx:107
 AtlRunEvtSelectionTool.cxx:108
 AtlRunEvtSelectionTool.cxx:109
 AtlRunEvtSelectionTool.cxx:110
 AtlRunEvtSelectionTool.cxx:111
 AtlRunEvtSelectionTool.cxx:112
 AtlRunEvtSelectionTool.cxx:113
 AtlRunEvtSelectionTool.cxx:114
 AtlRunEvtSelectionTool.cxx:115
 AtlRunEvtSelectionTool.cxx:116
 AtlRunEvtSelectionTool.cxx:117
 AtlRunEvtSelectionTool.cxx:118
 AtlRunEvtSelectionTool.cxx:119
 AtlRunEvtSelectionTool.cxx:120
 AtlRunEvtSelectionTool.cxx:121
 AtlRunEvtSelectionTool.cxx:122
 AtlRunEvtSelectionTool.cxx:123
 AtlRunEvtSelectionTool.cxx:124
 AtlRunEvtSelectionTool.cxx:125
 AtlRunEvtSelectionTool.cxx:126
 AtlRunEvtSelectionTool.cxx:127
 AtlRunEvtSelectionTool.cxx:128
 AtlRunEvtSelectionTool.cxx:129
 AtlRunEvtSelectionTool.cxx:130
 AtlRunEvtSelectionTool.cxx:131
 AtlRunEvtSelectionTool.cxx:132
 AtlRunEvtSelectionTool.cxx:133
 AtlRunEvtSelectionTool.cxx:134
 AtlRunEvtSelectionTool.cxx:135
 AtlRunEvtSelectionTool.cxx:136
 AtlRunEvtSelectionTool.cxx:137
 AtlRunEvtSelectionTool.cxx:138
 AtlRunEvtSelectionTool.cxx:139
 AtlRunEvtSelectionTool.cxx:140
 AtlRunEvtSelectionTool.cxx:141
 AtlRunEvtSelectionTool.cxx:142
 AtlRunEvtSelectionTool.cxx:143
 AtlRunEvtSelectionTool.cxx:144
 AtlRunEvtSelectionTool.cxx:145
 AtlRunEvtSelectionTool.cxx:146
 AtlRunEvtSelectionTool.cxx:147
 AtlRunEvtSelectionTool.cxx:148
 AtlRunEvtSelectionTool.cxx:149
 AtlRunEvtSelectionTool.cxx:150
 AtlRunEvtSelectionTool.cxx:151
 AtlRunEvtSelectionTool.cxx:152
 AtlRunEvtSelectionTool.cxx:153
 AtlRunEvtSelectionTool.cxx:154
 AtlRunEvtSelectionTool.cxx:155
 AtlRunEvtSelectionTool.cxx:156
 AtlRunEvtSelectionTool.cxx:157
 AtlRunEvtSelectionTool.cxx:158
 AtlRunEvtSelectionTool.cxx:159
 AtlRunEvtSelectionTool.cxx:160
 AtlRunEvtSelectionTool.cxx:161
 AtlRunEvtSelectionTool.cxx:162
 AtlRunEvtSelectionTool.cxx:163
 AtlRunEvtSelectionTool.cxx:164
 AtlRunEvtSelectionTool.cxx:165
 AtlRunEvtSelectionTool.cxx:166
 AtlRunEvtSelectionTool.cxx:167
 AtlRunEvtSelectionTool.cxx:168
 AtlRunEvtSelectionTool.cxx:169
 AtlRunEvtSelectionTool.cxx:170
 AtlRunEvtSelectionTool.cxx:171
 AtlRunEvtSelectionTool.cxx:172
 AtlRunEvtSelectionTool.cxx:173
 AtlRunEvtSelectionTool.cxx:174
 AtlRunEvtSelectionTool.cxx:175
 AtlRunEvtSelectionTool.cxx:176
 AtlRunEvtSelectionTool.cxx:177
 AtlRunEvtSelectionTool.cxx:178
 AtlRunEvtSelectionTool.cxx:179
 AtlRunEvtSelectionTool.cxx:180
 AtlRunEvtSelectionTool.cxx:181
 AtlRunEvtSelectionTool.cxx:182
 AtlRunEvtSelectionTool.cxx:183
 AtlRunEvtSelectionTool.cxx:184
 AtlRunEvtSelectionTool.cxx:185
 AtlRunEvtSelectionTool.cxx:186
 AtlRunEvtSelectionTool.cxx:187
 AtlRunEvtSelectionTool.cxx:188
 AtlRunEvtSelectionTool.cxx:189
 AtlRunEvtSelectionTool.cxx:190
 AtlRunEvtSelectionTool.cxx:191
 AtlRunEvtSelectionTool.cxx:192
 AtlRunEvtSelectionTool.cxx:193
 AtlRunEvtSelectionTool.cxx:194
 AtlRunEvtSelectionTool.cxx:195
 AtlRunEvtSelectionTool.cxx:196
 AtlRunEvtSelectionTool.cxx:197
 AtlRunEvtSelectionTool.cxx:198
 AtlRunEvtSelectionTool.cxx:199
 AtlRunEvtSelectionTool.cxx:200
 AtlRunEvtSelectionTool.cxx:201
 AtlRunEvtSelectionTool.cxx:202
 AtlRunEvtSelectionTool.cxx:203
 AtlRunEvtSelectionTool.cxx:204
 AtlRunEvtSelectionTool.cxx:205
 AtlRunEvtSelectionTool.cxx:206
 AtlRunEvtSelectionTool.cxx:207
 AtlRunEvtSelectionTool.cxx:208
 AtlRunEvtSelectionTool.cxx:209
 AtlRunEvtSelectionTool.cxx:210
 AtlRunEvtSelectionTool.cxx:211
 AtlRunEvtSelectionTool.cxx:212
 AtlRunEvtSelectionTool.cxx:213
 AtlRunEvtSelectionTool.cxx:214
 AtlRunEvtSelectionTool.cxx:215
 AtlRunEvtSelectionTool.cxx:216
 AtlRunEvtSelectionTool.cxx:217
 AtlRunEvtSelectionTool.cxx:218
 AtlRunEvtSelectionTool.cxx:219
 AtlRunEvtSelectionTool.cxx:220
 AtlRunEvtSelectionTool.cxx:221
 AtlRunEvtSelectionTool.cxx:222
 AtlRunEvtSelectionTool.cxx:223
 AtlRunEvtSelectionTool.cxx:224
 AtlRunEvtSelectionTool.cxx:225
 AtlRunEvtSelectionTool.cxx:226
 AtlRunEvtSelectionTool.cxx:227
 AtlRunEvtSelectionTool.cxx:228
 AtlRunEvtSelectionTool.cxx:229
 AtlRunEvtSelectionTool.cxx:230
 AtlRunEvtSelectionTool.cxx:231
 AtlRunEvtSelectionTool.cxx:232
 AtlRunEvtSelectionTool.cxx:233
 AtlRunEvtSelectionTool.cxx:234
 AtlRunEvtSelectionTool.cxx:235
 AtlRunEvtSelectionTool.cxx:236
 AtlRunEvtSelectionTool.cxx:237
 AtlRunEvtSelectionTool.cxx:238
 AtlRunEvtSelectionTool.cxx:239
 AtlRunEvtSelectionTool.cxx:240
 AtlRunEvtSelectionTool.cxx:241
 AtlRunEvtSelectionTool.cxx:242
 AtlRunEvtSelectionTool.cxx:243
 AtlRunEvtSelectionTool.cxx:244
 AtlRunEvtSelectionTool.cxx:245
 AtlRunEvtSelectionTool.cxx:246
 AtlRunEvtSelectionTool.cxx:247
 AtlRunEvtSelectionTool.cxx:248
 AtlRunEvtSelectionTool.cxx:249
 AtlRunEvtSelectionTool.cxx:250
 AtlRunEvtSelectionTool.cxx:251
 AtlRunEvtSelectionTool.cxx:252
 AtlRunEvtSelectionTool.cxx:253
 AtlRunEvtSelectionTool.cxx:254
 AtlRunEvtSelectionTool.cxx:255
 AtlRunEvtSelectionTool.cxx:256
 AtlRunEvtSelectionTool.cxx:257
 AtlRunEvtSelectionTool.cxx:258
 AtlRunEvtSelectionTool.cxx:259
 AtlRunEvtSelectionTool.cxx:260
 AtlRunEvtSelectionTool.cxx:261
 AtlRunEvtSelectionTool.cxx:262
 AtlRunEvtSelectionTool.cxx:263
 AtlRunEvtSelectionTool.cxx:264
 AtlRunEvtSelectionTool.cxx:265
 AtlRunEvtSelectionTool.cxx:266
 AtlRunEvtSelectionTool.cxx:267
 AtlRunEvtSelectionTool.cxx:268
 AtlRunEvtSelectionTool.cxx:269
 AtlRunEvtSelectionTool.cxx:270
 AtlRunEvtSelectionTool.cxx:271
 AtlRunEvtSelectionTool.cxx:272
 AtlRunEvtSelectionTool.cxx:273
 AtlRunEvtSelectionTool.cxx:274
 AtlRunEvtSelectionTool.cxx:275
 AtlRunEvtSelectionTool.cxx:276
 AtlRunEvtSelectionTool.cxx:277
 AtlRunEvtSelectionTool.cxx:278
 AtlRunEvtSelectionTool.cxx:279
 AtlRunEvtSelectionTool.cxx:280
 AtlRunEvtSelectionTool.cxx:281
 AtlRunEvtSelectionTool.cxx:282
 AtlRunEvtSelectionTool.cxx:283
 AtlRunEvtSelectionTool.cxx:284
 AtlRunEvtSelectionTool.cxx:285
 AtlRunEvtSelectionTool.cxx:286
 AtlRunEvtSelectionTool.cxx:287
 AtlRunEvtSelectionTool.cxx:288
 AtlRunEvtSelectionTool.cxx:289
 AtlRunEvtSelectionTool.cxx:290
 AtlRunEvtSelectionTool.cxx:291
 AtlRunEvtSelectionTool.cxx:292
 AtlRunEvtSelectionTool.cxx:293
 AtlRunEvtSelectionTool.cxx:294
 AtlRunEvtSelectionTool.cxx:295
 AtlRunEvtSelectionTool.cxx:296
 AtlRunEvtSelectionTool.cxx:297
 AtlRunEvtSelectionTool.cxx:298
 AtlRunEvtSelectionTool.cxx:299
 AtlRunEvtSelectionTool.cxx:300
 AtlRunEvtSelectionTool.cxx:301
 AtlRunEvtSelectionTool.cxx:302
 AtlRunEvtSelectionTool.cxx:303
 AtlRunEvtSelectionTool.cxx:304
 AtlRunEvtSelectionTool.cxx:305
 AtlRunEvtSelectionTool.cxx:306
 AtlRunEvtSelectionTool.cxx:307
 AtlRunEvtSelectionTool.cxx:308
 AtlRunEvtSelectionTool.cxx:309
 AtlRunEvtSelectionTool.cxx:310
 AtlRunEvtSelectionTool.cxx:311
 AtlRunEvtSelectionTool.cxx:312