File indexing completed on 2023-03-17 10:57:15
0001
0002
0003 from __future__ import print_function
0004 import sys
0005 import os
0006 from ROOT import *
0007 from copy import deepcopy
0008 from array import array
0009
0010 gROOT.SetBatch()
0011
0012 maxPxBarrel = 4
0013 maxPxForward = 3
0014 barrelLadderShift = [0, 14, 44, 90]
0015 forwardDiskXShift = [25, 75, 125]
0016 forwardDiskYShift = 45;
0017 plotWidth, plotHeight = 3000, 2000
0018 listOfDetids=[]
0019
0020
0021
0022 def getFileInPath(rfile):
0023
0024 import os
0025 for dir in os.environ['CMSSW_SEARCH_PATH'].split(":"):
0026 if os.path.exists(os.path.join(dir,rfile)): return os.path.join(dir,rfile)
0027 return None
0028
0029
0030 def __AddNamedBins(BaseTrackerMap, geoFile, tX, tY, sX, sY, applyModuleRotation = False):
0031
0032 for line in geoFile:
0033 lineSpl = line.strip().split("\"")
0034
0035 detId = lineSpl[0].split(" ")[0]
0036
0037 vertices = lineSpl[1]
0038 xy = vertices.split(" ")
0039 x, y = array('d'), array('d')
0040 verNum = 1
0041 for coord in xy:
0042 coordSpl = coord.split(",")
0043 if applyModuleRotation:
0044 x.append(-(float(coordSpl[0]) * sX + tX))
0045 y.append((float(coordSpl[1]) * sY + tY))
0046 else:
0047 x.append(float(coordSpl[0]) * sX + tX)
0048 y.append(float(coordSpl[1]) * sY + tY)
0049 verNum = verNum + 1
0050
0051 x.append(x[0])
0052 y.append(y[0])
0053
0054
0055 listOfDetids.append(detId)
0056 if applyModuleRotation:
0057 bin = TGraph(verNum, y, x)
0058 else:
0059 bin = TGraph(verNum, x, y)
0060
0061 bin.SetName(detId)
0062 BaseTrackerMap.AddBin(bin)
0063
0064
0065 def main():
0066
0067 geometryFilenames = []
0068 for i in range(maxPxBarrel):
0069 geometryFilenames.append(getFileInPath("DQM/SiStripMonitorClient/data/Geometry/vertices_barrel_" + str(i + 1)))
0070
0071 for i in range(-maxPxForward, maxPxForward + 1):
0072 if i == 0:
0073 continue
0074 geometryFilenames.append(getFileInPath("DQM/SiStripMonitorClient/data/Geometry/vertices_forward_" + str(i)))
0075
0076 BaseTrackerMap = TH2Poly("Summary", "", -10, 160, -70, 70)
0077 BaseTrackerMap.SetFloat(1)
0078 BaseTrackerMap.GetXaxis().SetTitle("")
0079 BaseTrackerMap.GetYaxis().SetTitle("")
0080 BaseTrackerMap.SetOption("COLZ L")
0081 BaseTrackerMap.SetStats(0)
0082
0083
0084 for i in range(maxPxBarrel):
0085 with open(geometryFilenames[i], "r") as geoFile:
0086 currBarrelTranslateX = 0
0087 currBarrelTranslateY = barrelLadderShift[i]
0088 __AddNamedBins(BaseTrackerMap,geoFile, currBarrelTranslateX, currBarrelTranslateY, 1, 1, True)
0089
0090
0091 for i in range(-maxPxForward, 0):
0092 with open(geometryFilenames[maxPxBarrel + maxPxForward + i], "r") as geoFile:
0093 currForwardTranslateX = forwardDiskXShift[-i - 1]
0094 currForwardTranslateY = -forwardDiskYShift
0095 __AddNamedBins(BaseTrackerMap,geoFile, currForwardTranslateX, currForwardTranslateY, 1, 1)
0096
0097
0098 for i in range(maxPxForward):
0099 with open(geometryFilenames[maxPxBarrel + maxPxForward + i], "r") as geoFile:
0100 currForwardTranslateX = forwardDiskXShift[i]
0101 currForwardTranslateY = forwardDiskYShift
0102 __AddNamedBins(BaseTrackerMap,geoFile, currForwardTranslateX, currForwardTranslateY, 1, 1)
0103
0104 print("Base Tracker Map: constructed")
0105
0106 c1 = TCanvas("c1","c1", plotWidth , plotHeight)
0107 for detid in listOfDetids:
0108 BaseTrackerMap.Fill(str(detid),int(detid))
0109 BaseTrackerMap.Draw("AC COLZ L")
0110
0111 gPad.Update()
0112 palette = BaseTrackerMap.FindObject("palette");
0113 palette.SetX1NDC(0.89);
0114 palette.SetX2NDC(0.91);
0115 palette.SetLabelSize(0.05);
0116 gPad.Update()
0117
0118
0119 arrow = TArrow(0.05, 27.0, 0.05, -30.0, 0.02, "|>")
0120 arrow.SetLineWidth(4)
0121 arrow.Draw()
0122
0123 phiArrow = TArrow(0.0, 27.0, 30.0, 27.0, 0.02, "|>")
0124 phiArrow.SetLineWidth(4)
0125 phiArrow.Draw()
0126
0127 xArrow = TArrow(25.0, 44.5, 50.0, 44.5, 0.02, "|>")
0128 xArrow.SetLineWidth(4)
0129 xArrow.Draw()
0130
0131 yArrow = TArrow(25.0, 44.5, 25.0, 69.5, 0.02, "|>")
0132 yArrow.SetLineWidth(4)
0133 yArrow.Draw()
0134
0135
0136
0137 txt = TLatex()
0138 txt.SetNDC()
0139 txt.SetTextFont(1)
0140 txt.SetTextColor(1)
0141 txt.SetTextAlign(22)
0142 txt.SetTextAngle(0)
0143
0144
0145 txt.SetTextSize(0.05)
0146 txt.DrawLatex(0.5, 0.95, "Pixel Tracker Map")
0147 txt.SetTextSize(0.03)
0148 txt.DrawLatex(0.5, 0.125, "-DISK")
0149 txt.DrawLatex(0.5, 0.075, "NUMBER ->")
0150 txt.DrawLatex(0.5, 0.875, "+DISK")
0151 txt.DrawLatex(0.12, 0.35, "+z")
0152 txt.DrawLatexNDC(0.315, 0.665, "+phi")
0153 txt.DrawLatex(0.38, 0.73, "+x")
0154 txt.DrawLatex(0.235, 0.875, "+y")
0155 txt.SetTextAngle(90)
0156 txt.DrawLatex(0.125, 0.5, "BARREL")
0157
0158
0159 c1.Print("test.png")
0160
0161
0162 if __name__ == "__main__":
0163 main()