ATLAS Offline Software
Loading...
Searching...
No Matches
MSVtxPlotMaker Class Reference

#include <MSVtxPlotMaker.h>

Classes

struct  AngularVtxConstiTH1
struct  Chi2TH1
struct  EffInputTH1
struct  NHitsTH1
struct  NVtxTH1
struct  ResidualTH1
struct  VtxPosTGraph
struct  VtxPosTH

Public Member Functions

 MSVtxPlotMaker (const std::string &datapath, const std::string &pltdir, const std::string &treename="MSVtxValidTree")
virtual ~MSVtxPlotMaker ()
void makePlots ()

Private Member Functions

void setup ()
void setPlotStyle ()
void formatPlots ()
void fillPlots ()
void outputResults ()
void setupBranches ()
void formatTGraphs ()
void fillTruthVtxPlots (const std::vector< Amg::Vector3D > &truth_vertices)
void fillReconstructionObjectsHists ()
void fillRecoVtxPlots (const std::vector< Amg::Vector3D > &reco_vertices, const std::vector< std::vector< Amg::Vector3D > > &reco_constituentPos)
void fillTruthComparisonHists (const std::vector< Amg::Vector3D > &reco_vertices, const std::vector< Amg::Vector3D > &truth_vertices)
void fillEfficiency_NumeratorDenominatorHists (const std::vector< Amg::Vector3D > &vertices, const std::vector< Amg::Vector3D > &match_candidates, std::unique_ptr< EffInputTH1 > &denomHists, std::unique_ptr< EffInputTH1 > &numHists)
void fillNvtxHists (const std::vector< Amg::Vector3D > &vertices, std::unique_ptr< NVtxTH1 > &hists)
void fillVtxPosMaps (const std::vector< Amg::Vector3D > &vertices, std::unique_ptr< VtxPosTGraph > &graphs)
void fillVtxPosHists (const std::vector< Amg::Vector3D > &vertices, std::unique_ptr< VtxPosTH > &hists)
void fillChi2Hists (double chi2, double NDoF, std::unique_ptr< Chi2TH1 > &hists)
void fillAngularVtxConstiHists (const Amg::Vector3D &vtx, const std::vector< Amg::Vector3D > &consti, std::unique_ptr< AngularVtxConstiTH1 > &hists)
void fillVtxNhitsHists (double total, double inwards, double inner, double middle, double outer, std::unique_ptr< NHitsTH1 > &hists)
void fillResidualHists (double eta, double dR, double d_theta, double d_phi, double d_Lxy, double d_z, double d_phys, std::unique_ptr< ResidualTH1 > &hists)
void fillVtxPosFiducialVolHists (const Amg::Vector3D &vtx, std::unique_ptr< EffInputTH1 > &hists)
void saveVtxPos (std::unique_ptr< VtxPosTH > &hists, const TString &plotdir)
void saveTGraph (TMultiGraph *zLxy, TMultiGraph *etaphi, std::unique_ptr< VtxPosTGraph > &graphs, const TString &plotdir)
void saveTH1 (TH1 *h, TString plotpath, const char *dectectorLabel="", const char *new_ylabel=nullptr, bool norm=false, bool logy=false)
void saveTHStack (TH1 *h1, TH1 *h2, const TString &h1_legend, const TString &h2_legend, const TString &title, const TString &plotpath, int color1=2, int color2=1)
void saveTEfficiency (TH1 *h_num, TH1 *h_denom, const TString &title, const TString &plotpath)
void saveTH2 (TH2 *h, const TString &plotpath)
void setColorPalette (TStyle *plotStyle)
TH1 * getUnmatchedHist (TH1 *h_all, TH1 *h_matched, const TString &name_unmatched)

Private Attributes

