ATLAS Offline Software
Loading...
Searching...
No Matches
FirstPage Class Reference
Inheritance diagram for FirstPage:
Collaboration diagram for FirstPage:

Public Member Functions

 FirstPage (char *, TFile *)

Public Attributes

float runnumber = 0
float t0offset = 0
int iter = 0

Detailed Description

Definition at line 3534 of file TRTCalib_makeplots.cxx.

Constructor & Destructor Documentation

◆ FirstPage()

FirstPage::FirstPage ( char * ,
TFile * file )

Definition at line 3544 of file TRTCalib_makeplots.cxx.

3545{
3546
3547 this->cd();
3548
3549 TNtuple *Tracktuple = (TNtuple *)file->Get("tracktuple");
3550 // we assign here index 0,1,2,3 to detectors -1, -2, 1, 2
3551 TH1F *resAr0 = (TH1F *)file->Get("TRT_Ar_all/Detector_Ar_-1/residual");
3552 TH1F *tresAr0 = (TH1F *)file->Get("TRT_Ar_all/Detector_Ar_-1/timeresidual");
3553 TH1F *resAr1 = (TH1F *)file->Get("TRT_Ar_all/Detector_Ar_-2/residual");
3554 TH1F *tresAr1 = (TH1F *)file->Get("TRT_Ar_all/Detector_Ar_-2/timeresidual");
3555 TH1F *resXe1 = (TH1F *)file->Get("TRT_all/Detector_-2/residual");
3556 TH1F *tresXe1 = (TH1F *)file->Get("TRT_all/Detector_-2/timeresidual");
3557 TH1F *resAr2 = (TH1F *)file->Get("TRT_Ar_all/Detector_Ar_1/residual");
3558 TH1F *tresAr2 = (TH1F *)file->Get("TRT_Ar_all/Detector_Ar_1/timeresidual");
3559 TH1F *resAr3 = (TH1F *)file->Get("TRT_Ar_all/Detector_Ar_2/residual");
3560 TH1F *tresAr3 = (TH1F *)file->Get("TRT_Ar_all/Detector_Ar_2/timeresidual");
3561 TH1F *resXe3 = (TH1F *)file->Get("TRT_all/Detector_2/residual");
3562 TH1F *tresXe3 = (TH1F *)file->Get("TRT_all/Detector_2/timeresidual");
3563
3564 TDatime *dt = new TDatime();
3565
3566 TPaveText *pt = new TPaveText(.1, .2, .9, .9);
3567
3568 if (!Tracktuple)
3569 throw(string("tracktuple not found!"));
3570
3571 cout << " tracktuple found " << endl;
3572 pt->AddText(" ");
3573
3574 // if (string(filename).find("_histograms.root")!=string::npos) iter = atoi(string(filename).substr(string(filename).find("_histograms.root")-2,2).data());
3575 iter = 0;
3576
3577 runnumber = 0;
3578 cout << " writing to header. iteration number " << iter << endl;
3579 pt->AddText(Form("Iteration number: %i", iter));
3580 cout << " writing to header. month " << dt->GetMonth() << endl;
3581 pt->AddText(Form("Time: %02i/%02i/%i %02i:%02i", dt->GetDay(), dt->GetMonth(), dt->GetYear(), dt->GetHour(), dt->GetMinute()));
3582 Tracktuple->SetBranchAddress("run", &runnumber);
3583 Tracktuple->GetEntry(0);
3584 cout << " writing to header. run number " << (int)runnumber << endl;
3585 pt->AddText(Form("Run number: %i", (int)runnumber));
3586 /*
3587 for(int i=1; i<Tracktuple->GetEntries();i++){
3588 float oldrun= runnumber;
3589 Tracktuple->GetEntry(i);
3590 if(oldrun!=runnumber ) pt->AddText(Form("Run number: %i",(int)runnumber));
3591 }
3592 */
3593 cout << " writing to header. number of tracks " << Tracktuple->GetEntries() << endl;
3594 pt->AddText(Form("Total no. tracks: %lli", Tracktuple->GetEntries()));
3595
3596 // Get residuals and time residuals per subdetector
3597 // we assign here index 0,1,2,3 to detectors -1, -2, 1, 2
3598 // the detectors +-1 have only Argon in Run3
3599
3600 float bhitst[4]={0};
3601 float rest[4]{};
3602 float trest[4]{};
3603 float treswt[4]{};
3604
3605 cout << " debug 1 " << endl;
3606 bhitst[0] = resAr0->GetEntries();
3607 bhitst[2] = resAr2->GetEntries();
3608 float nhAr1 = resAr1->GetEntries();
3609 float nhXe1 = resXe1->GetEntries();
3610 cout << " debug 2 " << endl;
3611 bhitst[1] = nhAr1 + nhXe1;
3612 float nhAr3 = 0;
3613 float nhXe3 = 0;
3614 if (resAr3)
3615 nhAr3 = resAr3->GetEntries();
3616 if (resXe3)
3617 nhXe3 = resXe3->GetEntries();
3618 bhitst[3] = nhAr3 + nhXe3;
3619 cout << " debug 3 " << endl;
3620 rest[0] = resAr0->GetFunction("gaus")->GetParameter(2);
3621 rest[2] = resAr2->GetFunction("gaus")->GetParameter(2);
3622 rest[1] = (resAr1->GetFunction("gaus")->GetParameter(2) * nhAr1 + resXe1->GetFunction("gaus")->GetParameter(2) * nhXe1) / bhitst[1];
3623 if (resAr3 and resXe3)
3624 rest[3] = (resAr3->GetFunction("gaus")->GetParameter(2) * nhAr3 + resXe3->GetFunction("gaus")->GetParameter(2) * nhXe3) / bhitst[3];
3625 cout << " debug 4 " << endl;
3626 trest[0] = tresAr0->GetFunction("gaus")->GetParameter(1);
3627 trest[2] = tresAr2->GetFunction("gaus")->GetParameter(1);
3628 trest[1] = (tresAr1->GetFunction("gaus")->GetParameter(1) * nhAr1 + tresXe1->GetFunction("gaus")->GetParameter(1) * nhXe1) / bhitst[1];
3629 if (tresAr3)
3630 trest[3] = (tresAr3->GetFunction("gaus")->GetParameter(1) * nhAr3 + tresXe3->GetFunction("gaus")->GetParameter(1) * nhXe3) / bhitst[3];
3631 cout << " debug 5 " << endl;
3632 treswt[0] = tresAr0->GetFunction("gaus")->GetParameter(2);
3633 treswt[2] = tresAr2->GetFunction("gaus")->GetParameter(2);
3634 treswt[1] = (tresAr1->GetFunction("gaus")->GetParameter(2) * nhAr1 + tresXe1->GetFunction("gaus")->GetParameter(2) * nhXe1) / bhitst[1];
3635 if (tresAr3)
3636 treswt[3] = (tresAr3->GetFunction("gaus")->GetParameter(2) * nhAr3 + tresXe3->GetFunction("gaus")->GetParameter(2) * nhXe3) / bhitst[3];
3637 cout << " debug 6 " << endl;
3638
3639 // Get the precion hits vs tube hits:
3640
3641 TDirectory *errors = nullptr;
3642 TDirectory *errorsAr = nullptr;
3643 bool iserrors = false;
3644 bool iserrorsAr = false;
3645 if (file->FindKey("ErrorsAr"))
3646 {
3647 errorsAr = (TDirectory *)file->FindKey("ErrorsAr")->ReadObj();
3648 if (errorsAr != nullptr)
3649 iserrorsAr = true;
3650 }
3651 if (file->FindKey("Errors"))
3652 {
3653 errors = (TDirectory *)file->FindKey("Errors")->ReadObj();
3654 if (errors != nullptr)
3655 iserrors = true;
3656 }
3657
3658 // double ratiotrt = 0;
3659 double ratioba = 0;
3660 double ratiobc = 0;
3661 double ratioea = 0;
3662 double ratioec = 0;
3663 // TH2F *residual_trt = nullptr;
3664 // TH2F *residual_ba = nullptr;
3665 // TH2F *residual_bc = nullptr;
3666 TH2F *residual_ea = nullptr;
3667 TH2F *residual_ec = nullptr;
3668
3669 // TH2F *residual_trtP = nullptr;
3670 // TH2F *residual_baP = nullptr;
3671 // TH2F *residual_bcP = nullptr;
3672 TH2F *residual_eaP = nullptr;
3673 TH2F *residual_ecP = nullptr;
3674
3675 // TH2F *residualAr_trt = nullptr;
3676 TH2F *residualAr_ba = nullptr;
3677 TH2F *residualAr_bc = nullptr;
3678 TH2F *residualAr_ea = nullptr;
3679 TH2F *residualAr_ec = nullptr;
3680
3681 // TH2F *residualAr_trtP = nullptr;
3682 TH2F *residualAr_baP = nullptr;
3683 TH2F *residualAr_bcP = nullptr;
3684 TH2F *residualAr_eaP = nullptr;
3685 TH2F *residualAr_ecP = nullptr;
3686
3687 if (iserrors && errors->FindKey("tresidual_trt") && errors->FindKey("tresidual_trtP"))
3688 {
3689 // residual_trt = (TH2F *)errors->FindKey("tresidual_trt")->ReadObj();
3690 if (errors->FindKey("tresidual_ea"))
3691 residual_ea = (TH2F *)errors->FindKey("tresidual_ea")->ReadObj();
3692 if (errors->FindKey("tresidual_ec"))
3693 residual_ec = (TH2F *)errors->FindKey("tresidual_ec")->ReadObj();
3694
3695 // residual_trtP = (TH2F *)errors->FindKey("tresidual_trtP")->ReadObj();
3696 if (errors->FindKey("tresidual_eaP"))
3697 residual_eaP = (TH2F *)errors->FindKey("tresidual_eaP")->ReadObj();
3698 if (errors->FindKey("tresidual_ecP"))
3699 residual_ecP = (TH2F *)errors->FindKey("tresidual_ecP")->ReadObj();
3700 }
3701 else
3702 {
3703 cout << " No time residual histograms in endcaps: tresidual_trt and tresidual_trtP " << endl;
3704 }
3705 if (iserrorsAr && errorsAr->FindKey("tresidualAr_trt") && errorsAr->FindKey("tresidualAr_trtP"))
3706 {
3707 // residualAr_trt = (TH2F *)errorsAr->FindKey("tresidualAr_trt")->ReadObj();
3708 if (errorsAr->FindKey("tresidualAr_ba"))
3709 residualAr_ba = (TH2F *)errorsAr->FindKey("tresidualAr_ba")->ReadObj();
3710 if (errorsAr->FindKey("tresidualAr_bc"))
3711 residualAr_bc = (TH2F *)errorsAr->FindKey("tresidualAr_bc")->ReadObj();
3712 if (errorsAr->FindKey("tresidualAr_ea"))
3713 residualAr_ea = (TH2F *)errorsAr->FindKey("tresidualAr_ea")->ReadObj();
3714 if (errorsAr->FindKey("tresidualAr_ec"))
3715 residualAr_ec = (TH2F *)errorsAr->FindKey("tresidualAr_ec")->ReadObj();
3716
3717 // residualAr_trtP = (TH2F *)errorsAr->FindKey("tresidualAr_trtP")->ReadObj();
3718 if (errorsAr->FindKey("tresidualAr_baP"))
3719 residualAr_baP = (TH2F *)errorsAr->FindKey("tresidualAr_baP")->ReadObj();
3720 if (errorsAr->FindKey("tresidualAr_bcP"))
3721 residualAr_bcP = (TH2F *)errorsAr->FindKey("tresidualAr_bcP")->ReadObj();
3722 if (errorsAr->FindKey("tresidualAr_eaP"))
3723 residualAr_eaP = (TH2F *)errorsAr->FindKey("tresidualAr_eaP")->ReadObj();
3724 if (errorsAr->FindKey("tresidualAr_ecP"))
3725 residualAr_ecP = (TH2F *)errorsAr->FindKey("tresidualAr_ecP")->ReadObj();
3726 }
3727 else
3728 {
3729 cout << " No time residual histograms for Argon layers : tresidualAr_trt and tresidualAr_trtP " << endl;
3730 }
3731
3732 // if (residual_trt && residual_trtP && residual_trt->GetEntries() > 0)
3733 // {
3734 // ratiotrt = (residual_trtP->GetEntries() + residualAr_trtP->GetEntries()) / (residual_trt->GetEntries() + residualAr_trt->GetEntries());
3735 // }
3736 if (residualAr_ba && residualAr_baP && residualAr_ba->GetEntries() > 0)
3737 {
3738 ratioba = residualAr_baP->GetEntries() / residualAr_ba->GetEntries();
3739 }
3740 if (residualAr_bc && residualAr_bcP && residualAr_ea && residualAr_bc->GetEntries() > 0)
3741 {
3742 ratiobc = residualAr_bcP->GetEntries() / residualAr_bc->GetEntries();
3743 }
3744 if (residual_ea && residual_eaP && residualAr_ea && residualAr_eaP && residual_ea->GetEntries() > 0)
3745 {
3746 ratioea = (residual_eaP->GetEntries() + residualAr_eaP->GetEntries()) / (residual_ea->GetEntries() + residualAr_ea->GetEntries());
3747 }
3748 if (residual_ecP && residual_ec && residualAr_ecP &&residualAr_ec && residual_ec->GetEntries() > 0)
3749 {
3750 ratioec = (residual_ecP->GetEntries() + residualAr_ecP->GetEntries()) / (residual_ec->GetEntries() + residualAr_ec->GetEntries());
3751 }
3752
3753 pt->AddText("Barrels:");
3754 pt->AddText(Form(" (side C) hits: %i residual: %.4f mm Time res peak: %.3f ns ", (int)bhitst[0], rest[0], trest[0]));
3755 pt->AddText(Form(" (side C) Time res width: %.2f ns Ratio prec hits: %.3f ", treswt[0], ratioba));
3756 pt->AddText(Form(" (side A) hits: %i residual: %.4f mm Time res peak: %.3f ns ", (int)bhitst[2], rest[2], trest[2]));
3757 pt->AddText(Form(" (side A) Time res width: %.2f ns Ratio prec hits: %.3f ", treswt[2], ratiobc));
3758 pt->AddText(" Endcaps:");
3759 pt->AddText(Form(" (side C) hits: %i residual: %.4f mm Time res peak: %.3f ns", (int)bhitst[1], rest[1], trest[1]));
3760 pt->AddText(Form(" (side C) Time res width: %.2f ns Ratio prec hits: %.3f ", treswt[1], ratioea));
3761 pt->AddText(Form(" (side A) hits: %i residual: %.4f mm Time res peak: %.3f ns", (int)bhitst[3], rest[3], trest[3]));
3762 pt->AddText(Form(" (side A) Time res width: %.2f ns Ratio prec hits: %.3f ", treswt[3], ratioec));
3763
3764 pt->SetLabel(Form("TRT calibration iteration summary"));
3765
3766 pt->Draw();
3767}
TH2F(name, title, nxbins, bins_par2, bins_par3, bins_par4, bins_par5=None, bins_par6=None, path='', **kwargs)
TH1F(name, title, nxbins, bins_par2, bins_par3=None, path='', **kwargs)
TFile * file

Member Data Documentation

◆ iter

int FirstPage::iter = 0

Definition at line 3539 of file TRTCalib_makeplots.cxx.

◆ runnumber

float FirstPage::runnumber = 0

Definition at line 3538 of file TRTCalib_makeplots.cxx.

◆ t0offset

float FirstPage::t0offset = 0

Definition at line 3538 of file TRTCalib_makeplots.cxx.


The documentation for this class was generated from the following file: