#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) {
fProcessMode = kPreAnalysis;
fListOfRuns = new TList;
fInputFilename = "";
fInputFormat = "%d%d";
fLastRun = 0;
fNRuns = 0;
fNEvents = 0;
}
AtlRunEvtSelectionTool::~AtlRunEvtSelectionTool() {
fListOfRuns->Delete();
delete fListOfRuns;
}
void AtlRunEvtSelectionTool::BookHistograms() {
ParseInputFile();
}
void AtlRunEvtSelectionTool::ParseInputFile() {
Reset();
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() {
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);
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() {
ifstream infile(fInputFilename.Data());
if ( !infile.good() ) {
Error("ParseTextFile", "Cannot open input file. Abort!");
}
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;
}
cout << "Run " << run << " Evt " << evt << endl;
Add(run, evt);
}
}
void AtlRunEvtSelectionTool::Add(Int_t run, Int_t evt) {
AtlRunItem *item = 0;
if ( fLastRun == 0 ) {
item = AddRun(run);
fLastRun = item;
} else {
if ( run != fLastRun->fRunNr ) {
item = FindRunItem(run);
if ( item == 0 ) item = AddRun(run);
fListOfRuns->Sort();
fLastRun = item;
} else {
item = fLastRun;
}
}
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() {
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) {
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) {
AtlRunItem *item = new AtlRunItem(run);
fListOfRuns->Add(item);
fNRuns++;
return item;
}
Bool_t AtlRunEvtSelectionTool::Contains(Int_t run, Int_t evt,
Bool_t remove) {
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() {
fTree->SetBranchStatus("fEventHeader.fRunNr*", kTRUE);
fTree->SetBranchStatus("fEventHeader.fEventNr*", kTRUE);
}
void AtlRunEvtSelectionTool::Reset() {
fListOfRuns->Delete();
fNRuns = 0;
fNEvents = 0;
}
void AtlRunEvtSelectionTool::Print() const {
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