std::string m_datapath {}
std::string m_treename {}
TString m_plotdir {}
TString m_plotdir_truthVtx {}
TString m_plotdir_recoVtx {}
TString m_plotdir_recoVtxHits {}
TString m_plotdir_vtxResiduals {}
TString m_plotdir_inputObjects {}
TString m_plotdir_vtxEfficiency {}
TString m_plotdir_vtxFakeRate {}
TTree * m_tree {nullptr}
std::unique_ptr< TFile > m_input_file {nullptr}
std::unique_ptr< TFile > m_output_file {nullptr}
std::unique_ptr< TCanvas > m_c {nullptr}
std::vector< double > * m_truthVtx_x {nullptr}
std::vector< double > * m_truthVtx_y {nullptr}
std::vector< double > * m_truthVtx_z {nullptr}
std::vector< double > * m_msVtx_chi2 {nullptr}
std::vector< int > * m_msVtx_Ntrklet {nullptr}
std::vector< double > * m_msVtx_x {nullptr}
std::vector< double > * m_msVtx_y {nullptr}
std::vector< double > * m_msVtx_z {nullptr}
std::vector< int > * m_msVtx_nMDT {nullptr}
std::vector< int > * m_msVtx_nMDT_inwards {nullptr}
std::vector< int > * m_msVtx_nMDT_I {nullptr}
std::vector< int > * m_msVtx_nMDT_M {nullptr}
std::vector< int > * m_msVtx_nMDT_O {nullptr}
std::vector< int > * m_msVtx_nRPC {nullptr}
std::vector< int > * m_msVtx_nRPC_inwards {nullptr}
std::vector< int > * m_msVtx_nRPC_I {nullptr}
std::vector< int > * m_msVtx_nRPC_M {nullptr}
std::vector< int > * m_msVtx_nRPC_O {nullptr}
std::vector< int > * m_msVtx_nTGC {nullptr}
std::vector< int > * m_msVtx_nTGC_inwards {nullptr}
std::vector< int > * m_msVtx_nTGC_I {nullptr}
std::vector< int > * m_msVtx_nTGC_M {nullptr}
std::vector< int > * m_msVtx_nTGC_O {nullptr}
std::vector< double > * m_obj_x {nullptr}
std::vector< double > * m_obj_y {nullptr}
std::vector< double > * m_obj_z {nullptr}
std::vector< double > * m_obj_phi {nullptr}
std::vector< double > * m_obj_theta {nullptr}
std::vector< double > * m_obj_eta {nullptr}
std::vector< int > * m_obj_vtxLink {nullptr}
TH1 * m_h_Nvtx_truth = new TH1D("Nvtx_truth", "Nvtx_truth; Number of truth vertices in the barrel or endcaps; Events / bin", 4, 0, 4)
TH1 * m_h_Nvtx_truth_b = new TH1D("Nvtx_truth_b", "Nvtx_truth_b; Number of truth vertices in the barrel; Events / bin", 4, 0, 4)
TH1 * m_h_Nvtx_truth_e = new TH1D("Nvtx_truth_e", "Nvtx_truth_e; Number of truth vertices in the endcaps; Events / bin", 4, 0, 4)
TMultiGraph * m_zLxy_truth = new TMultiGraph("zLxy_mg_truth", "zLxy_mg_truth")
TGraph * m_zLxy_truth_b = new TGraph()
TGraph * m_zLxy_truth_e = new TGraph()
TGraph * m_zLxy_truth_out = new TGraph()
TMultiGraph * m_etaphi_truth = new TMultiGraph("etaphi_mg_truth", "etaphi_mg_truth")
TGraph * m_etaphi_truth_b = new TGraph()
TGraph * m_etaphi_truth_e = new TGraph()
TGraph * m_etaphi_truth_out = new TGraph()
TH1 * m_h_distanceToIP_truth = new TH1D("distanceToIP_truth", "distanceToIP_truth; Truth vertex |#bf{r}| [m]; Vertices / bin", 50, 0, 20)
TH2 * m_h_zLxy_truth = new TH2D("zLxy_truth", "zLxy_truth; Truth vertex z [m]; Truth vertex L_{xy} [m]", 128, -16, 16, 52, -1, 12)
TH2 * m_h_etaphi_truth = new TH2D("etaphi_truth", "etaphi_truth; Truth vertex #kern[-1.0]{ #eta}; Truth vertex #kern[-1.0]{ #phi} [rad]", 80, -2.6, 2.6, 40, -TMath::Pi(), TMath::Pi()+1)
TH1 * m_h_Nvtx = new TH1D("Nvtx", "Nvtx; Number of reco vertices in barrel or endcaps; Events / bin", 3, 0, 3)
TH1 * m_h_Nvtx_b = new TH1D("Nvtx_b", "Nvtx_b; Number of reco vertices in the barrel; Events / bin", 3, 0, 3)
TH1 * m_h_Nvtx_e = new TH1D("Nvtx_e", "Nvtx_e; Number of reco vertices in the endcaps; Events / bin", 3, 0, 3)
TMultiGraph * m_zLxy = new TMultiGraph("zLxy_mg", "zLxy_mg")
TGraph * m_zLxy_b = new TGraph()
TGraph * m_zLxy_e = new TGraph()
TGraph * m_zLxy_out = new TGraph()
TMultiGraph * m_etaphi = new TMultiGraph("etaphi_mg", "etaphi_mg")
TGraph * m_etaphi_b = new TGraph()
TGraph * m_etaphi_e = new TGraph()
TGraph * m_etaphi_out = new TGraph()
TH1 * m_h_distanceToIP = new TH1D("distanceToIP", "distanceToIP; Reco vertex |#bf{r}| [m]; Vertices / bin", 50, 0, 20)
TH2 * m_h_zLxy = new TH2D("zLxy", "zLxy; Reco vertex z [m]; Reco vertex L_{xy} [m]", 128, -16, 16, 52, -1, 12)
TH2 * m_h_etaphi = new TH2D("etaphi", "etaphi; Reco vertex #kern[-1.0]{ #eta}; Reco vertex #kern[-1.0]{ #phi} [rad]", 80, -2.6, 2.6, 40, -TMath::Pi(), TMath::Pi()+1)
TH1 * m_h_chi2_b = new TH1D("chi2_b", "chi2_b; Reco vertex #chi^{2}; Vertices / bin", 100, 0, 10)
TH1 * m_h_chi2_e = new TH1D("chi2_e", "chi2_e; Reco vertex #chi^{2}; Vertices / bin", 100, 0, 10)
TH1 * m_h_chi2nDoF_b = new TH1D("chi2nDoF_b", "chi2nDoF_b; Reco vertex #chi^{2}/n_{DoF}; Vertices / bin", 100, 0, 5)
TH1 * m_h_chi2nDoF_e = new TH1D("chi2nDoF_e", "chi2nDoF_e; Reco vertex #chi^{2}/n_{DoF}; Vertices / bin", 100, 0, 5)
TH1 * m_h_chi2prob_b = new TH1D("chi2_prob_b", "chi2_prob_b; Reco vertex #chi^{2} probability; Vertices / bin", 100, 0, 1)
TH1 * m_h_chi2prob_e = new TH1D("chi2_prob_e", "chi2_prob_e; Reco vertex #chi^{2} probability; Vertices / bin", 100, 0, 1)
TH1 * m_h_Nconsti_b = new TH1D("Nconstituents_b", "Nconstituents_b; Reco vertex number of constituents; Vertices / bin", 39, 1, 40)
TH1 * m_h_Nconsti_e = new TH1D("Nconstituents_e", "Nconstituents_e; Reco vertex number of constituents; Vertices / bin", 39, 1, 40)
TH1 * m_h_VtxConsti_dR_b = new TH1D("VtxConsti_dR_b", "VtxConsti_dR_b; #Delta R(reco vtx, constituent); Number of vertex-constituent pairs / bin", 100, 0, 3)
TH1 * m_h_VtxConsti_dRmax_b = new TH1D("VtxConsti_dRmax_b", "VtxConsti_dRmax_b; max #kern[-0.3]{#Delta } #kern[-0.2]{ R(reco vtx, constituent)}; Vertices / bin", 50, 0, 3)
TH1 * m_h_VtxConsti_dphimax_b = new TH1D("VtxConsti_dphimax_b", "VtxConsti_dphimax_b; max #kern[-0.3]{#Delta } #kern[-0.3]{ #phi (reco vtx, constituent)}; Vertices / bin", 50, -2.5, 2.5)
TH1 * m_h_VtxConsti_detamax_b = new TH1D("VtxConsti_detamax_b", "VtxConsti_detamax_b; max #kern[-0.3]{#Delta } #kern[-0.3]{ #eta (reco vtx, constituent)}; Vertices / bin", 50, -1.0, 1.0)
TH1 * m_h_VtxConsti_dR_e = new TH1D("VtxConsti_dR_e", "VtxConsti_dR_e; #Delta R(reco vtx, constituent); Number of vertex-constituent pairs / bin", 100, 0, 3)
TH1 * m_h_VtxConsti_dRmax_e = new TH1D("VtxConsti_dRmax_e", "VtxConsti_dRmax_e; max #kern[-0.3]{#Delta } #kern[-0.2]{ R(reco vtx, constituent)}; Vertices / bin", 50, 0, 3)
TH1 * m_h_VtxConsti_dphimax_e = new TH1D("VtxConsti_dphimax_e", "VtxConsti_dphimax_e; max #kern[-0.3]{#Delta } #kern[-0.3]{ #phi (reco vtx, constituent)}; Vertices / bin", 50, -2.5, 2.5)
TH1 * m_h_VtxConsti_detamax_e = new TH1D("VtxConsti_detamax_e", "VtxConsti_detamax_e; max #kern[-0.3]{#Delta } #kern[-0.3]{ #eta (reco vtx, constituent)}; Vertices / bin", 50, -1.0, 1.0)
TH1 * m_h_nMDT_b = new TH1D("nMDT_b", "nMDT_b; Number of MDT hits near the reco vertex; Vertices / bin", 100, 0, 4000)
TH1 * m_h_nMDT_e = new TH1D("nMDT_e", "nMDT_e; Number of MDT hits near the reco vertex; Vertices / bin", 100, 0, 4000)
TH1 * m_h_nMDT_I_b = new TH1D("nMDT_I_b", "nMDT_I_b; Number of inner layer MDT hits near the reco vertex; Vertices / bin", 100, 0, 1000)
TH1 * m_h_nMDT_I_e = new TH1D("nMDT_I_e", "nMDT_I_e; Number of inner layer MDT hits near the reco vertex; Vertices / bin", 100, 0, 1000)
TH1 * m_h_nMDT_M_b = new TH1D("nMDT_M_b", "nMDT_M_b; Number of middle layer MDT hits near the reco vertex; Vertices / bin", 100, 0, 2500)
TH1 * m_h_nMDT_M_e = new TH1D("nMDT_M_e", "nMDT_M_e; Number of middle layer MDT hits near the reco vertex; Vertices / bin", 100, 0, 2500)
TH1 * m_h_nMDT_O_b = new TH1D("nMDT_O_b", "nMDT_O_b; Number of outer layer MDT hits near the reco vertex; Vertices / bin", 100, 0, 2500)
TH1 * m_h_nMDT_O_e = new TH1D("nMDT_O_e", "nMDT_O_e; Number of outer layer MDT hits near the reco vertex; Vertices / bin", 100, 0, 2500)
TH1 * m_h_nMDT_InwardsTotal_b = new TH1D("nMDT_InwardsTotal_b", "nMDT_InwardsTotal_b; fraction of MDT hits inwards of the reco vertex; Vertices / bin", 100, 0, 3)
TH1 * m_h_nMDT_InwardsTotal_e = new TH1D("nMDT_InwardsTotal_e", "nMDT_InwardsTotal_e; fraction of MDT hits inwards of the reco vertex; Vertices / bin", 100, 0, 3)
TH1 * m_h_nMDT_IM_b = new TH1D("nMDT_IM_b", "nMDT_IM_b; Reco vertex inner/middle layer MDT hits; Vertices / bin", 100, 0, 3)
TH1 * m_h_nMDT_IM_e = new TH1D("nMDT_IM_e", "nMDT_IM_e; Reco vertex inner/middle layer MDT hits; Vertices / bin", 100, 0, 3)
TH1 * m_h_nMDT_IO_b = new TH1D("nMDT_IO_b", "nMDT_IO_b; Reco vertex inner/outer layer MDT hits; Vertices / bin", 100, 0, 3)
TH1 * m_h_nMDT_IO_e = new TH1D("nMDT_IO_e", "nMDT_IO_e; Reco vertex inner/outer layer MDT hits; Vertices / bin", 100, 0, 3)
TH1 * m_h_nMDT_MO_b = new TH1D("nMDT_MO_b", "nMDT_MO_b; Reco vertex middle/outer layer MDT hits; Vertices / bin", 100, 0, 3)
TH1 * m_h_nMDT_MO_e = new TH1D("nMDT_MO_e", "nMDT_MO_e; Reco vertex middle/outer layer MDT hits; Vertices / bin", 100, 0, 3)
TH1 * m_h_nRPC = new TH1D("nRPC", "nRPC_e; Number of RPC hits near the reco vertex; Vertices / bin", 50, 0, 1500)
TH1 * m_h_nRPC_I = new TH1D("nRPC_I", "nRPC_I_e; Number of inner layer RPC hits near the reco vertex; Vertices / bin", 50, 0, 500)
TH1 * m_h_nRPC_M = new TH1D("nRPC_M", "nRPC_M_e; Number of middle layer RPC hits near the reco vertex; Vertices / bin", 50, 0, 1000)
TH1 * m_h_nRPC_O = new TH1D("nRPC_O", "nRPC_O_e; Number of outer layer RPC hits near the reco vertex; Vertices / bin", 50, 0, 1000)
TH1 * m_h_nRPC_InwardsTotal = new TH1D("nRPC_InwardsTotal", "nRPC_InwardsTotal_e; fraction of RPC hits inwards of the reco vertex; Vertices / bin", 50, 0, 1)
TH1 * m_h_nRPC_IM = new TH1D("nRPC_IM", "nRPC_IM_e; Reco vertex inner/middle layer RPC hits; Vertices / bin", 50, 0, 3)
TH1 * m_h_nRPC_IO = new TH1D("nRPC_IO", "nRPC_IO_e; Reco vertex inner/outer layer RPC hits; Vertices / bin", 50, 0, 3)
TH1 * m_h_nRPC_MO = new TH1D("nRPC_MO", "nRPC_MO_e; Reco vertex middle/outer layer RPC hits; Vertices / bin", 50, 0, 3)
TH1 * m_h_nTGC = new TH1D("nTGC", "nTGC_e; Number of TGC hits near the reco vertex; Vertices / bin", 50, 0, 1500)
TH1 * m_h_nTGC_I = new TH1D("nTGC_I", "nTGC_I_e; Number of inner layer TGC hits near the reco vertex; Vertices / bin", 50, 0, 500)
TH1 * m_h_nTGC_M = new TH1D("nTGC_M", "nTGC_M_e; Number of middle layer TGC hits near the reco vertex; Vertices / bin", 50, 0, 1000)
TH1 * m_h_nTGC_O = new TH1D("nTGC_O", "nTGC_O_e; Number of outer layer TGC hits near the reco vertex; Vertices / bin", 50, 0, 1000)
TH1 * m_h_nTGC_InwardsTotal = new TH1D("nTGC_InwardsTotal", "nTGC_InwardsTotal_e; fraction of TGC hits inwards of the reco vertex; Vertices / bin", 50, 0, 1)
TH1 * m_h_nTGC_IM = new TH1D("nTGC_IM", "nTGC_IM_e; Reco vertex inner/middle layer TGC hits; Vertices / bin", 50, 0, 3)
TH1 * m_h_nTGC_IO = new TH1D("nTGC_IO", "nTGC_IO_e; Reco vertex inner/outer layer TGC hits; Vertices / bin", 50, 0, 3)
TH1 * m_h_nTGC_MO = new TH1D("nTGC_MO", "nTGC_MO_e; Reco vertex middle/outer layer TGC hits; Vertices / bin", 50, 0, 3)
TH1 * m_h_Nobj = new TH1D("Nobj", "Nobj; Number of objects; Events / bin", 20, 0, 20)
TH1 * m_h_Nobj_b = new TH1D("Nobj_b", "Nobj_b; Number of objects in the barrel; Events / bin", 20, 0, 20)
TH1 * m_h_Nobj_e = new TH1D("Nobj_e", "Nobj_e; Number of objects in the endcaps; Events / bin", 20, 0, 20)
TH1 * m_h_NobjReco = new TH1D("objN_reco", "objN_reco; Number of objects used for reconstruction in the barrel; Events / bin", 20, 0, 20)
TH1 * m_h_NobjReco_b = new TH1D("objN_reco_b", "objN_reco_b; Number of objects used for reconstruction in the barrel; Events / bin", 20, 0, 20)
TH1 * m_h_NobjReco_e = new TH1D("objN_reco_e", "objN_reco_e; Number of objects used for reconstruction in the endcaps; Events / bin", 20, 0, 20)
TH1 * m_h_obj_phi_b = new TH1D("objPhi_b", "objPhi_b; Object #kern[-0.05]{#phi in the barrel}; Objects / bin", 100, -TMath::Pi(), TMath::Pi())
TH1 * m_h_obj_phi_e = new TH1D("objPhi_e", "objPhi_e; Object #kern[-0.05]{#phi in the endcaps}; Objects / bin", 100, -TMath::Pi(), TMath::Pi())
TH1 * m_h_obj_eta = new TH1D("objEta", "objEta; Object #eta; Objects / bin", 50, -2.7, 2.7)
TH1 * m_h_objReco_phi_b = new TH1D("objPhi_reco_b", "objPhi_reco_b; Object #kern[-0.04]{#phi used for reconstruction in the barrel}; Objects / bin", 100, -TMath::Pi(), TMath::Pi())
TH1 * m_h_objReco_phi_e = new TH1D("objPhi_reco_e", "objPhi_reco_e; Object #kern[-0.04]{#phi used for reconstruction in the endcaps}; Objects / bin", 100, -TMath::Pi(), TMath::Pi())
TH1 * m_h_objReco_eta = new TH1D("objEta_reco", "objEta_reco; Object #kern[-0.06]{#eta used for reconstruction}; Objects / bin", 50, -2.7, 2.7)
TH1 * m_h_delta_R_b = new TH1D("delta_R_b", "delta_R; #Delta R(reco Vtx, truth Vtx); Vertices / bin", 50, 0, 0.5)
TH1 * m_h_delta_R_e = new TH1D("delta_R_e", "delta_R; #Delta R(reco Vtx, truth Vtx); Vertices / bin", 50, 0, 0.5)
TH1 * m_h_delta_theta_b = new TH1D("delta_theta_b", "delta_theta; #theta_{reco} - #theta_{truth} [rad]; Vertices / 0.01 rad", 100, -0.5, 0.5)
TH1 * m_h_delta_theta_e = new TH1D("delta_theta_e", "delta_theta; #theta_{reco} - #theta_{truth} [rad]; Vertices / 0.01 rad", 100, -0.5, 0.5)
TH1 * m_h_delta_phi_b = new TH1D("delta_phi_b", "delta_phi; #phi_{reco} - #phi_{truth} [rad]; Vertices / 0.02 rad", 50, -0.5, 0.5)
TH1 * m_h_delta_phi_e = new TH1D("delta_phi_e", "delta_phi; #phi_{reco} - #phi_{truth} [rad]; Vertices / 0.02 rad", 50, -0.5, 0.5)
TH1 * m_h_delta_Lxy_b = new TH1D("delta_Lxy_b", "delta_Lxy; L_{xy}^{reco} - L_{xy}^{truth} [cm]; Vertices / 10 cm", 100, -500, 500)
TH1 * m_h_delta_Lxy_e = new TH1D("delta_Lxy_e", "delta_Lxy; L_{xy}^{reco} - L_{xy}^{truth} [cm]; Vertices / 10 cm", 100, -500, 500)
TH1 * m_h_delta_z_b = new TH1D("delta_z_b", "delta_z; z_{reco} - z_{truth} [cm]; Vertices / 10 cm", 100, -500, 500)
TH1 * m_h_delta_z_e = new TH1D("delta_z_e", "delta_z; z_{reco} - z_{truth} [cm]; Vertices / 10 cm", 100, -500, 500)
TH1 * m_h_delta_phys_b = new TH1D("delta_phys_b", "delta_phys; |#bf{r}_{reco} - #bf{r}_{truth}| [cm]; Vertices / 10 cm", 50, 0, 500)
TH1 * m_h_delta_phys_e = new TH1D("delta_phys_e", "delta_phys; |#bf{r}_{reco} - #bf{r}_{truth}| [cm]; Vertices / 10 cm", 75, 0, 750)
TH1 * m_h_delta_Lxy_posEta_b = new TH1D("delta_Lxy_posEta_b", "delta_Lxy; L_{xy}^{reco} - L_{xy}^{truth} [cm]; Vertices / 10 cm", 100, -500, 500)
TH1 * m_h_delta_Lxy_posEta_e = new TH1D("delta_Lxy_posEta_e", "delta_Lxy; L_{xy}^{reco} - L_{xy}^{truth} [cm]; Vertices / 10 cm", 100, -500, 500)
TH1 * m_h_delta_Lxy_negEta_b = new TH1D("delta_Lxy_negEta_b", "delta_Lxy; L_{xy}^{reco} - L_{xy}^{truth} [cm]; Vertices / 10 cm", 100, -500, 500)
TH1 * m_h_delta_Lxy_negEta_e = new TH1D("delta_Lxy_negEta_e", "delta_Lxy; L_{xy}^{reco} - L_{xy}^{truth} [cm]; Vertices / 10 cm", 100, -500, 500)
TH1 * m_h_delta_z_posEta_b = new TH1D("delta_z_posEta_b", "delta_z; z_{reco} - z_{truth} [cm]; Vertices / 10 cm", 100, -500, 500)
TH1 * m_h_delta_z_negEta_b = new TH1D("delta_z_negEta_b", "delta_z; z_{reco} - z_{truth} [cm]; Vertices / 10 cm", 100, -500, 500)
TH1 * m_h_delta_z_posEta_e = new TH1D("delta_z_posEta_e", "delta_z; z_{reco} - z_{truth} [cm]; Vertices / 10 cm", 100, -500, 500)
TH1 * m_h_delta_z_negEta_e = new TH1D("delta_z_negEta_e", "delta_z; z_{reco} - z_{truth} [cm]; Vertices / 10 cm", 100, -500, 500)
TH1 * m_h_Reco_Lxy_b = new TH1D("vReco_Lxy_b", "reco vertex b; Reco vertex L_{xy} [m]; Vertices / bin", 30, 0, 9)
TH1 * m_h_RecoTruth_Lxy_b = new TH1D("RecoTruth_Lxy_b", "reco vertex matched to truth in the barrel; Reco vertex L_{xy} [m]; Vertices / bin", 30, 0, 9)
TH1 * m_h_Truth_Lxy_b = new TH1D("Truth_Lxy_b", "truth vertex b; Truth vertex L_{xy} [m]; Truth vertices / bin", 30, 0, 9)
TH1 * m_h_TruthReco_Lxy_b = new TH1D("TruthReco_Lxy_b", "truth vertex matched to reco in the barrel; Truth vertex L_{xy} [m]; Vertices / bin", 30, 0, 9)
TH1 * m_h_Reco_z_e = new TH1D("Reco_z_e", "reco vertex z; Reco vertex |z| [m]; Vertices / bin", 40, 0, 16)
TH1 * m_h_RecoTruth_z_e = new TH1D("RecoTruth_z_e", "reco vertex z matched to truth in the endcaps; Reco vertex |z| [m]; Vertices / bin", 40, 0, 16)
TH1 * m_h_Truth_z_e = new TH1D("Truth_z_e", "truth vertex z; Truth vertex |z| [m]; Truth vertices / bin", 40, 0, 16)
TH1 * m_h_TruthReco_z_e = new TH1D("TruthReco_z_e", "truth vertex z matched to reco in the endcaps; Truth vertex |z| [m]; Vertices / bin", 40, 0, 16)
TH1 * m_h_Reco_eta = new TH1D("Reco_eta", "reco vertex eta; Reco vertex #eta; Vertices / bin", 30, -3, 3)
TH1 * m_h_RecoTruth_eta = new TH1D("RecoTruth_eta", "reco vertex matched to truth; Reco vertex #eta; Vertices / bin", 30, -3, 3)
TH1 * m_h_Truth_eta = new TH1D("Truth_eta", "truth vertex eta; Truth vertex #eta; Truth vertices / bin", 30, -3, 3)
TH1 * m_h_TruthReco_eta = new TH1D("TruthReco_eta", "truth vertex matched to reco; Truth vertex #eta; Vertices / bin", 30, -3, 3)
TH1 * m_h_Reco_r_b = new TH1D("Reco_r_b", "reco vertex r; Reco vertex |#bf{r}| [m]; Vertices / bin", 60, 0, 18)
TH1 * m_h_RecoTruth_r_b = new TH1D("RecoTruth_r_b", "reco vertex matched to truth; Reco vertex |#bf{r}| [m]; Vertices / bin", 60, 0, 18)
TH1 * m_h_Truth_r_b = new TH1D("Truth_r_b", "truth vertex r; Truth vertex |#bf{r}| [m]; Truth vertices / bin", 60, 0, 18)
TH1 * m_h_TruthReco_r_b = new TH1D("TruthReco_r_b", "truth vertex matched to reco; Truth vertex |#bf{r}| [m]; Vertices / bin", 60, 0, 18)
TH1 * m_h_Reco_r_e = new TH1D("Reco_r_e", "reco vertex r; Reco vertex |#bf{r}| [m]; Vertices / bin", 60, 0, 18)
TH1 * m_h_RecoTruth_r_e = new TH1D("RecoTruth_r_e", "reco vertex matched to truth; Reco vertex |#bf{r}| [m]; Vertices / bin", 60, 0, 18)
TH1 * m_h_Truth_r_e = new TH1D("Truth_r_e", "truth vertex r; Truth vertex |#bf{r}| [m]; Truth vertices / bin", 60, 0, 18)
TH1 * m_h_TruthReco_r_e = new TH1D("TruthReco_r_e", "truth vertex matched to reco; Truth vertex |#bf{r}| [m]; Vertices / bin", 60, 0, 18)
std::unique_ptr< NVtxTH1m_h_NVtx_truth = std::make_unique<NVtxTH1>(m_h_Nvtx_truth, m_h_Nvtx_truth_b, m_h_Nvtx_truth_e)
std::unique_ptr< NVtxTH1m_h_NVtx = std::make_unique<NVtxTH1>(m_h_Nvtx, m_h_Nvtx_b, m_h_Nvtx_e)
std::unique_ptr< VtxPosTGraphm_h_VtxPos = std::make_unique<VtxPosTGraph>(m_zLxy_b, m_etaphi_b, m_zLxy_e, m_etaphi_e, m_zLxy_out, m_etaphi_out)
std::unique_ptr< VtxPosTGraphm_h_VtxPos_truth = std::make_unique<VtxPosTGraph>(m_zLxy_truth_b, m_etaphi_truth_b, m_zLxy_truth_e, m_etaphi_truth_e, m_zLxy_truth_out, m_etaphi_truth_out)
std::unique_ptr< VtxPosTHm_h_VtxPosHists = std::make_unique<VtxPosTH>(m_h_zLxy, m_h_etaphi, m_h_distanceToIP)
std::unique_ptr< VtxPosTHm_h_VtxPosHists_truth = std::make_unique<VtxPosTH>(m_h_zLxy_truth, m_h_etaphi_truth, m_h_distanceToIP_truth)
std::unique_ptr< Chi2TH1m_h_VtxChi2_b = std::make_unique<Chi2TH1>(m_h_chi2_b, m_h_chi2nDoF_b, m_h_chi2prob_b)
std::unique_ptr< Chi2TH1m_h_VtxChi2_e = std::make_unique<Chi2TH1>(m_h_chi2_e, m_h_chi2nDoF_e, m_h_chi2prob_e)
std::unique_ptr< AngularVtxConstiTH1m_h_AngularVtxConsti_b = std::make_unique<AngularVtxConstiTH1>(m_h_VtxConsti_dR_b, m_h_VtxConsti_dRmax_b, m_h_VtxConsti_dphimax_b, m_h_VtxConsti_detamax_b)
std::unique_ptr< AngularVtxConstiTH1m_h_AngularVtxConsti_e = std::make_unique<AngularVtxConstiTH1>(m_h_VtxConsti_dR_e, m_h_VtxConsti_dRmax_e, m_h_VtxConsti_dphimax_e, m_h_VtxConsti_detamax_e)
std::unique_ptr< ResidualTH1m_h_VtxResiduals_b = std::make_unique<ResidualTH1>(m_h_delta_R_b, m_h_delta_theta_b, m_h_delta_phi_b, m_h_delta_Lxy_b, m_h_delta_z_b, m_h_delta_phys_b, m_h_delta_Lxy_posEta_b, m_h_delta_Lxy_negEta_b, m_h_delta_z_posEta_b, m_h_delta_z_negEta_b)
std::unique_ptr< ResidualTH1m_h_VtxResiduals_e = std::make_unique<ResidualTH1>(m_h_delta_R_e, m_h_delta_theta_e, m_h_delta_phi_e, m_h_delta_Lxy_e, m_h_delta_z_e, m_h_delta_phys_e, m_h_delta_Lxy_posEta_e, m_h_delta_Lxy_negEta_e, m_h_delta_z_posEta_e, m_h_delta_z_negEta_e)
std::unique_ptr< NHitsTH1m_h_Nhits_MDT_b = std::make_unique<NHitsTH1>(m_h_nMDT_b, m_h_nMDT_I_b, m_h_nMDT_M_b, m_h_nMDT_O_b, m_h_nMDT_InwardsTotal_b, m_h_nMDT_IM_b, m_h_nMDT_IO_b, m_h_nMDT_MO_b)
std::unique_ptr< NHitsTH1m_h_Nhits_MDT_e = std::make_unique<NHitsTH1>(m_h_nMDT_e, m_h_nMDT_I_e, m_h_nMDT_M_e, m_h_nMDT_O_e, m_h_nMDT_InwardsTotal_e, m_h_nMDT_IM_e, m_h_nMDT_IO_e, m_h_nMDT_MO_e)
std::unique_ptr< NHitsTH1m_h_Nhits_RPC = std::make_unique<NHitsTH1>(m_h_nRPC, m_h_nRPC_I, m_h_nRPC_M, m_h_nRPC_O, m_h_nRPC_InwardsTotal, m_h_nRPC_IM, m_h_nRPC_IO, m_h_nRPC_MO)
std::unique_ptr< NHitsTH1m_h_Nhits_TGC = std::make_unique<NHitsTH1>(m_h_nTGC, m_h_nTGC_I, m_h_nTGC_M, m_h_nTGC_O, m_h_nTGC_InwardsTotal, m_h_nTGC_IM, m_h_nTGC_IO, m_h_nTGC_MO)
std::unique_ptr< EffInputTH1m_h_Truth = std::make_unique<EffInputTH1>(m_h_Truth_Lxy_b, m_h_Truth_r_b, m_h_Truth_z_e, m_h_Truth_r_e, m_h_Truth_eta)
std::unique_ptr< EffInputTH1m_h_TruthRecoMatched = std::make_unique<EffInputTH1>(m_h_TruthReco_Lxy_b, m_h_TruthReco_r_b, m_h_TruthReco_z_e, m_h_TruthReco_r_e, m_h_TruthReco_eta)
std::unique_ptr< EffInputTH1m_h_Reco = std::make_unique<EffInputTH1>(m_h_Reco_Lxy_b, m_h_Reco_r_b, m_h_Reco_z_e, m_h_Reco_r_e, m_h_Reco_eta)
std::unique_ptr< EffInputTH1m_h_RecoTruthMatched = std::make_unique<EffInputTH1>(m_h_RecoTruth_Lxy_b, m_h_RecoTruth_r_b, m_h_RecoTruth_z_e, m_h_RecoTruth_r_e, m_h_RecoTruth_eta)

Detailed Description

Definition at line 40 of file MSVtxPlotMaker.h.

Constructor & Destructor Documentation

◆ MSVtxPlotMaker()

MSVtxPlotMaker::MSVtxPlotMaker ( const std::string & datapath,
const std::string & pltdir,
const std::string & treename = "MSVtxValidTree" )

Definition at line 13 of file MSVtxPlotMaker.cxx.

13 :
14 m_datapath(datapath), m_treename(treename),
15 m_plotdir(pltdir),
16 m_plotdir_truthVtx(m_plotdir+"truthVtx/"),
17 m_plotdir_recoVtx(m_plotdir+"recoVtx/"),
19 m_plotdir_vtxResiduals(m_plotdir+"vtxResiduals/"),
20 m_plotdir_inputObjects(m_plotdir+"inputObjects/"),
21 m_plotdir_vtxEfficiency(m_plotdir+"vtxEfficiency/"),
22 m_plotdir_vtxFakeRate(m_plotdir+"vtxFakeRate/")
23 {}
TString m_plotdir_inputObjects
std::string m_datapath
std::string m_treename
TString m_plotdir_recoVtxHits
TString m_plotdir_recoVtx
TString m_plotdir_truthVtx
TString m_plotdir_vtxResiduals
TString m_plotdir_vtxEfficiency
TString m_plotdir_vtxFakeRate
static std::string treename
Definition iLumiCalc.h:31

◆ ~MSVtxPlotMaker()

MSVtxPlotMaker::~MSVtxPlotMaker ( )
virtualdefault

Member Function Documentation

◆ fillAngularVtxConstiHists()

void MSVtxPlotMaker::fillAngularVtxConstiHists ( const Amg::Vector3D & vtx,
const std::vector< Amg::Vector3D > & consti,
std::unique_ptr< AngularVtxConstiTH1 > & hists )
private

Definition at line 587 of file MSVtxPlotMaker.cxx.

587 {
588 // Fills histograms with the angular differences between the vertex and its constituents.
589
590 if (consti.size() == 0) return; // no constituents
591
592 double dphi{-1}, deta{-1}, deltaR{-1};
593 double dphi_max{0}, deta_max{0}, dR_max{0};
594
595 for (const Amg::Vector3D &c : consti){
596 dphi = xAOD::P4Helpers::deltaPhi(vtx.phi(), c.phi());
597 deta = vtx.eta() - c.eta();
598 deltaR = xAOD::P4Helpers::deltaR(vtx.eta(), vtx.phi(), c.eta(), c.phi());
599 hists->h_dR->Fill(deltaR);
600 if (std::abs(dphi) > std::abs(dphi_max)) dphi_max = dphi;
601 if (std::abs(deta) > std::abs(deta_max)) deta_max = deta;
602 if (deltaR > dR_max) dR_max = deltaR;
603 }
604
605 hists->h_dphimax->Fill(dphi_max);
606 hists->h_detamax->Fill(deta_max);
607 hists->h_dRmax->Fill(dR_max);
608
609 return;
610}
Scalar deltaR(const MatrixBase< Derived > &vec) const
Eigen::Matrix< double, 3, 1 > Vector3D
double deltaPhi(double phiA, double phiB)
delta Phi in range [-pi,pi[
double deltaR(double rapidity1, double phi1, double rapidity2, double phi2)
from bare bare rapidity,phi

◆ fillChi2Hists()

void MSVtxPlotMaker::fillChi2Hists ( double chi2,
double NDoF,
std::unique_ptr< Chi2TH1 > & hists )
private

Definition at line 577 of file MSVtxPlotMaker.cxx.

577 {
578 // Fills histograms related to the chi2 value of the vertex fit.
579 hists->h_chi2->Fill(chi2);
580 hists->h_chi2nDoF->Fill(chi2/NDoF);
581 hists->h_chi2prob->Fill( TMath::Prob(chi2, NDoF-1));
582
583 return;
584}
double chi2(TH1 *h0, TH1 *h1)

◆ fillEfficiency_NumeratorDenominatorHists()

void MSVtxPlotMaker::fillEfficiency_NumeratorDenominatorHists ( const std::vector< Amg::Vector3D > & vertices,
const std::vector< Amg::Vector3D > & match_candidates,
std::unique_ptr< EffInputTH1 > & denomHists,
std::unique_ptr< EffInputTH1 > & numHists )
private

Definition at line 512 of file MSVtxPlotMaker.cxx.

513 {
514 // Fills the transverse distance (barrel vertices only), longitudinal distance (endcaps vertices only), eta-binned, and distance to the IP binned histograms
515 // for vertices passing the good vertex selection. These are the denominator histograms for efficiency calculations.
516 // If additionally, the vertex can be macthed to an element in match_candidates, the numerator histograms are filled.
517
518 for(const Amg::Vector3D &vtx : vertices){
519 if (!isGoodVtx(vtx)) continue;
520 fillVtxPosFiducialVolHists(vtx, denomHists);
521 if (!hasMatch(vtx, match_candidates)) continue;
522 fillVtxPosFiducialVolHists(vtx, numHists);
523 }
524
525 return;
526}
void fillVtxPosFiducialVolHists(const Amg::Vector3D &vtx, std::unique_ptr< EffInputTH1 > &hists)
bool hasMatch(const Amg::Vector3D &vtx1, const std::vector< Amg::Vector3D > &vtx2_vec)

◆ fillNvtxHists()

void MSVtxPlotMaker::fillNvtxHists ( const std::vector< Amg::Vector3D > & vertices,
std::unique_ptr< NVtxTH1 > & hists )
private

Definition at line 531 of file MSVtxPlotMaker.cxx.

531 {
532 // Fills the number of vertices in the whole detector region and split into barrel and endcaps.
533 hists->h_Nvtx->Fill(getNvtxDetectorRegion(vertices));
534 hists->h_Nvtx_b->Fill(getNvtxBarrel(vertices));
535 hists->h_Nvtx_e->Fill(getNvtxEndcaps(vertices));
536
537 return;
538}
int getNvtxDetectorRegion(const std::vector< Amg::Vector3D > &vertices)

◆ fillPlots()

void MSVtxPlotMaker::fillPlots ( )
private

Definition at line 85 of file MSVtxPlotMaker.cxx.

85 {
86 // main loop over the events which fills the plots
87
88 for(int i=0; i<m_tree->GetEntries(); ++i){
89 m_tree->GetEntry(i);
90
91 const std::vector<Amg::Vector3D> truth_vertices = getVertexPos(*m_truthVtx_x, *m_truthVtx_y, *m_truthVtx_z);
92 const std::vector<Amg::Vector3D> reco_vertices = getVertexPos(*m_msVtx_x, *m_msVtx_y, *m_msVtx_z);
93 const std::vector<std::vector<Amg::Vector3D>> reco_constituentPos = getConstituentPos(reco_vertices.size(), *m_obj_vtxLink,
95
96 fillTruthVtxPlots(truth_vertices);
98 fillRecoVtxPlots(reco_vertices, reco_constituentPos);
99 fillTruthComparisonHists(reco_vertices, truth_vertices);
100
101 // histograms for vertex efficiency: fraction of truth vertices that are reconstructed
103 // histograms for vertex purity: fraction of reconstructed vertices that are truth vertices
105 }
106
107 return;
108}
std::vector< double > * m_msVtx_y
void fillTruthComparisonHists(const std::vector< Amg::Vector3D > &reco_vertices, const std::vector< Amg::Vector3D > &truth_vertices)
std::unique_ptr< EffInputTH1 > m_h_TruthRecoMatched
std::vector< double > * m_msVtx_z
void fillTruthVtxPlots(const std::vector< Amg::Vector3D > &truth_vertices)
void fillReconstructionObjectsHists()
void fillRecoVtxPlots(const std::vector< Amg::Vector3D > &reco_vertices, const std::vector< std::vector< Amg::Vector3D > > &reco_constituentPos)
std::vector< int > * m_obj_vtxLink
void fillEfficiency_NumeratorDenominatorHists(const std::vector< Amg::Vector3D > &vertices, const std::vector< Amg::Vector3D > &match_candidates, std::unique_ptr< EffInputTH1 > &denomHists, std::unique_ptr< EffInputTH1 > &numHists)
std::vector< double > * m_obj_x
std::vector< double > * m_truthVtx_y
std::vector< double > * m_truthVtx_x
std::vector< double > * m_truthVtx_z
std::unique_ptr< EffInputTH1 > m_h_Truth
std::vector< double > * m_obj_y
std::vector< double > * m_msVtx_x
std::unique_ptr< EffInputTH1 > m_h_RecoTruthMatched
std::vector< double > * m_obj_z
std::unique_ptr< EffInputTH1 > m_h_Reco
std::vector< Amg::Vector3D > getVertexPos(const std::vector< double > &vtx_x, const std::vector< double > &vtx_y, const std::vector< double > &vtx_z)
std::vector< std::vector< Amg::Vector3D > > getConstituentPos(int Nvtx, const std::vector< int > &obj_vtx_link, const std::vector< double > &obj_x, const std::vector< double > &obj_y, const std::vector< double > &obj_z)

◆ fillReconstructionObjectsHists()

void MSVtxPlotMaker::fillReconstructionObjectsHists ( )
private

Definition at line 417 of file MSVtxPlotMaker.cxx.

417 {
418 // fill histograms for the objects from which vertices can be reconstructed
419
420 int Nobj_count = m_obj_phi->size();
421 int Nobj_count_b{0}, Nobj_count_e{0};
422 int NobjReco_count{0};
423 int NobjReco_count_b{0}, NobjReco_count_e{0};
424
425 for (int i=0; i<Nobj_count; ++i){
426 double obj_phi = (*m_obj_phi)[i];
427 double obj_eta = (*m_obj_eta)[i];
428 bool used_in_reco = (*m_obj_vtxLink)[i] != -1;
429 m_h_obj_eta->Fill(obj_eta);
430 if (used_in_reco){
431 ++NobjReco_count;
432 m_h_objReco_eta->Fill(obj_eta);
433 }
434
435 if (inBarrel(obj_eta)){
436 ++Nobj_count_b;
437 m_h_obj_phi_b->Fill(obj_phi);
438 if (used_in_reco){
439 ++NobjReco_count_b;
440 m_h_objReco_phi_b->Fill(obj_phi);
441 }
442 }
443 if (inEndcaps(obj_eta)){
444 ++Nobj_count_e;
445 m_h_obj_phi_e->Fill(obj_phi);
446 if (used_in_reco){
447 ++NobjReco_count_e;
448 m_h_objReco_phi_e->Fill(obj_phi);
449 }
450 }
451 }
452 m_h_Nobj->Fill(Nobj_count);
453 m_h_Nobj_b->Fill(Nobj_count_b);
454 m_h_Nobj_e->Fill(Nobj_count_e);
455 m_h_NobjReco->Fill(NobjReco_count);
456 m_h_NobjReco_b->Fill(NobjReco_count_b);
457 m_h_NobjReco_e->Fill(NobjReco_count_e);
458
459 return;
460}
std::vector< double > * m_obj_phi

◆ fillRecoVtxPlots()

void MSVtxPlotMaker::fillRecoVtxPlots ( const std::vector< Amg::Vector3D > & reco_vertices,
const std::vector< std::vector< Amg::Vector3D > > & reco_constituentPos )
private

Definition at line 463 of file MSVtxPlotMaker.cxx.

463 {
464
465 fillNvtxHists(reco_vertices, m_h_NVtx);
466 fillVtxPosMaps(reco_vertices, m_h_VtxPos);
467 fillVtxPosHists(reco_vertices, m_h_VtxPosHists);
468
469 for (unsigned int j=0; j<reco_vertices.size(); ++j){
470 if (inBarrel(reco_vertices[j])){
471 m_h_Nconsti_b->Fill((*m_msVtx_Ntrklet)[j]);
473 fillAngularVtxConstiHists(reco_vertices[j], reco_constituentPos[j], m_h_AngularVtxConsti_b);
476 }
477 if (inEndcaps(reco_vertices[j])){
478 m_h_Nconsti_e->Fill((*m_msVtx_Ntrklet)[j]);
480 fillAngularVtxConstiHists(reco_vertices[j], reco_constituentPos[j], m_h_AngularVtxConsti_e);
483 }
484 }
485
486 return;
487}
std::vector< double > * m_msVtx_chi2
std::vector< int > * m_msVtx_nMDT_inwards
void fillNvtxHists(const std::vector< Amg::Vector3D > &vertices, std::unique_ptr< NVtxTH1 > &hists)
std::vector< int > * m_msVtx_Ntrklet
std::unique_ptr< NHitsTH1 > m_h_Nhits_TGC
std::unique_ptr< VtxPosTGraph > m_h_VtxPos
std::vector< int > * m_msVtx_nRPC
std::vector< int > * m_msVtx_nRPC_inwards
std::unique_ptr< AngularVtxConstiTH1 > m_h_AngularVtxConsti_b
std::vector< int > * m_msVtx_nMDT_M
std::unique_ptr< Chi2TH1 > m_h_VtxChi2_e
std::unique_ptr< NVtxTH1 > m_h_NVtx
std::vector< int > * m_msVtx_nTGC_O
std::vector< int > * m_msVtx_nTGC_M
std::unique_ptr< VtxPosTH > m_h_VtxPosHists
std::vector< int > * m_msVtx_nRPC_I
std::unique_ptr< NHitsTH1 > m_h_Nhits_MDT_b
std::vector< int > * m_msVtx_nMDT_O
void fillVtxPosHists(const std::vector< Amg::Vector3D > &vertices, std::unique_ptr< VtxPosTH > &hists)
std::vector< int > * m_msVtx_nRPC_M
void fillVtxNhitsHists(double total, double inwards, double inner, double middle, double outer, std::unique_ptr< NHitsTH1 > &hists)
std::vector< int > * m_msVtx_nRPC_O
std::unique_ptr< Chi2TH1 > m_h_VtxChi2_b
std::vector< int > * m_msVtx_nMDT_I
std::unique_ptr< NHitsTH1 > m_h_Nhits_RPC
std::vector< int > * m_msVtx_nMDT
std::vector< int > * m_msVtx_nTGC
std::unique_ptr< AngularVtxConstiTH1 > m_h_AngularVtxConsti_e
std::unique_ptr< NHitsTH1 > m_h_Nhits_MDT_e
void fillVtxPosMaps(const std::vector< Amg::Vector3D > &vertices, std::unique_ptr< VtxPosTGraph > &graphs)
std::vector< int > * m_msVtx_nTGC_inwards
std::vector< int > * m_msVtx_nTGC_I
void fillAngularVtxConstiHists(const Amg::Vector3D &vtx, const std::vector< Amg::Vector3D > &consti, std::unique_ptr< AngularVtxConstiTH1 > &hists)
void fillChi2Hists(double chi2, double NDoF, std::unique_ptr< Chi2TH1 > &hists)

◆ fillResidualHists()

void MSVtxPlotMaker::fillResidualHists ( double eta,
double dR,
double d_theta,
double d_phi,
double d_Lxy,
double d_z,
double d_phys,
std::unique_ptr< ResidualTH1 > & hists )
private

Definition at line 631 of file MSVtxPlotMaker.cxx.

631 {
632 // Fills histograms with the differences between the reconstructed and the matched truth vertex.
633 // The value of eta can be used to split the histograms into positive and negative eta regions.
634 hists->h_delta_R->Fill(dR);
635 hists->h_delta_theta->Fill(d_theta);
636 hists->h_delta_phi->Fill(d_phi);
637 hists->h_delta_Lxy->Fill(d_Lxy);
638 hists->h_delta_z->Fill(d_z);
639 hists->h_delta_phys->Fill(d_phys);
640
641 if (eta >= 0){
642 hists->h_delta_Lxy_posEta->Fill(d_Lxy);
643 hists->h_delta_z_posEta->Fill(d_z);
644 }
645 else {
646 hists->h_delta_Lxy_negEta->Fill(d_Lxy);
647 hists->h_delta_z_negEta->Fill(d_z);
648 }
649
650 return;
651}
Scalar eta() const
pseudorapidity method

◆ fillTruthComparisonHists()

void MSVtxPlotMaker::fillTruthComparisonHists ( const std::vector< Amg::Vector3D > & reco_vertices,
const std::vector< Amg::Vector3D > & truth_vertices )
private

Definition at line 490 of file MSVtxPlotMaker.cxx.

490 {
491 // fills the histograms detailing the differences between reconstructed and truth vertices
492 for (const Amg::Vector3D &vtx : reco_vertices){
493 if (!inFiducialVol(vtx)) continue;
494 Amg::Vector3D truth_vtx = findBestMatch(vtx, truth_vertices);
495 if (!isValidMatch(truth_vtx)) continue;
496
497 double dR = xAOD::P4Helpers::deltaR(vtx.eta(), vtx.phi(), truth_vtx.eta(), truth_vtx.phi()); // angular distance
498 double d_theta = vtx.theta() - truth_vtx.theta();
499 double d_phi = Amg::deltaPhi(vtx, truth_vtx);
500 double d_Lxy = (vtx.perp() - truth_vtx.perp())/Gaudi::Units::cm; // distance in transverse plane
501 double d_z = (vtx.z() - truth_vtx.z())/Gaudi::Units::cm; // in cm
502 double d_phys = Amg::distance(vtx, truth_vtx)/Gaudi::Units::cm; // distance to the IP in cm
503
504 if (inFiducialVolBarrel(vtx)) fillResidualHists(truth_vtx.eta(), dR, d_theta, d_phi, d_Lxy, d_z, d_phys, m_h_VtxResiduals_b);
505 if (inFiducialVolEndcaps(vtx)) fillResidualHists(truth_vtx.eta(), dR, d_theta, d_phi, d_Lxy, d_z, d_phys, m_h_VtxResiduals_e);
506 }
507
508 return;
509}
std::unique_ptr< ResidualTH1 > m_h_VtxResiduals_e
void fillResidualHists(double eta, double dR, double d_theta, double d_phi, double d_Lxy, double d_z, double d_phys, std::unique_ptr< ResidualTH1 > &hists)
std::unique_ptr< ResidualTH1 > m_h_VtxResiduals_b
double deltaPhi(const Amg::Vector3D &v1, const Amg::Vector3D &v2)
float distance(const Amg::Vector3D &p1, const Amg::Vector3D &p2)
calculates the distance between two point in 3D space
Amg::Vector3D findBestMatch(const Amg::Vector3D &vtx, const std::vector< Amg::Vector3D > &candidates)

◆ fillTruthVtxPlots()

void MSVtxPlotMaker::fillTruthVtxPlots ( const std::vector< Amg::Vector3D > & truth_vertices)
private

Definition at line 407 of file MSVtxPlotMaker.cxx.

407 {
408
409 fillNvtxHists(truth_vertices, m_h_NVtx_truth);
410 fillVtxPosMaps(truth_vertices, m_h_VtxPos_truth);
411 fillVtxPosHists(truth_vertices, m_h_VtxPosHists_truth);
412
413 return;
414}
std::unique_ptr< VtxPosTGraph > m_h_VtxPos_truth
std::unique_ptr< VtxPosTH > m_h_VtxPosHists_truth
std::unique_ptr< NVtxTH1 > m_h_NVtx_truth

◆ fillVtxNhitsHists()

void MSVtxPlotMaker::fillVtxNhitsHists ( double total,
double inwards,
double inner,
double middle,
double outer,
std::unique_ptr< NHitsTH1 > & hists )
private

Definition at line 613 of file MSVtxPlotMaker.cxx.

613 {
614 // Fills histograms with the number of hits associated to the vertex, hits inwards of the vertex and the ratios between hits in different muon spectrometer layers.
615
616 if (total < 0) return; // no hits
617
618 hists->h_total->Fill(total);
619 hists->h_I->Fill(inner);
620 hists->h_M->Fill(middle);
621 hists->h_O->Fill(outer);
622 hists->h_inwardsTotal->Fill(inwards/total);
623 if (middle > 0) hists->h_IM->Fill(inner/middle);
624 if (outer > 0) hists->h_IO->Fill(inner/outer);
625 if (outer > 0) hists->h_MO->Fill(middle/outer);
626
627 return;
628}

◆ fillVtxPosFiducialVolHists()

void MSVtxPlotMaker::fillVtxPosFiducialVolHists ( const Amg::Vector3D & vtx,
std::unique_ptr< EffInputTH1 > & hists )
private

Definition at line 654 of file MSVtxPlotMaker.cxx.

654 {
655 // Fills the transverse distance (barrel vertices only), longitudinal distance (endcaps vertices only),
656 // eta-binned, and distance to the IP binned histograms.
657 if (inFiducialVolBarrel(vtx)){
658 hists->h_Lxy->Fill(vtx.perp()/Gaudi::Units::m);
659 hists->h_distanceToIP_b->Fill(vtx.mag()/Gaudi::Units::m);
660 }
661 if (inFiducialVolEndcaps(vtx)){
662 hists->h_z->Fill(std::abs(vtx.z()/Gaudi::Units::m));
663 hists->h_distanceToIP_e->Fill(vtx.mag()/Gaudi::Units::m);
664 }
665 hists->h_eta->Fill(vtx.eta());
666
667 return;
668}

◆ fillVtxPosHists()

void MSVtxPlotMaker::fillVtxPosHists ( const std::vector< Amg::Vector3D > & vertices,
std::unique_ptr< VtxPosTH > & hists )
private

Definition at line 562 of file MSVtxPlotMaker.cxx.

562 {
563 // Fills the transverse distance, longitudinal distance, eta-binned, phi-binned and distance to the IP -binned histograms
564 // Requires the vertex to be within the detector region (inside the barrel or endcaps).
565
566 for (const Amg::Vector3D &vtx : vertices){
567 if (!inDetectorRegion(vtx)) continue;
568 hists->h_zLxy->Fill(vtx.z()/Gaudi::Units::m, vtx.perp()/Gaudi::Units::m);
569 hists->h_etaphi->Fill(vtx.eta(), vtx.phi());
570 hists->h_distanceToIP->Fill(vtx.mag()/Gaudi::Units::m);
571 }
572
573 return;
574}

◆ fillVtxPosMaps()

void MSVtxPlotMaker::fillVtxPosMaps ( const std::vector< Amg::Vector3D > & vertices,
std::unique_ptr< VtxPosTGraph > & graphs )
private

Definition at line 541 of file MSVtxPlotMaker.cxx.

541 {
542 // Fills the barrel, endcaps, or outside the detector region z-Lxy and eta-phi maps with the vertex position.
543 for (const Amg::Vector3D &vtx : vertices){
544 if (inBarrel(vtx)){
545 graphs->zLxy_b->SetPoint(graphs->zLxy_b->GetN(), vtx.z()/Gaudi::Units::m, vtx.perp()/Gaudi::Units::m);
546 graphs->etaphi_b->SetPoint(graphs->etaphi_b->GetN(), vtx.eta(), vtx.phi());
547 }
548 else if (inEndcaps(vtx)){
549 graphs->zLxy_e->SetPoint(graphs->zLxy_e->GetN(), vtx.z()/Gaudi::Units::m, vtx.perp()/Gaudi::Units::m);
550 graphs->etaphi_e->SetPoint(graphs->etaphi_e->GetN(), vtx.eta(), vtx.phi());
551 }
552 else {
553 graphs->zLxy_out->SetPoint(graphs->zLxy_out->GetN(), vtx.z()/Gaudi::Units::m, vtx.perp()/Gaudi::Units::m);
554 graphs->etaphi_out->SetPoint(graphs->etaphi_out->GetN(), vtx.eta(), vtx.phi());
555 }
556 }
557
558 return;
559}

◆ formatPlots()

void MSVtxPlotMaker::formatPlots ( )
private

Definition at line 77 of file MSVtxPlotMaker.cxx.

77 {
78 // Call formating routines for the plots
80
81 return;
82}

◆ formatTGraphs()

void MSVtxPlotMaker::formatTGraphs ( )
private

Definition at line 376 of file MSVtxPlotMaker.cxx.

376 {
377 // Set the formating options for TGraph and TMultiGraph
378
379 // Lxy-z map of truth vertices
380 m_zLxy_truth->SetTitle("zLxy_truth; Truth vertex z [m]; Truth vertex L_{xy} [m]");
381 m_zLxy_truth_b->SetMarkerColor(1); m_zLxy_truth_b->SetMarkerStyle(20); m_zLxy_truth_b->SetMarkerSize(0.5);
382 m_zLxy_truth_e->SetMarkerColor(2); m_zLxy_truth_e->SetMarkerStyle(20); m_zLxy_truth_e->SetMarkerSize(0.5);
383 m_zLxy_truth_out->SetMarkerColor(14); m_zLxy_truth_out->SetMarkerStyle(24); m_zLxy_truth_out->SetMarkerSize(0.5);
384 // eta-phi map of truth vertices
385 m_etaphi_truth->SetTitle("etaphi_truth; Truth vertex #eta; Truth vertex #phi [rad]");
386 m_etaphi_truth_b->SetMarkerColor(1); m_etaphi_truth_b->SetMarkerStyle(20); m_etaphi_truth_b->SetMarkerSize(0.5);
387 m_etaphi_truth_e->SetMarkerColor(2); m_etaphi_truth_e->SetMarkerStyle(20); m_etaphi_truth_e->SetMarkerSize(0.5);
388 m_etaphi_truth_out->SetMarkerColor(14); m_etaphi_truth_out->SetMarkerStyle(24); m_etaphi_truth_out->SetMarkerSize(0.5);
389
390 // Lxy-z map of reconstructed vertices
391 m_zLxy->SetTitle("zLxy; Reco vertex z [m]; Reco vertex L_{xy} [m]");
392 m_zLxy_b->SetMarkerColor(1); m_zLxy_b->SetMarkerStyle(20); m_zLxy_b->SetMarkerSize(0.5);
393 m_zLxy_e->SetMarkerColor(2); m_zLxy_e->SetMarkerStyle(20); m_zLxy_e->SetMarkerSize(0.5);
394 m_zLxy_out->SetMarkerColor(14); m_zLxy_out->SetMarkerStyle(24); m_zLxy_out->SetMarkerSize(0.5);
395 // eta-phi map of reconstructed vertices
396 m_etaphi->SetTitle("etaphi; Reco vertex #eta; Reco vertex #phi [rad]");
397 m_etaphi_b->SetMarkerColor(1); m_etaphi_b->SetMarkerStyle(20); m_etaphi_b->SetMarkerSize(0.5);
398 m_etaphi_e->SetMarkerColor(2); m_etaphi_e->SetMarkerStyle(20); m_etaphi_e->SetMarkerSize(0.5);
399 m_etaphi_out->SetMarkerColor(14); m_etaphi_out->SetMarkerStyle(24); m_etaphi_out->SetMarkerSize(0.5);
400
401 return;
402}
TGraph * m_etaphi_truth_e
TGraph * m_etaphi_out
TGraph * m_zLxy_truth_b
TMultiGraph * m_etaphi_truth
TGraph * m_etaphi_truth_out
TMultiGraph * m_zLxy_truth
TGraph * m_zLxy_truth_out
TMultiGraph * m_etaphi
TGraph * m_zLxy_truth_e
TMultiGraph * m_zLxy
TGraph * m_etaphi_truth_b

◆ getUnmatchedHist()

TH1 * MSVtxPlotMaker::getUnmatchedHist ( TH1 * h_all,
TH1 * h_matched,
const TString & name_unmatched )
private

Definition at line 874 of file MSVtxPlotMaker.cxx.

874 {
875 // takes the difference between the all vertices and the matched vertices to get the unmatched vertices
876 TH1* h_unmatched = (TH1*)h_all->Clone(name_unmatched);
877 h_unmatched->Add(h_matched, -1);
878 return h_unmatched;
879}

◆ makePlots()

void MSVtxPlotMaker::makePlots ( )

Definition at line 31 of file MSVtxPlotMaker.cxx.

31 {
32 // Generates a series of plots from the input data (m_datapath and m_treename) and stores these at m_plotdir
33 // as a figure and in a root file.
34 setup();
37 fillPlots();
39}

◆ outputResults()

void MSVtxPlotMaker::outputResults ( )
private

Definition at line 111 of file MSVtxPlotMaker.cxx.

111 {
112 // draw, save, write the plots
113 m_c = std::make_unique<TCanvas>();
114 m_output_file->cd();
115
116
117 // truth vertices
121 // position
124
125
126 // reconstructed vertices
130 // position
133 // chi squared
140 // constituents
141 saveTH1(m_h_Nconsti_b, m_plotdir_recoVtx+"Nconstituents_b");
142 saveTH1(m_h_Nconsti_e, m_plotdir_recoVtx+"Nconstituents_e");
144 saveTH1(m_h_VtxConsti_dRmax_b, m_plotdir_recoVtx+"VtxConsti_dRmax_b");
145 saveTH1(m_h_VtxConsti_dphimax_b, m_plotdir_recoVtx+"VtxConsti_dphimax_b");
146 saveTH1(m_h_VtxConsti_detamax_b, m_plotdir_recoVtx+"VtxConsti_detamax_b");
148 saveTH1(m_h_VtxConsti_dRmax_e, m_plotdir_recoVtx+"VtxConsti_dRmax_e");
149 saveTH1(m_h_VtxConsti_dphimax_e, m_plotdir_recoVtx+"VtxConsti_dphimax_e");
150 saveTH1(m_h_VtxConsti_detamax_e, m_plotdir_recoVtx+"VtxConsti_detamax_e");
151 // MDT hits
168 // RPC hits
177 // TGC hits
186
187
188 // input objects for the vertex reconstruction
189 // use counts from eta and phi histograms to fill the total number of objects available and used for reconstruction
191 TString::Format("#splitline{Used in}{reconstruction: %d}", int(m_h_objReco_eta->GetEntries())), TString::Format("Total: %d", int(m_h_obj_eta->GetEntries())),
192 TString("objN_stack; Number of objects; Events / bin"), m_plotdir_inputObjects+"objN_stack");
194 TString::Format("#splitline{Used in}{reconstruction: %d}", int(m_h_objReco_phi_b->GetEntries())), TString::Format("Total: %d", int(m_h_obj_phi_b->GetEntries())),
195 TString("objN_stack_b; Number of objects in the barrel; Events / bin"), m_plotdir_inputObjects+"objN_stack_b");
197 TString::Format("#splitline{Used in}{reconstruction: %d}", int(m_h_objReco_phi_e->GetEntries())), TString::Format("Total: %d", int(m_h_obj_phi_e->GetEntries())),
198 TString("objN_stack_e; Number of objects in the endcaps; Events / bin"), m_plotdir_inputObjects+"objN_stack_e");
200 TString::Format("#splitline{Used in}{reconstruction: %d}", int(m_h_objReco_eta->GetEntries())), TString::Format("Total: %d", int(m_h_obj_eta->GetEntries())),
201 TString("objEta_stack; Object #kern[-0.425]{#eta }; Events / bin"), m_plotdir_inputObjects+"objEta_stack");
203 TString::Format("#splitline{Used in}{reconstruction: %d}", int(m_h_objReco_phi_b->GetEntries())), TString::Format("Total: %d", int(m_h_obj_phi_b->GetEntries())),
204 TString("objPhi_stack_b; Object #kern[-0.09]{#phi in the barrel}; Events / bin"), m_plotdir_inputObjects+"objPhi_stack_b");
206 TString::Format("#splitline{Used in}{reconstruction: %d}", int(m_h_objReco_phi_e->GetEntries())), TString::Format("Total: %d", int(m_h_obj_phi_e->GetEntries())),
207 TString("objPhi_stack_e; Object #kern[-0.09]{#phi in the endcaps}; Events / bin"), m_plotdir_inputObjects+"objPhi_stack_e");
208 // objects used for reconstruction
215
216
217 // vertex residuals
218 // barrel
225 // endcaps
232 // split into positive and negative eta
233 saveTH1(m_h_delta_Lxy_posEta_b, m_plotdir_vtxResiduals+"delta_Lxy_posEta_b", TString::Format("0 < #kern[-0.45]{#eta <} %.2f", fidVol_barrel_etaCut).Data());
234 saveTH1(m_h_delta_Lxy_negEta_b, m_plotdir_vtxResiduals+"delta_Lxy_negEta_b", TString::Format("-%.2f < #kern[-0.45]{#eta <} 0", fidVol_barrel_etaCut).Data());
235 saveTH1(m_h_delta_Lxy_posEta_e, m_plotdir_vtxResiduals+"delta_Lxy_posEta_e", TString::Format("%.2f < #kern[-0.45]{#eta <} %.2f", fidVol_endcaps_etaCut_low, fidVol_endcaps_etaCut_up).Data());
236 saveTH1(m_h_delta_Lxy_negEta_e, m_plotdir_vtxResiduals+"delta_Lxy_negEta_e", TString::Format("-%.2f < #kern[-0.45]{#eta <} -%.2f", fidVol_endcaps_etaCut_up, fidVol_endcaps_etaCut_low).Data());
237 saveTH1(m_h_delta_z_posEta_b, m_plotdir_vtxResiduals+"delta_z_posEta_b", TString::Format("0 < #kern[-0.45]{#eta <} %.2f", fidVol_barrel_etaCut).Data());
238 saveTH1(m_h_delta_z_negEta_b, m_plotdir_vtxResiduals+"delta_z_negEta_b", TString::Format("-%.2f < #kern[-0.45]{#eta <} 0", fidVol_barrel_etaCut).Data());
239 saveTH1(m_h_delta_z_posEta_e, m_plotdir_vtxResiduals+"delta_z_posEta_e", TString::Format("%.2f < #kern[-0.45]{#eta <} %.2f", fidVol_endcaps_etaCut_low, fidVol_endcaps_etaCut_up).Data());
240 saveTH1(m_h_delta_z_negEta_e, m_plotdir_vtxResiduals+"delta_z_negEta_e", TString::Format("-%.2f < #kern[-0.45]{#eta <} -%.2f", fidVol_endcaps_etaCut_up, fidVol_endcaps_etaCut_low).Data());
241
242
243 // vertex efficiency
244 // transverse distance: barrel
246 TString::Format("#splitline{Truth vertices}{matched to reco: %d}", int(m_h_TruthReco_Lxy_b->GetEntries())), TString::Format("Truth vertices: %d", int(m_h_Truth_Lxy_b->GetEntries())),
247 TString("stack_vtxeff_Lxy_b; Truth vertex L_{xy} [m]; Vertices / bin"), m_plotdir_vtxEfficiency+"num_denom_vtxeff_Lxy_b");
249 TString("vtxeff_Lxy_b; Truth vertex L_{xy} [m]; Efficiency: n_{truth}^{reco matched} / n_{truth}"), m_plotdir_vtxEfficiency+"vtxeff_Lxy_b");
250
251 // longitudinal distance: endcap
253 TString::Format("#splitline{Truth vertices}{matched to reco: %d}", int(m_h_TruthReco_z_e->GetEntries())), TString::Format("Truth vertices: %d", int(m_h_Truth_z_e->GetEntries())),
254 TString("stack_vtxeff_z_e; Truth vertex |z| [m]; Vertices / bin"), m_plotdir_vtxEfficiency+"num_denom_vtxeff_z_e");
256 TString("vtxeff_z_e; Truth vertex |z| [m]; Efficiency: n_{truth}^{reco matched} / n_{truth}"), m_plotdir_vtxEfficiency+"vtxeff_z_e");
257
258 // eta-binned
260 TString::Format("#splitline{Truth vertices}{matched to reco: %d}", int(m_h_TruthReco_eta->GetEntries())), TString::Format("Truth vertices: %d", int(m_h_Truth_eta->GetEntries())),
261 TString("stack_vtxeff_eta; Truth vertex #kern[-0.425]{#eta }; Vertices / bin"), m_plotdir_vtxEfficiency+"num_denom_vtxeff_eta");
263 TString("vtxeff_eta; Truth vertex #kern[-0.425]{#eta }; Efficiency: n_{truth}^{reco matched} / n_{truth}"), m_plotdir_vtxEfficiency+"vtxeff_eta");
264
265 // distance form IP: barrel
267 TString::Format("#splitline{Truth vertices}{matched to reco: %d}", int(m_h_TruthReco_r_b->GetEntries())), TString::Format("Truth vertices: %d", int(m_h_Truth_r_b->GetEntries())),
268 TString("stack_vtxeff_r_b; Truth vertex |#bf{r}| [m]; Vertices / bin"), m_plotdir_vtxEfficiency+"num_denom_vtxeff_r_b");
270 TString("vtxeff_r_b; Truth vertex |#bf{r}| [m]; Efficiency: n_{truth}^{reco matched} / n_{truth}"), m_plotdir_vtxEfficiency+"vtxeff_r_b");
271
272 // distance form IP: endcap
274 TString::Format("#splitline{Truth vertices}{matched to reco: %d}", int(m_h_TruthReco_r_e->GetEntries())), TString::Format("Truth vertices: %d", int(m_h_Truth_r_e->GetEntries())),
275 TString("stack_vtxeff_r_e; Truth vertex |#bf{r}| [m]; Vertices / bin"), m_plotdir_vtxEfficiency+"num_denom_vtxeff_r_e");
277 TString("vtxeff_r_e; Truth vertex |#bf{r}| [m]; Efficiency: n_{truth}^{reco matched} / n_{truth}"), m_plotdir_vtxEfficiency+"vtxeff_r_e");
278
279
280 // vertex fakerate
281 // transverse distance: barrel
282 TH1 *h_RecoNoTruth_Lxy_b = getUnmatchedHist(m_h_Reco_Lxy_b, m_h_RecoTruth_Lxy_b, TString("RecoNoTruth_b"));
283 saveTHStack(h_RecoNoTruth_Lxy_b, m_h_Reco_Lxy_b,
284 TString::Format("#splitline{Reco vertices}{not matched to truth: %d}", int(h_RecoNoTruth_Lxy_b->GetEntries())), TString::Format("Reco vertices: %d", int(m_h_Reco_Lxy_b->GetEntries())),
285 TString("stack_vtxfrate_Lxy_b; Reco vertex L_{xy} [m]; Vertices / bin"), m_plotdir_vtxFakeRate+"num_denom_vtxfrate_Lxy_b");
286 saveTEfficiency(h_RecoNoTruth_Lxy_b, m_h_Reco_Lxy_b,
287 TString("vtxfrate_Lxy_b; Reco vertex L_{xy} [m]; Fake rate: n_{reco}^{not truth matched} / n_{reco}"), m_plotdir_vtxFakeRate+"vtxfrate_Lxy_b");
288 // longitudinal distance: endcap
289 TH1 *h_RecoNoTruth_z_e = getUnmatchedHist(m_h_Reco_z_e, m_h_RecoTruth_z_e, TString("RecoNoTruth_e"));
290 saveTHStack(h_RecoNoTruth_z_e, m_h_Reco_z_e,
291 TString::Format("#splitline{Reco vertices}{not matched to truth: %d}", int(h_RecoNoTruth_z_e->GetEntries())), TString::Format("Reco vertices: %d", int(m_h_Reco_z_e->GetEntries())),
292 TString("stack_vtxfrate_z_e; Reco vertex |z| [m]; Vertices / bin"), m_plotdir_vtxFakeRate+"num_denom_vtxfrate_z_e");
293 saveTEfficiency(h_RecoNoTruth_z_e, m_h_Reco_z_e,
294 TString("vtxfrate_z_e; Reco vertex |z| [m]; Fake rate: n_{reco}^{not truth matched} / n_{reco}"), m_plotdir_vtxFakeRate+"vtxfrate_z_e");
295
296 // eta-binned
297 TH1 *h_RecoNoTruth_eta = getUnmatchedHist(m_h_Reco_eta, m_h_RecoTruth_eta, TString("RecoNoTruth_eta"));
298 saveTHStack(h_RecoNoTruth_eta, m_h_Reco_eta,
299 TString::Format("#splitline{Reco vertices}{not matched to truth: %d}", int(h_RecoNoTruth_eta->GetEntries())), TString::Format("Reco vertices: %d", int(m_h_Reco_eta->GetEntries())),
300 TString("stack_vtxfrate_eta; Reco vertex #kern[-0.425]{#eta }; Vertices / bin"), m_plotdir_vtxFakeRate+"num_denom_vtxfrate_eta");
301 saveTEfficiency(h_RecoNoTruth_eta, m_h_Reco_eta,
302 TString("vtxfrate_eta; Reco vertex #kern[-0.425]{#eta }; Fake rate: n_{reco}^{not truth matched} / n_{reco}"), m_plotdir_vtxFakeRate+"vtxfrate_eta");
303
304 // distance form IP: barrel
305 TH1 *h_RecoNoTruth_r_b = getUnmatchedHist(m_h_Reco_r_b, m_h_RecoTruth_r_b, TString("RecoNoTruth_r_b"));
306 saveTHStack(h_RecoNoTruth_r_b, m_h_Reco_r_b,
307 TString::Format("#splitline{Reco vertices}{not matched to truth: %d}", int(h_RecoNoTruth_r_b->GetEntries())), TString::Format("Reco vertices: %d", int(m_h_Reco_r_b->GetEntries())),
308 TString("stack_vtxfrate_r_b; Reco vertex |#bf{r}| [m]; Vertices / bin"), m_plotdir_vtxFakeRate+"num_denom_vtxfrate_r_b");
309 saveTEfficiency(h_RecoNoTruth_r_b, m_h_Reco_r_b,
310 TString("vtxfrate_r_b; Reco vertex |#bf{r}| [m]; Fake rate: n_{reco}^{not truth matched} / n_{reco}"), m_plotdir_vtxFakeRate+"vtxfrate_r_b");
311
312 // distance form IP: endcaps
313 TH1 *h_RecoNoTruth_r_e = getUnmatchedHist(m_h_Reco_r_e, m_h_RecoTruth_r_e, TString("RecoNoTruth_r_e"));
314 saveTHStack(h_RecoNoTruth_r_e, m_h_Reco_r_e,
315 TString::Format("#splitline{Reco vertices}{not matched to truth: %d}", int(h_RecoNoTruth_r_e->GetEntries())), TString::Format("Reco vertices: %d", int(m_h_Reco_r_e->GetEntries())),
316 TString("stack_vtxfrate_r_e; Reco vertex |#bf{r}| [m]; Vertices / bin"), m_plotdir_vtxFakeRate+"num_denom_vtxfrate_r_e");
317 saveTEfficiency(h_RecoNoTruth_r_e, m_h_Reco_r_e,
318 TString("vtxfrate_r_e; Reco vertex |#bf{r}| [m]; Fake rate: n_{reco}^{not truth matched} / n_{reco}"), m_plotdir_vtxFakeRate+"vtxfrate_r_e");
319
320
321 m_output_file->Write();
322 m_output_file->Delete("*;2"); // delete all nameclye 2 objects
323 m_output_file->Close();
324
325 return;
326}
@ Data
Definition BaseObject.h:11
TH1 * m_h_delta_Lxy_negEta_b
TH1 * m_h_nTGC_InwardsTotal
TH1 * m_h_VtxConsti_dRmax_b
TH1 * m_h_VtxConsti_detamax_b
TH1 * m_h_VtxConsti_detamax_e
void saveVtxPos(std::unique_ptr< VtxPosTH > &hists, const TString &plotdir)
TH1 * m_h_VtxConsti_dphimax_e
TH1 * m_h_VtxConsti_dRmax_e
void saveTGraph(TMultiGraph *zLxy, TMultiGraph *etaphi, std::unique_ptr< VtxPosTGraph > &graphs, const TString &plotdir)
TH1 * m_h_nMDT_InwardsTotal_e
void saveTH1(TH1 *h, TString plotpath, const char *dectectorLabel="", const char *new_ylabel=nullptr, bool norm=false, bool logy=false)
TH1 * m_h_delta_Lxy_posEta_b
TH1 * m_h_VtxConsti_dphimax_b
void saveTHStack(TH1 *h1, TH1 *h2, const TString &h1_legend, const TString &h2_legend, const TString &title, const TString &plotpath, int color1=2, int color2=1)
TH1 * m_h_delta_Lxy_negEta_e
std::unique_ptr< TCanvas > m_c
TH1 * m_h_nMDT_InwardsTotal_b
TH1 * getUnmatchedHist(TH1 *h_all, TH1 *h_matched, const TString &name_unmatched)
TH1 * m_h_delta_Lxy_posEta_e
TH1 * m_h_nRPC_InwardsTotal
void saveTEfficiency(TH1 *h_num, TH1 *h_denom, const TString &title, const TString &plotpath)
std::unique_ptr< TFile > m_output_file

