File indexing completed on 2024-04-06 12:11:51
0001 #include "FWPFTrackRPZProxyBuilder.h"
0002
0003
0004 void FWPFTrackRPZProxyBuilder::build(const reco::Track &iData,
0005 unsigned int iIndex,
0006 TEveElement &oItemHolder,
0007 const FWViewContext *vc) {
0008 FWPFTrackUtils *utils = new FWPFTrackUtils();
0009 TEveTrack *trk = utils->setupTrack(iData);
0010 TEvePointSet *ps = utils->getCollisionMarkers(trk);
0011 TEvePointSet *rzps = new TEvePointSet();
0012 setupAddElement(trk, &oItemHolder);
0013
0014 Float_t *trackPoints = trk->GetP();
0015 unsigned int last = (trk->GetN() - 1) * 3;
0016 float y = trackPoints[last + 1];
0017 float z = trackPoints[last + 2];
0018
0019
0020 for (signed int i = 0; i < ps->GetN(); ++i) {
0021
0022 Float_t a, b, c;
0023 ps->GetPoint(i, a, b, c);
0024
0025 if (y < 0 && b > 0)
0026 b *= -1;
0027 else if (y > 0 && b < 0)
0028 b *= -1;
0029
0030 if (z < 0 && c > 0)
0031 c *= -1;
0032 else if (z > 0 && c < 0)
0033 c *= -1;
0034
0035 rzps->SetNextPoint(a, b, c);
0036 }
0037
0038 if (rzps->GetN() != 0)
0039 setupAddElement(rzps, &oItemHolder);
0040 else
0041 delete rzps;
0042
0043 delete ps;
0044 delete utils;
0045 }
0046
0047
0048 REGISTER_FWPROXYBUILDER(FWPFTrackRPZProxyBuilder,
0049 reco::Track,
0050 "PF Tracks",
0051 FWViewType::kRhoPhiPFBit | FWViewType::kRhoZBit);