220 plotdirname.ReplaceAll(
"/",
"_");
222 TFile* f = TFile::Open(inFilename.c_str(),
"UPDATE");
225 std::cerr <<
"MuonTrackMonitoring(): " <<
"Input file not opened \n";
228 if (f->GetSize() < 1000.) {
229 std::cerr <<
"MuonTrackMonitoring(): " <<
"Input file empty \n";
234 TIter nextcd0(gDirectory->GetListOfKeys());
235 TKey* key0 = (TKey*) nextcd0();
236 if (key0 == 0)
return;
238 TDirectory* dir0 =
dynamic_cast<TDirectory*
> (key0->ReadObj());
239 if (dir0 == 0)
return;
242 TString runNumber = dir0->GetName();
243 TString motherDir = runNumber +
"/" +
dirname;
247 TString mDir = motherDir +
"Segments/";
248 if (!f->cd(mDir))
return;
250 TIter nextcd1(gDirectory->GetListOfKeys());
251 while (TKey* key1 =
dynamic_cast<TKey*
>(nextcd1())) {
253 TString recalg_path = key1->GetName();
254 TString recalg_fullStr = mDir + key1->GetName();
255 TDirectory* dir1 = f->GetDirectory(recalg_fullStr);
260 TH2F* h_EffNumerator =
261 (TH2F*) dir1->Get(Form(
"%sSegments_%s_eff_chamberIndex_perSector_numerator", plotdirname.Data(),
262 recalg_path.Data()));
263 TH2F* h_EffDenominator =
264 (TH2F*) dir1->Get(Form(
"%sSegments_%s_eff_chamberIndex_perSector_denominator", plotdirname.Data(),
265 recalg_path.Data()));
267 (TH2F*) dir1->Get(Form(
"%sSegments_%s_eff_chamberIndex_perSector", plotdirname.Data(), recalg_path.Data()));
269 TwoDto2D_Eff(h_EffNumerator, h_EffDenominator, h_Efficiency);
272 for (
int i = 0; i < 17; i++) {
273 TH2F* seg_prec_EffNumerator =
274 (TH2F*) dir1->Get(Form(
"%sSegments_%s_%s_etastation_nPrechit", plotdirname.Data(), recalg_path.Data(),
276 TH2F* seg_prec_EffDenominator =
277 (TH2F*) dir1->Get(Form(
"%sSegments_%s_eff_%s_etastation_nPrechit", plotdirname.Data(), recalg_path.Data(),
279 TH2F* seg_prec_Efficiency =
280 (TH2F*) dir1->Get(Form(
"%sSegments_%s_eff_%s_etastation_nPrechit", plotdirname.Data(), recalg_path.Data(),
283 TwoDto2D_Eff(seg_prec_EffNumerator, seg_prec_EffDenominator, seg_prec_Efficiency);
285 TH2F* seg_trig_EffNumerator =
286 (TH2F*) dir1->Get(Form(
"%sSegments_%s_%s_etastation_nTrighit", plotdirname.Data(), recalg_path.Data(),
288 TH2F* seg_trig_EffDenominator =
289 (TH2F*) dir1->Get(Form(
"%sSegments_%s_eff_%s_etastation_nTrighit", plotdirname.Data(), recalg_path.Data(),
291 TH2F* seg_trig_Efficiency =
292 (TH2F*) dir1->Get(Form(
"%sSegments_%s_eff_%s_etastation_nTrighit", plotdirname.Data(), recalg_path.Data(),
295 TwoDto2D_Eff(seg_trig_EffNumerator, seg_trig_EffDenominator, seg_trig_Efficiency);
300 TString mDir_muons = motherDir +
"Muons/";
301 if (!f->cd(mDir_muons))
return;
303 TIter nextcd_muons(gDirectory->GetListOfKeys());
304 while (TKey* key1 =
dynamic_cast<TKey*
>(nextcd_muons())) {
306 TString recalg_path = key1->GetName();
307 TString recalg_fullStr = mDir_muons + key1->GetName();
308 TDirectory* dir1 = f->GetDirectory(recalg_fullStr);
312 TString muonqualstr[4] = {
313 "Tight",
"Medium",
"Loose",
"Veryloose"
316 TH2F* h_EffDenominator =
317 (TH2F*) dir1->Get(Form(
"%sMuons_%s_Origin_eta_phi", plotdirname.Data(), recalg_path.Data()));
319 for (
int i = 0; i < 4; i++) {
320 TH2F* h_EffNumerator =
321 (TH2F*) dir1->Get(Form(
"%sMuons_%s_%s_eta_phi", plotdirname.Data(), recalg_path.Data(),
322 muonqualstr[i].Data()));
324 (TH2F*) dir1->Get(Form(
"%sMuons_%s_%s_eff", plotdirname.Data(), recalg_path.Data(), muonqualstr[i].Data()));
325 TwoDto2D_Eff(h_EffNumerator, h_EffDenominator, h_Efficiency);
328 TH2F* eff_nPrec = (TH2F*) dir1->Get(Form(
"%sMuons_%s_eff_nPrec", plotdirname.Data(), recalg_path.Data()));
329 TH2F* eff_nPhi = (TH2F*) dir1->Get(Form(
"%sMuons_%s_eff_nPhi", plotdirname.Data(), recalg_path.Data()));
330 TH2F* eff_nTrigEta = (TH2F*) dir1->Get(Form(
"%sMuons_%s_eff_nTrigEta", plotdirname.Data(), recalg_path.Data()));
331 TH2F* eff_ndof = (TH2F*) dir1->Get(Form(
"%sMuons_%s_eff_ndof", plotdirname.Data(), recalg_path.Data()));
332 TH2F* eff_chi2 = (TH2F*) dir1->Get(Form(
"%sMuons_%s_eff_chi2", plotdirname.Data(), recalg_path.Data()));
333 TH2F* ID_eff_ndof = (TH2F*) dir1->Get(Form(
"%sMuons_%s_ID_eff_ndof", plotdirname.Data(), recalg_path.Data()));
334 TH2F* ID_eff_chi2 = (TH2F*) dir1->Get(Form(
"%sMuons_%s_ID_eff_chi2", plotdirname.Data(), recalg_path.Data()));
335 TH2F* MS_eff_ndof = (TH2F*) dir1->Get(Form(
"%sMuons_%s_MS_eff_ndof", plotdirname.Data(), recalg_path.Data()));
336 TH2F* MS_eff_chi2 = (TH2F*) dir1->Get(Form(
"%sMuons_%s_MS_eff_chi2", plotdirname.Data(), recalg_path.Data()));
338 TH2F* avg_hits_precision_inner =
339 (TH2F*) dir1->Get(Form(
"%sMuons_%s_avg_hits_precision_inner", plotdirname.Data(), recalg_path.Data()));
340 TH2F* avg_hits_precision_middle =
341 (TH2F*) dir1->Get(Form(
"%sMuons_%s_avg_hits_precision_middle", plotdirname.Data(), recalg_path.Data()));
342 TH2F* avg_hits_precision_outer =
343 (TH2F*) dir1->Get(Form(
"%sMuons_%s_avg_hits_precision_outer", plotdirname.Data(), recalg_path.Data()));
344 TH2F* avg_hits_precision_extended =
345 (TH2F*) dir1->Get(Form(
"%sMuons_%s_avg_hits_precision_extended", plotdirname.Data(), recalg_path.Data()));
347 TH2F* avg_hits_trigger_layer1 =
348 (TH2F*) dir1->Get(Form(
"%sMuons_%s_avg_hits_trigger_layer1", plotdirname.Data(), recalg_path.Data()));
349 TH2F* avg_hits_trigger_layer2 =
350 (TH2F*) dir1->Get(Form(
"%sMuons_%s_avg_hits_trigger_layer2", plotdirname.Data(), recalg_path.Data()));
351 TH2F* avg_hits_trigger_layer3 =
352 (TH2F*) dir1->Get(Form(
"%sMuons_%s_avg_hits_trigger_layer3", plotdirname.Data(), recalg_path.Data()));
353 TH2F* avg_hits_trigger_layer4 =
354 (TH2F*) dir1->Get(Form(
"%sMuons_%s_avg_hits_trigger_layer4", plotdirname.Data(), recalg_path.Data()));
356 TH2F* avg_hits_ibl = (TH2F*) dir1->Get(Form(
"%sMuons_%s_avg_hits_ibl", plotdirname.Data(), recalg_path.Data()));
357 TH2F* avg_hits_pix = (TH2F*) dir1->Get(Form(
"%sMuons_%s_avg_hits_pix", plotdirname.Data(), recalg_path.Data()));
358 TH2F* avg_hits_sct = (TH2F*) dir1->Get(Form(
"%sMuons_%s_avg_hits_sct", plotdirname.Data(), recalg_path.Data()));
359 TH2F* avg_hits_trt = (TH2F*) dir1->Get(Form(
"%sMuons_%s_avg_hits_trt", plotdirname.Data(), recalg_path.Data()));
361 TH2F* avg_ddpt_idme = (TH2F*) dir1->Get(Form(
"%sMuons_%s_avg_ddpt_idme", plotdirname.Data(), recalg_path.Data()));
362 TH2F* avg_dptsignif = (TH2F*) dir1->Get(Form(
"%sMuons_%s_avg_dptsignif", plotdirname.Data(), recalg_path.Data()));
366 TwoDto2D_Eff(eff_nTrigEta, h_EffDenominator, eff_nTrigEta);
369 TwoDto2D_Eff(ID_eff_ndof, h_EffDenominator, ID_eff_ndof);
370 TwoDto2D_Eff(ID_eff_chi2, h_EffDenominator, ID_eff_chi2);
371 TwoDto2D_Eff(MS_eff_ndof, h_EffDenominator, MS_eff_ndof);
372 TwoDto2D_Eff(MS_eff_chi2, h_EffDenominator, MS_eff_chi2);
374 TwoDto2D_Eff(avg_hits_precision_inner, h_EffDenominator, avg_hits_precision_inner);
375 TwoDto2D_Eff(avg_hits_precision_middle, h_EffDenominator, avg_hits_precision_middle);
376 TwoDto2D_Eff(avg_hits_precision_outer, h_EffDenominator, avg_hits_precision_outer);
377 TwoDto2D_Eff(avg_hits_precision_extended, h_EffDenominator, avg_hits_precision_extended);
379 TwoDto2D_Eff(avg_hits_trigger_layer1, h_EffDenominator, avg_hits_trigger_layer1);
380 TwoDto2D_Eff(avg_hits_trigger_layer2, h_EffDenominator, avg_hits_trigger_layer2);
381 TwoDto2D_Eff(avg_hits_trigger_layer3, h_EffDenominator, avg_hits_trigger_layer3);
382 TwoDto2D_Eff(avg_hits_trigger_layer4, h_EffDenominator, avg_hits_trigger_layer4);
384 TwoDto2D_Eff(avg_hits_ibl, h_EffDenominator, avg_hits_ibl);
385 TwoDto2D_Eff(avg_hits_pix, h_EffDenominator, avg_hits_pix);
386 TwoDto2D_Eff(avg_hits_sct, h_EffDenominator, avg_hits_sct);
387 TwoDto2D_Eff(avg_hits_trt, h_EffDenominator, avg_hits_trt);
389 TwoDto2D_Eff(avg_ddpt_idme, h_EffDenominator, avg_ddpt_idme);
390 TwoDto2D_Eff(avg_dptsignif, h_EffDenominator, avg_dptsignif);
395 TString mDir_lb = motherDir +
"Overview/";
396 if (!f->cd(mDir_lb))
return;
398 TIter nextcd_lb(gDirectory->GetListOfKeys());
399 while (TKey* key1 =
dynamic_cast<TKey*
>(nextcd_lb())) {
401 TString recalg_path = key1->GetName();
402 TString recalg_fullStr = mDir_lb + key1->GetName();
403 TDirectory* dir1 = f->GetDirectory(recalg_fullStr);
407 TString montype[3] = {
408 "Segment",
"MuonTrack",
"Muon"
411 for (
int i = 0; i < 3; i++) {
413 (TH2F*) dir1->Get(Form(
"%sOverview_%s_n%s_LB_2D", plotdirname.Data(), recalg_path.Data(), montype[i].Data()));
415 (TH1F*) dir1->Get(Form(
"%sOverview_%s_n%s_LB", plotdirname.Data(), recalg_path.Data(), montype[i].Data()));
428 TString resonance[2] = {
432 for (
int i = 0; i < 2; i++) {
434 (TH2F*) dir1->Get(Form(
"%sOverview_%s_n%s_LB_2D", plotdirname.Data(), recalg_path.Data(),
435 resonance[i].Data()));
437 (TH1F*) dir1->Get(Form(
"%sOverview_%s_n%s_LB", plotdirname.Data(), recalg_path.Data(), resonance[i].Data()));
454 if (!
dirname.Contains(
"NoTrig")) {
456 TString mDir_phys = motherDir +
"MuonTrkPhys/";
457 if (!f->cd(mDir_phys))
return;
459 TIter nextcd_phys(gDirectory->GetListOfKeys());
460 while (TKey* key1 =
dynamic_cast<TKey*
>(nextcd_phys())) {
462 TString recalg_path = key1->GetName();
463 TString recalg_fullStr = mDir_phys + key1->GetName();
464 TDirectory* dir1 = f->GetDirectory(recalg_fullStr);
468 TH1* h_Mass_Mean = (TH1F*) dir1->Get(Form(
"m_%s_M_Mean", recalg_path.Data()));
469 TH1* h_Mass_Sigma = (TH1F*) dir1->Get(Form(
"m_%s_M_Sigma", recalg_path.Data()));
471 TString det_region[4] = {
472 "EC",
"BC",
"BA",
"EA"
474 for (
int i = 0; i < 4; i++) {
475 for (
int j = 0; j < 4; j++) {
476 TH1* h_Mass_region = (TH1F*) dir1->Get(Form(
"m_%s_M_%s_%s", recalg_path.Data(),
477 det_region[i].Data(), det_region[j].Data()));
480 SetMassInfo(i * 4 + (j + 1), h_Mass_region, h_Mass_Mean, h_Mass_Sigma, recalg_path);
481 if (h_Mass_region != NULL) h_Mass_region->Write(
"", TObject::kOverwrite);
484 if (h_Mass_Mean != NULL) h_Mass_Mean->Write(
"", TObject::kOverwrite);
485 if (h_Mass_Sigma != NULL) h_Mass_Sigma->Write(
"", TObject::kOverwrite);