◆ saveTEfficiency()

void MSVtxPlotMaker::saveTEfficiency ( TH1 * h_num,
TH1 * h_denom,
const TString & title,
const TString & plotpath )
private

Definition at line 803 of file MSVtxPlotMaker.cxx.

804 {
805 // computes a TEfficiency object from the passed numerator and denominator histogram and saves it
806
807 TEfficiency* h_eff = new TEfficiency(*h_num, *h_denom);
808 h_eff->SetTitle(title);
809 TObjArray *tx_eff = title.Tokenize(";");
810 h_eff->SetName(((TObjString*)(tx_eff->At(0)))->String());
811 // set drawing style and draw
812 h_eff->SetLineColor(1);
813 h_eff->SetMarkerColor(1);
814 h_eff->SetMarkerSize(0.5);
815 h_eff->SetMarkerStyle(24);
816 h_eff->Draw();
817 gPad->Update();
818 // adjust maximum for sufficient space for annotations and draw annotations
819 TGraphAsymmErrors* g_eff = h_eff->GetPaintedGraph();
820 double maxy = getMaxy(g_eff);
821 g_eff->GetYaxis()->SetRangeUser(0, 1.4*maxy);
822 g_eff->GetXaxis()->SetTitle(((TObjString*)(tx_eff->At(1)))->String());
823 g_eff->GetYaxis()->SetTitle(((TObjString*)(tx_eff->At(2)))->String());
824 // annotations
825 if (TString(h_eff->GetName()).Contains("_Lxy_")) drawDetectorBoundaryLines("Lxy", 1.1*maxy);
826 if (TString(h_eff->GetName()).Contains("_z_")) drawDetectorBoundaryLines("z", 1.1*maxy);
827 drawDetectorRegionLabel(h_eff->GetName());
828 drawATLASlabel("Simulation Internal");
829 gPad->Update();
830
831 m_c->SaveAs(plotpath+".pdf");
832 h_eff->Write();
833
834 return;
835}
double getMaxy(const TGraphAsymmErrors *graph, double current_max)
void drawATLASlabel(const char *text, double x, double y, double textsize)
void drawDetectorRegionLabel(const char *name, const char *customlabel, double x, double y, double textsize)
void drawDetectorBoundaryLines(const char *bin_var, double y_max)

