ATLAS Offline Software
Loading...
Searching...
No Matches
MonitoringFile.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4
5#ifndef dqutilsMonitoringFile_h
6#define dqutilsMonitoringFile_h
7
8
9
10#include <TObject.h>
11#include <TFile.h>
12#include <TString.h>
13#include "RooRealVar.h"
14#include <TH1.h>
15
16#ifndef __CINT__
17#include <regex>
18#else
19// good enough for CINT
20namespace std {
21 class regex;
22}
23#endif
24
26
27#include <map>
28#include <string>
29#include <vector>
30#include <set>
31#include <optional>
32
33class TDirectory;
34class TGraph;
35class TH1F;
36class TH2F;
37class TH1D;
38class TH2D;
39class TH1I;
40class TH3F;
41class TH2;
42class TH3;
43class TProfile2D;
44class TObjArray;
45class TKey;
46class TTree;
47class RooPlot;
48class TEfficiency;
49
50
51namespace dqutils {
52 typedef std::map<std::string, std::vector<int> > keycyclemap;
53 typedef std::map<std::string, std::set<std::string> > fileLBMap_t;
54 void populateKeyMapping(TDirectory*, keycyclemap&);
55
57
58
59 class ATLAS_NOT_THREAD_SAFE MonitoringFile : public TObject {
60 public:
61 struct MetaData {
62 inline MetaData(const std::string& name_, const std::string& interval_, const std::string& chain_,
63 const std::string& merge_)
64 : name(name_), interval(interval_), chain(chain_), merge(merge_) { }
65 std::string name;
66 std::string interval;
67 std::string chain;
68 std::string merge;
69 };
70
71
73 public:
74 OutputMetadata(TTree* metadata);
75 virtual ~OutputMetadata() = default;
76
77 virtual void fill(const std::string& name,
78 const std::string& interval,
79 const std::string& chain,
80 const std::string& merge);
81 protected:
82 void makeBranch(const char* branchName, const char* branchstr);
83 TTree* m_metadata {};
84 };
85
86
88
89 MonitoringFile(const std::string& fileName);
90
91 virtual ~MonitoringFile();
92
93
94
95 typedef std::map< std::string, TDirectory* > DirMap_t;
96
97 static void getAllDirs(DirMap_t& dirmap, TDirectory* dir, const std::string& dirName);
98
99 static TDirectory* createDir(DirMap_t& dirmap, TDirectory* dir, const std::string& parent, const std::string& path);
100
101 static TKey* getObjKey(TDirectory* dir, const std::string& path);
102
103 // enum MergeMethod_t { TH1Add = 0, effAsPerCent, weightedAverage, weightedEff, mergeRebinned, weightedAverage2D,
104 // eventSample };
105
106 static void fillMetaDataMap(std::map<std::string, dqutils::MonitoringFile::MetaData>& mdMap, TDirectory* dir);
107
108 int mergeFiles(const std::string & outFileName, const std::vector<std::string>& files, fileLBMap_t& lbMap, bool fillLBDirs=true);
109
110 int mergeFiles(const std::string & outFileName, const std::string & listFileName);
111
112 static void merge_effAsPerCent(TH2& a, const TH2& b);
113
114 static void merge_perBinEffPerCent(TH1& a, const TH1& b);
115
116 static void merge_effAsPerCentAlt(TH1& a, const TH1& b);
117
118 static void merge_weightedAverage(TH1& a, const TH1& b);
119
120 static void merge_weightedAverage2D(TH2& a, const TH2& b);
121
122 static void merge_weightedEff(TH1& a, const TH1& b);
123
124 static void merge_Rebinned(TH1& a, TH1& b);
125
126 static void merge_eventSample(TH2& a, const TH2& b);
127
128 static void merge_RMS(TH1& a, const TH1& b);
129
130 static void merge_RMSpercentDeviation(TH1& a, const TH1& b);
131
132 static void merge_lowerLB(TH1& a, const TH1& b);
133
134 static void merge_identical(TH1& a, const TH1& b);
138
139 //static void MakeBowingFit(TProfile2D* p2d, TH1F* hm, TH1F* hb);
140 static void fitMergedFile_IDPerfMonManager(const std::string& inFileName, bool isIncremental = false);
141 static void fitMergedFile_DiMuMonManager(const std::string& inFileName, bool isIncremental = false);
142 static void fitMergedFile_IDAlignMonManager(const std::string& inFileName, bool isIncremental = false);
143 static bool CheckHistogram(TFile* f, const char* HistoName);
144 static void fitMergedFile_IDAlignMonResiduals(TFile* f, const std::string& run_dir, const std::string& TriggerName);
145 static void fitMergedFile_IDAlignMonTrackSegments(TFile* file, const std::string& run_dir,
146 const std::string& tracksName);
147 static void fitMergedFile_IDAlignMonGenericTracks(TFile* file, const std::string& run_dir,
148 const std::string& tracksName);
149 static void fitMergedFile_IDAlignMonPVbiases(TFile* file, const std::string& run_dir,
150 const std::string& tracksName);
151 static void fitMergedFile_IDPerfMonKshort(TFile* f, const std::string& run_dir, const std::string& TriggerName);
152 static void fitMergedFile_IDPerfMonJpsi(TFile* f, const std::string& run_dir,
153 const std::string& TriggerName);
154 static void fitMergedFile_IDPerfMonUpsilon(TFile* f, const std::string& run_dir,
155 const std::string& TriggerName);
156 static void fitMergedFile_IDPerfMonZee(TFile* f, const std::string& run_dir, const std::string& TriggerName);
157 static void fitMergedFile_IDPerfMonWenu(TFile* f, const std::string& run_dir, const std::string& TriggerName);
158 static void fitMergedFile_IDPerfMonZMM(TFile* f, const std::string& run_dir, const std::string& TriggerName);
159 static void fitJpsiHistograms(TH1F* hmass, TH1F* hwidth, TH1F* h1[], int n);
160 static void fitUpsilonHistograms(TH1F* hmass, TH1F* hwidth, TH1F* h1[], int n);
161 static void fitZmumuMassPlot(TH1F* hmass);
162 static std::pair<RooRealVar, RooRealVar> fitZmumuMass(TH1F* hmass);
163 static void fitZmumuHistograms(TH1F* hmass, TH1F* hwidth, std::vector<TH1F*> hvec);
164 static void processModule(TFile* f, const std::string& run_dir, TKey* key_module, const std::string& moduleName);
165 static void fitMergedFile_DiMuMonAll(TFile* f, const std::string& run_dir, const std::string& resonName,
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);
169 static void fillGaussianMeanOrWidth(TH2F* h2d, TH1F* h, float fitMin, float fitMax, int iopt);
170 static void fillMeanOrWidth(TH2F* h2d, TH1F* h, int iopt);
171 static void fillDetPaperMeanRMS(TH2F* h2d, TH1F* h, int iopt);
172
173 static void meanRMSProjections2D(TH2F* h2d, TH1F* h, int iopt);
174 static void meanRMSProjections3D(TH3F* h3d, TH2F* h, int iopt);
175 static void meanRMSProjections3D_DMRPlot(TH3F* h3d, TH1F* h, int iopt);
176 static void meanRMSProjections3D_XY(TH3F* h3d, TH1F* h, int iXY, int iopt);
177 static TH1F* combineHistos(const char* name, const char* title, TObjArray* plots, int gap);
178 static void setMinWindow(TH1* h1, float min, float max);
179 static float getMedian(TH1* h1);
180 static void ProcessAsymHistograms(TH1F* m_neg, TH1F* m_pos, TH1F* m_asym);
181 static void Make1DProfile(TH1* output, TH2* histo);
182 static void MakeMap(TH2* outputhist, TH3* hist);
183 static int IterativeGaussFit(TH1* hist, double& mu, double& mu_err, double& sigma, double& sigma_err);
184
185 // For MuonTrackMonitoring
186 static void MuonTrackPostProcess(const std::string& inFileName, bool isIncremental = false);
187 static void MuonTrack_Main(const std::string& inFileName, TString dirname);
188
189 //For RPC
190 static void RPCPostProcess(const std::string& inFilename, bool isIncremental = false);
191 static bool RPCCheckHistogram(TFile* f, const char* HistoName);
192
193 //For TGC
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,
197 float > >& phigh,
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);
202 //static void TGCDQResultsToCool();
203 static void TGCsubsectbin2stationeta(int subsect, int bin, int& station, int& eta);
204 static void TGCsubsect2sectorphi(int subsect, int& sector, int& phi4);
205 static void TGCRawHistogramDivision(const std::string& inFilename);
206 static void TGCLV1HistogramDivision(const std::string& inFilename);
207 static int nTGCWireStripMap(int ws, int etac, int phi48);
208 static int getTGCNumberOfWires(const int istationName, const int layer, const int istationEta,
209 const int istationPhi);
210 static void TGCResetContents(TH1* h);
211
212 //For MDTvsTGC
213 static void MDTvsTGCPostProcess(const std::string& inFilename, bool isIncremental = false);
214 static void MDTvsTGCEfficiency(const std::string& inFilename);
215 static void MDTvsTGCResetContents(TH1* h);
216
217 class ATLAS_NOT_THREAD_SAFE PostProcessorFileWrapper: public TFile { //class to keep keep track of histograms we
218 // collect
219 public:
220 PostProcessorFileWrapper(const std::string& inFilename, const std::string& name);
221 ~PostProcessorFileWrapper(); //delete all objects accessed from the TFile whose SetDirectory(0)
222
223 //function to automatically getObject, obj->SetDirectory(target), if target==0 save target for future deletion
224 //option to supply baseDir to get object from subdir of TFile rather than from TFile itself
225 //target if nothing is supplied thatn the object will be set to 0 (protects against f->Write() writing unintended
226 // copies of your histogram
227 template <class T>
228 void get(const char* namecycle, T*& ptr, TDirectory* baseDir = 0, TDirectory* target = 0); //use
229 // TDirectory->GetObject(const
230 // char* namecycle,
231 // void* &ptr);
232 void setDirectory(TH1* h, TDirectory* dir = 0);
233 void setDirectory(TH2* h, TDirectory* dir = 0);
234 void setDirectory(TGraph* g, TDirectory* dir = 0);
235 void setMetaData(TDirectory* targetDir, TH1* h1, TH1* h2 = 0, TH1* h3 = 0);
236 void error();//call this function if you want the underlying TFile not to write i.e. recover error in program
237 private:
238 std::set<TObject*> m_garbage;
239 std::string m_name;
240 bool m_error {};
241 };
242 //
243 //static bool TGCCheckFile(std::string inFilename, std::string& run_dir);
244 static bool TGCCheckHistogram(TFile* f, TString& hname);
245 static void TGCSetMetaData(TDirectory* targetDir, TH1* h1, TH1* h2 = 0, TH1* h3 = 0);
246
247 //For HLT Muon
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,
253 TString seffg);
254
255 //HLT Egamma
256 static void HLTEgammaPostProcess(const std::string& inFilename, bool isIncremental = false);
257
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);
262
263 //HLT tau
264 static void HLTTauPostProcess(const std::string& inFilename, bool isIncremental = false);
265
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 = "");
271
272 static std::string getPath(TDirectory* dir);
273
274 // HLT MET
275 static void HLTMETPostProcess(const std::string& inFileName, bool isIncremental = false);
276 static void HLTMETAveragePhivsEtaMaps(TFile* f, TString& run_dir);
277 static size_t HLTMETGetDQLBNRange(TDirectory*& run_dir, std::vector<TString>& lbnDirs);
278 static int HLTMETGetStatusPerBin(TH1I*& hist, int ymin, int ymax, int rmin, int rmax);
279 static void HLTMETDQFlagSummary(TFile* f, TString& run_dir);
280
281 // HLT Jet
282 static void HLTCaloPostProcess(const std::string& inFileName, bool isIncremental = false);
283 static void HLTCaloAveragePtPhiEtaMaps(TFile* f, TString& run_dir);
284
285 // HLT Jet
286 static void HLTJetPostProcess(const std::string& inFileName, bool isIncremental = false);
287 static void HLTJetCalcEfficiencyAndRate(TFile* f, TString& run_dir);
288
289 //JetTagging
290 static void BJetTaggingPostProcess(const std::string& inFileName, bool isIncremental = false);
291 static void BJetTaggingAdjustRanges(TFile* f);
292 static void BJetTaggingNormalise(TFile* f);
293
294 //HLT MinBiasMon
295 static void HLTMinBiasMonPostProcess(const std::string& inFileName, bool isIncremental = false);
296 static void HLTMinBiasMonGetTargetHistos(TDirectory* source,
297 std::vector< std::pair<TString, TString> >& targetNames);
298
299 // primary vertex monitoring
300 static void pv_PrimaryVertexMonitoring_calcResoAndEfficiency(const std::string& inFilename,
301 bool isIncremental = false);
302
303 // primary vertex multiplicity monitoring
304 static void VxMon_move(const std::string& inFilename, bool isIncremental = false);
305
306 // L1Calo
307 static void L1CaloPostProcess(const std::string& inFileName, bool isIncremental = false);
308 static void L1CaloStabilityRMS(TFile* f, const TString& nameDir, const TString& nameTag);
309 static void L1CaloFillWithError(TFile* f, const TString& nameDir, const TString& nameData,
310 const TString& nameError);
311 static void L1CaloResetEfficiencies(TFile* f, const TString& effDir,
312 const TString& nameDen, const TString& nameEff,
313 int items, double threshold, int binSkip);
314
315 // Pixel
316 static void PixelPostProcess(const std::string& inFilename, bool isIncremental = false);
317
318 // Other helper methods
319 // Compute Bin Errors a la Ullrich, Paterno, Xu (see source file for more details)
320 static int ComputeUPXBinErrors(TH1F* hnum, TH1F* hden, std::vector<float>& errors);
321
326
327 virtual bool setFile(const std::string& fileName);
328
329 virtual void printStatistics();
330
331
335
336 virtual bool copyHistograms(const std::string& outFileName,
337 const std::string& dirName = "all");
338
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);
342
343 virtual void printHanConfig();
344
345 virtual std::string FindCommon(const std::string& name1, const std::string& name2) const;
346 protected:
347 static std::string getIndentation(const std::string& pathName, const std::string& leadingSpace = "");
348
350 public:
352 virtual bool execute(TH1* hist) = 0;
353 virtual bool execute(TGraph* graph) = 0;
354 virtual bool execute(TEfficiency* efficiency) = 0;
355 virtual bool executeMD(TH1* hist, const MetaData&) {return execute(hist);}
356 virtual bool executeMD(TGraph* graph, const MetaData&) {return execute(graph);}
357 virtual bool executeMD(TEfficiency* efficiency, const MetaData&) {return execute(efficiency);}
358 };
359
361 public:
362 CopyHistogram(TDirectory* target, const std::string& dirName);
363 CopyHistogram(const CopyHistogram&) = delete;
364 CopyHistogram& operator = (const CopyHistogram&) = delete;
365 virtual ~CopyHistogram();
366 virtual bool execute(TH1* hist);
367 virtual bool execute(TGraph* graph);
368 virtual bool execute(TEfficiency* eff);
369 virtual bool executeMD(TH1* hist, const MetaData& md);
370 virtual bool executeMD(TGraph* graph, const MetaData& md);
371 virtual bool executeMD(TEfficiency* eff, const MetaData& md);
372 protected:
373 void fillMD(const MetaData& md);
374 TDirectory* m_target {};
375 std::string m_dirName;
376 TTree* m_metadata {};
377 };
378
380 public:
381 GatherStatistics(const std::string& dirName);
382 virtual bool execute(TH1* hist);
383 virtual bool execute(TGraph* graph);
384 virtual bool execute(TEfficiency* eff);
385
386 std::string m_dirName;
387 int m_nHist1D {};
389 int m_nGraph {};
391 int m_nHist2D {};
395 };
396
398 public:
400 virtual bool execute(TH1* hist);
401 virtual bool execute(TGraph* graph);
402 virtual bool execute(TEfficiency* eff);
403
404 std::vector<std::string> m_names;
405 };
406
407
408 virtual void clearData();
409
410
411 static bool dirHasHistogramsInMetadata(TDirectory* dir);
412
413 static void loopOnHistograms(HistogramOperation& fcn, TDirectory* dir);
414
415 static bool loopOnHistogramsInMetadata(HistogramOperation& fcn, TDirectory* dir);
416
417 static bool setListFromFile(std::vector<std::string>& filelist,
418 const std::string& listFileName);
419
420 TFile* m_file {};
421
422 private:
423
424
425
426
428
429
430 typedef std::map<TDirectory*, std::vector<TDirectory*> > map_dir_vdir;
431
432 std::map<std::string, std::vector<std::string>> buildLBToIntervalMap(TDirectory* runDir);
433
434
435 int mergeLB_processLBinterval(TFile* file, const std::vector<std::string> & inputDirNames, const std::string& outputDirName);
436
437 static Int_t getNumBins(const TH1& hist);
438 std::optional<std::regex> m_mergeMatchHistoRE;
439 std::optional<std::regex> m_mergeMatchDirRE;
440 static std::atomic<int> m_fileCompressionLevel;
441 static bool m_doTiming;
442 static std::unordered_map<std::string,std::clock_t> m_cpuPerHistogram;
443 static bool s_checkEquality;
444
445 public:
446 int mergeLBintervals(const std::string& inFilename);
447 static int getDebugLevel();
448 static void setDebugLevel(int level);
450 static void setCompressionLevel(int level) {m_fileCompressionLevel = level;}
451 bool setHistogramRegEx(const std::string& re);
452 bool setDirectoryRegEx(const std::string& re);
453 void doTiming();
454 static void setCheckEquality(bool value);
455
456 ClassDef(MonitoringFile, 0) // Provides functions to manipulate and analyze data-quality monitoring files
457 };
458
459 std::string getInputDirectory(const std::string& outputDirName, TFile* input, bool has_multiple_runs,
460 std::map< TFile*, std::string >* prefixes);
461
462 template <class T>
463 void MonitoringFile::PostProcessorFileWrapper::get(const char* namecycle, T*& ptr, TDirectory* baseDir,
464 TDirectory* target) {
465 if (baseDir) baseDir->GetObject(namecycle, ptr); // suggested root function
466 else this->GetObject(namecycle, ptr); //suggested root function
467 if (!ptr) return;
468
469 if ((T::Class())->InheritsFrom("TH1")) {
470 TH1* obj = reinterpret_cast<TH1*> (ptr);
471
472 obj->SetDirectory(target);
473 if (target == 0) m_garbage.insert(obj);
474 } else {
475 TObject* obj = reinterpret_cast<TObject*>(ptr);
476
477 if (target == 0) m_garbage.insert(obj);
478 }
479 }
480} // namespace dqutils
481
482// #include "DataQualityUtils/MonitoringFile_PPFileWrapper.cxx"
483#endif
const boost::regex re(r_e)
Scalar eta() const
pseudorapidity method
static Double_t a
#define min(a, b)
Definition cfImp.cxx:40
#define max(a, b)
Definition cfImp.cxx:41
Define macros for attributes used to control the static checker.
Header file for AthHistogramAlgorithm.
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)
GatherStatistics(const std::string &dirName)
virtual bool execute(TGraph *graph)
virtual bool executeMD(TH1 *hist, const MetaData &)
virtual bool execute(TGraph *graph)=0
virtual bool execute(TEfficiency *efficiency)=0
virtual bool executeMD(TEfficiency *efficiency, const MetaData &)
virtual bool executeMD(TGraph *graph, const MetaData &)
virtual void fill(const std::string &name, const std::string &interval, const std::string &chain, const std::string &merge)
void makeBranch(const char *branchName, const char *branchstr)
void get(const char *namecycle, T *&ptr, TDirectory *baseDir=0, TDirectory *target=0)
PostProcessorFileWrapper(const std::string &inFilename, const std::string &name)
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 setDebugLevel(int level)
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)
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 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 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 &sector, 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 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)
std::map< std::string, TDirectory * > DirMap_t
static void loopOnHistograms(HistogramOperation &fcn, TDirectory *dir)
virtual void clearData()
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)
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
Definition hcg.cxx:50
T * get(TKey *tobj)
get a TObject* from a TKey* (why can't a TObject be a TKey?)
Definition hcg.cxx:130
double ymin
Definition listroot.cxx:63
double ymax
Definition listroot.cxx:64
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)
Definition merge.py:1
TH1F(name, title, nxbins, bins_par2, bins_par3=None, path='', **kwargs)
STL namespace.
MetaData(const std::string &name_, const std::string &interval_, const std::string &chain_, const std::string &merge_)
TFile * file
std::string dirname(std::string name)
Definition utils.cxx:200