49 def readTrackParticle(self):
50 inputFileName = getCSVFilename(self.indir, self.trackParticleName, self.getEventNumber())
51 if not os.path.exists(inputFileName):
52 self.msg.warning("Missing file %s, this will result in missing collections in certain events which is not allowed by POOL &ROOT ", inputFileName)
53 return StatusCode.Recoverable
54
55
56 c = ROOT.xAOD.TrackParticleContainer()
57 aux = ROOT.xAOD.TrackParticleAuxContainer()
58 c.setStore (aux)
59 ROOT.SetOwnership (c,False)
60 ROOT.SetOwnership (aux,False)
61
62
63 with open(inputFileName, "r") as f:
64 reader = csv.DictReader(f)
65 for k in reader.fieldnames:
66 if k not in CSV_DictFormats["InDetTrackParticles"].keys():
67 self.msg.
error(
"A key: %s found in data that does not seem to be known", k)
68 return StatusCode.Failure
69
70 for data in reader:
71 tp = ROOT.xAOD.TrackParticle()
72 c.push_back(tp)
73 ROOT.SetOwnership (tp, False)
74 covm = ROOT.xAOD.ParametersCovMatrix_t()
75 covm.setZero()
76 theta = 2.0 * math.atan( math.exp(-float(data['eta'])))
77 tp.setDefiningParameters(float(data['d0']), float(data['z0']), float(data['phi']),
78 theta,
79 float(data['charge']) * math.sin(theta)/float(data['pt']))
80 tp.setDefiningParametersCovMatrix(covm)
81 pass
82
83 if not self.evtStore.record (c, self.trackParticleName, False):
84 return StatusCode.Failure
85 if not self.evtStore.record (aux, f'{self.trackParticleName}Aux.', False):
86 return StatusCode.Failure
87
88 return StatusCode.Success
89
90