◆ saveTGraph()

void MSVtxPlotMaker::saveTGraph ( TMultiGraph * zLxy,
TMultiGraph * etaphi,
std::unique_ptr< VtxPosTGraph > & graphs,
const TString & plotdir )
private

Definition at line 693 of file MSVtxPlotMaker.cxx.

693 {
694 // Combines the TGraph objects to a the TMultiGraph and save it.
695 zLxy->Add(graphs->zLxy_b, "P");
696 zLxy->Add(graphs->zLxy_e, "P");
697 zLxy->Add(graphs->zLxy_out, "P");
698 zLxy->GetXaxis()->SetRangeUser(-16,16);
699 zLxy->GetYaxis()->SetRangeUser(-1,12);
700 zLxy->Draw("A");
701 drawATLASlabel("Simulation Internal");
702 TLegend* legend_zLxy = makeLegend(0.16, 0.02, 0.65, 0.07, 0.05);
703 legend_zLxy->SetNColumns(3);
704 legend_zLxy->AddEntry(graphs->zLxy_b, "Barrel", "p");
705 legend_zLxy->AddEntry(graphs->zLxy_e, "Endcaps", "p");
706 legend_zLxy->AddEntry(graphs->zLxy_out, "Outside", "p");
707 legend_zLxy->Draw();
708 m_c->SaveAs(plotdir+"map_zLxy.pdf");
709 zLxy->Write();
710
711 etaphi->Add(graphs->etaphi_b, "P");
712 etaphi->Add(graphs->etaphi_e, "P");
713 etaphi->Add(graphs->etaphi_out, "P");
714 etaphi->GetXaxis()->SetRangeUser(-2.6,2.6);
715 etaphi->GetYaxis()->SetRangeUser(-TMath::Pi()-0.25,TMath::Pi()+1);
716 etaphi->Draw("A");
717 drawATLASlabel("Simulation Internal");
718 TLegend* legend_etaphi = makeLegend(0.16, 0.02, 0.65, 0.07, 0.05);
719 legend_etaphi->SetNColumns(3);
720 legend_etaphi->AddEntry(graphs->etaphi_b, "Barrel", "p");
721 legend_etaphi->AddEntry(graphs->etaphi_e, "Endcaps", "p");
722 legend_etaphi->AddEntry(graphs->etaphi_out, "Outside", "p");
723 legend_etaphi->Draw();
724 m_c->SaveAs(plotdir+"map_etaphi.pdf");
725 etaphi->Write();
726
727 return;
728}
TLegend * makeLegend(double lower_x, double lower_y, double upper_x, double upper_y, double textsize)

◆ saveTH1()

void MSVtxPlotMaker::saveTH1 ( TH1 * h,
TString plotpath,
const char * dectectorLabel = "",
const char * new_ylabel = nullptr,
bool norm = false,
bool logy = false )
private

Definition at line 731 of file MSVtxPlotMaker.cxx.

731 {
732 // Saves the histogram with a detector label annotation and optionally normalizes (giving the frequency probability for each bin) it.
733 // Also allows to set a new y axis label and plot with a log y scale
734 // If normalisation or log scaling is applied, "_norm" or "_log" are appended to the histogram and file name
735
736 double maxy_factor = 1.4; // assures sufficeint space of annotations
737
738 if (norm){
739 h->Scale(1. / h->Integral()); // Add the argument "width" to normalize by bin-count*width to get the approximate pdf
740 h->SetName(TString(h->GetName())+"_norm");
741 plotpath = plotpath.Insert(plotpath.Last(*"."),"_norm");
742 }
743
744 if (logy){
745 gPad->SetLogy();
746 h->SetName(TString(h->GetName())+"_log");
747 plotpath = plotpath.Insert(plotpath.Last(*"."),"_log");
748 maxy_factor = 4;
749 }
750
751 if (new_ylabel){
752 h->GetYaxis()->SetTitle(new_ylabel);
753 }
754
755 h->SetMaximum(h->GetMaximum()*maxy_factor);
756 h->Draw("hist");
757 drawDetectorRegionLabel(h->GetName(), dectectorLabel);
758 drawATLASlabel("Simulation Internal");
759 m_c->SaveAs(plotpath+".pdf");
760 h->Write();
761
762 // reset log scale for next plots
763 gPad->SetLogy(0);
764
765 return;
766}
bool logy
Definition listroot.cxx:45

◆ saveTH2()

void MSVtxPlotMaker::saveTH2 ( TH2 * h,
const TString & plotpath )
private

Definition at line 838 of file MSVtxPlotMaker.cxx.

838 {
839 // adjust margins to fit the palette on the pad
840 gPad->SetRightMargin(0.15);
841 h->Draw("colz");
842 drawATLASlabel("Simulation Internal");
843 m_c->SaveAs(plotpath+".pdf");
844 gPad->SetRightMargin(0.05); // reset margin for next plots
845
846 return;
847}

◆ saveTHStack()

void MSVtxPlotMaker::saveTHStack ( TH1 * h1,
TH1 * h2,
const TString & h1_legend,
const TString & h2_legend,
const TString & title,
const TString & plotpath,
int color1 = 2,
int color2 = 1 )
private

Definition at line 769 of file MSVtxPlotMaker.cxx.

772 {
773 // save the passed TH1 as a THStack.
774 // The THStack title is required to have the format "name; x-axis label; y-axis label"
775 TObjArray *tx_stack = title.Tokenize(";");
776 auto name = ((TObjString*)(tx_stack->At(0)))->String();
777 THStack *h_stack = new THStack(name, name);
778 h1->SetLineColor(color1);
779 h2->SetLineColor(color2);
780 h_stack->Add(h1);
781 h_stack->Add(h2);
782 // adjust maximum for sufficent space for annotations and draw
783 double maxy = h2->GetMaximum()>h1->GetMaximum() ? h2->GetMaximum() : h1->GetMaximum();
784 h_stack->SetMaximum(1.4*maxy);
785 h_stack->Draw("nostack");
786 h_stack->GetXaxis()->SetTitle(((TObjString*)(tx_stack->At(1)))->String());
787 h_stack->GetYaxis()->SetTitle(((TObjString*)(tx_stack->At(2)))->String());
788 // add annotations
789 TLegend* legend = makeLegend();
790 legend->AddEntry(h1, h1_legend, "l");
791 legend->AddEntry(h2, h2_legend, "l");
792 legend->Draw();
794 drawATLASlabel("Simulation Internal");
795
796 m_c->SaveAs(plotpath+".pdf");
797 h_stack->Write();
798
799 return;
800}

◆ saveVtxPos()

void MSVtxPlotMaker::saveVtxPos ( std::unique_ptr< VtxPosTH > & hists,
const TString & plotdir )
private

Definition at line 673 of file MSVtxPlotMaker.cxx.

673 {
674 // Saves the passed TH2s and TH1.
675 saveTH2(hists->h_zLxy, plotdir+"zLxy");
676 saveTH2(hists->h_etaphi, plotdir+"etaphi");
677
678 // project and save the 1D histograms
679 const TString extra = plotdir.Contains("truth") ? TString("_truth") : TString("");
680
681 saveTH1(hists->h_zLxy->ProjectionX("z"+extra), plotdir+"z"+extra, "", "Vertices / bin");
682 saveTH1(hists->h_zLxy->ProjectionY("Lxy"+extra), plotdir+"Lxy"+extra, "", "Vertices / bin");
683 saveTH1(hists->h_etaphi->ProjectionX("eta"+extra), plotdir+"eta"+extra, "", "Vertices / bin");
684 TH1* h_phi = hists->h_etaphi->ProjectionY("phi"+extra);
685 h_phi->GetXaxis()->SetRangeUser(-TMath::Pi(), TMath::Pi()); // adjust range
686 saveTH1(h_phi, plotdir+"phi"+extra, "", "Vertices / bin");
687 saveTH1(hists->h_distanceToIP, plotdir+"distanceToIP");
688
689 return;
690}
void saveTH2(TH2 *h, const TString &plotpath)

◆ setColorPalette()

void MSVtxPlotMaker::setColorPalette ( TStyle * plotStyle)
private

Definition at line 853 of file MSVtxPlotMaker.cxx.

853 {
854 // define a custom colour palette
855 Int_t palette[100];
856 // define colours and compute the gradient between them.
857 // the i-th entry in the following arrays defines the rgb values
858 Double_t Red[] = {0.0, 0.0, 1.0, 1.0};
859 Double_t Green[] = {1.0, 1.0, 1.0, 0.0};
860 Double_t Blue[] = {1.0, 0.0, 0.0, 0.0};
861 Double_t Length[] = {0.0, 0.33, 0.66, 1.0};
862 Int_t firstColorIdx = TColor::CreateGradientColorTable(std::size(Length), Length, Red, Green, Blue, std::size(palette));
863 // fill the pallette with the gradient
864 for (unsigned int i=0; i<std::size(palette); i++) palette[i] = firstColorIdx+i;
865
866 plotStyle->SetPalette(std::size(palette), palette);
867 // plotStyle->SetPalette(kBlueRedYellow); // more standard color palette
868 plotStyle->SetNumberContours(100);
869
870 return;
871}

◆ setPlotStyle()

void MSVtxPlotMaker::setPlotStyle ( )
private

Definition at line 62 of file MSVtxPlotMaker.cxx.

62 {
63 // set the plot style and the color palette
64 gROOT->SetStyle("ATLAS");
65 TStyle* plotStyle = gROOT->GetStyle("ATLAS");
66 plotStyle->SetOptTitle(0);
67 plotStyle->SetHistLineWidth(1.);
68
69 setColorPalette(plotStyle);
70 plotStyle->cd();
71 gROOT->ForceStyle();
72
73 return;
74}
void setColorPalette(TStyle *plotStyle)

◆ setup()

void MSVtxPlotMaker::setup ( )
private

Definition at line 42 of file MSVtxPlotMaker.cxx.

42 {
43 // set up input file and its tree as well as the output root file.
44 m_input_file = std::make_unique<TFile>(m_datapath.c_str(), "read");
45 m_tree = (TTree*)m_input_file->Get(m_treename.c_str());
47
48 gSystem->mkdir(m_plotdir, kTRUE);
49 gSystem->mkdir(m_plotdir_truthVtx, kTRUE);
50 gSystem->mkdir(m_plotdir_recoVtx, kTRUE);
51 gSystem->mkdir(m_plotdir_recoVtxHits, kTRUE);
52 gSystem->mkdir(m_plotdir_vtxResiduals, kTRUE);
53 gSystem->mkdir(m_plotdir_inputObjects, kTRUE);
54 gSystem->mkdir(m_plotdir_vtxEfficiency, kTRUE);
55 gSystem->mkdir(m_plotdir_vtxFakeRate, kTRUE);
56 m_output_file = std::make_unique<TFile>(m_plotdir+"Histograms.root", "recreate");
57
58 return;
59}
std::unique_ptr< TFile > m_input_file

◆ setupBranches()

void MSVtxPlotMaker::setupBranches ( )
private

Definition at line 332 of file MSVtxPlotMaker.cxx.

332 {
333 // truth vertex variables
334 m_tree->SetBranchAddress("llpVtx_X", &m_truthVtx_x);
335 m_tree->SetBranchAddress("llpVtx_Y", &m_truthVtx_y);
336 m_tree->SetBranchAddress("llpVtx_Z", &m_truthVtx_z);
337
338 // reconstructed vertex variables
339 m_tree->SetBranchAddress("msVtx_chi2", &m_msVtx_chi2);
340 m_tree->SetBranchAddress("msVtx_Ntrklet", &m_msVtx_Ntrklet);
341 m_tree->SetBranchAddress("msVtx_X", &m_msVtx_x);
342 m_tree->SetBranchAddress("msVtx_Y", &m_msVtx_y);
343 m_tree->SetBranchAddress("msVtx_Z", &m_msVtx_z);
344 // MDT hits near the vertex: total and per layer
345 m_tree->SetBranchAddress("msVtx_nMDT", &m_msVtx_nMDT);
346 m_tree->SetBranchAddress("msVtx_nMDT_inwards", &m_msVtx_nMDT_inwards);
347 m_tree->SetBranchAddress("msVtx_nMDT_I", &m_msVtx_nMDT_I);
348 m_tree->SetBranchAddress("msVtx_nMDT_M", &m_msVtx_nMDT_M);
349 m_tree->SetBranchAddress("msVtx_nMDT_O", &m_msVtx_nMDT_O);
350 // RPC hits near the vertex: total and per layer
351 m_tree->SetBranchAddress("msVtx_nRPC", &m_msVtx_nRPC);
352 m_tree->SetBranchAddress("msVtx_nRPC_inwards", &m_msVtx_nRPC_inwards);
353 m_tree->SetBranchAddress("msVtx_nRPC_I", &m_msVtx_nRPC_I);
354 m_tree->SetBranchAddress("msVtx_nRPC_M", &m_msVtx_nRPC_M);
355 m_tree->SetBranchAddress("msVtx_nRPC_O", &m_msVtx_nRPC_O);
356 // TGC hits near the vertex: total and per layer
357 m_tree->SetBranchAddress("msVtx_nTGC", &m_msVtx_nTGC);
358 m_tree->SetBranchAddress("msVtx_nTGC_inwards", &m_msVtx_nTGC_inwards);
359 m_tree->SetBranchAddress("msVtx_nTGC_I", &m_msVtx_nTGC_I);
360 m_tree->SetBranchAddress("msVtx_nTGC_M", &m_msVtx_nTGC_M);
361 m_tree->SetBranchAddress("msVtx_nTGC_O", &m_msVtx_nTGC_O);
362
363 // input objects for the vertex reconstruction
364 m_tree->SetBranchAddress("trklet_posX", &m_obj_x);
365 m_tree->SetBranchAddress("trklet_posY", &m_obj_y);
366 m_tree->SetBranchAddress("trklet_posZ", &m_obj_z);
367 m_tree->SetBranchAddress("trklet_phi", &m_obj_phi);
368 m_tree->SetBranchAddress("trklet_theta", &m_obj_theta);
369 m_tree->SetBranchAddress("trklet_eta", &m_obj_eta);
370 m_tree->SetBranchAddress("trklet_vtxLink", &m_obj_vtxLink);
371
372 return;
373}
std::vector< double > * m_obj_eta
std::vector< double > * m_obj_theta

