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