53 useGsfTracks_(conf.getParameter<
bool>(
"UseGsfTracks")),
55 mtsTransform_(nullptr),
57 cacheIDMagField_(0) {}
64 bool updateField(
false);
72 bool updateGeometry(
false);
74 updateGeometry =
true;
103 process(tracksH, gsfTracksH, outEle,
bs);
113 for (
unsigned int i = 0;
i < tracksH->size(); ++
i) {
127 float scale = scRef->energy() / tscp.momentum().mag();
130 tscp.momentum().x() *
scale, tscp.momentum().y() *
scale, tscp.momentum().z() *
scale, scRef->energy());
132 Electron ele(trackRef->charge(), momentum, trackRef->vertex());
133 ele.setSuperCluster(scRef);
136 outEle.push_back(ele);
140 std::vector<unsigned int>
flag(gsfTracksH->size(), 0);
141 if (gsfTracksH->empty())
144 for (
unsigned int i = 0;
i < gsfTracksH->size() - 1; ++
i) {
152 float pin1 = trackRef1->pMode();
158 for (
unsigned int j =
i + 1;
j < gsfTracksH->size(); ++
j) {
166 float pin2 = trackRef2->pMode();
172 if (scRef1 == scRef2) {
173 bool isSameLayer =
false;
176 if (iGsfInnermostWithLostHits) {
178 }
else if (isSameLayer) {
179 if (fabs((scRef1->energy() / pin1) - 1) < fabs((scRef2->energy() / pin2) - 1))
188 for (
unsigned int i = 0;
i < gsfTracksH->size(); ++
i) {
205 float scale = scRef->energy() / innMom.
mag();
209 Electron ele(trackRef->charge(), momentum, trackRef->vertex());
210 ele.setSuperCluster(scRef);
212 ele.setGsfTrack(myRef);
213 outEle.push_back(ele);
222 unsigned int nLostHits = nGsfTrack->hitPattern().numberOfLostHits(HitPattern::MISSING_INNER_HITS);
223 unsigned int iLostHits = iGsfTrack->hitPattern().numberOfLostHits(HitPattern::MISSING_INNER_HITS);
225 if (nLostHits != iLostHits) {
226 return (nLostHits > iLostHits);