Member Data Documentation

◆ m_c

std::unique_ptr<TCanvas> MSVtxPlotMaker::m_c {nullptr}
private

Definition at line 194 of file MSVtxPlotMaker.h.

194{nullptr};

◆ m_datapath

std::string MSVtxPlotMaker::m_datapath {}
private

Definition at line 181 of file MSVtxPlotMaker.h.

181{};

◆ m_etaphi

TMultiGraph* MSVtxPlotMaker::m_etaphi = new TMultiGraph("etaphi_mg", "etaphi_mg")
private

Definition at line 267 of file MSVtxPlotMaker.h.

◆ m_etaphi_b

TGraph* MSVtxPlotMaker::m_etaphi_b = new TGraph()
private

Definition at line 268 of file MSVtxPlotMaker.h.

◆ m_etaphi_e

TGraph* MSVtxPlotMaker::m_etaphi_e = new TGraph()
private

Definition at line 269 of file MSVtxPlotMaker.h.

◆ m_etaphi_out

TGraph* MSVtxPlotMaker::m_etaphi_out = new TGraph()
private

Definition at line 270 of file MSVtxPlotMaker.h.

◆ m_etaphi_truth

TMultiGraph* MSVtxPlotMaker::m_etaphi_truth = new TMultiGraph("etaphi_mg_truth", "etaphi_mg_truth")
private

Definition at line 245 of file MSVtxPlotMaker.h.

◆ m_etaphi_truth_b

TGraph* MSVtxPlotMaker::m_etaphi_truth_b = new TGraph()
private

Definition at line 246 of file MSVtxPlotMaker.h.

◆ m_etaphi_truth_e

TGraph* MSVtxPlotMaker::m_etaphi_truth_e = new TGraph()
private

Definition at line 247 of file MSVtxPlotMaker.h.

◆ m_etaphi_truth_out

TGraph* MSVtxPlotMaker::m_etaphi_truth_out = new TGraph()
private

Definition at line 248 of file MSVtxPlotMaker.h.

◆ m_h_AngularVtxConsti_b

std::unique_ptr<AngularVtxConstiTH1> MSVtxPlotMaker::m_h_AngularVtxConsti_b = std::make_unique<AngularVtxConstiTH1>(m_h_VtxConsti_dR_b, m_h_VtxConsti_dRmax_b, m_h_VtxConsti_dphimax_b, m_h_VtxConsti_detamax_b)
private

Definition at line 418 of file MSVtxPlotMaker.h.

◆ m_h_AngularVtxConsti_e

std::unique_ptr<AngularVtxConstiTH1> MSVtxPlotMaker::m_h_AngularVtxConsti_e = std::make_unique<AngularVtxConstiTH1>(m_h_VtxConsti_dR_e, m_h_VtxConsti_dRmax_e, m_h_VtxConsti_dphimax_e, m_h_VtxConsti_detamax_e)
private

Definition at line 419 of file MSVtxPlotMaker.h.

◆ m_h_chi2_b

TH1* MSVtxPlotMaker::m_h_chi2_b = new TH1D("chi2_b", "chi2_b; Reco vertex #chi^{2}; Vertices / bin", 100, 0, 10)
private

Definition at line 277 of file MSVtxPlotMaker.h.

◆ m_h_chi2_e

TH1* MSVtxPlotMaker::m_h_chi2_e = new TH1D("chi2_e", "chi2_e; Reco vertex #chi^{2}; Vertices / bin", 100, 0, 10)
private

Definition at line 278 of file MSVtxPlotMaker.h.

◆ m_h_chi2nDoF_b

TH1* MSVtxPlotMaker::m_h_chi2nDoF_b = new TH1D("chi2nDoF_b", "chi2nDoF_b; Reco vertex #chi^{2}/n_{DoF}; Vertices / bin", 100, 0, 5)
private

Definition at line 279 of file MSVtxPlotMaker.h.

◆ m_h_chi2nDoF_e

TH1* MSVtxPlotMaker::m_h_chi2nDoF_e = new TH1D("chi2nDoF_e", "chi2nDoF_e; Reco vertex #chi^{2}/n_{DoF}; Vertices / bin", 100, 0, 5)
private

Definition at line 280 of file MSVtxPlotMaker.h.

◆ m_h_chi2prob_b

TH1* MSVtxPlotMaker::m_h_chi2prob_b = new TH1D("chi2_prob_b", "chi2_prob_b; Reco vertex #chi^{2} probability; Vertices / bin", 100, 0, 1)
private

Definition at line 281 of file MSVtxPlotMaker.h.

◆ m_h_chi2prob_e

TH1* MSVtxPlotMaker::m_h_chi2prob_e = new TH1D("chi2_prob_e", "chi2_prob_e; Reco vertex #chi^{2} probability; Vertices / bin", 100, 0, 1)
private

Definition at line 282 of file MSVtxPlotMaker.h.

◆ m_h_delta_Lxy_b

TH1* MSVtxPlotMaker::m_h_delta_Lxy_b = new TH1D("delta_Lxy_b", "delta_Lxy; L_{xy}^{reco} - L_{xy}^{truth} [cm]; Vertices / 10 cm", 100, -500, 500)
private

Definition at line 359 of file MSVtxPlotMaker.h.

◆ m_h_delta_Lxy_e

TH1* MSVtxPlotMaker::m_h_delta_Lxy_e = new TH1D("delta_Lxy_e", "delta_Lxy; L_{xy}^{reco} - L_{xy}^{truth} [cm]; Vertices / 10 cm", 100, -500, 500)
private

Definition at line 360 of file MSVtxPlotMaker.h.

◆ m_h_delta_Lxy_negEta_b

TH1* MSVtxPlotMaker::m_h_delta_Lxy_negEta_b = new TH1D("delta_Lxy_negEta_b", "delta_Lxy; L_{xy}^{reco} - L_{xy}^{truth} [cm]; Vertices / 10 cm", 100, -500, 500)
private

Definition at line 368 of file MSVtxPlotMaker.h.

◆ m_h_delta_Lxy_negEta_e

TH1* MSVtxPlotMaker::m_h_delta_Lxy_negEta_e = new TH1D("delta_Lxy_negEta_e", "delta_Lxy; L_{xy}^{reco} - L_{xy}^{truth} [cm]; Vertices / 10 cm", 100, -500, 500)
private

Definition at line 369 of file MSVtxPlotMaker.h.

◆ m_h_delta_Lxy_posEta_b

TH1* MSVtxPlotMaker::m_h_delta_Lxy_posEta_b = new TH1D("delta_Lxy_posEta_b", "delta_Lxy; L_{xy}^{reco} - L_{xy}^{truth} [cm]; Vertices / 10 cm", 100, -500, 500)
private

Definition at line 366 of file MSVtxPlotMaker.h.

◆ m_h_delta_Lxy_posEta_e

TH1* MSVtxPlotMaker::m_h_delta_Lxy_posEta_e = new TH1D("delta_Lxy_posEta_e", "delta_Lxy; L_{xy}^{reco} - L_{xy}^{truth} [cm]; Vertices / 10 cm", 100, -500, 500)
private

Definition at line 367 of file MSVtxPlotMaker.h.

◆ m_h_delta_phi_b

TH1* MSVtxPlotMaker::m_h_delta_phi_b = new TH1D("delta_phi_b", "delta_phi; #phi_{reco} - #phi_{truth} [rad]; Vertices / 0.02 rad", 50, -0.5, 0.5)
private

Definition at line 357 of file MSVtxPlotMaker.h.

◆ m_h_delta_phi_e

TH1* MSVtxPlotMaker::m_h_delta_phi_e = new TH1D("delta_phi_e", "delta_phi; #phi_{reco} - #phi_{truth} [rad]; Vertices / 0.02 rad", 50, -0.5, 0.5)
private

Definition at line 358 of file MSVtxPlotMaker.h.

◆ m_h_delta_phys_b

TH1* MSVtxPlotMaker::m_h_delta_phys_b = new TH1D("delta_phys_b", "delta_phys; |#bf{r}_{reco} - #bf{r}_{truth}| [cm]; Vertices / 10 cm", 50, 0, 500)
private

Definition at line 363 of file MSVtxPlotMaker.h.

◆ m_h_delta_phys_e

TH1* MSVtxPlotMaker::m_h_delta_phys_e = new TH1D("delta_phys_e", "delta_phys; |#bf{r}_{reco} - #bf{r}_{truth}| [cm]; Vertices / 10 cm", 75, 0, 750)
private

Definition at line 364 of file MSVtxPlotMaker.h.

◆ m_h_delta_R_b

TH1* MSVtxPlotMaker::m_h_delta_R_b = new TH1D("delta_R_b", "delta_R; #Delta R(reco Vtx, truth Vtx); Vertices / bin", 50, 0, 0.5)
private

Definition at line 353 of file MSVtxPlotMaker.h.

◆ m_h_delta_R_e

TH1* MSVtxPlotMaker::m_h_delta_R_e = new TH1D("delta_R_e", "delta_R; #Delta R(reco Vtx, truth Vtx); Vertices / bin", 50, 0, 0.5)
private

Definition at line 354 of file MSVtxPlotMaker.h.

◆ m_h_delta_theta_b

TH1* MSVtxPlotMaker::m_h_delta_theta_b = new TH1D("delta_theta_b", "delta_theta; #theta_{reco} - #theta_{truth} [rad]; Vertices / 0.01 rad", 100, -0.5, 0.5)
private

Definition at line 355 of file MSVtxPlotMaker.h.

◆ m_h_delta_theta_e

TH1* MSVtxPlotMaker::m_h_delta_theta_e = new TH1D("delta_theta_e", "delta_theta; #theta_{reco} - #theta_{truth} [rad]; Vertices / 0.01 rad", 100, -0.5, 0.5)
private

Definition at line 356 of file MSVtxPlotMaker.h.

◆ m_h_delta_z_b

TH1* MSVtxPlotMaker::m_h_delta_z_b = new TH1D("delta_z_b", "delta_z; z_{reco} - z_{truth} [cm]; Vertices / 10 cm", 100, -500, 500)
private

Definition at line 361 of file MSVtxPlotMaker.h.

◆ m_h_delta_z_e

TH1* MSVtxPlotMaker::m_h_delta_z_e = new TH1D("delta_z_e", "delta_z; z_{reco} - z_{truth} [cm]; Vertices / 10 cm", 100, -500, 500)
private

Definition at line 362 of file MSVtxPlotMaker.h.

◆ m_h_delta_z_negEta_b

TH1* MSVtxPlotMaker::m_h_delta_z_negEta_b = new TH1D("delta_z_negEta_b", "delta_z; z_{reco} - z_{truth} [cm]; Vertices / 10 cm", 100, -500, 500)
private

Definition at line 371 of file MSVtxPlotMaker.h.

◆ m_h_delta_z_negEta_e

TH1* MSVtxPlotMaker::m_h_delta_z_negEta_e = new TH1D("delta_z_negEta_e", "delta_z; z_{reco} - z_{truth} [cm]; Vertices / 10 cm", 100, -500, 500)
private

Definition at line 373 of file MSVtxPlotMaker.h.

◆ m_h_delta_z_posEta_b

TH1* MSVtxPlotMaker::m_h_delta_z_posEta_b = new TH1D("delta_z_posEta_b", "delta_z; z_{reco} - z_{truth} [cm]; Vertices / 10 cm", 100, -500, 500)
private

Definition at line 370 of file MSVtxPlotMaker.h.

◆ m_h_delta_z_posEta_e

TH1* MSVtxPlotMaker::m_h_delta_z_posEta_e = new TH1D("delta_z_posEta_e", "delta_z; z_{reco} - z_{truth} [cm]; Vertices / 10 cm", 100, -500, 500)
private

Definition at line 372 of file MSVtxPlotMaker.h.

◆ m_h_distanceToIP

TH1* MSVtxPlotMaker::m_h_distanceToIP = new TH1D("distanceToIP", "distanceToIP; Reco vertex |#bf{r}| [m]; Vertices / bin", 50, 0, 20)
private

Definition at line 272 of file MSVtxPlotMaker.h.

◆ m_h_distanceToIP_truth

TH1* MSVtxPlotMaker::m_h_distanceToIP_truth = new TH1D("distanceToIP_truth", "distanceToIP_truth; Truth vertex |#bf{r}| [m]; Vertices / bin", 50, 0, 20)
private

Definition at line 250 of file MSVtxPlotMaker.h.

◆ m_h_etaphi

TH2* MSVtxPlotMaker::m_h_etaphi = new TH2D("etaphi", "etaphi; Reco vertex #kern[-1.0]{ #eta}; Reco vertex #kern[-1.0]{ #phi} [rad]", 80, -2.6, 2.6, 40, -TMath::Pi(), TMath::Pi()+1)
private

Definition at line 275 of file MSVtxPlotMaker.h.

◆ m_h_etaphi_truth

TH2* MSVtxPlotMaker::m_h_etaphi_truth = new TH2D("etaphi_truth", "etaphi_truth; Truth vertex #kern[-1.0]{ #eta}; Truth vertex #kern[-1.0]{ #phi} [rad]", 80, -2.6, 2.6, 40, -TMath::Pi(), TMath::Pi()+1)
private

Definition at line 253 of file MSVtxPlotMaker.h.

◆ m_h_Nconsti_b

TH1* MSVtxPlotMaker::m_h_Nconsti_b = new TH1D("Nconstituents_b", "Nconstituents_b; Reco vertex number of constituents; Vertices / bin", 39, 1, 40)
private

Definition at line 284 of file MSVtxPlotMaker.h.

◆ m_h_Nconsti_e

TH1* MSVtxPlotMaker::m_h_Nconsti_e = new TH1D("Nconstituents_e", "Nconstituents_e; Reco vertex number of constituents; Vertices / bin", 39, 1, 40)
private

Definition at line 285 of file MSVtxPlotMaker.h.

◆ m_h_Nhits_MDT_b

std::unique_ptr<NHitsTH1> MSVtxPlotMaker::m_h_Nhits_MDT_b = std::make_unique<NHitsTH1>(m_h_nMDT_b, m_h_nMDT_I_b, m_h_nMDT_M_b, m_h_nMDT_O_b, m_h_nMDT_InwardsTotal_b, m_h_nMDT_IM_b, m_h_nMDT_IO_b, m_h_nMDT_MO_b)
private

Definition at line 423 of file MSVtxPlotMaker.h.

◆ m_h_Nhits_MDT_e

std::unique_ptr<NHitsTH1> MSVtxPlotMaker::m_h_Nhits_MDT_e = std::make_unique<NHitsTH1>(m_h_nMDT_e, m_h_nMDT_I_e, m_h_nMDT_M_e, m_h_nMDT_O_e, m_h_nMDT_InwardsTotal_e, m_h_nMDT_IM_e, m_h_nMDT_IO_e, m_h_nMDT_MO_e)
private

Definition at line 424 of file MSVtxPlotMaker.h.

◆ m_h_Nhits_RPC

std::unique_ptr<NHitsTH1> MSVtxPlotMaker::m_h_Nhits_RPC = std::make_unique<NHitsTH1>(m_h_nRPC, m_h_nRPC_I, m_h_nRPC_M, m_h_nRPC_O, m_h_nRPC_InwardsTotal, m_h_nRPC_IM, m_h_nRPC_IO, m_h_nRPC_MO)
private

Definition at line 425 of file MSVtxPlotMaker.h.

◆ m_h_Nhits_TGC

std::unique_ptr<NHitsTH1> MSVtxPlotMaker::m_h_Nhits_TGC = std::make_unique<NHitsTH1>(m_h_nTGC, m_h_nTGC_I, m_h_nTGC_M, m_h_nTGC_O, m_h_nTGC_InwardsTotal, m_h_nTGC_IM, m_h_nTGC_IO, m_h_nTGC_MO)
private

Definition at line 426 of file MSVtxPlotMaker.h.

◆ m_h_nMDT_b

TH1* MSVtxPlotMaker::m_h_nMDT_b = new TH1D("nMDT_b", "nMDT_b; Number of MDT hits near the reco vertex; Vertices / bin", 100, 0, 4000)
private

Definition at line 301 of file MSVtxPlotMaker.h.

◆ m_h_nMDT_e

TH1* MSVtxPlotMaker::m_h_nMDT_e = new TH1D("nMDT_e", "nMDT_e; Number of MDT hits near the reco vertex; Vertices / bin", 100, 0, 4000)
private

Definition at line 302 of file MSVtxPlotMaker.h.

◆ m_h_nMDT_I_b

TH1* MSVtxPlotMaker::m_h_nMDT_I_b = new TH1D("nMDT_I_b", "nMDT_I_b; Number of inner layer MDT hits near the reco vertex; Vertices / bin", 100, 0, 1000)
private

Definition at line 303 of file MSVtxPlotMaker.h.

◆ m_h_nMDT_I_e

TH1* MSVtxPlotMaker::m_h_nMDT_I_e = new TH1D("nMDT_I_e", "nMDT_I_e; Number of inner layer MDT hits near the reco vertex; Vertices / bin", 100, 0, 1000)
private

Definition at line 304 of file MSVtxPlotMaker.h.

◆ m_h_nMDT_IM_b

TH1* MSVtxPlotMaker::m_h_nMDT_IM_b = new TH1D("nMDT_IM_b", "nMDT_IM_b; Reco vertex inner/middle layer MDT hits; Vertices / bin", 100, 0, 3)
private

Definition at line 311 of file MSVtxPlotMaker.h.

◆ m_h_nMDT_IM_e

TH1* MSVtxPlotMaker::m_h_nMDT_IM_e = new TH1D("nMDT_IM_e", "nMDT_IM_e; Reco vertex inner/middle layer MDT hits; Vertices / bin", 100, 0, 3)
private

Definition at line 312 of file MSVtxPlotMaker.h.

◆ m_h_nMDT_InwardsTotal_b

TH1* MSVtxPlotMaker::m_h_nMDT_InwardsTotal_b = new TH1D("nMDT_InwardsTotal_b", "nMDT_InwardsTotal_b; fraction of MDT hits inwards of the reco vertex; Vertices / bin", 100, 0, 3)
private

Definition at line 309 of file MSVtxPlotMaker.h.

◆ m_h_nMDT_InwardsTotal_e

TH1* MSVtxPlotMaker::m_h_nMDT_InwardsTotal_e = new TH1D("nMDT_InwardsTotal_e", "nMDT_InwardsTotal_e; fraction of MDT hits inwards of the reco vertex; Vertices / bin", 100, 0, 3)
private

Definition at line 310 of file MSVtxPlotMaker.h.

◆ m_h_nMDT_IO_b

TH1* MSVtxPlotMaker::m_h_nMDT_IO_b = new TH1D("nMDT_IO_b", "nMDT_IO_b; Reco vertex inner/outer layer MDT hits; Vertices / bin", 100, 0, 3)
private

