File indexing completed on 2024-04-06 12:11:29
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 #include "TEveTrack.h"
0014
0015
0016 #include "Fireworks/Core/interface/FWSimpleProxyBuilderTemplate.h"
0017 #include "Fireworks/Core/interface/Context.h"
0018
0019 #include "Fireworks/Candidates/interface/CandidateUtils.h"
0020
0021 #include "DataFormats/Candidate/interface/Candidate.h"
0022
0023 class FWCandidatePtrProxyBuilder : public FWSimpleProxyBuilderTemplate<reco::CandidatePtr> {
0024 public:
0025 FWCandidatePtrProxyBuilder() {}
0026 ~FWCandidatePtrProxyBuilder() override {}
0027
0028 REGISTER_PROXYBUILDER_METHODS();
0029
0030 FWCandidatePtrProxyBuilder(const FWCandidatePtrProxyBuilder&) = delete;
0031 const FWCandidatePtrProxyBuilder& operator=(const FWCandidatePtrProxyBuilder&) = delete;
0032
0033 private:
0034 using FWSimpleProxyBuilderTemplate<reco::CandidatePtr>::build;
0035 void build(const reco::CandidatePtr& iData,
0036 unsigned int iIndex,
0037 TEveElement& oItemHolder,
0038 const FWViewContext*) override;
0039 };
0040
0041 void FWCandidatePtrProxyBuilder::build(const reco::CandidatePtr& iData,
0042 unsigned int iIndex,
0043 TEveElement& oItemHolder,
0044 const FWViewContext*) {
0045 TEveTrack* trk = fireworks::prepareCandidate(*iData, context().getTrackPropagator());
0046
0047 trk->MakeTrack();
0048 setupAddElement(trk, &oItemHolder);
0049 {
0050 TEveRecTrack t;
0051 t.fBeta = 1.;
0052 t.fV = TEveVector(iData->vx(), iData->vy(), iData->vz());
0053 t.fP = TEveVector(-iData->p4().px(), -iData->p4().py(), -iData->p4().pz());
0054 t.fSign = iData->charge();
0055 TEveTrack* trk2 = new TEveTrack(&t, context().getTrackPropagator());
0056 trk2->SetLineStyle(7);
0057 trk2->MakeTrack();
0058 setupAddElement(trk2, &oItemHolder);
0059 }
0060 }
0061
0062
0063
0064
0065 REGISTER_FWPROXYBUILDER(FWCandidatePtrProxyBuilder,
0066 reco::CandidatePtr,
0067 "CandidatePtrs",
0068 FWViewType::kAll3DBits | FWViewType::kAllRPZBits);