218 TString stmp = dirname_in;
219 stmp.ReplaceAll(
"/",
"_");
220 std::string plotdirname = stmp.Data();
222 std::string
dirname =
"MuonPhysics/" + dirname_in;
223 TFile* f = TFile::Open(inFilename.c_str(),
"UPDATE");
226 std::cerr <<
"MuonTrackMonitoring(): " <<
"Input file not opened \n";
229 if (f->GetSize() < 1000.) {
230 std::cerr <<
"MuonTrackMonitoring(): " <<
"Input file empty \n";
235 TIter nextcd0(gDirectory->GetListOfKeys());
236 TKey* key0 = (TKey*) nextcd0();
237 if (key0 == 0)
return;
239 TDirectory* dir0 =
dynamic_cast<TDirectory*
> (key0->ReadObj());
240 if (dir0 == 0)
return;
243 std::string runNumber = dir0->GetName();
244 std::string motherDir = runNumber +
"/" +
dirname;
248 std::string mDir = motherDir +
"Segments/";
249 if (!f->cd(mDir.c_str()))
return;
251 TIter nextcd1(gDirectory->GetListOfKeys());
252 while (TKey* key1 =
dynamic_cast<TKey*
>(nextcd1())) {
254 std::string recalg_path = key1->GetName();
255 std::string recalg_fullStr = mDir + key1->GetName();
256 TDirectory* dir1 = f->GetDirectory(recalg_fullStr.c_str());
261 TH2F* h_EffNumerator =
262 (TH2F*) dir1->Get(Form(
"%sSegments_%s_eff_chamberIndex_perSector_numerator", plotdirname.c_str(),
263 recalg_path.c_str()));
264 TH2F* h_EffDenominator =
265 (TH2F*) dir1->Get(Form(
"%sSegments_%s_eff_chamberIndex_perSector_denominator", plotdirname.c_str(),
266 recalg_path.c_str()));
268 (TH2F*) dir1->Get(Form(
"%sSegments_%s_eff_chamberIndex_perSector", plotdirname.c_str(), recalg_path.c_str()));
270 TwoDto2D_Eff(h_EffNumerator, h_EffDenominator, h_Efficiency);
273 for (
int i = 0; i < 17; i++) {
274 TH2F* seg_prec_EffNumerator =
275 (TH2F*) dir1->Get(Form(
"%sSegments_%s_%s_etastation_nPrechit", plotdirname.c_str(), recalg_path.c_str(),
277 TH2F* seg_prec_EffDenominator =
278 (TH2F*) dir1->Get(Form(
"%sSegments_%s_eff_%s_etastation_nPrechit", plotdirname.c_str(), recalg_path.c_str(),
280 TH2F* seg_prec_Efficiency =
281 (TH2F*) dir1->Get(Form(
"%sSegments_%s_eff_%s_etastation_nPrechit", plotdirname.c_str(), recalg_path.c_str(),
284 TwoDto2D_Eff(seg_prec_EffNumerator, seg_prec_EffDenominator, seg_prec_Efficiency);
286 TH2F* seg_trig_EffNumerator =
287 (TH2F*) dir1->Get(Form(
"%sSegments_%s_%s_etastation_nTrighit", plotdirname.c_str(), recalg_path.c_str(),
289 TH2F* seg_trig_EffDenominator =
290 (TH2F*) dir1->Get(Form(
"%sSegments_%s_eff_%s_etastation_nTrighit", plotdirname.c_str(), recalg_path.c_str(),
292 TH2F* seg_trig_Efficiency =
293 (TH2F*) dir1->Get(Form(
"%sSegments_%s_eff_%s_etastation_nTrighit", plotdirname.c_str(), recalg_path.c_str(),
296 TwoDto2D_Eff(seg_trig_EffNumerator, seg_trig_EffDenominator, seg_trig_Efficiency);
301 std::string mDir_muons = motherDir +
"Muons/";
302 if (!f->cd(mDir_muons.c_str()))
return;
304 TIter nextcd_muons(gDirectory->GetListOfKeys());
305 while (TKey* key1 =
dynamic_cast<TKey*
>(nextcd_muons())) {
307 std::string recalg_path = key1->GetName();
308 std::string recalg_fullStr = mDir_muons + key1->GetName();
309 TDirectory* dir1 = f->GetDirectory(recalg_fullStr.c_str());
313 std::string muonqualstr[4] = {
314 "Tight",
"Medium",
"Loose",
"Veryloose"
317 TH2F* h_EffDenominator =
318 (TH2F*) dir1->Get(Form(
"%sMuons_%s_Origin_eta_phi", plotdirname.c_str(), recalg_path.c_str()));
320 for (
int i = 0; i < 4; i++) {
321 TH2F* h_EffNumerator =
322 (TH2F*) dir1->Get(Form(
"%sMuons_%s_%s_eta_phi", plotdirname.c_str(), recalg_path.c_str(),
323 muonqualstr[i].c_str()));
325 (TH2F*) dir1->Get(Form(
"%sMuons_%s_%s_eff", plotdirname.c_str(), recalg_path.c_str(), muonqualstr[i].c_str()));
326 TwoDto2D_Eff(h_EffNumerator, h_EffDenominator, h_Efficiency);
329 TH2F* eff_nPrec = (TH2F*) dir1->Get(Form(
"%sMuons_%s_eff_nPrec", plotdirname.c_str(), recalg_path.c_str()));
330 TH2F* eff_nPhi = (TH2F*) dir1->Get(Form(
"%sMuons_%s_eff_nPhi", plotdirname.c_str(), recalg_path.c_str()));
331 TH2F* eff_nTrigEta = (TH2F*) dir1->Get(Form(
"%sMuons_%s_eff_nTrigEta", plotdirname.c_str(), recalg_path.c_str()));
332 TH2F* eff_ndof = (TH2F*) dir1->Get(Form(
"%sMuons_%s_eff_ndof", plotdirname.c_str(), recalg_path.c_str()));
333 TH2F* eff_chi2 = (TH2F*) dir1->Get(Form(
"%sMuons_%s_eff_chi2", plotdirname.c_str(), recalg_path.c_str()));
334 TH2F* ID_eff_ndof = (TH2F*) dir1->Get(Form(
"%sMuons_%s_ID_eff_ndof", plotdirname.c_str(), recalg_path.c_str()));
335 TH2F* ID_eff_chi2 = (TH2F*) dir1->Get(Form(
"%sMuons_%s_ID_eff_chi2", plotdirname.c_str(), recalg_path.c_str()));
336 TH2F* MS_eff_ndof = (TH2F*) dir1->Get(Form(
"%sMuons_%s_MS_eff_ndof", plotdirname.c_str(), recalg_path.c_str()));
337 TH2F* MS_eff_chi2 = (TH2F*) dir1->Get(Form(
"%sMuons_%s_MS_eff_chi2", plotdirname.c_str(), recalg_path.c_str()));
339 TH2F* avg_hits_precision_inner =
340 (TH2F*) dir1->Get(Form(
"%sMuons_%s_avg_hits_precision_inner", plotdirname.c_str(), recalg_path.c_str()));
341 TH2F* avg_hits_precision_middle =
342 (TH2F*) dir1->Get(Form(
"%sMuons_%s_avg_hits_precision_middle", plotdirname.c_str(), recalg_path.c_str()));
343 TH2F* avg_hits_precision_outer =
344 (TH2F*) dir1->Get(Form(
"%sMuons_%s_avg_hits_precision_outer", plotdirname.c_str(), recalg_path.c_str()));
345 TH2F* avg_hits_precision_extended =
346 (TH2F*) dir1->Get(Form(
"%sMuons_%s_avg_hits_precision_extended", plotdirname.c_str(), recalg_path.c_str()));
348 TH2F* avg_hits_trigger_layer1 =
349 (TH2F*) dir1->Get(Form(
"%sMuons_%s_avg_hits_trigger_layer1", plotdirname.c_str(), recalg_path.c_str()));
350 TH2F* avg_hits_trigger_layer2 =
351 (TH2F*) dir1->Get(Form(
"%sMuons_%s_avg_hits_trigger_layer2", plotdirname.c_str(), recalg_path.c_str()));
352 TH2F* avg_hits_trigger_layer3 =
353 (TH2F*) dir1->Get(Form(
"%sMuons_%s_avg_hits_trigger_layer3", plotdirname.c_str(), recalg_path.c_str()));
354 TH2F* avg_hits_trigger_layer4 =
355 (TH2F*) dir1->Get(Form(
"%sMuons_%s_avg_hits_trigger_layer4", plotdirname.c_str(), recalg_path.c_str()));
357 TH2F* avg_hits_ibl = (TH2F*) dir1->Get(Form(
"%sMuons_%s_avg_hits_ibl", plotdirname.c_str(), recalg_path.c_str()));
358 TH2F* avg_hits_pix = (TH2F*) dir1->Get(Form(
"%sMuons_%s_avg_hits_pix", plotdirname.c_str(), recalg_path.c_str()));
359 TH2F* avg_hits_sct = (TH2F*) dir1->Get(Form(
"%sMuons_%s_avg_hits_sct", plotdirname.c_str(), recalg_path.c_str()));
360 TH2F* avg_hits_trt = (TH2F*) dir1->Get(Form(
"%sMuons_%s_avg_hits_trt", plotdirname.c_str(), recalg_path.c_str()));
362 TH2F* avg_ddpt_idme = (TH2F*) dir1->Get(Form(
"%sMuons_%s_avg_ddpt_idme", plotdirname.c_str(), recalg_path.c_str()));
363 TH2F* avg_dptsignif = (TH2F*) dir1->Get(Form(
"%sMuons_%s_avg_dptsignif", plotdirname.c_str(), recalg_path.c_str()));
367 TwoDto2D_Eff(eff_nTrigEta, h_EffDenominator, eff_nTrigEta);
370 TwoDto2D_Eff(ID_eff_ndof, h_EffDenominator, ID_eff_ndof);
371 TwoDto2D_Eff(ID_eff_chi2, h_EffDenominator, ID_eff_chi2);
372 TwoDto2D_Eff(MS_eff_ndof, h_EffDenominator, MS_eff_ndof);
373 TwoDto2D_Eff(MS_eff_chi2, h_EffDenominator, MS_eff_chi2);
375 TwoDto2D_Eff(avg_hits_precision_inner, h_EffDenominator, avg_hits_precision_inner);
376 TwoDto2D_Eff(avg_hits_precision_middle, h_EffDenominator, avg_hits_precision_middle);
377 TwoDto2D_Eff(avg_hits_precision_outer, h_EffDenominator, avg_hits_precision_outer);
378 TwoDto2D_Eff(avg_hits_precision_extended, h_EffDenominator, avg_hits_precision_extended);
380 TwoDto2D_Eff(avg_hits_trigger_layer1, h_EffDenominator, avg_hits_trigger_layer1);
381 TwoDto2D_Eff(avg_hits_trigger_layer2, h_EffDenominator, avg_hits_trigger_layer2);
382 TwoDto2D_Eff(avg_hits_trigger_layer3, h_EffDenominator, avg_hits_trigger_layer3);
383 TwoDto2D_Eff(avg_hits_trigger_layer4, h_EffDenominator, avg_hits_trigger_layer4);
385 TwoDto2D_Eff(avg_hits_ibl, h_EffDenominator, avg_hits_ibl);
386 TwoDto2D_Eff(avg_hits_pix, h_EffDenominator, avg_hits_pix);
387 TwoDto2D_Eff(avg_hits_sct, h_EffDenominator, avg_hits_sct);
388 TwoDto2D_Eff(avg_hits_trt, h_EffDenominator, avg_hits_trt);
390 TwoDto2D_Eff(avg_ddpt_idme, h_EffDenominator, avg_ddpt_idme);
391 TwoDto2D_Eff(avg_dptsignif, h_EffDenominator, avg_dptsignif);
396 std::string mDir_lb = motherDir +
"Overview/";
397 if (!f->cd(mDir_lb.c_str()))
return;
399 TIter nextcd_lb(gDirectory->GetListOfKeys());
400 while (TKey* key1 =
dynamic_cast<TKey*
>(nextcd_lb())) {
402 std::string recalg_path = key1->GetName();
403 std::string recalg_fullStr = mDir_lb + key1->GetName();
404 TDirectory* dir1 = f->GetDirectory(recalg_fullStr.c_str());
408 std::string montype[3] = {
409 "Segment",
"MuonTrack",
"Muon"
412 for (
int i = 0; i < 3; i++) {
414 (TH2F*) dir1->Get(Form(
"%sOverview_%s_n%s_LB_2D", plotdirname.c_str(), recalg_path.c_str(), montype[i].c_str()));
416 (TH1F*) dir1->Get(Form(
"%sOverview_%s_n%s_LB", plotdirname.c_str(), recalg_path.c_str(), montype[i].c_str()));
429 std::string resonance[2] = {
433 for (
int i = 0; i < 2; i++) {
435 (TH2F*) dir1->Get(Form(
"%sOverview_%s_n%s_LB_2D", plotdirname.c_str(), recalg_path.c_str(),
436 resonance[i].c_str()));
438 (TH1F*) dir1->Get(Form(
"%sOverview_%s_n%s_LB", plotdirname.c_str(), recalg_path.c_str(), resonance[i].c_str()));
455 if (
dirname.find(
"NoTrig") == std::string::npos) {
457 std::string mDir_phys = motherDir +
"MuonTrkPhys/";
458 if (!f->cd(mDir_phys.c_str()))
return;
460 TIter nextcd_phys(gDirectory->GetListOfKeys());
461 while (TKey* key1 =
dynamic_cast<TKey*
>(nextcd_phys())) {
463 std::string recalg_path = key1->GetName();
464 std::string recalg_fullStr = mDir_phys + key1->GetName();
465 TDirectory* dir1 = f->GetDirectory(recalg_fullStr.c_str());
469 TH1* h_Mass_Mean = (TH1F*) dir1->Get(Form(
"m_%s_M_Mean", recalg_path.c_str()));
470 TH1* h_Mass_Sigma = (TH1F*) dir1->Get(Form(
"m_%s_M_Sigma", recalg_path.c_str()));
472 std::string det_region[4] = {
473 "EC",
"BC",
"BA",
"EA"
475 for (
int i = 0; i < 4; i++) {
476 for (
int j = 0; j < 4; j++) {
477 TH1* h_Mass_region = (TH1F*) dir1->Get(Form(
"m_%s_M_%s_%s", recalg_path.c_str(),
478 det_region[i].c_str(), det_region[j].c_str()));
481 SetMassInfo(i * 4 + (j + 1), h_Mass_region, h_Mass_Mean, h_Mass_Sigma, recalg_path);
482 if (h_Mass_region != NULL) h_Mass_region->Write(
"", TObject::kOverwrite);
485 if (h_Mass_Mean != NULL) h_Mass_Mean->Write(
"", TObject::kOverwrite);
486 if (h_Mass_Sigma != NULL) h_Mass_Sigma->Write(
"", TObject::kOverwrite);