Definition at line 313 of file MSVtxPlotMaker.h.

◆ m_h_nMDT_IO_e

TH1* MSVtxPlotMaker::m_h_nMDT_IO_e = new TH1D("nMDT_IO_e", "nMDT_IO_e; Reco vertex inner/outer layer MDT hits; Vertices / bin", 100, 0, 3)
private

Definition at line 314 of file MSVtxPlotMaker.h.

◆ m_h_nMDT_M_b

TH1* MSVtxPlotMaker::m_h_nMDT_M_b = new TH1D("nMDT_M_b", "nMDT_M_b; Number of middle layer MDT hits near the reco vertex; Vertices / bin", 100, 0, 2500)
private

Definition at line 305 of file MSVtxPlotMaker.h.

◆ m_h_nMDT_M_e

TH1* MSVtxPlotMaker::m_h_nMDT_M_e = new TH1D("nMDT_M_e", "nMDT_M_e; Number of middle layer MDT hits near the reco vertex; Vertices / bin", 100, 0, 2500)
private

Definition at line 306 of file MSVtxPlotMaker.h.

◆ m_h_nMDT_MO_b

TH1* MSVtxPlotMaker::m_h_nMDT_MO_b = new TH1D("nMDT_MO_b", "nMDT_MO_b; Reco vertex middle/outer layer MDT hits; Vertices / bin", 100, 0, 3)
private

Definition at line 315 of file MSVtxPlotMaker.h.

◆ m_h_nMDT_MO_e

TH1* MSVtxPlotMaker::m_h_nMDT_MO_e = new TH1D("nMDT_MO_e", "nMDT_MO_e; Reco vertex middle/outer layer MDT hits; Vertices / bin", 100, 0, 3)
private

Definition at line 316 of file MSVtxPlotMaker.h.

◆ m_h_nMDT_O_b

TH1* MSVtxPlotMaker::m_h_nMDT_O_b = new TH1D("nMDT_O_b", "nMDT_O_b; Number of outer layer MDT hits near the reco vertex; Vertices / bin", 100, 0, 2500)
private

Definition at line 307 of file MSVtxPlotMaker.h.

◆ m_h_nMDT_O_e

TH1* MSVtxPlotMaker::m_h_nMDT_O_e = new TH1D("nMDT_O_e", "nMDT_O_e; Number of outer layer MDT hits near the reco vertex; Vertices / bin", 100, 0, 2500)
private

Definition at line 308 of file MSVtxPlotMaker.h.

◆ m_h_Nobj

TH1* MSVtxPlotMaker::m_h_Nobj = new TH1D("Nobj", "Nobj; Number of objects; Events / bin", 20, 0, 20)
private

Definition at line 338 of file MSVtxPlotMaker.h.

◆ m_h_Nobj_b

TH1* MSVtxPlotMaker::m_h_Nobj_b = new TH1D("Nobj_b", "Nobj_b; Number of objects in the barrel; Events / bin", 20, 0, 20)
private

Definition at line 339 of file MSVtxPlotMaker.h.

◆ m_h_Nobj_e

TH1* MSVtxPlotMaker::m_h_Nobj_e = new TH1D("Nobj_e", "Nobj_e; Number of objects in the endcaps; Events / bin", 20, 0, 20)
private

Definition at line 340 of file MSVtxPlotMaker.h.

◆ m_h_NobjReco

TH1* MSVtxPlotMaker::m_h_NobjReco = new TH1D("objN_reco", "objN_reco; Number of objects used for reconstruction in the barrel; Events / bin", 20, 0, 20)
private

Definition at line 341 of file MSVtxPlotMaker.h.

◆ m_h_NobjReco_b

TH1* MSVtxPlotMaker::m_h_NobjReco_b = new TH1D("objN_reco_b", "objN_reco_b; Number of objects used for reconstruction in the barrel; Events / bin", 20, 0, 20)
private

Definition at line 342 of file MSVtxPlotMaker.h.

◆ m_h_NobjReco_e

TH1* MSVtxPlotMaker::m_h_NobjReco_e = new TH1D("objN_reco_e", "objN_reco_e; Number of objects used for reconstruction in the endcaps; Events / bin", 20, 0, 20)
private

Definition at line 343 of file MSVtxPlotMaker.h.

◆ m_h_nRPC

TH1* MSVtxPlotMaker::m_h_nRPC = new TH1D("nRPC", "nRPC_e; Number of RPC hits near the reco vertex; Vertices / bin", 50, 0, 1500)
private

Definition at line 318 of file MSVtxPlotMaker.h.

◆ m_h_nRPC_I

TH1* MSVtxPlotMaker::m_h_nRPC_I = new TH1D("nRPC_I", "nRPC_I_e; Number of inner layer RPC hits near the reco vertex; Vertices / bin", 50, 0, 500)
private

Definition at line 319 of file MSVtxPlotMaker.h.

◆ m_h_nRPC_IM

TH1* MSVtxPlotMaker::m_h_nRPC_IM = new TH1D("nRPC_IM", "nRPC_IM_e; Reco vertex inner/middle layer RPC hits; Vertices / bin", 50, 0, 3)
private

Definition at line 323 of file MSVtxPlotMaker.h.

◆ m_h_nRPC_InwardsTotal

TH1* MSVtxPlotMaker::m_h_nRPC_InwardsTotal = new TH1D("nRPC_InwardsTotal", "nRPC_InwardsTotal_e; fraction of RPC hits inwards of the reco vertex; Vertices / bin", 50, 0, 1)
private

Definition at line 322 of file MSVtxPlotMaker.h.

◆ m_h_nRPC_IO

TH1* MSVtxPlotMaker::m_h_nRPC_IO = new TH1D("nRPC_IO", "nRPC_IO_e; Reco vertex inner/outer layer RPC hits; Vertices / bin", 50, 0, 3)
private

Definition at line 324 of file MSVtxPlotMaker.h.

◆ m_h_nRPC_M

TH1* MSVtxPlotMaker::m_h_nRPC_M = new TH1D("nRPC_M", "nRPC_M_e; Number of middle layer RPC hits near the reco vertex; Vertices / bin", 50, 0, 1000)
private

Definition at line 320 of file MSVtxPlotMaker.h.

◆ m_h_nRPC_MO

TH1* MSVtxPlotMaker::m_h_nRPC_MO = new TH1D("nRPC_MO", "nRPC_MO_e; Reco vertex middle/outer layer RPC hits; Vertices / bin", 50, 0, 3)
private

Definition at line 325 of file MSVtxPlotMaker.h.

◆ m_h_nRPC_O

TH1* MSVtxPlotMaker::m_h_nRPC_O = new TH1D("nRPC_O", "nRPC_O_e; Number of outer layer RPC hits near the reco vertex; Vertices / bin", 50, 0, 1000)
private

Definition at line 321 of file MSVtxPlotMaker.h.

◆ m_h_nTGC

TH1* MSVtxPlotMaker::m_h_nTGC = new TH1D("nTGC", "nTGC_e; Number of TGC hits near the reco vertex; Vertices / bin", 50, 0, 1500)
private

Definition at line 327 of file MSVtxPlotMaker.h.

◆ m_h_nTGC_I

TH1* MSVtxPlotMaker::m_h_nTGC_I = new TH1D("nTGC_I", "nTGC_I_e; Number of inner layer TGC hits near the reco vertex; Vertices / bin", 50, 0, 500)
private

Definition at line 328 of file MSVtxPlotMaker.h.

◆ m_h_nTGC_IM

TH1* MSVtxPlotMaker::m_h_nTGC_IM = new TH1D("nTGC_IM", "nTGC_IM_e; Reco vertex inner/middle layer TGC hits; Vertices / bin", 50, 0, 3)
private

Definition at line 332 of file MSVtxPlotMaker.h.

◆ m_h_nTGC_InwardsTotal

TH1* MSVtxPlotMaker::m_h_nTGC_InwardsTotal = new TH1D("nTGC_InwardsTotal", "nTGC_InwardsTotal_e; fraction of TGC hits inwards of the reco vertex; Vertices / bin", 50, 0, 1)
private

Definition at line 331 of file MSVtxPlotMaker.h.

◆ m_h_nTGC_IO

TH1* MSVtxPlotMaker::m_h_nTGC_IO = new TH1D("nTGC_IO", "nTGC_IO_e; Reco vertex inner/outer layer TGC hits; Vertices / bin", 50, 0, 3)
private

Definition at line 333 of file MSVtxPlotMaker.h.

◆ m_h_nTGC_M

TH1* MSVtxPlotMaker::m_h_nTGC_M = new TH1D("nTGC_M", "nTGC_M_e; Number of middle layer TGC hits near the reco vertex; Vertices / bin", 50, 0, 1000)
private

Definition at line 329 of file MSVtxPlotMaker.h.

◆ m_h_nTGC_MO

TH1* MSVtxPlotMaker::m_h_nTGC_MO = new TH1D("nTGC_MO", "nTGC_MO_e; Reco vertex middle/outer layer TGC hits; Vertices / bin", 50, 0, 3)
private

Definition at line 334 of file MSVtxPlotMaker.h.

◆ m_h_nTGC_O

TH1* MSVtxPlotMaker::m_h_nTGC_O = new TH1D("nTGC_O", "nTGC_O_e; Number of outer layer TGC hits near the reco vertex; Vertices / bin", 50, 0, 1000)
private

Definition at line 330 of file MSVtxPlotMaker.h.

◆ m_h_NVtx

std::unique_ptr<NVtxTH1> MSVtxPlotMaker::m_h_NVtx = std::make_unique<NVtxTH1>(m_h_Nvtx, m_h_Nvtx_b, m_h_Nvtx_e)
private

Definition at line 408 of file MSVtxPlotMaker.h.

◆ m_h_Nvtx

TH1* MSVtxPlotMaker::m_h_Nvtx = new TH1D("Nvtx", "Nvtx; Number of reco vertices in barrel or endcaps; Events / bin", 3, 0, 3)
private

Definition at line 257 of file MSVtxPlotMaker.h.

◆ m_h_Nvtx_b

TH1* MSVtxPlotMaker::m_h_Nvtx_b = new TH1D("Nvtx_b", "Nvtx_b; Number of reco vertices in the barrel; Events / bin", 3, 0, 3)
private

Definition at line 258 of file MSVtxPlotMaker.h.

◆ m_h_Nvtx_e

TH1* MSVtxPlotMaker::m_h_Nvtx_e = new TH1D("Nvtx_e", "Nvtx_e; Number of reco vertices in the endcaps; Events / bin", 3, 0, 3)
private

Definition at line 259 of file MSVtxPlotMaker.h.

◆ m_h_NVtx_truth

std::unique_ptr<NVtxTH1> MSVtxPlotMaker::m_h_NVtx_truth = std::make_unique<NVtxTH1>(m_h_Nvtx_truth, m_h_Nvtx_truth_b, m_h_Nvtx_truth_e)
private

Definition at line 407 of file MSVtxPlotMaker.h.

◆ m_h_Nvtx_truth

TH1* MSVtxPlotMaker::m_h_Nvtx_truth = new TH1D("Nvtx_truth", "Nvtx_truth; Number of truth vertices in the barrel or endcaps; Events / bin", 4, 0, 4)
private

Definition at line 235 of file MSVtxPlotMaker.h.

◆ m_h_Nvtx_truth_b

TH1* MSVtxPlotMaker::m_h_Nvtx_truth_b = new TH1D("Nvtx_truth_b", "Nvtx_truth_b; Number of truth vertices in the barrel; Events / bin", 4, 0, 4)
private

Definition at line 236 of file MSVtxPlotMaker.h.

◆ m_h_Nvtx_truth_e

TH1* MSVtxPlotMaker::m_h_Nvtx_truth_e = new TH1D("Nvtx_truth_e", "Nvtx_truth_e; Number of truth vertices in the endcaps; Events / bin", 4, 0, 4)
private

Definition at line 237 of file MSVtxPlotMaker.h.

◆ m_h_obj_eta

TH1* MSVtxPlotMaker::m_h_obj_eta = new TH1D("objEta", "objEta; Object #eta; Objects / bin", 50, -2.7, 2.7)
private

Definition at line 347 of file MSVtxPlotMaker.h.

◆ m_h_obj_phi_b

TH1* MSVtxPlotMaker::m_h_obj_phi_b = new TH1D("objPhi_b", "objPhi_b; Object #kern[-0.05]{#phi in the barrel}; Objects / bin", 100, -TMath::Pi(), TMath::Pi())
private

Definition at line 345 of file MSVtxPlotMaker.h.

◆ m_h_obj_phi_e

TH1* MSVtxPlotMaker::m_h_obj_phi_e = new TH1D("objPhi_e", "objPhi_e; Object #kern[-0.05]{#phi in the endcaps}; Objects / bin", 100, -TMath::Pi(), TMath::Pi())
private

Definition at line 346 of file MSVtxPlotMaker.h.

◆ m_h_objReco_eta

TH1* MSVtxPlotMaker::m_h_objReco_eta = new TH1D("objEta_reco", "objEta_reco; Object #kern[-0.06]{#eta used for reconstruction}; Objects / bin", 50, -2.7, 2.7)
private

Definition at line 350 of file MSVtxPlotMaker.h.

◆ m_h_objReco_phi_b

TH1* MSVtxPlotMaker::m_h_objReco_phi_b = new TH1D("objPhi_reco_b", "objPhi_reco_b; Object #kern[-0.04]{#phi used for reconstruction in the barrel}; Objects / bin", 100, -TMath::Pi(), TMath::Pi())
private

Definition at line 348 of file MSVtxPlotMaker.h.

◆ m_h_objReco_phi_e

TH1* MSVtxPlotMaker::m_h_objReco_phi_e = new TH1D("objPhi_reco_e", "objPhi_reco_e; Object #kern[-0.04]{#phi used for reconstruction in the endcaps}; Objects / bin", 100, -TMath::Pi(), TMath::Pi())
private

Definition at line 349 of file MSVtxPlotMaker.h.

◆ m_h_Reco

std::unique_ptr<EffInputTH1> MSVtxPlotMaker::m_h_Reco = std::make_unique<EffInputTH1>(m_h_Reco_Lxy_b, m_h_Reco_r_b, m_h_Reco_z_e, m_h_Reco_r_e, m_h_Reco_eta)
private

Definition at line 430 of file MSVtxPlotMaker.h.

◆ m_h_Reco_eta

TH1* MSVtxPlotMaker::m_h_Reco_eta = new TH1D("Reco_eta", "reco vertex eta; Reco vertex #eta; Vertices / bin", 30, -3, 3)
private

Definition at line 389 of file MSVtxPlotMaker.h.

◆ m_h_Reco_Lxy_b

TH1* MSVtxPlotMaker::m_h_Reco_Lxy_b = new TH1D("vReco_Lxy_b", "reco vertex b; Reco vertex L_{xy} [m]; Vertices / bin", 30, 0, 9)
private

Definition at line 379 of file MSVtxPlotMaker.h.

◆ m_h_Reco_r_b

TH1* MSVtxPlotMaker::m_h_Reco_r_b = new TH1D("Reco_r_b", "reco vertex r; Reco vertex |#bf{r}| [m]; Vertices / bin", 60, 0, 18)
private

Definition at line 394 of file MSVtxPlotMaker.h.

◆ m_h_Reco_r_e

TH1* MSVtxPlotMaker::m_h_Reco_r_e = new TH1D("Reco_r_e", "reco vertex r; Reco vertex |#bf{r}| [m]; Vertices / bin", 60, 0, 18)
private

Definition at line 399 of file MSVtxPlotMaker.h.

◆ m_h_Reco_z_e

TH1* MSVtxPlotMaker::m_h_Reco_z_e = new TH1D("Reco_z_e", "reco vertex z; Reco vertex |z| [m]; Vertices / bin", 40, 0, 16)
private

Definition at line 384 of file MSVtxPlotMaker.h.

◆ m_h_RecoTruth_eta

TH1* MSVtxPlotMaker::m_h_RecoTruth_eta = new TH1D("RecoTruth_eta", "reco vertex matched to truth; Reco vertex #eta; Vertices / bin", 30, -3, 3)
private

Definition at line 390 of file MSVtxPlotMaker.h.

◆ m_h_RecoTruth_Lxy_b

TH1* MSVtxPlotMaker::m_h_RecoTruth_Lxy_b = new TH1D("RecoTruth_Lxy_b", "reco vertex matched to truth in the barrel; Reco vertex L_{xy} [m]; Vertices / bin", 30, 0, 9)
private

Definition at line 380 of file MSVtxPlotMaker.h.

◆ m_h_RecoTruth_r_b

TH1* MSVtxPlotMaker::m_h_RecoTruth_r_b = new TH1D("RecoTruth_r_b", "reco vertex matched to truth; Reco vertex |#bf{r}| [m]; Vertices / bin", 60, 0, 18)
private

Definition at line 395 of file MSVtxPlotMaker.h.

◆ m_h_RecoTruth_r_e

TH1* MSVtxPlotMaker::m_h_RecoTruth_r_e = new TH1D("RecoTruth_r_e", "reco vertex matched to truth; Reco vertex |#bf{r}| [m]; Vertices / bin", 60, 0, 18)
private

Definition at line 400 of file MSVtxPlotMaker.h.

◆ m_h_RecoTruth_z_e

TH1* MSVtxPlotMaker::m_h_RecoTruth_z_e = new TH1D("RecoTruth_z_e", "reco vertex z matched to truth in the endcaps; Reco vertex |z| [m]; Vertices / bin", 40, 0, 16)
private

Definition at line 385 of file MSVtxPlotMaker.h.

◆ m_h_RecoTruthMatched

std::unique_ptr<EffInputTH1> MSVtxPlotMaker::m_h_RecoTruthMatched = std::make_unique<EffInputTH1>(m_h_RecoTruth_Lxy_b, m_h_RecoTruth_r_b, m_h_RecoTruth_z_e, m_h_RecoTruth_r_e, m_h_RecoTruth_eta)
private

Definition at line 431 of file MSVtxPlotMaker.h.

◆ m_h_Truth

std::unique_ptr<EffInputTH1> MSVtxPlotMaker::m_h_Truth = std::make_unique<EffInputTH1>(m_h_Truth_Lxy_b, m_h_Truth_r_b, m_h_Truth_z_e, m_h_Truth_r_e, m_h_Truth_eta)
private

Definition at line 428 of file MSVtxPlotMaker.h.

◆ m_h_Truth_eta

TH1* MSVtxPlotMaker::m_h_Truth_eta = new TH1D("Truth_eta", "truth vertex eta; Truth vertex #eta; Truth vertices / bin", 30, -3, 3)
private

Definition at line 391 of file MSVtxPlotMaker.h.

◆ m_h_Truth_Lxy_b

TH1* MSVtxPlotMaker::m_h_Truth_Lxy_b = new TH1D("Truth_Lxy_b", "truth vertex b; Truth vertex L_{xy} [m]; Truth vertices / bin", 30, 0, 9)
private

Definition at line 381 of file MSVtxPlotMaker.h.

◆ m_h_Truth_r_b

TH1* MSVtxPlotMaker::m_h_Truth_r_b = new TH1D("Truth_r_b", "truth vertex r; Truth vertex |#bf{r}| [m]; Truth vertices / bin", 60, 0, 18)
private

