#ifndef __TQTHnBaseMakerAnalysisJob__
#define __TQTHnBaseMakerAnalysisJob__
#include "QFramework/TQObservable.h"
#include "QFramework/TQAnalysisJob.h"
#include "QFramework/TQMessageStream.h"
#include "THnBase.h"
#include "QFramework/TQTaggable.h"
#include "QFramework/TQCut.h"
class TQTHnBaseMakerAnalysisJob : public TQAnalysisJob {
protected:
static bool g_useHistogramObservableNames;
static TQMessageStream f_ErrMsg;
int f_Verbose;
std::vector<THnBase*> fHistogramTemplates;
std::vector<bool> fFillSynchronized;
std::vector<bool> fFillRaw;
std::vector<std::vector<TString> > fExpressions;
std::vector<std::vector<TQObservable*> > fObservables;
std::vector<int> fHistoTypes;
std::vector<THnBase*> fHistograms;
void setErrorMessage(TString message);
void initializeHistograms();
bool finalizeHistograms();
TQSampleFolder* poolAt;
public:
TQTHnBaseMakerAnalysisJob();
TQTHnBaseMakerAnalysisJob(TQTHnBaseMakerAnalysisJob* other);
static const TString& getValidNameCharacters();
static int importJobsFromTextFiles(const TString& files, TQCut* basecut, const TString& channelfilter = "*", bool verbose = false);
static int importJobsFromTextFiles(const TString& files, TQCut* basecut, TQTaggable* aliases, const TString& channelfilter = "*", bool verbose = false);
static int importJobsFromTextFiles(const std::vector<TString>& filenames, TQCut* basecut, const TString& channelFilter = "*", bool verbose = false);
static int importJobsFromTextFiles(const std::vector<TString>& filenames, TQCut* basecut, TQTaggable* aliases, const TString& channelFilter = "*", bool verbose = false);
bool initializeSampleFolder(TQSampleFolder* sf) override;
bool finalizeSampleFolder (TQSampleFolder* sf) override;
bool bookHistogram(TString definition, TQTaggable* aliases = NULL);
void cancelHistogram(const TString& name);
static void clearMessages();
void setVerbose(int verbose);
int getVerbose();
virtual TQAnalysisJob * getClone() override;
virtual void reset() override;
static TString getErrorMessage();
virtual bool initializeSelf() override;
virtual bool finalizeSelf() override;
virtual bool execute(double weight) override;
virtual ~TQTHnBaseMakerAnalysisJob();
ClassDefOverride(TQTHnBaseMakerAnalysisJob, 0);
};
#endif
TQTHnBaseMakerAnalysisJob.h:1 TQTHnBaseMakerAnalysisJob.h:2 TQTHnBaseMakerAnalysisJob.h:3 TQTHnBaseMakerAnalysisJob.h:4 TQTHnBaseMakerAnalysisJob.h:5 TQTHnBaseMakerAnalysisJob.h:6 TQTHnBaseMakerAnalysisJob.h:7 TQTHnBaseMakerAnalysisJob.h:8 TQTHnBaseMakerAnalysisJob.h:9 TQTHnBaseMakerAnalysisJob.h:10 TQTHnBaseMakerAnalysisJob.h:11 TQTHnBaseMakerAnalysisJob.h:12 TQTHnBaseMakerAnalysisJob.h:13 TQTHnBaseMakerAnalysisJob.h:14 TQTHnBaseMakerAnalysisJob.h:15 TQTHnBaseMakerAnalysisJob.h:16 TQTHnBaseMakerAnalysisJob.h:17 TQTHnBaseMakerAnalysisJob.h:18 TQTHnBaseMakerAnalysisJob.h:19 TQTHnBaseMakerAnalysisJob.h:20 TQTHnBaseMakerAnalysisJob.h:21 TQTHnBaseMakerAnalysisJob.h:22 TQTHnBaseMakerAnalysisJob.h:23 TQTHnBaseMakerAnalysisJob.h:24 TQTHnBaseMakerAnalysisJob.h:25 TQTHnBaseMakerAnalysisJob.h:26 TQTHnBaseMakerAnalysisJob.h:27 TQTHnBaseMakerAnalysisJob.h:28 TQTHnBaseMakerAnalysisJob.h:29 TQTHnBaseMakerAnalysisJob.h:30 TQTHnBaseMakerAnalysisJob.h:31 TQTHnBaseMakerAnalysisJob.h:32 TQTHnBaseMakerAnalysisJob.h:33 TQTHnBaseMakerAnalysisJob.h:34 TQTHnBaseMakerAnalysisJob.h:35 TQTHnBaseMakerAnalysisJob.h:36 TQTHnBaseMakerAnalysisJob.h:37 TQTHnBaseMakerAnalysisJob.h:38 TQTHnBaseMakerAnalysisJob.h:39 TQTHnBaseMakerAnalysisJob.h:40 TQTHnBaseMakerAnalysisJob.h:41 TQTHnBaseMakerAnalysisJob.h:42 TQTHnBaseMakerAnalysisJob.h:43 TQTHnBaseMakerAnalysisJob.h:44 TQTHnBaseMakerAnalysisJob.h:45 TQTHnBaseMakerAnalysisJob.h:46 TQTHnBaseMakerAnalysisJob.h:47 TQTHnBaseMakerAnalysisJob.h:48 TQTHnBaseMakerAnalysisJob.h:49 TQTHnBaseMakerAnalysisJob.h:50 TQTHnBaseMakerAnalysisJob.h:51 TQTHnBaseMakerAnalysisJob.h:52 TQTHnBaseMakerAnalysisJob.h:53 TQTHnBaseMakerAnalysisJob.h:54 TQTHnBaseMakerAnalysisJob.h:55 TQTHnBaseMakerAnalysisJob.h:56 TQTHnBaseMakerAnalysisJob.h:57 TQTHnBaseMakerAnalysisJob.h:58 TQTHnBaseMakerAnalysisJob.h:59 TQTHnBaseMakerAnalysisJob.h:60 TQTHnBaseMakerAnalysisJob.h:61 TQTHnBaseMakerAnalysisJob.h:62 TQTHnBaseMakerAnalysisJob.h:63 TQTHnBaseMakerAnalysisJob.h:64 TQTHnBaseMakerAnalysisJob.h:65 TQTHnBaseMakerAnalysisJob.h:66 TQTHnBaseMakerAnalysisJob.h:67 TQTHnBaseMakerAnalysisJob.h:68 TQTHnBaseMakerAnalysisJob.h:69 TQTHnBaseMakerAnalysisJob.h:70 TQTHnBaseMakerAnalysisJob.h:71 TQTHnBaseMakerAnalysisJob.h:72 TQTHnBaseMakerAnalysisJob.h:73 TQTHnBaseMakerAnalysisJob.h:74 TQTHnBaseMakerAnalysisJob.h:75 TQTHnBaseMakerAnalysisJob.h:76 TQTHnBaseMakerAnalysisJob.h:77 TQTHnBaseMakerAnalysisJob.h:78 TQTHnBaseMakerAnalysisJob.h:79 TQTHnBaseMakerAnalysisJob.h:80 TQTHnBaseMakerAnalysisJob.h:81 TQTHnBaseMakerAnalysisJob.h:82 TQTHnBaseMakerAnalysisJob.h:83 TQTHnBaseMakerAnalysisJob.h:84 TQTHnBaseMakerAnalysisJob.h:85