46def TrackCountHypoToolGen(flags, chainDict):
47 def ptToGeV(v):
48 if "p" in v:
49 sv = v.split("p")
50 return int(sv[0])+0.1*int(sv[1])
51 else:
52 return int(v)
53
54 hypo = CompFactory.TrackCountHypoTool(chainDict["chainName"])
55 if "hmt" in chainDict["chainName"]:
56 hypo.minNtrks = int(chainDict[
"chainParts"][0][
"hypoTrkInfo"].
strip(
"trk"))
57 hypo.minPt = 200*Units.MeV
58 if "pusup" in chainDict["chainName"]:
59 hypo.maxVertexZ = 10*Units.mm
60 if "mb_sptrk" in chainDict["chainName"]:
61 hypo.minPt = 100*Units.MeV
62 hypo.maxZ0 = 401*Units.millimeter
63 if "_pt" in chainDict["chainName"]:
64 hypo.minPt = ptToGeV(chainDict[
"chainParts"][0][
"hypoPtInfo"].
strip(
"pt"))*Units.GeV
65 if "_trk" in chainDict["chainName"]:
66 hypo.minNtrks = int(chainDict[
"chainParts"][0][
"hypoTrkInfo"].
strip(
"trk"))
67 if "excl" in chainDict["chainName"]:
68 hypo.exclusive = True
69 hypo.minPt = ptToGeV(chainDict[
"chainParts"][0][
"hypoPtInfo"].
strip(
"pt"))*Units.GeV
70 trk = chainDict["chainParts"][0]["hypoTrkInfo"]
71
72 limits = trk[0:trk.index("trk")], trk[trk.index("trk")+3:]
73 hypo.minNtrks = int(limits[0])
74 hypo.maxNtrks = int(limits[1])
75 if "mb_pixsptrk" in chainDict["chainName"]:
76 hypo.minPt = 100*Units.MeV
77 hypo.maxZ0 = 401*Units.millimeter
78
79
80 return hypo
81