//this file looks like plain C, but it's actually -*- c++ -*-
#ifndef __TQSAMPLEGROUPINGVISITOR__
#define __TQSAMPLEGROUPINGVISITOR__

#include "QFramework/TQSampleVisitor.h"
#include <TString.h>
#ifndef __CINT__
#include <unordered_set>
#include <string>
#endif

class TQSampleDataReader;

class TQSampleGroupingVisitor : public TQSampleVisitor {
protected:
  TQSampleDataReader* fReader = NULL;
  TString fCounterName = "initial";
  int fEventLimit = 10e6;
  TString fActiveItemName = "";
  int fActiveItemCount = 0;
  #ifndef __CINT__
  std::unordered_set<std::string> fPaths;
  #endif

  virtual int initialize(TQSampleFolder * sampleFolder, TString& message) override;
  virtual int finalize() override;
  virtual int visitFolder(TQSampleFolder * sampleFolder, TString& message) override;
  virtual int revisitFolder(TQSampleFolder * sampleFolder, TString& message) override;
  virtual int visitSample(TQSample * sample, TString& message) override;
  
public: 

  void setCounterName(const TString& name);
  void setEventLimit(int nEvents);
  TString getCounterName();
  int getEventLimit();

  std::vector<TString> getPaths();

  TQSampleGroupingVisitor(const char* counterName, int nEvents);
  virtual ~TQSampleGroupingVisitor();
  
  ClassDefOverride(TQSampleGroupingVisitor, 0); // sample visitor for grouping samples
 
};

#endif


 TQSampleGroupingVisitor.h:1
 TQSampleGroupingVisitor.h:2
 TQSampleGroupingVisitor.h:3
 TQSampleGroupingVisitor.h:4
 TQSampleGroupingVisitor.h:5
 TQSampleGroupingVisitor.h:6
 TQSampleGroupingVisitor.h:7
 TQSampleGroupingVisitor.h:8
 TQSampleGroupingVisitor.h:9
 TQSampleGroupingVisitor.h:10
 TQSampleGroupingVisitor.h:11
 TQSampleGroupingVisitor.h:12
 TQSampleGroupingVisitor.h:13
 TQSampleGroupingVisitor.h:14
 TQSampleGroupingVisitor.h:15
 TQSampleGroupingVisitor.h:16
 TQSampleGroupingVisitor.h:17
 TQSampleGroupingVisitor.h:18
 TQSampleGroupingVisitor.h:19
 TQSampleGroupingVisitor.h:20
 TQSampleGroupingVisitor.h:21
 TQSampleGroupingVisitor.h:22
 TQSampleGroupingVisitor.h:23
 TQSampleGroupingVisitor.h:24
 TQSampleGroupingVisitor.h:25
 TQSampleGroupingVisitor.h:26
 TQSampleGroupingVisitor.h:27
 TQSampleGroupingVisitor.h:28
 TQSampleGroupingVisitor.h:29
 TQSampleGroupingVisitor.h:30
 TQSampleGroupingVisitor.h:31
 TQSampleGroupingVisitor.h:32
 TQSampleGroupingVisitor.h:33
 TQSampleGroupingVisitor.h:34
 TQSampleGroupingVisitor.h:35
 TQSampleGroupingVisitor.h:36
 TQSampleGroupingVisitor.h:37
 TQSampleGroupingVisitor.h:38
 TQSampleGroupingVisitor.h:39
 TQSampleGroupingVisitor.h:40
 TQSampleGroupingVisitor.h:41
 TQSampleGroupingVisitor.h:42
 TQSampleGroupingVisitor.h:43
 TQSampleGroupingVisitor.h:44
 TQSampleGroupingVisitor.h:45
 TQSampleGroupingVisitor.h:46
 TQSampleGroupingVisitor.h:47
 TQSampleGroupingVisitor.h:48
 TQSampleGroupingVisitor.h:49