Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-05 08:11:16

0001 #! /usr/bin/env python
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     # 2D 
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     # normalize the simulation histograms to data
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     # hM_ClusEtaPV_1p6cmstrip_all_sim.SetLineStyle(kDashed)
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     # hM_ClusEtaPV_2cmstrip_all_sim.SetLineStyle(kDotted)
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     # Draw_2Dhist(hist, IsData, logz, norm1, rmargin, XaxisName, YaxisName, ZaxisName, drawopt, outname)
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")