5 #ifndef dqutilsMonitoringFile_h
6 #define dqutilsMonitoringFile_h
13 #include "RooRealVar.h"
61 inline MetaData(
const std::string& name_,
const std::string& interval_,
const std::string& chain_,
62 const std::string& merge_)
78 const std::string&
chain,
79 const std::string&
merge);
81 void makeBranch(
const char* branchName,
const char* branchstr);
94 typedef std::map< std::string, TDirectory* >
DirMap_t;
105 static void fillMetaDataMap(std::map<std::string, dqutils::MonitoringFile::MetaData>& mdMap, TDirectory*
dir);
111 static void merge_effAsPerCent(TH2&
a,
const TH2&
b);
113 static void merge_perBinEffPerCent(TH1&
a,
const TH1&
b);
115 static void merge_effAsPerCentAlt(TH1&
a,
const TH1&
b);
117 static void merge_weightedAverage(TH1&
a,
const TH1&
b);
119 static void merge_weightedAverage2D(TH2&
a,
const TH2&
b);
121 static void merge_weightedEff(TH1&
a,
const TH1&
b);
123 static void merge_Rebinned(TH1&
a, TH1&
b);
125 static void merge_eventSample(TH2&
a,
const TH2&
b);
127 static void merge_RMS(TH1&
a,
const TH1&
b);
129 static void merge_RMSpercentDeviation(TH1&
a,
const TH1&
b);
131 static void merge_lowerLB(TH1&
a,
const TH1&
b);
133 static void merge_identical(TH1&
a,
const TH1&
b);
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);
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);
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);
189 static void RPCPostProcess(
const std::string& inFilename,
bool isIncremental =
false);
190 static bool RPCCheckHistogram(TFile*
f,
const char* HistoName);
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,
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);
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);
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);
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);
243 static bool TGCCheckHistogram(TFile*
f, TString&
hname);
244 static void TGCSetMetaData(TDirectory* targetDir, TH1*
h1, TH1* h2 = 0, TH1* h3 = 0);
247 static void HLTMuonPostProcess(
const std::string& inFilename,
bool isIncremental =
false);
248 static void HLTMuonHistogramDivision(
const std::string& inFilename, TString& run_dir);
249 static void HLTMuonTriggerOverlapMatrix(
const std::string& inFilename, TString& run_dir);
250 static bool HLTMuonCheckHistogram(TFile*
f, TString&
hname);
251 static void HLTMuonHDiv(PostProcessorFileWrapper&
mf, TString sdir, TString snum, TString sden, TString seff,
255 static void HLTEgammaPostProcess(
const std::string& inFilename,
bool isIncremental =
false);
257 static void HLTEgammaEfficiencyOff(TFile*
f, TDirectory* trig_dir, TDirectory* off_dir,
const TString& pathNum,
258 const TString& pathEff,
const std::vector<TString>&
varName);
259 static void HLTEgammaEfficiencyRel(TFile*
f, TDirectory* trig_dir,
const TString& pathPre,
const TString& pathRej,
260 const std::vector<TString>& objStage,
const std::vector<TString>&
varName);
263 static void HLTTauPostProcess(
const std::string& inFilename,
bool isIncremental =
false);
265 static void HLTTauPostProcess(TFile*
f, TDirectory*
dir,
266 TString pathApp, TString pathAppEff,
267 const std::vector<TString>& lvlN,
const std::vector<TString>& varN,
268 const std::vector< std::pair< int, int > >& ratioIndex,
int nameStyle,
269 TString nameApp =
"");
275 static void HLTMETAveragePhivsEtaMaps(TFile*
f, TString& run_dir);
276 static size_t HLTMETGetDQLBNRange(TDirectory*& run_dir, std::vector<TString>& lbnDirs);
277 static int HLTMETGetStatusPerBin(TH1I*&
hist,
int ymin,
int ymax,
int rmin,
int rmax);
278 static void HLTMETDQFlagSummary(TFile*
f, TString& run_dir);
282 static void HLTCaloAveragePtPhiEtaMaps(TFile*
f, TString& run_dir);
286 static void HLTJetCalcEfficiencyAndRate(TFile*
f, TString& run_dir);
290 static void BJetTaggingAdjustRanges(TFile*
f);
291 static void BJetTaggingNormalise(TFile*
f);
295 static void HLTMinBiasMonGetTargetHistos(TDirectory*
source,
296 std::vector< std::pair<TString, TString> >& targetNames);
299 static void pv_PrimaryVertexMonitoring_calcResoAndEfficiency(
const std::string& inFilename,
303 static void VxMon_move(
const std::string& inFilename,
bool isIncremental =
false);
307 static void L1CaloStabilityRMS(TFile*
f,
const TString&
nameDir,
const TString& nameTag);
308 static void L1CaloFillWithError(TFile*
f,
const TString&
nameDir,
const TString& nameData,
309 const TString& nameError);
310 static void L1CaloResetEfficiencies(TFile*
f,
const TString& effDir,
311 const TString& nameDen,
const TString& nameEff,
315 static void PixelPostProcess(
const std::string& inFilename,
bool isIncremental =
false);
319 static int ComputeUPXBinErrors(
TH1F* hnum,
TH1F* hden, std::vector<float>&
errors);
336 const std::string&
dirName =
"all");
344 virtual std::string
FindCommon(
const std::string&
name1,
const std::string& name2)
const;
373 TDirectory* m_target {};
375 TTree* m_metadata {};
387 int m_nHist1DBins {};
389 int m_nGraphPoints {};
391 int m_nHist2DBins {};
392 int m_nEfficiency {};
393 int m_nEfficiencyBins {};
417 const std::string& listFileName);
436 static Int_t getNumBins(
const TH1&
hist);
458 std::string
getInputDirectory(
const std::string& outputDirName, TFile* input,
bool has_multiple_runs,
459 std::map< TFile*, std::string >* prefixes);
465 else this->GetObject(namecycle,
ptr);
468 if ((T::Class())->InheritsFrom(
"TH1")) {
469 TH1*
obj =
reinterpret_cast<TH1*
> (
ptr);
474 TObject*
obj =
reinterpret_cast<TObject*
>(
ptr);