Skip to content

Draft: adapt for use of velo hit efficiencies

Titus Mombaecher requested to merge tm-velohiteff into 2024-patches

Goes with Rec!3907 Adaptations to make use of VELO hit efficiencies. In principle NOT FOR MERGE.

usage:

from ROOT import TFile
def hitMapMaker():
    dataFile = TFile.Open("/eos/lhcb/user/m/mwaterla/ftHitEfficiencyFiles/combinedEfficiencies.root")
    mcFile = TFile.Open("/eos/lhcb/user/m/mwaterla/ftHitEfficiencyFiles/combinedFTMC.root")
    vals = [0]*4096
    for layer in range(0,12):
        hmc = mcFile.Get("FTHitEfficiencyLayer"+str(layer)+"/EfficiencyVsSipm")
        hdata = dataFile.Get("FTHitEfficiencyLayer"+str(layer)+"/EfficiencyVsSipm")
        for iBin in range(1,4097):
            if(hmc.GetBinContent(iBin) > 0):
                content = hdata.GetBinContent(iBin)/hmc.GetBinContent(iBin)
            else:
                content = hdata.GetBinContent(iBin)
            #content = hdata.GetBinContent(iBin)/targetEff                                                                                                                                                  
            vals[iBin-1] =  max(vals[iBin-1],content)
    mcFile.Close()
    dataFile.Close()
    return vals

def VELOhitMapMaker():
    nstations = 26
    nmodules_per_station = 2
    nsensors_per_module = 4
    File = TFile.Open("/eos/lhcb/user/t/tmombach/hitEfficiencies2023_withMCRatio.root")
    vals = [0]*208*16*16*3
    for station in range(nstations):
        for module in range(nmodules_per_station):
               global_module_id = station * nmodules_per_station + module
               for sensor in range(nsensors_per_module):
                      global_sensor_id = global_module_id * nsensors_per_module + sensor
                      hratio = File.Get("ratio_hiteff_sensor"+str(global_sensor_id)+"_module"+str(global_module_id)+"_station"+str(station))
                      for iBinx in range(1,49):
                        for iBiny in range(1,17):
                               content = hratio.GetBinContent(iBinx,iBiny)
                               pixelindex = ((global_sensor_id * 48 + (iBinx-1)) * 16) + (iBiny-1)
                               vals[pixelindex] =  max(vals[pixelindex],content)
                               # print(pixelindex,":",vals[pixelindex])
    return vals


# import json
# eff_file = open("efficienciesTitus.json")
# eff_dict = json.load(eff_file)

# eff_list = []
# for i in range(624):
#    eff_list.append(eff_dict[str(i)]["eff"])
with reconstruction.bind(from_file=False),\
     make_VeloClusterTrackingSIMD.bind(algorithm=VeloRetinaClusterTrackingSIMD, SkipForward=4, rowcolumn_efficiencies=VELOhitMapMaker()),\
     PrStoreSciFiHits.bind(AdditionalHitEfficiencyMap=hitMapMaker()), PrHybridSeeding.bind(nCasesUsed=4),\
[...]
Edited by Titus Mombaecher

Merge request reports