#ifndef __TQHistoMakerAnalysisJob__
#define __TQHistoMakerAnalysisJob__
#include "QFramework/TQObservable.h"
#include "QFramework/TQAnalysisJob.h"
#include "QFramework/TQMessageStream.h"
#include "TList.h"
#include "QFramework/TQTaggable.h"
#include "QFramework/TQCut.h"
class TQHistoMakerAnalysisJob : public TQAnalysisJob {
protected:
static TString gDefaultAuthor;
static bool g_useHistogramObservableNames;
static TQMessageStream f_ErrMsg;
int f_Verbose;
std::vector<TH1*> fHistogramTemplates;
std::vector<bool> fFillSynchronized;
std::vector<bool> fFillRaw;
std::vector<std::vector<TString> > fExpressions;
std::vector<TString> fWeightExpressions;
std::vector<std::vector<TQObservable*> > fObservables;
std::vector<TQObservable*> fWeightObservables;
std::vector<int> fHistoTypes;
std::vector<TH1*> fHistograms;
void setErrorMessage(TString message);
void initializeHistograms();
bool finalizeHistograms();
TQSampleFolder* poolAt;
public:
TQHistoMakerAnalysisJob();
TQHistoMakerAnalysisJob(TQHistoMakerAnalysisJob* other);
static void setDefaultAuthor(const TString& name);
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);
void printBooking(const TString& moretext);
void printBookingTeX(const TString& moretext);
static void clearMessages();
void setVerbose(int verbose);
int getVerbose();
virtual TQAnalysisJob * getClone() override;
virtual void reset() override;
virtual void print(const TString& options) override;
static TString getErrorMessage();
virtual bool initializeSelf() override;
virtual bool finalizeSelf() override;
virtual bool execute(double weight) override;
virtual TObjArray * getBranchNames() override;
virtual bool isPooling() const override;
virtual ~TQHistoMakerAnalysisJob();
ClassDefOverride(TQHistoMakerAnalysisJob, 0);
};
#endif
TQHistoMakerAnalysisJob.h:1 TQHistoMakerAnalysisJob.h:2 TQHistoMakerAnalysisJob.h:3 TQHistoMakerAnalysisJob.h:4 TQHistoMakerAnalysisJob.h:5 TQHistoMakerAnalysisJob.h:6 TQHistoMakerAnalysisJob.h:7 TQHistoMakerAnalysisJob.h:8 TQHistoMakerAnalysisJob.h:9 TQHistoMakerAnalysisJob.h:10 TQHistoMakerAnalysisJob.h:11 TQHistoMakerAnalysisJob.h:12 TQHistoMakerAnalysisJob.h:13 TQHistoMakerAnalysisJob.h:14 TQHistoMakerAnalysisJob.h:15 TQHistoMakerAnalysisJob.h:16 TQHistoMakerAnalysisJob.h:17 TQHistoMakerAnalysisJob.h:18 TQHistoMakerAnalysisJob.h:19 TQHistoMakerAnalysisJob.h:20 TQHistoMakerAnalysisJob.h:21 TQHistoMakerAnalysisJob.h:22 TQHistoMakerAnalysisJob.h:23 TQHistoMakerAnalysisJob.h:24 TQHistoMakerAnalysisJob.h:25 TQHistoMakerAnalysisJob.h:26 TQHistoMakerAnalysisJob.h:27 TQHistoMakerAnalysisJob.h:28 TQHistoMakerAnalysisJob.h:29 TQHistoMakerAnalysisJob.h:30 TQHistoMakerAnalysisJob.h:31 TQHistoMakerAnalysisJob.h:32 TQHistoMakerAnalysisJob.h:33 TQHistoMakerAnalysisJob.h:34 TQHistoMakerAnalysisJob.h:35 TQHistoMakerAnalysisJob.h:36 TQHistoMakerAnalysisJob.h:37 TQHistoMakerAnalysisJob.h:38 TQHistoMakerAnalysisJob.h:39 TQHistoMakerAnalysisJob.h:40 TQHistoMakerAnalysisJob.h:41 TQHistoMakerAnalysisJob.h:42 TQHistoMakerAnalysisJob.h:43 TQHistoMakerAnalysisJob.h:44 TQHistoMakerAnalysisJob.h:45 TQHistoMakerAnalysisJob.h:46 TQHistoMakerAnalysisJob.h:47 TQHistoMakerAnalysisJob.h:48 TQHistoMakerAnalysisJob.h:49 TQHistoMakerAnalysisJob.h:50 TQHistoMakerAnalysisJob.h:51 TQHistoMakerAnalysisJob.h:52 TQHistoMakerAnalysisJob.h:53 TQHistoMakerAnalysisJob.h:54 TQHistoMakerAnalysisJob.h:55 TQHistoMakerAnalysisJob.h:56 TQHistoMakerAnalysisJob.h:57 TQHistoMakerAnalysisJob.h:58 TQHistoMakerAnalysisJob.h:59 TQHistoMakerAnalysisJob.h:60 TQHistoMakerAnalysisJob.h:61 TQHistoMakerAnalysisJob.h:62 TQHistoMakerAnalysisJob.h:63 TQHistoMakerAnalysisJob.h:64 TQHistoMakerAnalysisJob.h:65 TQHistoMakerAnalysisJob.h:66 TQHistoMakerAnalysisJob.h:67 TQHistoMakerAnalysisJob.h:68 TQHistoMakerAnalysisJob.h:69 TQHistoMakerAnalysisJob.h:70 TQHistoMakerAnalysisJob.h:71 TQHistoMakerAnalysisJob.h:72 TQHistoMakerAnalysisJob.h:73 TQHistoMakerAnalysisJob.h:74 TQHistoMakerAnalysisJob.h:75 TQHistoMakerAnalysisJob.h:76 TQHistoMakerAnalysisJob.h:77 TQHistoMakerAnalysisJob.h:78 TQHistoMakerAnalysisJob.h:79 TQHistoMakerAnalysisJob.h:80 TQHistoMakerAnalysisJob.h:81 TQHistoMakerAnalysisJob.h:82 TQHistoMakerAnalysisJob.h:83 TQHistoMakerAnalysisJob.h:84 TQHistoMakerAnalysisJob.h:85 TQHistoMakerAnalysisJob.h:86 TQHistoMakerAnalysisJob.h:87 TQHistoMakerAnalysisJob.h:88 TQHistoMakerAnalysisJob.h:89 TQHistoMakerAnalysisJob.h:90 TQHistoMakerAnalysisJob.h:91 TQHistoMakerAnalysisJob.h:92 TQHistoMakerAnalysisJob.h:93 TQHistoMakerAnalysisJob.h:94 TQHistoMakerAnalysisJob.h:95 TQHistoMakerAnalysisJob.h:96 TQHistoMakerAnalysisJob.h:97 TQHistoMakerAnalysisJob.h:98 TQHistoMakerAnalysisJob.h:99 TQHistoMakerAnalysisJob.h:100 TQHistoMakerAnalysisJob.h:101