File indexing completed on 2025-08-05 08:11:16
0001
0002 from optparse import OptionParser
0003 import sys
0004 import os
0005 import datetime
0006 from array import *
0007 from ROOT import *
0008 import numpy
0009 import math
0010 import glob
0011 from plotUtil import *
0012
0013 gROOT.SetBatch(True)
0014
0015 if __name__ == '__main__':
0016 parser = OptionParser(usage='usage: %prog ver [options -h]')
0017 parser.add_option('-d', '--datahistdir', dest='datahistdir', type='string', default='/sphenix/user/hjheng/TrackletAna/analysis_INTT/plot/hists/data_run20869/', help='Histogram file name (data)')
0018 parser.add_option('-s', '--simhistdir', dest='simhistdir', type='string', help='Histogram file name (simulation). Example: /sphenix/user/hjheng/TrackletAna/analysis_INTT/plot/hists/ana382_zvtx-20cm_dummyAlignParams/Hists_RecoTracklets_merged.root')
0019 parser.add_option('-l', '--simlegtext', action='append', dest='simlegtext', type='string', help='Legend text for simulation. Example: HIJING/EPOS/AMPT)')
0020
0021 (opt, args) = parser.parse_args()
0022
0023 print('opt: {}'.format(opt))
0024
0025 datahistdir = opt.datahistdir
0026 simhistdir = opt.simhistdir
0027 simlegtext = opt.simlegtext
0028
0029 if os.path.isfile("{}/hists_merged.root".format(datahistdir)):
0030 os.system("rm {}/hists_merged.root".format(datahistdir))
0031 os.system("hadd -f -j 20 {}/hists_merged.root {}/hists_*.root".format(datahistdir, datahistdir))
0032 else:
0033 os.system("hadd -f -j 20 {}/hists_merged.root {}/hists_*.root".format(datahistdir, datahistdir))
0034
0035 if os.path.isfile("{}/hists_merged.root".format(simhistdir)):
0036 os.system("rm {}/hists_merged.root".format(simhistdir))
0037 os.system("hadd -f -j 20 {}/hists_merged.root {}/hists_*.root".format(simhistdir, simhistdir))
0038 else:
0039 os.system("hadd -f -j 20 {}/hists_merged.root {}/hists_*.root".format(simhistdir, simhistdir))
0040
0041 os.makedirs('./ClusEtaStripSize/', exist_ok=True)
0042
0043 hM_ClusEtaPV_1p6cmstrip_all_data = GetHistogram("{}/hists_merged.root".format(datahistdir), "hM_ClusEtaPV_1p6cmstrip_all")
0044 hM_ClusEtaPV_2cmstrip_all_data = GetHistogram("{}/hists_merged.root".format(datahistdir), "hM_ClusEtaPV_2cmstrip_all")
0045 hM_ClusEtaPV_1p6cmstrip_all_sim = GetHistogram("{}/hists_merged.root".format(simhistdir), "hM_ClusEtaPV_1p6cmstrip_all")
0046 hM_ClusEtaPV_2cmstrip_all_sim = GetHistogram("{}/hists_merged.root".format(simhistdir), "hM_ClusEtaPV_2cmstrip_all")
0047
0048 hM_ClusEtaPV_PVz_all_LadderZID0_data = GetHistogram("{}/hists_merged.root".format(datahistdir), "hM_ClusEtaPV_PVz_all_LadderZID0")
0049 hM_ClusEtaPV_PVz_all_LadderZID1_data = GetHistogram("{}/hists_merged.root".format(datahistdir), "hM_ClusEtaPV_PVz_all_LadderZID1")
0050 hM_ClusEtaPV_PVz_all_LadderZID2_data = GetHistogram("{}/hists_merged.root".format(datahistdir), "hM_ClusEtaPV_PVz_all_LadderZID2")
0051 hM_ClusEtaPV_PVz_all_LadderZID3_data = GetHistogram("{}/hists_merged.root".format(datahistdir), "hM_ClusEtaPV_PVz_all_LadderZID3")
0052 hM_ClusEtaPV_PVz_all_LadderZID0_sim = GetHistogram("{}/hists_merged.root".format(simhistdir), "hM_ClusEtaPV_PVz_all_LadderZID0")
0053 hM_ClusEtaPV_PVz_all_LadderZID1_sim = GetHistogram("{}/hists_merged.root".format(simhistdir), "hM_ClusEtaPV_PVz_all_LadderZID1")
0054 hM_ClusEtaPV_PVz_all_LadderZID2_sim = GetHistogram("{}/hists_merged.root".format(simhistdir), "hM_ClusEtaPV_PVz_all_LadderZID2")
0055 hM_ClusEtaPV_PVz_all_LadderZID3_sim = GetHistogram("{}/hists_merged.root".format(simhistdir), "hM_ClusEtaPV_PVz_all_LadderZID3")
0056
0057 hM_ClusEtaPV_all_data = hM_ClusEtaPV_1p6cmstrip_all_data.Clone("hM_ClusEtaPV_all_data")
0058 hM_ClusEtaPV_all_data.Add(hM_ClusEtaPV_2cmstrip_all_data)
0059 hM_ClusEtaPV_all_sim = hM_ClusEtaPV_1p6cmstrip_all_sim.Clone("hM_ClusEtaPV_all_sim")
0060 hM_ClusEtaPV_all_sim.Add(hM_ClusEtaPV_2cmstrip_all_sim)
0061 normfactor = hM_ClusEtaPV_all_data.Integral(-1,-1)/hM_ClusEtaPV_all_sim.Integral(-1,-1)
0062
0063 hM_ClusEtaPV_all_sim.Scale(normfactor)
0064 hM_ClusEtaPV_1p6cmstrip_all_sim.Scale(normfactor)
0065 hM_ClusEtaPV_2cmstrip_all_sim.Scale(normfactor)
0066 maxbincontent = max(hM_ClusEtaPV_all_data.GetMaximum(), hM_ClusEtaPV_all_sim.GetMaximum())
0067 minbincontent = min(hM_ClusEtaPV_all_data.GetMinimum(0), hM_ClusEtaPV_all_sim.GetMinimum(0))
0068
0069 c = TCanvas("c", "c", 800, 600)
0070 c.SetLeftMargin(0.15)
0071 c.SetRightMargin(0.08)
0072 c.SetTopMargin(0.08)
0073 c.SetBottomMargin(0.15)
0074 hM_ClusEtaPV_all_sim.GetXaxis().SetTitle("Cluster #eta (w.r.t. PV)")
0075 hM_ClusEtaPV_all_sim.GetYaxis().SetTitle("Normalized counts")
0076 hM_ClusEtaPV_all_sim.GetYaxis().SetRangeUser(0, maxbincontent*1.9)
0077 hM_ClusEtaPV_all_sim.SetLineColor(kRed+1)
0078 hM_ClusEtaPV_all_sim.SetLineWidth(2)
0079 hM_ClusEtaPV_all_sim.Draw("hist")
0080 hM_ClusEtaPV_1p6cmstrip_all_sim.SetLineColor(kRed-7)
0081 hM_ClusEtaPV_1p6cmstrip_all_sim.SetFillColorAlpha(kRed-7, 0.3)
0082 hM_ClusEtaPV_1p6cmstrip_all_sim.SetLineWidth(2)
0083
0084 hM_ClusEtaPV_1p6cmstrip_all_sim.Draw("hist SAME")
0085 hM_ClusEtaPV_2cmstrip_all_sim.SetLineColor(kRed-6)
0086 hM_ClusEtaPV_2cmstrip_all_sim.SetFillColorAlpha(kRed-6, 0.5)
0087 hM_ClusEtaPV_2cmstrip_all_sim.SetLineWidth(2)
0088
0089 hM_ClusEtaPV_2cmstrip_all_sim.Draw("hist SAME")
0090 hM_ClusEtaPV_all_data.SetLineColor(kBlack)
0091 hM_ClusEtaPV_all_data.SetMarkerColor(kBlack)
0092 hM_ClusEtaPV_all_data.SetMarkerStyle(20)
0093 hM_ClusEtaPV_all_data.SetMarkerSize(0.8)
0094 hM_ClusEtaPV_all_data.SetLineWidth(2)
0095 hM_ClusEtaPV_all_data.Draw("PE same")
0096 hM_ClusEtaPV_1p6cmstrip_all_data.SetLineColor(kGray+2)
0097 hM_ClusEtaPV_1p6cmstrip_all_data.SetMarkerColor(kGray+2)
0098 hM_ClusEtaPV_1p6cmstrip_all_data.SetMarkerStyle(21)
0099 hM_ClusEtaPV_1p6cmstrip_all_data.SetMarkerSize(0.8)
0100 hM_ClusEtaPV_1p6cmstrip_all_data.SetLineWidth(2)
0101 hM_ClusEtaPV_1p6cmstrip_all_data.Draw("PE same")
0102 hM_ClusEtaPV_2cmstrip_all_data.SetLineColor(kGray+2)
0103 hM_ClusEtaPV_2cmstrip_all_data.SetMarkerColor(kGray+2)
0104 hM_ClusEtaPV_2cmstrip_all_data.SetMarkerStyle(25)
0105 hM_ClusEtaPV_2cmstrip_all_data.SetMarkerSize(0.8)
0106 hM_ClusEtaPV_2cmstrip_all_data.SetLineWidth(2)
0107 hM_ClusEtaPV_2cmstrip_all_data.Draw("PE SAME")
0108 c.RedrawAxis()
0109 leg = TLegend(0.2, 0.66, 0.5, 0.88)
0110 leg.AddEntry(hM_ClusEtaPV_all_data, "Data (1.6 cm + 2 cm strip)", "ep")
0111 leg.AddEntry(hM_ClusEtaPV_1p6cmstrip_all_data, "Data (1.6 cm strip)", "ep")
0112 leg.AddEntry(hM_ClusEtaPV_2cmstrip_all_data, "Data (2 cm strip)", "ep")
0113 leg.AddEntry(hM_ClusEtaPV_all_sim, "Simulation (1.6 cm + 2 cm strip)", "lf")
0114 leg.AddEntry(hM_ClusEtaPV_1p6cmstrip_all_sim, "Simulation (1.6 cm strip)", "lf")
0115 leg.AddEntry(hM_ClusEtaPV_2cmstrip_all_sim, "Simulation (2 cm strip)", "lf")
0116 leg.SetTextSize(0.04)
0117 leg.Draw()
0118 str_clussel = ''
0119 str_zvtxsel = '|INTT Z_{vtx}|#leq10[cm]'
0120 str_evtsel = 'Trigger bit 13 (MBD N&S#geq 2, |MBD Z_{vtx}|<30[cm])'
0121 evtseltexts = [str_zvtxsel,str_evtsel]
0122 legylow_evtselshift = 0.05 * len(evtseltexts)
0123 leg2 = TLegend(0.2, 0.66-legylow_evtselshift, 0.5, 0.66)
0124 leg2.SetTextSize(0.035)
0125 leg2.SetFillStyle(0)
0126 for i, evtseltext in enumerate(evtseltexts):
0127 leg2.AddEntry('', evtseltext, '')
0128 leg2.Draw('same')
0129 c.RedrawAxis()
0130 c.SaveAs("ClusEtaStripSize/ClusEtaPV_LadderZId_all.pdf")
0131 c.SaveAs("ClusEtaStripSize/ClusEtaPV_LadderZId_all.png")
0132
0133
0134 Draw_2Dhist(hM_ClusEtaPV_PVz_all_LadderZID0_data, True, False, True, 0.15, "Cluster #eta (w.r.t. PV)", "INTT Z_{vtx} [cm]", "Normalized counts", "colz", "ClusEtaStripSize/ClusEtaPV_PVz_LadderZID0_all_data")
0135 Draw_2Dhist(hM_ClusEtaPV_PVz_all_LadderZID1_data, True, False, True, 0.15, "Cluster #eta (w.r.t. PV)", "INTT Z_{vtx} [cm]", "Normalized counts", "colz", "ClusEtaStripSize/ClusEtaPV_PVz_LadderZID1_all_data")
0136 Draw_2Dhist(hM_ClusEtaPV_PVz_all_LadderZID2_data, True, False, True, 0.15, "Cluster #eta (w.r.t. PV)", "INTT Z_{vtx} [cm]", "Normalized counts", "colz", "ClusEtaStripSize/ClusEtaPV_PVz_LadderZID2_all_data")
0137 Draw_2Dhist(hM_ClusEtaPV_PVz_all_LadderZID3_data, True, False, True, 0.15, "Cluster #eta (w.r.t. PV)", "INTT Z_{vtx} [cm]", "Normalized counts", "colz", "ClusEtaStripSize/ClusEtaPV_PVz_LadderZID3_all_data")
0138 Draw_2Dhist(hM_ClusEtaPV_PVz_all_LadderZID0_sim, False, False, True, 0.15, "Cluster #eta (w.r.t. PV)", "INTT Z_{vtx} [cm]", "Normalized counts", "colz", "ClusEtaStripSize/ClusEtaPV_PVz_LadderZID0_all_sim")
0139 Draw_2Dhist(hM_ClusEtaPV_PVz_all_LadderZID1_sim, False, False, True, 0.15, "Cluster #eta (w.r.t. PV)", "INTT Z_{vtx} [cm]", "Normalized counts", "colz", "ClusEtaStripSize/ClusEtaPV_PVz_LadderZID1_all_sim")
0140 Draw_2Dhist(hM_ClusEtaPV_PVz_all_LadderZID2_sim, False, False, True, 0.15, "Cluster #eta (w.r.t. PV)", "INTT Z_{vtx} [cm]", "Normalized counts", "colz", "ClusEtaStripSize/ClusEtaPV_PVz_LadderZID2_all_sim")
0141 Draw_2Dhist(hM_ClusEtaPV_PVz_all_LadderZID3_sim, False, False, True, 0.15, "Cluster #eta (w.r.t. PV)", "INTT Z_{vtx} [cm]", "Normalized counts", "colz", "ClusEtaStripSize/ClusEtaPV_PVz_LadderZID3_all_sim")