5#ifndef dqutilsMonitoringFile_h
6#define dqutilsMonitoringFile_h
13#include "RooRealVar.h"
53 typedef std::map<std::string, std::set<std::string> >
fileLBMap_t;
62 inline MetaData(
const std::string& name_,
const std::string& interval_,
const std::string& chain_,
63 const std::string& merge_)
77 virtual void fill(
const std::string& name,
78 const std::string& interval,
79 const std::string& chain,
80 const std::string&
merge);
82 void makeBranch(
const char* branchName,
const char* branchstr);
95 typedef std::map< std::string, TDirectory* >
DirMap_t;
99 static TDirectory*
createDir(
DirMap_t& dirmap, TDirectory* dir,
const std::string& parent,
const std::string& path);
101 static TKey*
getObjKey(TDirectory* dir,
const std::string& path);
106 static void fillMetaDataMap(std::map<std::string, dqutils::MonitoringFile::MetaData>& mdMap, TDirectory* dir);
110 int mergeFiles(
const std::string & outFileName,
const std::string & listFileName);
146 const std::string& tracksName);
148 const std::string& tracksName);
150 const std::string& tracksName);
153 const std::string& TriggerName);
155 const std::string& TriggerName);
162 static std::pair<RooRealVar, RooRealVar>
fitZmumuMass(TH1F* hmass);
164 static void processModule(TFile* f,
const std::string& run_dir, TKey* key_module,
const std::string& moduleName);
166 const std::string& triggerName);
167 static void fitHistos(TH2F* hin,
const std::vector<TH1F*>& hout,
int mode,
const std::string& triggerName,
168 const std::string& resonName, TH1F* m_chi2);
177 static TH1F*
combineHistos(
const char* name,
const char* title, TObjArray* plots,
int gap);
182 static void MakeMap(TH2* outputhist, TH3* hist);
183 static int IterativeGaussFit(TH1* hist,
double& mu,
double& mu_err,
double& sigma,
double& sigma_err);
190 static void RPCPostProcess(
const std::string& inFilename,
bool isIncremental =
false);
194 static void TGCPostProcess(
const std::string& inFilename,
bool isIncremental =
false);
195 static void TGCChannelOccupancy(
const std::string& inFilename, std::vector< std::pair< std::string, float > >& p);
196 static void TGCChamberOccupancy(
const std::string& inFilename, std::vector< std::pair< std::string,
198 std::vector< std::pair< std::string, float > >& plow);
199 static void TGCChamberEfficiency(
const std::string& inFilename, std::vector< std::pair< std::string, float > >& p);
200 static void TGCChamberTiming(
const std::string& inFilename, std::vector< std::pair< std::string, float > >& pro,
201 std::vector< std::pair< std::string, float > >& ptrg);
208 static int getTGCNumberOfWires(
const int istationName,
const int layer,
const int istationEta,
209 const int istationPhi);
213 static void MDTvsTGCPostProcess(
const std::string& inFilename,
bool isIncremental =
false);
228 void get(
const char* namecycle, T*& ptr, TDirectory* baseDir = 0, TDirectory* target = 0);
235 void setMetaData(TDirectory* targetDir, TH1* h1, TH1* h2 = 0, TH1* h3 = 0);
244 static bool TGCCheckHistogram(TFile* f, TString& hname);
245 static void TGCSetMetaData(TDirectory* targetDir, TH1* h1, TH1* h2 = 0, TH1* h3 = 0);
248 static void HLTMuonPostProcess(
const std::string& inFilename,
bool isIncremental =
false);
249 static void HLTMuonHistogramDivision(
const std::string& inFilename, TString& run_dir);
250 static void HLTMuonTriggerOverlapMatrix(
const std::string& inFilename, TString& run_dir);
251 static bool HLTMuonCheckHistogram(TFile* f, TString& hname);
252 static void HLTMuonHDiv(PostProcessorFileWrapper& mf, TString sdir, TString snum, TString sden, TString seff,
256 static void HLTEgammaPostProcess(
const std::string& inFilename,
bool isIncremental =
false);
258 static void HLTEgammaEfficiencyOff(TFile* f, TDirectory* trig_dir, TDirectory* off_dir,
const TString& pathNum,
259 const TString& pathEff,
const std::vector<TString>& varName);
260 static void HLTEgammaEfficiencyRel(TFile* f, TDirectory* trig_dir,
const TString& pathPre,
const TString& pathRej,
261 const std::vector<TString>& objStage,
const std::vector<TString>& varName);
264 static void HLTTauPostProcess(
const std::string& inFilename,
bool isIncremental =
false);
266 static void HLTTauPostProcess(TFile* f, TDirectory* dir,
267 TString pathApp, TString pathAppEff,
268 const std::vector<TString>& lvlN,
const std::vector<TString>& varN,
269 const std::vector< std::pair< int, int > >& ratioIndex,
int nameStyle,
270 TString nameApp =
"");
275 static void HLTMETPostProcess(
const std::string& inFileName,
bool isIncremental =
false);
282 static void HLTCaloPostProcess(
const std::string& inFileName,
bool isIncremental =
false);
286 static void HLTJetPostProcess(
const std::string& inFileName,
bool isIncremental =
false);
297 std::vector< std::pair<TString, TString> >& targetNames);
301 bool isIncremental =
false);
304 static void VxMon_move(
const std::string& inFilename,
bool isIncremental =
false);
307 static void L1CaloPostProcess(
const std::string& inFileName,
bool isIncremental =
false);
308 static void L1CaloStabilityRMS(TFile* f,
const TString& nameDir,
const TString& nameTag);
310 const TString& nameError);
312 const TString& nameDen,
const TString& nameEff,
313 int items,
double threshold,
int binSkip);
316 static void PixelPostProcess(
const std::string& inFilename,
bool isIncremental =
false);
327 virtual bool setFile(
const std::string& fileName);
337 const std::string& dirName =
"all");
339 static std::string
getHanResults(
const std::string& hanResultsDir,
const std::string& input,
340 const std::string& hcfg,
const std::string& hcfg_min10,
341 const std::string& hcfg_min30);
345 virtual std::string
FindCommon(
const std::string& name1,
const std::string& name2)
const;
347 static std::string
getIndentation(
const std::string& pathName,
const std::string& leadingSpace =
"");
418 const std::string& listFileName);
459 std::string
getInputDirectory(
const std::string& outputDirName, TFile* input,
bool has_multiple_runs,
460 std::map< TFile*, std::string >* prefixes);
464 TDirectory* target) {
465 if (baseDir) baseDir->GetObject(namecycle, ptr);
466 else this->GetObject(namecycle, ptr);
469 if ((T::Class())->InheritsFrom(
"TH1")) {
470 TH1* obj =
reinterpret_cast<TH1*
> (ptr);
472 obj->SetDirectory(target);
475 TObject* obj =
reinterpret_cast<TObject*
>(ptr);
const boost::regex re(r_e)
Scalar eta() const
pseudorapidity method
Define macros for attributes used to control the static checker.
Header file for AthHistogramAlgorithm.
virtual bool execute(TH1 *hist)
virtual bool execute(TEfficiency *eff)
virtual bool execute(TGraph *graph)
virtual bool executeMD(TGraph *graph, const MetaData &md)
void fillMD(const MetaData &md)
virtual bool executeMD(TH1 *hist, const MetaData &md)
CopyHistogram(const CopyHistogram &)=delete
virtual bool executeMD(TEfficiency *eff, const MetaData &md)
CopyHistogram(TDirectory *target, const std::string &dirName)
virtual bool execute(TGraph *graph)
virtual bool execute(TH1 *hist)
virtual bool execute(TEfficiency *eff)
std::vector< std::string > m_names
virtual bool execute(TEfficiency *eff)
virtual bool execute(TH1 *hist)
GatherStatistics(const std::string &dirName)
virtual bool execute(TGraph *graph)
virtual bool executeMD(TH1 *hist, const MetaData &)
virtual bool execute(TGraph *graph)=0
virtual ~HistogramOperation()
virtual bool execute(TEfficiency *efficiency)=0
virtual bool executeMD(TEfficiency *efficiency, const MetaData &)
virtual bool execute(TH1 *hist)=0
virtual bool executeMD(TGraph *graph, const MetaData &)
std::set< TObject * > m_garbage
void get(const char *namecycle, T *&ptr, TDirectory *baseDir=0, TDirectory *target=0)
PostProcessorFileWrapper(const std::string &inFilename, const std::string &name)
void setDirectory(TH1 *h, TDirectory *dir=0)
void setMetaData(TDirectory *targetDir, TH1 *h1, TH1 *h2=0, TH1 *h3=0)
static std::string getIndentation(const std::string &pathName, const std::string &leadingSpace="")
static void TGCLV1HistogramDivision(const std::string &inFilename)
static void MuonTrack_Main(const std::string &inFileName, TString dirname)
static void merge_identical(TH1 &a, const TH1 &b)
static void merge_weightedAverage(TH1 &a, const TH1 &b)
static int getTGCNumberOfWires(const int istationName, const int layer, const int istationEta, const int istationPhi)
static void L1CaloPostProcess(const std::string &inFileName, bool isIncremental=false)
static void TGCResetContents(TH1 *h)
static void setDebugLevel(int level)
static void BJetTaggingAdjustRanges(TFile *f)
static void HLTMinBiasMonGetTargetHistos(TDirectory *source, std::vector< std::pair< TString, TString > > &targetNames)
static bool loopOnHistogramsInMetadata(HistogramOperation &fcn, TDirectory *dir)
static void setCompressionLevel(int level)
static void TGCPostProcess(const std::string &inFilename, bool isIncremental=false)
static int getCompressionLevel()
static void HLTMETPostProcess(const std::string &inFileName, bool isIncremental=false)
virtual bool copyHistograms(const std::string &outFileName, const std::string &dirName="all")
Copy the indicated set of histograms to an output file.
static void setCheckEquality(bool value)
MonitoringFile(const std::string &fileName)
static void fitMergedFile_IDPerfMonZee(TFile *f, const std::string &run_dir, const std::string &TriggerName)
static void fitMergedFile_DiMuMonManager(const std::string &inFileName, bool isIncremental=false)
static void fitUpsilonHistograms(TH1F *hmass, TH1F *hwidth, TH1F *h1[], int n)
bool setDirectoryRegEx(const std::string &re)
static void fillGaussianMeanOrWidth(TH2F *h2d, TH1F *h, float fitMin, float fitMax, int iopt)
std::map< std::string, std::vector< std::string > > buildLBToIntervalMap(TDirectory *runDir)
static void fitMergedFile_IDPerfMonZMM(TFile *f, const std::string &run_dir, const std::string &TriggerName)
static int HLTMETGetStatusPerBin(TH1I *&hist, int ymin, int ymax, int rmin, int rmax)
static void HLTCaloAveragePtPhiEtaMaps(TFile *f, TString &run_dir)
static void HLTJetCalcEfficiencyAndRate(TFile *f, TString &run_dir)
static void merge_effAsPerCentAlt(TH1 &a, const TH1 &b)
virtual std::string FindCommon(const std::string &name1, const std::string &name2) const
static void merge_RMS(TH1 &a, const TH1 &b)
static void fitMergedFile_IDPerfMonJpsi(TFile *f, const std::string &run_dir, const std::string &TriggerName)
static void MuonTrackPostProcess(const std::string &inFileName, bool isIncremental=false)
static void PixelPostProcess(const std::string &inFilename, bool isIncremental=false)
static int IterativeGaussFit(TH1 *hist, double &mu, double &mu_err, double &sigma, double &sigma_err)
virtual ~MonitoringFile()
static void meanRMSProjections3D(TH3F *h3d, TH2F *h, int iopt)
bool setHistogramRegEx(const std::string &re)
static void L1CaloResetEfficiencies(TFile *f, const TString &effDir, const TString &nameDen, const TString &nameEff, int items, double threshold, int binSkip)
static void TGCsubsectbin2stationeta(int subsect, int bin, int &station, int &eta)
static bool setListFromFile(std::vector< std::string > &filelist, const std::string &listFileName)
static void MDTvsTGCEfficiency(const std::string &inFilename)
static void fitHistos(TH2F *hin, const std::vector< TH1F * > &hout, int mode, const std::string &triggerName, const std::string &resonName, TH1F *m_chi2)
static bool s_checkEquality
static void TGCChannelOccupancy(const std::string &inFilename, std::vector< std::pair< std::string, float > > &p)
static void merge_eventSample(TH2 &a, const TH2 &b)
static void fitMergedFile_IDPerfMonKshort(TFile *f, const std::string &run_dir, const std::string &TriggerName)
static void getAllDirs(DirMap_t &dirmap, TDirectory *dir, const std::string &dirName)
static void ProcessAsymHistograms(TH1F *m_neg, TH1F *m_pos, TH1F *m_asym)
static void fillMeanOrWidth(TH2F *h2d, TH1F *h, int iopt)
static void L1CaloFillWithError(TFile *f, const TString &nameDir, const TString &nameData, const TString &nameError)
static void fitJpsiHistograms(TH1F *hmass, TH1F *hwidth, TH1F *h1[], int n)
static void setMinWindow(TH1 *h1, float min, float max)
int mergeLB_processLBinterval(TFile *file, const std::vector< std::string > &inputDirNames, const std::string &outputDirName)
static TKey * getObjKey(TDirectory *dir, const std::string &path)
static void fitMergedFile_IDPerfMonWenu(TFile *f, const std::string &run_dir, const std::string &TriggerName)
static void merge_RMSpercentDeviation(TH1 &a, const TH1 &b)
static void fitMergedFile_IDAlignMonManager(const std::string &inFileName, bool isIncremental=false)
static void fitMergedFile_IDAlignMonResiduals(TFile *f, const std::string &run_dir, const std::string &TriggerName)
static void meanRMSProjections3D_DMRPlot(TH3F *h3d, TH1F *h, int iopt)
static void fitMergedFile_IDAlignMonPVbiases(TFile *file, const std::string &run_dir, const std::string &tracksName)
static int ComputeUPXBinErrors(TH1F *hnum, TH1F *hden, std::vector< float > &errors)
std::optional< std::regex > m_mergeMatchDirRE
static void MDTvsTGCResetContents(TH1 *h)
static void merge_weightedAverage2D(TH2 &a, const TH2 &b)
static bool dirHasHistogramsInMetadata(TDirectory *dir)
static void VxMon_move(const std::string &inFilename, bool isIncremental=false)
static void HLTMinBiasMonPostProcess(const std::string &inFileName, bool isIncremental=false)
int mergeFiles(const std::string &outFileName, const std::string &listFileName)
static void L1CaloStabilityRMS(TFile *f, const TString &nameDir, const TString &nameTag)
static void TGCChamberOccupancy(const std::string &inFilename, std::vector< std::pair< std::string, float > > &phigh, std::vector< std::pair< std::string, float > > &plow)
int mergeLBintervals(const std::string &inFilename)
static void fillMetaDataMap(std::map< std::string, dqutils::MonitoringFile::MetaData > &mdMap, TDirectory *dir)
static void processModule(TFile *f, const std::string &run_dir, TKey *key_module, const std::string &moduleName)
static TDirectory * createDir(DirMap_t &dirmap, TDirectory *dir, const std::string &parent, const std::string &path)
static void fitZmumuHistograms(TH1F *hmass, TH1F *hwidth, std::vector< TH1F * > hvec)
static void fitMergedFile_IDPerfMonUpsilon(TFile *f, const std::string &run_dir, const std::string &TriggerName)
static void meanRMSProjections3D_XY(TH3F *h3d, TH1F *h, int iXY, int iopt)
static void merge_lowerLB(TH1 &a, const TH1 &b)
static void TGCChamberTiming(const std::string &inFilename, std::vector< std::pair< std::string, float > > &pro, std::vector< std::pair< std::string, float > > &ptrg)
virtual bool setFile(const std::string &fileName)
Clears all previous data and opens the file with the given name for analysis, returning a boolean ind...
static void MDTvsTGCPostProcess(const std::string &inFilename, bool isIncremental=false)
virtual void printStatistics()
static void fitMergedFile_DiMuMonAll(TFile *f, const std::string &run_dir, const std::string &resonName, const std::string &triggerName)
static void HLTCaloPostProcess(const std::string &inFileName, bool isIncremental=false)
static void Make1DProfile(TH1 *output, TH2 *histo)
static Int_t getNumBins(const TH1 &hist)
static void BJetTaggingPostProcess(const std::string &inFileName, bool isIncremental=false)
static bool CheckHistogram(TFile *f, const char *HistoName)
static void HLTJetPostProcess(const std::string &inFileName, bool isIncremental=false)
static int getDebugLevel()
static std::string getHanResults(const std::string &hanResultsDir, const std::string &input, const std::string &hcfg, const std::string &hcfg_min10, const std::string &hcfg_min30)
int mergeFiles(const std::string &outFileName, const std::vector< std::string > &files, fileLBMap_t &lbMap, bool fillLBDirs=true)
virtual void printHanConfig()
static void fillDetPaperMeanRMS(TH2F *h2d, TH1F *h, int iopt)
static void RPCPostProcess(const std::string &inFilename, bool isIncremental=false)
static std::pair< RooRealVar, RooRealVar > fitZmumuMass(TH1F *hmass)
static void MakeMap(TH2 *outputhist, TH3 *hist)
static void TGCsubsect2sectorphi(int subsect, int §or, int &phi4)
static std::atomic< int > m_fileCompressionLevel
static bool RPCCheckHistogram(TFile *f, const char *HistoName)
static std::unordered_map< std::string, std::clock_t > m_cpuPerHistogram
static void merge_weightedEff(TH1 &a, const TH1 &b)
static void fitMergedFile_IDPerfMonManager(const std::string &inFileName, bool isIncremental=false)
Methods for creating ID Alignment summary plots on merged files.
static void merge_perBinEffPerCent(TH1 &a, const TH1 &b)
static void BJetTaggingNormalise(TFile *f)
static void TGCChamberEfficiency(const std::string &inFilename, std::vector< std::pair< std::string, float > > &p)
static TH1F * combineHistos(const char *name, const char *title, TObjArray *plots, int gap)
static void pv_PrimaryVertexMonitoring_calcResoAndEfficiency(const std::string &inFilename, bool isIncremental=false)
static float getMedian(TH1 *h1)
std::map< std::string, TDirectory * > DirMap_t
static void loopOnHistograms(HistogramOperation &fcn, TDirectory *dir)
static void merge_Rebinned(TH1 &a, TH1 &b)
static void meanRMSProjections2D(TH2F *h2d, TH1F *h, int iopt)
static void HLTMETDQFlagSummary(TFile *f, TString &run_dir)
static void fitMergedFile_IDAlignMonTrackSegments(TFile *file, const std::string &run_dir, const std::string &tracksName)
static void TGCRawHistogramDivision(const std::string &inFilename)
static void fitMergedFile_IDAlignMonGenericTracks(TFile *file, const std::string &run_dir, const std::string &tracksName)
static std::string getPath(TDirectory *dir)
std::map< TDirectory *, std::vector< TDirectory * > > map_dir_vdir
static void merge_effAsPerCent(TH2 &a, const TH2 &b)
std::optional< std::regex > m_mergeMatchHistoRE
static size_t HLTMETGetDQLBNRange(TDirectory *&run_dir, std::vector< TString > &lbnDirs)
static void HLTMETAveragePhivsEtaMaps(TFile *f, TString &run_dir)
static int nTGCWireStripMap(int ws, int etac, int phi48)
static void fitZmumuMassPlot(TH1F *hmass)
void efficiency(std::vector< double > &bins, std::vector< double > &values, const std::vector< std::string > &files, const std::string &histname, const std::string &tplotname, const std::string &label="")
std::vector< std::string > files
file names and file pointers
T * get(TKey *tobj)
get a TObject* from a TKey* (why can't a TObject be a TKey?)
std::string getInputDirectory(const std::string &outputDirName, TFile *input, bool has_multiple_runs, std::map< TFile *, std::string > *prefixes)
std::map< std::string, std::set< std::string > > fileLBMap_t
std::map< std::string, std::vector< int > > keycyclemap
void populateKeyMapping(TDirectory *, keycyclemap &)
void getImageBuffer ATLAS_NOT_THREAD_SAFE(TImage **img, TCanvas *myC, char **x, int *y)
TH1F(name, title, nxbins, bins_par2, bins_par3=None, path='', **kwargs)
std::string dirname(std::string name)