Definition at line 396 of file MSVtxPlotMaker.h.

◆ m_h_Truth_r_e

TH1* MSVtxPlotMaker::m_h_Truth_r_e = new TH1D("Truth_r_e", "truth vertex r; Truth vertex |#bf{r}| [m]; Truth vertices / bin", 60, 0, 18)
private

Definition at line 401 of file MSVtxPlotMaker.h.

◆ m_h_Truth_z_e

TH1* MSVtxPlotMaker::m_h_Truth_z_e = new TH1D("Truth_z_e", "truth vertex z; Truth vertex |z| [m]; Truth vertices / bin", 40, 0, 16)
private

Definition at line 386 of file MSVtxPlotMaker.h.

◆ m_h_TruthReco_eta

TH1* MSVtxPlotMaker::m_h_TruthReco_eta = new TH1D("TruthReco_eta", "truth vertex matched to reco; Truth vertex #eta; Vertices / bin", 30, -3, 3)
private

Definition at line 392 of file MSVtxPlotMaker.h.

◆ m_h_TruthReco_Lxy_b

TH1* MSVtxPlotMaker::m_h_TruthReco_Lxy_b = new TH1D("TruthReco_Lxy_b", "truth vertex matched to reco in the barrel; Truth vertex L_{xy} [m]; Vertices / bin", 30, 0, 9)
private

Definition at line 382 of file MSVtxPlotMaker.h.

◆ m_h_TruthReco_r_b

TH1* MSVtxPlotMaker::m_h_TruthReco_r_b = new TH1D("TruthReco_r_b", "truth vertex matched to reco; Truth vertex |#bf{r}| [m]; Vertices / bin", 60, 0, 18)
private

Definition at line 397 of file MSVtxPlotMaker.h.

◆ m_h_TruthReco_r_e

TH1* MSVtxPlotMaker::m_h_TruthReco_r_e = new TH1D("TruthReco_r_e", "truth vertex matched to reco; Truth vertex |#bf{r}| [m]; Vertices / bin", 60, 0, 18)
private

Definition at line 402 of file MSVtxPlotMaker.h.

◆ m_h_TruthReco_z_e

TH1* MSVtxPlotMaker::m_h_TruthReco_z_e = new TH1D("TruthReco_z_e", "truth vertex z matched to reco in the endcaps; Truth vertex |z| [m]; Vertices / bin", 40, 0, 16)
private

Definition at line 387 of file MSVtxPlotMaker.h.

◆ m_h_TruthRecoMatched

std::unique_ptr<EffInputTH1> MSVtxPlotMaker::m_h_TruthRecoMatched = std::make_unique<EffInputTH1>(m_h_TruthReco_Lxy_b, m_h_TruthReco_r_b, m_h_TruthReco_z_e, m_h_TruthReco_r_e, m_h_TruthReco_eta)
private

Definition at line 429 of file MSVtxPlotMaker.h.

◆ m_h_VtxChi2_b

std::unique_ptr<Chi2TH1> MSVtxPlotMaker::m_h_VtxChi2_b = std::make_unique<Chi2TH1>(m_h_chi2_b, m_h_chi2nDoF_b, m_h_chi2prob_b)
private

Definition at line 415 of file MSVtxPlotMaker.h.

◆ m_h_VtxChi2_e

std::unique_ptr<Chi2TH1> MSVtxPlotMaker::m_h_VtxChi2_e = std::make_unique<Chi2TH1>(m_h_chi2_e, m_h_chi2nDoF_e, m_h_chi2prob_e)
private

Definition at line 416 of file MSVtxPlotMaker.h.

◆ m_h_VtxConsti_detamax_b

TH1* MSVtxPlotMaker::m_h_VtxConsti_detamax_b = new TH1D("VtxConsti_detamax_b", "VtxConsti_detamax_b; max #kern[-0.3]{#Delta } #kern[-0.3]{ #eta (reco vtx, constituent)}; Vertices / bin", 50, -1.0, 1.0)
private

Definition at line 290 of file MSVtxPlotMaker.h.

◆ m_h_VtxConsti_detamax_e

TH1* MSVtxPlotMaker::m_h_VtxConsti_detamax_e = new TH1D("VtxConsti_detamax_e", "VtxConsti_detamax_e; max #kern[-0.3]{#Delta } #kern[-0.3]{ #eta (reco vtx, constituent)}; Vertices / bin", 50, -1.0, 1.0)
private

Definition at line 294 of file MSVtxPlotMaker.h.

◆ m_h_VtxConsti_dphimax_b

TH1* MSVtxPlotMaker::m_h_VtxConsti_dphimax_b = new TH1D("VtxConsti_dphimax_b", "VtxConsti_dphimax_b; max #kern[-0.3]{#Delta } #kern[-0.3]{ #phi (reco vtx, constituent)}; Vertices / bin", 50, -2.5, 2.5)
private

Definition at line 289 of file MSVtxPlotMaker.h.

◆ m_h_VtxConsti_dphimax_e

TH1* MSVtxPlotMaker::m_h_VtxConsti_dphimax_e = new TH1D("VtxConsti_dphimax_e", "VtxConsti_dphimax_e; max #kern[-0.3]{#Delta } #kern[-0.3]{ #phi (reco vtx, constituent)}; Vertices / bin", 50, -2.5, 2.5)
private

Definition at line 293 of file MSVtxPlotMaker.h.

◆ m_h_VtxConsti_dR_b

TH1* MSVtxPlotMaker::m_h_VtxConsti_dR_b = new TH1D("VtxConsti_dR_b", "VtxConsti_dR_b; #Delta R(reco vtx, constituent); Number of vertex-constituent pairs / bin", 100, 0, 3)
private

Definition at line 287 of file MSVtxPlotMaker.h.

◆ m_h_VtxConsti_dR_e

TH1* MSVtxPlotMaker::m_h_VtxConsti_dR_e = new TH1D("VtxConsti_dR_e", "VtxConsti_dR_e; #Delta R(reco vtx, constituent); Number of vertex-constituent pairs / bin", 100, 0, 3)
private

Definition at line 291 of file MSVtxPlotMaker.h.

◆ m_h_VtxConsti_dRmax_b

TH1* MSVtxPlotMaker::m_h_VtxConsti_dRmax_b = new TH1D("VtxConsti_dRmax_b", "VtxConsti_dRmax_b; max #kern[-0.3]{#Delta } #kern[-0.2]{ R(reco vtx, constituent)}; Vertices / bin", 50, 0, 3)
private

Definition at line 288 of file MSVtxPlotMaker.h.

◆ m_h_VtxConsti_dRmax_e

TH1* MSVtxPlotMaker::m_h_VtxConsti_dRmax_e = new TH1D("VtxConsti_dRmax_e", "VtxConsti_dRmax_e; max #kern[-0.3]{#Delta } #kern[-0.2]{ R(reco vtx, constituent)}; Vertices / bin", 50, 0, 3)
private

Definition at line 292 of file MSVtxPlotMaker.h.

◆ m_h_VtxPos

std::unique_ptr<VtxPosTGraph> MSVtxPlotMaker::m_h_VtxPos = std::make_unique<VtxPosTGraph>(m_zLxy_b, m_etaphi_b, m_zLxy_e, m_etaphi_e, m_zLxy_out, m_etaphi_out)
private

Definition at line 410 of file MSVtxPlotMaker.h.

◆ m_h_VtxPos_truth

std::unique_ptr<VtxPosTGraph> MSVtxPlotMaker::m_h_VtxPos_truth = std::make_unique<VtxPosTGraph>(m_zLxy_truth_b, m_etaphi_truth_b, m_zLxy_truth_e, m_etaphi_truth_e, m_zLxy_truth_out, m_etaphi_truth_out)
private

Definition at line 411 of file MSVtxPlotMaker.h.

◆ m_h_VtxPosHists

std::unique_ptr<VtxPosTH> MSVtxPlotMaker::m_h_VtxPosHists = std::make_unique<VtxPosTH>(m_h_zLxy, m_h_etaphi, m_h_distanceToIP)
private

Definition at line 412 of file MSVtxPlotMaker.h.

◆ m_h_VtxPosHists_truth

std::unique_ptr<VtxPosTH> MSVtxPlotMaker::m_h_VtxPosHists_truth = std::make_unique<VtxPosTH>(m_h_zLxy_truth, m_h_etaphi_truth, m_h_distanceToIP_truth)
private

Definition at line 413 of file MSVtxPlotMaker.h.

◆ m_h_VtxResiduals_b

◆ m_h_VtxResiduals_e

◆ m_h_zLxy

TH2* MSVtxPlotMaker::m_h_zLxy = new TH2D("zLxy", "zLxy; Reco vertex z [m]; Reco vertex L_{xy} [m]", 128, -16, 16, 52, -1, 12)
private

Definition at line 274 of file MSVtxPlotMaker.h.

◆ m_h_zLxy_truth

TH2* MSVtxPlotMaker::m_h_zLxy_truth = new TH2D("zLxy_truth", "zLxy_truth; Truth vertex z [m]; Truth vertex L_{xy} [m]", 128, -16, 16, 52, -1, 12)
private

Definition at line 252 of file MSVtxPlotMaker.h.

◆ m_input_file

std::unique_ptr<TFile> MSVtxPlotMaker::m_input_file {nullptr}
private

Definition at line 192 of file MSVtxPlotMaker.h.

192{nullptr};

◆ m_msVtx_chi2

std::vector<double>* MSVtxPlotMaker::m_msVtx_chi2 {nullptr}
private

Definition at line 201 of file MSVtxPlotMaker.h.

201{nullptr};

◆ m_msVtx_nMDT

std::vector<int>* MSVtxPlotMaker::m_msVtx_nMDT {nullptr}
private

Definition at line 206 of file MSVtxPlotMaker.h.

206{nullptr};

◆ m_msVtx_nMDT_I

std::vector<int>* MSVtxPlotMaker::m_msVtx_nMDT_I {nullptr}
private

Definition at line 208 of file MSVtxPlotMaker.h.

208{nullptr};

◆ m_msVtx_nMDT_inwards

std::vector<int>* MSVtxPlotMaker::m_msVtx_nMDT_inwards {nullptr}
private

Definition at line 207 of file MSVtxPlotMaker.h.

207{nullptr};

◆ m_msVtx_nMDT_M

std::vector<int>* MSVtxPlotMaker::m_msVtx_nMDT_M {nullptr}
private

Definition at line 209 of file MSVtxPlotMaker.h.

209{nullptr};

◆ m_msVtx_nMDT_O

std::vector<int>* MSVtxPlotMaker::m_msVtx_nMDT_O {nullptr}
private

Definition at line 210 of file MSVtxPlotMaker.h.

210{nullptr};

◆ m_msVtx_nRPC

std::vector<int>* MSVtxPlotMaker::m_msVtx_nRPC {nullptr}
private

Definition at line 211 of file MSVtxPlotMaker.h.

211{nullptr};

◆ m_msVtx_nRPC_I

std::vector<int>* MSVtxPlotMaker::m_msVtx_nRPC_I {nullptr}
private

Definition at line 213 of file MSVtxPlotMaker.h.

213{nullptr};

◆ m_msVtx_nRPC_inwards

std::vector<int>* MSVtxPlotMaker::m_msVtx_nRPC_inwards {nullptr}
private

Definition at line 212 of file MSVtxPlotMaker.h.

212{nullptr};

◆ m_msVtx_nRPC_M

std::vector<int>* MSVtxPlotMaker::m_msVtx_nRPC_M {nullptr}
private

Definition at line 214 of file MSVtxPlotMaker.h.

214{nullptr};

◆ m_msVtx_nRPC_O

std::vector<int>* MSVtxPlotMaker::m_msVtx_nRPC_O {nullptr}
private

Definition at line 215 of file MSVtxPlotMaker.h.

215{nullptr};

◆ m_msVtx_nTGC

std::vector<int>* MSVtxPlotMaker::m_msVtx_nTGC {nullptr}
private

Definition at line 216 of file MSVtxPlotMaker.h.

216{nullptr};

◆ m_msVtx_nTGC_I

std::vector<int>* MSVtxPlotMaker::m_msVtx_nTGC_I {nullptr}
private

Definition at line 218 of file MSVtxPlotMaker.h.

218{nullptr};

◆ m_msVtx_nTGC_inwards

std::vector<int>* MSVtxPlotMaker::m_msVtx_nTGC_inwards {nullptr}
private

Definition at line 217 of file MSVtxPlotMaker.h.

217{nullptr};

◆ m_msVtx_nTGC_M

std::vector<int>* MSVtxPlotMaker::m_msVtx_nTGC_M {nullptr}
private

Definition at line 219 of file MSVtxPlotMaker.h.

219{nullptr};

◆ m_msVtx_nTGC_O

std::vector<int>* MSVtxPlotMaker::m_msVtx_nTGC_O {nullptr}
private

Definition at line 220 of file MSVtxPlotMaker.h.

220{nullptr};

◆ m_msVtx_Ntrklet

std::vector<int>* MSVtxPlotMaker::m_msVtx_Ntrklet {nullptr}
private

Definition at line 202 of file MSVtxPlotMaker.h.

202{nullptr};

◆ m_msVtx_x

std::vector<double>* MSVtxPlotMaker::m_msVtx_x {nullptr}
private

Definition at line 203 of file MSVtxPlotMaker.h.

203{nullptr};

◆ m_msVtx_y

std::vector<double>* MSVtxPlotMaker::m_msVtx_y {nullptr}
private

Definition at line 204 of file MSVtxPlotMaker.h.

204{nullptr};

◆ m_msVtx_z

std::vector<double>* MSVtxPlotMaker::m_msVtx_z {nullptr}
private

Definition at line 205 of file MSVtxPlotMaker.h.

205{nullptr};

◆ m_obj_eta

std::vector<double>* MSVtxPlotMaker::m_obj_eta {nullptr}
private

Definition at line 227 of file MSVtxPlotMaker.h.

227{nullptr};

◆ m_obj_phi

std::vector<double>* MSVtxPlotMaker::m_obj_phi {nullptr}
private

Definition at line 225 of file MSVtxPlotMaker.h.

225{nullptr};

◆ m_obj_theta

std::vector<double>* MSVtxPlotMaker::m_obj_theta {nullptr}
private

Definition at line 226 of file MSVtxPlotMaker.h.

226{nullptr};

◆ m_obj_vtxLink

std::vector<int>* MSVtxPlotMaker::m_obj_vtxLink {nullptr}
private

Definition at line 228 of file MSVtxPlotMaker.h.

228{nullptr};

◆ m_obj_x

std::vector<double>* MSVtxPlotMaker::m_obj_x {nullptr}
private

Definition at line 222 of file MSVtxPlotMaker.h.

222{nullptr};

◆ m_obj_y

std::vector<double>* MSVtxPlotMaker::m_obj_y {nullptr}
private

Definition at line 223 of file MSVtxPlotMaker.h.

223{nullptr};

◆ m_obj_z

std::vector<double>* MSVtxPlotMaker::m_obj_z {nullptr}
private

Definition at line 224 of file MSVtxPlotMaker.h.

224{nullptr};

◆ m_output_file

std::unique_ptr<TFile> MSVtxPlotMaker::m_output_file {nullptr}
private

Definition at line 193 of file MSVtxPlotMaker.h.

193{nullptr};

◆ m_plotdir

TString MSVtxPlotMaker::m_plotdir {}
private

Definition at line 183 of file MSVtxPlotMaker.h.

183{};

◆ m_plotdir_inputObjects

TString MSVtxPlotMaker::m_plotdir_inputObjects {}
private

Definition at line 188 of file MSVtxPlotMaker.h.

188{};

◆ m_plotdir_recoVtx

TString MSVtxPlotMaker::m_plotdir_recoVtx {}
private

Definition at line 185 of file MSVtxPlotMaker.h.

185{};

◆ m_plotdir_recoVtxHits

TString MSVtxPlotMaker::m_plotdir_recoVtxHits {}
private

Definition at line 186 of file MSVtxPlotMaker.h.

186{};

◆ m_plotdir_truthVtx

TString MSVtxPlotMaker::m_plotdir_truthVtx {}
private

Definition at line 184 of file MSVtxPlotMaker.h.

184{};

◆ m_plotdir_vtxEfficiency

TString MSVtxPlotMaker::m_plotdir_vtxEfficiency {}
private

Definition at line 189 of file MSVtxPlotMaker.h.

189{};

◆ m_plotdir_vtxFakeRate

TString MSVtxPlotMaker::m_plotdir_vtxFakeRate {}
private

Definition at line 190 of file MSVtxPlotMaker.h.

190{};

◆ m_plotdir_vtxResiduals

TString MSVtxPlotMaker::m_plotdir_vtxResiduals {}
private

Definition at line 187 of file MSVtxPlotMaker.h.

187{};

◆ m_tree

TTree* MSVtxPlotMaker::m_tree {nullptr}
private

Definition at line 191 of file MSVtxPlotMaker.h.

191{nullptr}; // TTree is attached to the input file i.e. no smart pointer needed

◆ m_treename

std::string MSVtxPlotMaker::m_treename {}
private

Definition at line 182 of file MSVtxPlotMaker.h.

182{};

◆ m_truthVtx_x

std::vector<double>* MSVtxPlotMaker::m_truthVtx_x {nullptr}
private

Definition at line 197 of file MSVtxPlotMaker.h.

197{nullptr};

◆ m_truthVtx_y

std::vector<double>* MSVtxPlotMaker::m_truthVtx_y {nullptr}
private

Definition at line 198 of file MSVtxPlotMaker.h.

198{nullptr};

◆ m_truthVtx_z

std::vector<double>* MSVtxPlotMaker::m_truthVtx_z {nullptr}
private

Definition at line 199 of file MSVtxPlotMaker.h.

199{nullptr};

◆ m_zLxy

TMultiGraph* MSVtxPlotMaker::m_zLxy = new TMultiGraph("zLxy_mg", "zLxy_mg")
private

Definition at line 262 of file MSVtxPlotMaker.h.

◆ m_zLxy_b

TGraph* MSVtxPlotMaker::m_zLxy_b = new TGraph()
private

Definition at line 263 of file MSVtxPlotMaker.h.

◆ m_zLxy_e

TGraph* MSVtxPlotMaker::m_zLxy_e = new TGraph()
private

Definition at line 264 of file MSVtxPlotMaker.h.

◆ m_zLxy_out

TGraph* MSVtxPlotMaker::m_zLxy_out = new TGraph()
private

Definition at line 265 of file MSVtxPlotMaker.h.

◆ m_zLxy_truth

TMultiGraph* MSVtxPlotMaker::m_zLxy_truth = new TMultiGraph("zLxy_mg_truth", "zLxy_mg_truth")
private

Definition at line 240 of file MSVtxPlotMaker.h.

◆ m_zLxy_truth_b

TGraph* MSVtxPlotMaker::m_zLxy_truth_b = new TGraph()
private

Definition at line 241 of file MSVtxPlotMaker.h.

◆ m_zLxy_truth_e

TGraph* MSVtxPlotMaker::m_zLxy_truth_e = new TGraph()
private

Definition at line 242 of file MSVtxPlotMaker.h.

◆ m_zLxy_truth_out

TGraph* MSVtxPlotMaker::m_zLxy_truth_out = new TGraph()
private

Definition at line 243 of file MSVtxPlotMaker.h.


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