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