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_)
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;
106 static void fillMetaDataMap(std::map<std::string, dqutils::MonitoringFile::MetaData>& mdMap, TDirectory*
dir);
112 static void merge_effAsPerCent(TH2&
a,
const TH2&
b);
114 static void merge_perBinEffPerCent(TH1&
a,
const TH1&
b);
116 static void merge_effAsPerCentAlt(TH1&
a,
const TH1&
b);
118 static void merge_weightedAverage(TH1&
a,
const TH1&
b);
120 static void merge_weightedAverage2D(TH2&
a,
const TH2&
b);
122 static void merge_weightedEff(TH1&
a,
const TH1&
b);
124 static void merge_Rebinned(TH1&
a, TH1&
b);
126 static void merge_eventSample(TH2&
a,
const TH2&
b);
128 static void merge_RMS(TH1&
a,
const TH1&
b);
130 static void merge_RMSpercentDeviation(TH1&
a,
const TH1&
b);
132 static void merge_lowerLB(TH1&
a,
const TH1&
b);
134 static void merge_identical(TH1&
a,
const TH1&
b);
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);
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);
178 static void setMinWindow(TH1*
h1,
float min,
float max);
179 static float getMedian(TH1*
h1);
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);
190 static void RPCPostProcess(
const std::string& inFilename,
bool isIncremental =
false);
191 static bool RPCCheckHistogram(TFile*
f,
const char* HistoName);
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);
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);
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);
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);
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 =
"");
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);
283 static void HLTCaloAveragePtPhiEtaMaps(TFile*
f, TString& run_dir);
287 static void HLTJetCalcEfficiencyAndRate(TFile*
f, TString& run_dir);
291 static void BJetTaggingAdjustRanges(TFile*
f);
292 static void BJetTaggingNormalise(TFile*
f);
296 static void HLTMinBiasMonGetTargetHistos(TDirectory*
source,
297 std::vector< std::pair<TString, TString> >& targetNames);
300 static void pv_PrimaryVertexMonitoring_calcResoAndEfficiency(
const std::string& inFilename,
304 static void VxMon_move(
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,
316 static void PixelPostProcess(
const std::string& inFilename,
bool isIncremental =
false);
320 static int ComputeUPXBinErrors(
TH1F* hnum,
TH1F* hden, std::vector<float>&
errors);
337 const std::string&
dirName =
"all");
345 virtual std::string
FindCommon(
const std::string&
name1,
const std::string& name2)
const;
374 TDirectory* m_target {};
376 TTree* m_metadata {};
388 int m_nHist1DBins {};
390 int m_nGraphPoints {};
392 int m_nHist2DBins {};
393 int m_nEfficiency {};
394 int m_nEfficiencyBins {};
418 const std::string& listFileName);
437 static Int_t getNumBins(
const TH1&
hist);
459 std::string
getInputDirectory(
const std::string& outputDirName, TFile* input,
bool has_multiple_runs,
460 std::map< TFile*, std::string >* prefixes);
466 else this->GetObject(namecycle,
ptr);
469 if ((T::Class())->InheritsFrom(
"TH1")) {
470 TH1*
obj =
reinterpret_cast<TH1*
> (
ptr);
475 TObject*
obj =
reinterpret_cast<TObject*
>(
ptr);