#include "QFramework/TQSampleGroupingVisitor.h"
#include "QFramework/TQSampleDataReader.h"
#include "QFramework/TQSample.h"
#include "QFramework/TQLibrary.h"
#include <algorithm> // std::sort
ClassImp(TQSampleGroupingVisitor)
int TQSampleGroupingVisitor::initialize(TQSampleFolder * sampleFolder, TString& ){
this->fReader = new TQSampleDataReader(sampleFolder);
this->fPaths.clear();
this->fActiveItemName = "";
this->fActiveItemCount = 0;
return visitLISTONLY;
}
int TQSampleGroupingVisitor::finalize(){
delete this->fReader;
return visitLISTONLY;
}
int TQSampleGroupingVisitor::visitSample(TQSample * sample, TString& message){
TQCounter* cnt = this->fReader->getCounter(sample->getPath(),this->fCounterName);
if(!cnt) return visitFAILED;
int count = cnt->getRawCounter();
TString path = sample->getPathWildcarded();
delete cnt;
if(count + this->fActiveItemCount < this->getEventLimit()){
if(!fActiveItemName.IsNull()){
this->fActiveItemName.Append(",");
}
this->fActiveItemName.Append(path);
this->fActiveItemCount += count;
message = TString::Format("count is %d",this->fActiveItemCount);
return visitSKIPPED;
} else {
if(!this->fActiveItemName.IsNull()){
this->fPaths.insert(this->fActiveItemName.Data());
this->fActiveItemName = path;
this->fActiveItemCount = count;
}
return visitOK;
}
}
int TQSampleGroupingVisitor::visitFolder(TQSampleFolder * sample, TString& message){
TQCounter* cnt = this->fReader->getCounter(sample->getPath(),this->fCounterName);
if(!cnt) return visitFAILED;
int count = cnt->getRawCounter();
TString path = sample->getPathWildcarded();
delete cnt;
if(count + this->fActiveItemCount < this->getEventLimit()){
if(!fActiveItemName.IsNull()){
this->fActiveItemName.Append(",");
}
this->fActiveItemName.Append(path);
this->fActiveItemCount += count;
message = TString::Format("count is %d",this->fActiveItemCount);
return visitSKIPPED;
} else {
if(!this->fActiveItemName.IsNull()){
this->fPaths.insert(this->fActiveItemName.Data());
this->fActiveItemName.Clear();
this->fActiveItemCount = 0;
}
return visitOK;
}
}
int TQSampleGroupingVisitor::revisitFolder(TQSampleFolder * sampleFolder, TString& ){
if(!this->fActiveItemName.IsNull() && sampleFolder->getTagIntegerDefault(".sv.statusID",0) == visitOK){
this->fPaths.insert(this->fActiveItemName.Data());
this->fActiveItemName.Clear();
this->fActiveItemCount = 0;
}
return visitLISTONLY;
}
TQSampleGroupingVisitor::TQSampleGroupingVisitor(const char* counterName, int nEvents) :
fCounterName(counterName),
fEventLimit(nEvents)
{
}
TQSampleGroupingVisitor::~TQSampleGroupingVisitor(){
}
void TQSampleGroupingVisitor::setCounterName(const TString& name){
this->fCounterName = name;
}
void TQSampleGroupingVisitor::setEventLimit(int nEvents){
this->fEventLimit = nEvents;
}
TString TQSampleGroupingVisitor::getCounterName(){
return this->fCounterName;
}
int TQSampleGroupingVisitor::getEventLimit(){
return this->fEventLimit;
}
std::vector<TString> TQSampleGroupingVisitor::getPaths(){
std::vector<TString> retval;
for(auto elem:this->fPaths){
retval.push_back(elem.c_str());
}
std::sort(retval.begin(),retval.end());
return retval;
}
TQSampleGroupingVisitor.cxx:1 TQSampleGroupingVisitor.cxx:2 TQSampleGroupingVisitor.cxx:3 TQSampleGroupingVisitor.cxx:4 TQSampleGroupingVisitor.cxx:5 TQSampleGroupingVisitor.cxx:6 TQSampleGroupingVisitor.cxx:7 TQSampleGroupingVisitor.cxx:8 TQSampleGroupingVisitor.cxx:9 TQSampleGroupingVisitor.cxx:10 TQSampleGroupingVisitor.cxx:11 TQSampleGroupingVisitor.cxx:12 TQSampleGroupingVisitor.cxx:13 TQSampleGroupingVisitor.cxx:14 TQSampleGroupingVisitor.cxx:15 TQSampleGroupingVisitor.cxx:16 TQSampleGroupingVisitor.cxx:17 TQSampleGroupingVisitor.cxx:18 TQSampleGroupingVisitor.cxx:19 TQSampleGroupingVisitor.cxx:20 TQSampleGroupingVisitor.cxx:21 TQSampleGroupingVisitor.cxx:22 TQSampleGroupingVisitor.cxx:23 TQSampleGroupingVisitor.cxx:24 TQSampleGroupingVisitor.cxx:25 TQSampleGroupingVisitor.cxx:26 TQSampleGroupingVisitor.cxx:27 TQSampleGroupingVisitor.cxx:28 TQSampleGroupingVisitor.cxx:29 TQSampleGroupingVisitor.cxx:30 TQSampleGroupingVisitor.cxx:31 TQSampleGroupingVisitor.cxx:32 TQSampleGroupingVisitor.cxx:33 TQSampleGroupingVisitor.cxx:34 TQSampleGroupingVisitor.cxx:35 TQSampleGroupingVisitor.cxx:36 TQSampleGroupingVisitor.cxx:37 TQSampleGroupingVisitor.cxx:38 TQSampleGroupingVisitor.cxx:39 TQSampleGroupingVisitor.cxx:40 TQSampleGroupingVisitor.cxx:41 TQSampleGroupingVisitor.cxx:42 TQSampleGroupingVisitor.cxx:43 TQSampleGroupingVisitor.cxx:44 TQSampleGroupingVisitor.cxx:45 TQSampleGroupingVisitor.cxx:46 TQSampleGroupingVisitor.cxx:47 TQSampleGroupingVisitor.cxx:48 TQSampleGroupingVisitor.cxx:49 TQSampleGroupingVisitor.cxx:50 TQSampleGroupingVisitor.cxx:51 TQSampleGroupingVisitor.cxx:52 TQSampleGroupingVisitor.cxx:53 TQSampleGroupingVisitor.cxx:54 TQSampleGroupingVisitor.cxx:55 TQSampleGroupingVisitor.cxx:56 TQSampleGroupingVisitor.cxx:57 TQSampleGroupingVisitor.cxx:58 TQSampleGroupingVisitor.cxx:59 TQSampleGroupingVisitor.cxx:60 TQSampleGroupingVisitor.cxx:61 TQSampleGroupingVisitor.cxx:62 TQSampleGroupingVisitor.cxx:63 TQSampleGroupingVisitor.cxx:64 TQSampleGroupingVisitor.cxx:65 TQSampleGroupingVisitor.cxx:66 TQSampleGroupingVisitor.cxx:67 TQSampleGroupingVisitor.cxx:68 TQSampleGroupingVisitor.cxx:69 TQSampleGroupingVisitor.cxx:70 TQSampleGroupingVisitor.cxx:71 TQSampleGroupingVisitor.cxx:72 TQSampleGroupingVisitor.cxx:73 TQSampleGroupingVisitor.cxx:74 TQSampleGroupingVisitor.cxx:75 TQSampleGroupingVisitor.cxx:76 TQSampleGroupingVisitor.cxx:77 TQSampleGroupingVisitor.cxx:78 TQSampleGroupingVisitor.cxx:79 TQSampleGroupingVisitor.cxx:80 TQSampleGroupingVisitor.cxx:81 TQSampleGroupingVisitor.cxx:82 TQSampleGroupingVisitor.cxx:83 TQSampleGroupingVisitor.cxx:84 TQSampleGroupingVisitor.cxx:85 TQSampleGroupingVisitor.cxx:86 TQSampleGroupingVisitor.cxx:87 TQSampleGroupingVisitor.cxx:88 TQSampleGroupingVisitor.cxx:89 TQSampleGroupingVisitor.cxx:90 TQSampleGroupingVisitor.cxx:91 TQSampleGroupingVisitor.cxx:92 TQSampleGroupingVisitor.cxx:93 TQSampleGroupingVisitor.cxx:94 TQSampleGroupingVisitor.cxx:95 TQSampleGroupingVisitor.cxx:96 TQSampleGroupingVisitor.cxx:97 TQSampleGroupingVisitor.cxx:98 TQSampleGroupingVisitor.cxx:99 TQSampleGroupingVisitor.cxx:100 TQSampleGroupingVisitor.cxx:101 TQSampleGroupingVisitor.cxx:102 TQSampleGroupingVisitor.cxx:103 TQSampleGroupingVisitor.cxx:104 TQSampleGroupingVisitor.cxx:105 TQSampleGroupingVisitor.cxx:106 TQSampleGroupingVisitor.cxx:107 TQSampleGroupingVisitor.cxx:108 TQSampleGroupingVisitor.cxx:109 TQSampleGroupingVisitor.cxx:110 TQSampleGroupingVisitor.cxx:111 TQSampleGroupingVisitor.cxx:112 TQSampleGroupingVisitor.cxx:113 TQSampleGroupingVisitor.cxx:114 TQSampleGroupingVisitor.cxx:115 TQSampleGroupingVisitor.cxx:116 TQSampleGroupingVisitor.cxx:117 TQSampleGroupingVisitor.cxx:118 TQSampleGroupingVisitor.cxx:119 TQSampleGroupingVisitor.cxx:120 TQSampleGroupingVisitor.cxx:121 TQSampleGroupingVisitor.cxx:122 TQSampleGroupingVisitor.cxx:123 TQSampleGroupingVisitor.cxx:124 TQSampleGroupingVisitor.cxx:125 TQSampleGroupingVisitor.cxx:126 TQSampleGroupingVisitor.cxx:127 TQSampleGroupingVisitor.cxx:128 TQSampleGroupingVisitor.cxx:129 TQSampleGroupingVisitor.cxx:130 TQSampleGroupingVisitor.cxx:131