Skip to content
Snippets Groups Projects
tracker_analysis.py 3.61 KiB
Newer Older
Zhan Li's avatar
Zhan Li committed
#!/usr/bin/env python
#Author: Zhan Li <lizhan@ihep.ac.cn>
#Created [2024-03-07 Thu 14:53]

import ROOT
import math

#read
#path1="/scratchfs/atlas/lizhan/cepc/CEPCSW/test-onlyVXD-single.root"
#path1="/scratchfs/atlas/lizhan/cepc/CEPCSW/test-detsim10.root"

def GetVXDHitMapFromFile(infile_name,out_file_name):
    file = ROOT.TFile(infile_name)
    tree = file.Get("events")
    posx_VXD=[]
    posy_VXD=[]
    posz_VXD=[]
    posr_VXD=[]
    for entry in tree:
        for elem in entry.VXDCollection:
            x=elem.position.x
            y=elem.position.y
            z=elem.position.z
            r = math.sqrt(x*x + y*y)
            posx_VXD.append(x)
            posy_VXD.append(y)
            posz_VXD.append(z)
            posr_VXD.append(r)
    file.Close()
    VXDHitMap = ROOT.TH2F("VXDHitMap","Hit Map of VXD",40,-125,125,20,0,80)
    for i in range(0,len(posz_VXD)):
        VXDHitMap.Fill(posz_VXD[i],posr_VXD[i])
    ofile=ROOT.TFile(out_file_name,"Recreate")
    VXDHitMap.Write()
    ofile.Close()
    
    
def GetSITHitMapFromFile(infile_path,out_file_name):    
    file = ROOT.TFile(infile_path)
    tree = file.Get("events")
    posx_SIT=[]
    posy_SIT=[]
    posz_SIT=[]
    posr_SIT=[]
    for entry in tree:
        for elem in entry.SITCollection:
            x=elem.position.x
            y=elem.position.y
            z=elem.position.z
            r = math.sqrt(x*x + y*y)
            posx_SIT.append(x)
            posy_SIT.append(y)
            posz_SIT.append(z)
            posr_SIT.append(r)
    file.Close()
    SITHitMap = ROOT.TH2F("SITHitMap","Hit Map of SIT",200,-2400,2400,20,120,320)
    for i in range(0,len(posz_SIT)):
        SITHitMap.Fill(posz_SIT[i],posr_SIT[i])
    ofile=ROOT.TFile(out_file_name,"Recreate")
    SITHitMap.Write()
    ofile.Close()

print("test")

def GetSETHitMapFromFile(infile_path,out_file_name):    
    file = ROOT.TFile(infile_path)
    tree = file.Get("events")
    posx_SET=[]
    posy_SET=[]
    posz_SET=[]
    posr_SET=[]
    for entry in tree:
        for elem in entry.SETCollection:
            x=elem.position.x
            y=elem.position.y
            z=elem.position.z
            r = math.sqrt(x*x + y*y)
            posx_SET.append(x)
            posy_SET.append(y)
            posz_SET.append(z)
            posr_SET.append(r)
    file.Close()
    SETHitMap = ROOT.TH2F("SETHitMap","Hit Map of SET",200,-2400,2400,20,1700,2000)
    for i in range(0,len(posz_SET)):
        SETHitMap.Fill(posz_SET[i],posr_SET[i])
    ofile=ROOT.TFile(out_file_name,"Recreate")
    SETHitMap.Write()
    ofile.Close()



#draw
def DrawHitMap(in_file_name,TH2name,out_file_name):
    file = ROOT.TFile(in_file_name)
    TH2_HitMap=file.Get(TH2name)
    c = ROOT.TCanvas("c", "c", 800, 800)
    ROOT.gStyle.SetOptStat(0)
    TH2_HitMap.GetXaxis().SetTitle("Z [mm]")
    TH2_HitMap.GetXaxis().SetTitleOffset(0.77)
    TH2_HitMap.GetXaxis().SetTitleSize(0.05)
    TH2_HitMap.GetYaxis().SetTitle("R [mm]")
    TH2_HitMap.GetYaxis().SetTitleOffset(0.8)
    TH2_HitMap.GetYaxis().SetTitleSize(0.045)
    TH2_HitMap.Draw("COL Z CJUST SAME")

    c.SaveAs(out_file_name+".root")
    c.SaveAs(out_file_name+".pdf")

path1="/scratchfs/atlas/lizhan/cepc/CEPCSW/test-SIT.root"

VXDOutFile="/scratchfs/atlas/lizhan/cepc/CEPCSW/VXDHM.root"
SITOutFile="/scratchfs/atlas/lizhan/cepc/CEPCSW/SITHM.root"
SETOutFile="/scratchfs/atlas/lizhan/cepc/CEPCSW/SETHM.root"
GetVXDHitMapFromFile(path1,VXDOutFile)
GetSITHitMapFromFile(path1,SITOutFile)
GetSETHitMapFromFile(path1,SETOutFile)

DrawHitMap(VXDOutFile,"VXDHitMap","Full_VXDHM_1evt")
DrawHitMap(SITOutFile,"SITHitMap","Full_SITHM_1evt")
DrawHitMap(SETOutFile,"SETHitMap","Full_SETHM_1evt")