CMS 3D CMS Logo

FWTrackProxyBuilderFullFramework.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: Tracks
4 // Class : FWTrackProxyBuilder
5 //
6 // Implementation:
7 // <Notes on implementation>
8 //
9 // Original Author: Chris Jones
10 // Created: Tue Nov 25 14:42:13 EST 2008
11 //
12 
13 // system include files
14 #include "TEveManager.h"
15 #include "TEveBrowser.h"
16 #include "TEveTrack.h"
17 #include "TEvePointSet.h"
18 #include "TEveCompound.h"
19 
20 // user include files
24 
32 
34 public:
37 
39 
40  void setItem(const FWEventItem* iItem) override;
41  bool visibilityModelChanges(const FWModelId&, TEveElement*, FWViewType::EType, const FWViewContext*) override;
42 
43 private:
45  const FWTrackProxyBuilderFullFramework& operator=(const FWTrackProxyBuilderFullFramework&) = delete; // stop default
46 
47  void build(const FWEventItem* iItem, TEveElementList* product, const FWViewContext*) override;
49 
50  TEveTrackPropagator* m_trackerPropagator;
52 };
53 
55  : m_trackerPropagator(nullptr), m_trajToTrackMap(nullptr) {
56  m_trackerPropagator = new TEveTrackPropagator();
57  m_trackerPropagator->SetStepper(TEveTrackPropagator::kRungeKutta);
58  m_trackerPropagator->SetDelta(0.01);
59  m_trackerPropagator->SetMaxOrbs(0.7);
60  m_trackerPropagator->IncDenyDestroy();
61 }
62 
64 
67  if (iItem) {
68  m_trackerPropagator->SetMagFieldObj(context().getField(), false);
69  iItem->getConfig()->assertParam("Rnr TrajectoryMeasurement", false);
70  }
71 }
72 
74  TEveElementList* product,
75  const FWViewContext* vc) {
76  const reco::TrackCollection* tracks = nullptr;
77  iItem->get(tracks);
78  if (tracks == nullptr)
79  return;
80 
81  try {
82  const edm::EventBase* event = item()->getEvent();
83  edm::InputTag tag(item()->moduleLabel(), item()->productInstanceLabel(), item()->processName());
84  edm::Handle<TrajTrackAssociationCollection> trajTrackAssociationHandle;
85  event->getByLabel(tag, trajTrackAssociationHandle);
86  m_trajToTrackMap = &*trajTrackAssociationHandle;
87  } catch (cms::Exception& exception) {
88  m_trajToTrackMap = nullptr;
89  std::cout << exception.what() << std::endl;
90  }
91 
92  if (m_trajToTrackMap) {
93  bool rnrPathMarks = item()->getConfig()->value<bool>("Rnr TrajectoryMeasurement");
94  if (m_trackerPropagator->GetRnrReferences() != rnrPathMarks)
95  m_trackerPropagator->SetRnrReferences(rnrPathMarks);
96 
97  unsigned track_index = 0;
99  ++it, ++track_index) {
100  TEveCompound* comp = createCompound();
101  setupAddElement(comp, product);
102 
103  if (item()->modelInfo(track_index).displayProperties().isVisible())
104  buildTrack(it, comp);
105  }
106  } else {
107  for (reco::TrackCollection::const_iterator i = tracks->begin(); i != tracks->end(); ++i) {
108  const reco::Track& track = *i;
109  TEveRecTrack ts;
110  ts.fBeta = 1.;
111  ts.fSign = track.charge();
112  ts.fP.Set(track.px(), track.py(), track.pz());
113  ts.fV.Set(track.vx(), track.vy(), track.vz());
114  TEveTrack* eveTrack = new TEveTrack(&ts, m_trackerPropagator);
115  eveTrack->MakeTrack();
116  TEveCompound* comp = createCompound();
117  setupAddElement(comp, product);
118  setupAddElement(eveTrack, comp);
119  }
120  }
121 
122  gEve->GetBrowser()->MapWindow();
123 }
124 
126  TEveCompound* comp) {
127  const reco::Track& track = *it->val;
128  const Trajectory& traj = *it->key;
129 
130  TEveRecTrack ts;
131  ts.fBeta = 1.;
132  ts.fSign = track.charge();
133  ts.fP.Set(track.px(), track.py(), track.pz());
134  ts.fV.Set(track.vx(), track.vy(), track.vz());
135  TEveTrack* eveTrack = new TEveTrack(&ts, m_trackerPropagator);
136 
137  // path-marks from a trajectory
138  std::vector<TrajectoryMeasurement> measurements = traj.measurements();
139  std::vector<TrajectoryMeasurement>::iterator measurements_it = measurements.begin();
140  std::vector<TrajectoryMeasurement>::reverse_iterator measurements_rit = measurements.rbegin();
141  for (size_t t = 0; t != measurements.size(); ++t, ++measurements_it, ++measurements_rit) {
142  TrajectoryStateOnSurface trajState =
143  (traj.direction() == alongMomentum) ? measurements_it->updatedState() : measurements_rit->updatedState();
144 
145  if (!trajState.isValid())
146  continue;
147 
148  eveTrack->AddPathMark(TEvePathMark(
149  TEvePathMark::kReference,
150  TEveVector(trajState.globalPosition().x(), trajState.globalPosition().y(), trajState.globalPosition().z()),
151  TEveVector(trajState.globalMomentum().x(), trajState.globalMomentum().y(), trajState.globalMomentum().z())));
152  }
153 
154  eveTrack->MakeTrack();
155  setupAddElement(eveTrack, comp);
156 }
157 
159  TEveElement* iCompound,
160  FWViewType::EType viewType,
161  const FWViewContext* vc) {
162  const FWEventItem::ModelInfo& info = iId.item()->modelInfo(iId.index());
163  bool returnValue = false;
164  if (info.displayProperties().isVisible() && iCompound->NumChildren() == 0 && m_trajToTrackMap) {
166  std::advance(it, iId.index());
167  buildTrack(it, (TEveCompound*)iCompound);
168  returnValue = true;
169  }
170  return returnValue;
171 }
172 
175  "TracksTrajectory",
PDWG_EXOHSCP_cff.tracks
tracks
Definition: PDWG_EXOHSCP_cff.py:28
FWEventItem::modelInfo
ModelInfo modelInfo(int iIndex) const
Definition: FWEventItem.cc:446
mps_fire.i
i
Definition: mps_fire.py:355
FWSimpleProxyBuilderTemplate.h
ESHandle.h
FWViewType::EType
EType
Definition: FWViewType.h:31
FWEventItem::getConfig
FWProxyBuilderConfiguration * getConfig() const
Definition: FWEventItem.h:150
FWTrackProxyBuilderFullFramework::FWTrackProxyBuilderFullFramework
FWTrackProxyBuilderFullFramework()
Definition: FWTrackProxyBuilderFullFramework.cc:54
PV3DBase::x
T x() const
Definition: PV3DBase.h:59
Trajectory::direction
PropagationDirection const & direction() const
Definition: Trajectory.cc:133
FWViewType::kAllRPZBits
static const int kAllRPZBits
Definition: FWViewType.h:67
REGISTER_FWPROXYBUILDER
#define REGISTER_FWPROXYBUILDER(_name_, _type_, _purpose_, _view_)
Definition: FWProxyBuilderFactory.h:33
FWModelId
Definition: FWModelId.h:28
FWEventItem::get
void get(const T *&oData) const
Definition: FWEventItem.h:78
FWTrackProxyBuilderFullFramework::m_trackerPropagator
TEveTrackPropagator * m_trackerPropagator
Definition: FWTrackProxyBuilderFullFramework.cc:50
TrajectoryStateOnSurface::globalPosition
GlobalPoint globalPosition() const
Definition: TrajectoryStateOnSurface.h:65
gather_cfg.cout
cout
Definition: gather_cfg.py:144
FWTrackProxyBuilderFullFramework::operator=
const FWTrackProxyBuilderFullFramework & operator=(const FWTrackProxyBuilderFullFramework &)=delete
REGISTER_PROXYBUILDER_METHODS
#define REGISTER_PROXYBUILDER_METHODS()
Definition: register_dataproxybuilder_macro.h:28
info
static const TGPicture * info(bool iBackgroundIsBlack)
Definition: FWCollectionSummaryWidget.cc:152
FWModelId::item
const FWEventItem * item() const
Definition: FWModelId.h:39
EventBase.h
FWTrackProxyBuilderFullFramework::setItem
void setItem(const FWEventItem *iItem) override
Definition: FWTrackProxyBuilderFullFramework.cc:65
edm::Handle
Definition: AssociativeIterator.h:50
FWProxyBuilderBase::createCompound
TEveCompound * createCompound(bool set_color=true, bool propagate_color_to_all_children=false) const
Definition: FWProxyBuilderBase.cc:374
AlCaHLTBitMon_QueryRunRegistry.comp
comp
Definition: AlCaHLTBitMon_QueryRunRegistry.py:249
FWViewType::kAll3DBits
static const int kAll3DBits
Definition: FWViewType.h:68
PV3DBase::z
T z() const
Definition: PV3DBase.h:61
FWEventItem::ModelInfo
Definition: FWEventItem.h:58
edm::AssociationMap::end
const_iterator end() const
last iterator over the map (read only)
Definition: AssociationMap.h:171
TrajectoryStateOnSurface
Definition: TrajectoryStateOnSurface.h:16
Track.h
TrackFwd.h
FWTrackProxyBuilderFullFramework::buildTrack
void buildTrack(TrajTrackAssociationCollection::const_iterator it, TEveCompound *comp)
Definition: FWTrackProxyBuilderFullFramework.cc:125
GlobalPosition_Frontier_DevDB_cff.tag
tag
Definition: GlobalPosition_Frontier_DevDB_cff.py:11
reco::Track
Definition: Track.h:27
OrderedSet.t
t
Definition: OrderedSet.py:90
FWModelId::index
int index() const
Definition: FWModelId.h:41
TrajTrackAssociation.h
CaloRecHitAuxSetter::getField
constexpr unsigned getField(const uint32_t u, const unsigned mask, const unsigned offset)
Definition: CaloRecHitAuxSetter.h:13
FWProxyBuilderConfiguration::assertParam
FWGenericParameter< T > * assertParam(const std::string &name, T def)
Definition: FWProxyBuilderConfiguration.cc:83
FWEventItem::getEvent
const edm::EventBase * getEvent() const
Definition: FWEventItem.h:131
edm::AssociationMap< edm::OneToOne< std::vector< Trajectory >, reco::TrackCollection, unsigned short > >::const_iterator
friend struct const_iterator
Definition: AssociationMap.h:274
cppFunctionSkipper.exception
exception
Definition: cppFunctionSkipper.py:10
edm::AssociationMap< edm::OneToOne< std::vector< Trajectory >, reco::TrackCollection, unsigned short > >
FWTrackProxyBuilderFullFramework::m_trajToTrackMap
const TrajTrackAssociationCollection * m_trajToTrackMap
Definition: FWTrackProxyBuilderFullFramework.cc:51
FWProxyBuilderConfiguration.h
PV3DBase::y
T y() const
Definition: PV3DBase.h:60
FWProxyBuilderBase::setupAddElement
void setupAddElement(TEveElement *el, TEveElement *parent, bool set_color=true) const
Definition: FWProxyBuilderBase.cc:350
FWTrackProxyBuilderFullFramework::visibilityModelChanges
bool visibilityModelChanges(const FWModelId &, TEveElement *, FWViewType::EType, const FWViewContext *) override
Definition: FWTrackProxyBuilderFullFramework.cc:158
FWProxyBuilderBase::build
void build()
Definition: FWProxyBuilderBase.cc:110
FWEventItem.h
FWTrackProxyBuilderFullFramework::~FWTrackProxyBuilderFullFramework
~FWTrackProxyBuilderFullFramework() override
Definition: FWTrackProxyBuilderFullFramework.cc:63
FWViewContext
Definition: FWViewContext.h:32
PropagationDirection.h
Trajectory::measurements
DataContainer const & measurements() const
Definition: Trajectory.h:178
SimL1EmulatorRepack_CalouGT_cff.processName
processName
Definition: SimL1EmulatorRepack_CalouGT_cff.py:17
FWMagField.h
FWProxyBuilderBase::item
const FWEventItem * item() const
Definition: FWProxyBuilderBase.h:64
FWTrackProxyBuilderFullFramework
Definition: FWTrackProxyBuilderFullFramework.cc:33
TrajectoryStateOnSurface::globalMomentum
GlobalVector globalMomentum() const
Definition: TrajectoryStateOnSurface.h:66
FWEventItem
Definition: FWEventItem.h:56
FWProxyBuilderConfiguration::value
T value(const std::string &name)
Definition: FWProxyBuilderConfiguration.cc:123
Trajectory
Definition: Trajectory.h:38
FWProxyBuilderBase
Definition: FWProxyBuilderBase.h:46
edm::EventBase
Definition: EventBase.h:46
edm::AssociationMap::begin
const_iterator begin() const
first iterator over the map (read only)
Definition: AssociationMap.h:169
FWProxyBuilderBase::context
const fireworks::Context & context() const
Definition: FWProxyBuilderBase.cc:412
HLT_2018_cff.track
track
Definition: HLT_2018_cff.py:10352
cms::Exception
Definition: Exception.h:70
HerwigMaxPtPartonFilter_cfi.moduleLabel
moduleLabel
Definition: HerwigMaxPtPartonFilter_cfi.py:4
FWProxyBuilderBase::setItem
virtual void setItem(const FWEventItem *iItem)
Definition: FWProxyBuilderBase.cc:83
edm::InputTag
Definition: InputTag.h:15
reco::TrackCollection
std::vector< Track > TrackCollection
collection of Tracks
Definition: TrackFwd.h:14
alongMomentum
Definition: PropagationDirection.h:4
TrajectoryStateOnSurface::isValid
bool isValid() const
Definition: TrajectoryStateOnSurface.h:54