CMS 3D CMS Logo

FWPFCandidateDetailView.cc
Go to the documentation of this file.
1 // ROOT includes
2 #include "TEveScene.h"
3 #include "TEveManager.h"
4 #include "TEveStraightLineSet.h"
5 #include "TEveTrack.h"
6 #include "TEveTrackPropagator.h"
7 #include "TEveTrans.h"
8 #include "TEveText.h"
9 #include "TEveGeoShape.h"
10 #include "TGLViewer.h"
11 #include "TGLScenePad.h"
12 #include "TCanvas.h"
13 #include "TLatex.h"
14 #include "TLegend.h"
15 
16 #include "TH2.h"
17 
18 #include "TAxis.h"
19 #include "TGSlider.h"
20 #include "TGButton.h"
21 #include "TGLabel.h"
22 #include "TGLCameraOverlay.h"
23 
24 // boost includes
25 #include "boost/bind.hpp"
26 
29 
39 
41 
48 
50  : m_range(1),
51  m_candidate(nullptr),
52  m_legend(nullptr),
53  m_slider(nullptr),
54  m_sliderListener(),
55  m_eventList(nullptr),
56  m_plotEt(true),
57  m_rnrHcal(true) {}
58 
60 
62 
64 
66  float dx = m_candidate->eta() - x;
67  float dy = m_candidate->phi() - y;
68  float sd = TMath::Sqrt(dx * dx + dy * dy);
69  return sd < m_range;
70 }
71 
72 //______________________________________________________________________________
73 
75  m_legend = new TLegend(0.01, 0.01, 0.99, 0.99, nullptr, "NDC");
76  m_legend->SetFillColor(kWhite);
77  m_legend->SetTextSize(0.07);
78  m_legend->SetBorderSize(0);
79  m_legend->SetMargin(0.15);
80  m_legend->SetEntrySeparation(0.01);
81 }
82 
83 //______________________________________________________________________________
84 
86  static float kSliderRangeFactor = 0.2;
87 
88  m_range = x * kSliderRangeFactor;
89 
90  if (m_eventList)
92 
93  gEve->Redraw3D();
94 }
95 
96 //______________________________________________________________________________
97 
99  m_infoCanvas->cd();
100 
101  float_t x = 0.02;
102  float y = 0.95;
103 
104  TLatex* latex = new TLatex(x, y, "");
105  const double textsize(0.07);
106  latex->SetTextSize(textsize);
107 
108  latex->DrawLatex(x, y, id.item()->modelName(id.index()).c_str());
109  y -= latex->GetTextSize() * 0.6;
110 
111  latex->SetTextSize(textsize);
112  float lineH = latex->GetTextSize() * 0.6;
113 
114  latex->DrawLatex(
115  x, y, Form(" P_{T} = %.1f GeV, #eta = %0.2f, #varphi = %0.2f", track->pt(), track->eta(), track->phi()));
116  y -= lineH;
117 
118  if (track->charge() > 0)
119  latex->DrawLatex(x, y, " charge = +1");
120  else
121  latex->DrawLatex(x, y, " charge = -1");
122  y -= lineH;
123  y -= lineH;
124 
125  m_legend->SetY2(y);
126  m_legend->Draw();
127  m_legend = nullptr; // Deleted together with TPad.
128 }
129 
131  printf("plotEt = %d \n", m_plotEt);
132  m_plotEt = !m_plotEt;
134 }
135 
137  printf("rnrHcal = %d \n", m_rnrHcal);
138  m_rnrHcal = !m_rnrHcal;
140 }
141 
142 //______________________________________________________________________________
143 
144 void FWPFCandidateDetailView::build(const FWModelId& id, const reco::PFCandidate* candidate) {
145  m_candidate = candidate;
146 
147  // ROOT GUI
148  //
149  {
150  TGCompositeFrame* f = new TGVerticalFrame(m_guiFrame);
151  m_guiFrame->AddFrame(f);
152  f->AddFrame(new TGLabel(f, "Rng:"), new TGLayoutHints(kLHintsLeft, 2, 2, 0, 0));
153  m_slider = new TGHSlider(f, 120, kSlider1 | kScaleNo);
154  f->AddFrame(m_slider, new TGLayoutHints(kLHintsTop | kLHintsLeft, 2, 2, 1, 4));
155  m_slider->SetRange(1, 50);
156  m_slider->SetPosition(8);
157 
159  TQObject::Connect(
160  m_slider, "PositionChanged(Int_t)", "FWIntValueListenerBase", m_sliderListener, "setValue(Int_t)");
161  m_sliderListener->valueChanged_.connect(boost::bind(&FWPFCandidateDetailView::rangeChanged, this, _1));
162  {
163  CSGAction* action = new CSGAction(this, "Scale Et");
164  TGCheckButton* b = new TGCheckButton(m_guiFrame, action->getName().c_str());
165  b->SetState(kButtonDown, true);
166  m_guiFrame->AddFrame(b, new TGLayoutHints(kLHintsNormal, 2, 3, 1, 4));
167  TQObject::Connect(b, "Clicked()", "CSGAction", action, "activate()");
168  action->activated.connect(sigc::mem_fun(this, &FWPFCandidateDetailView::plotEtChanged));
169  }
170  {
171  CSGAction* action = new CSGAction(this, "RnrHcal");
172  TGCheckButton* b = new TGCheckButton(m_guiFrame, action->getName().c_str());
173  b->SetState(kButtonDown, true);
174  m_guiFrame->AddFrame(b, new TGLayoutHints(kLHintsNormal, 2, 3, 1, 4));
175  TQObject::Connect(b, "Clicked()", "CSGAction", action, "activate()");
176  action->activated.connect(sigc::mem_fun(this, &FWPFCandidateDetailView::rnrHcalChanged));
177  }
178  }
179  makeLegend();
180  setTextInfo(id, candidate);
181 
182  TGCompositeFrame* p = (TGCompositeFrame*)m_guiFrame->GetParent();
183  p->MapSubwindows();
184  p->Layout();
185 
187  // GL stuff
188 
189  m_candidate = candidate;
190 
191  try {
194  event->getByLabel(edm::InputTag("particleFlowRecHitECAL"), ecalH);
195  if (ecalH.product())
196  voteMaxEtEVal(ecalH.product());
197 
199  event->getByLabel(edm::InputTag("particleFlowRecHitHBHEHO"), hcalH);
200  if (hcalH.product())
201  voteMaxEtEVal(hcalH.product());
202  } catch (const cms::Exception& iE) {
203  std::cerr << iE.what();
204  }
205 
206  m_eveScene->GetGLScene()->SetSelectable(false);
207  m_eventList = new TEveElementList("PFDetailView");
208  m_eveScene->AddElement(m_eventList);
209 
210  viewerGL()->SetStyle(TGLRnrCtx::kOutline);
211  viewerGL()->SetCurrentCamera(TGLViewer::kCameraOrthoXOY);
212 
213  TGLCameraOverlay* co = viewerGL()->GetCameraOverlay();
214  co->SetShowOrthographic(kTRUE);
215  co->SetOrthographicMode(TGLCameraOverlay::kAxis);
216 
217  viewerGL()->ResetCamerasAfterNextUpdate();
218  try {
220  } catch (...) {
221  printf("unknown exception \n");
222  }
223 
224  viewerGL()->UpdateScene(kFALSE);
225 
226  gEve->Redraw3D();
227 
228  // gEve->AddToListTree(m_eventList, true);//debug, used with --eve option
229 }
230 
231 //______________________________________________________________________________
232 
233 void FWPFCandidateDetailView::voteMaxEtEVal(const std::vector<reco::PFRecHit>* hits) {
234  if (!hits)
235  return;
236 
237  // FIXME: require access to geometry while reading from reco file
238  if ((!hits->empty()) && hits->front().hasCaloCell())
239  for (std::vector<reco::PFRecHit>::const_iterator it = hits->begin(); it != hits->end(); ++it) {
240  TEveVector centre(it->position().x(), it->position().y(), it->position().z());
241  float E = it->energy();
242  float Et = FWPFMaths::calculateEt(centre, E);
243  item()->context().voteMaxEtAndEnergy(Et, E);
244  }
245 }
246 
247 //______________________________________________________________________________
248 
249 void FWPFCandidateDetailView::addTracks(const std::vector<reco::PFRecTrack>* tracks) {
250  for (std::vector<reco::PFRecTrack>::const_iterator it = tracks->begin(); it != tracks->end(); ++it) {
252  /*
253  if (!isPntInRng(it->trackRef().innerMomentum().Eta(), it->position().Phi()))
254  continue;
255 
256  TEveLine* line = new TEveLine("Track");
257  line->SetMainColor(kYellow);
258  int N = it->nTrajectoryPoints();
259 
260  for (int p = 0 ; p<N; ++p) {
261  pos = track.extrapolatedPoint(p).position();
262 
263  if( pos.Eta() !=0 and pos.Phi() !=0)
264  line->SetNextPoint(pos.Eta(), pos.Phi(), 0);
265  }
266  m_eventList->AddElement(line);
267  */
268  }
269 }
270 
271 //______________________________________________________________________________
272 
273 void FWPFCandidateDetailView::addClusters(const std::vector<reco::PFCluster>* cluster) {
274  if (!cluster)
275  return;
276 
277  Color_t col = kViolet + 9;
278 
279  TEveStraightLineSet* ls = new TEveStraightLineSet("cluster_ls");
280  ls->SetMainColor(col);
281  m_eventList->AddElement(ls);
282 
283  TEvePointSet* ps = new TEvePointSet("cluster_ps");
284  ps->SetMainColor(col);
285  ps->SetMarkerStyle(2);
286  ps->SetMarkerSize(0.005);
287  m_eventList->AddElement(ps);
288 
289  for (std::vector<reco::PFCluster>::const_iterator it = cluster->begin(); it != cluster->end(); ++it) {
290  if (!isPntInRng(it->position().Eta(), it->position().Phi()))
291  continue;
292 
293  ps->SetNextPoint(it->position().Eta(), it->position().Phi(), 0);
294 
295  /*
296  const std::vector< reco::PFRecHitFraction >& fractions = it->recHitFractions();
297  for (std::vector< reco::PFRecHitFraction >::const_iterator fi = fractions.begin(); fi != fractions.end(); ++fi)
298  {
299  // !!! AMT can't get fi->recHitRef().position()
300  // ls->AddLine(it->position().Eta(), it->position().Phi(), 0,
301  // fi->recHitRef().position().Eta(), fi->recHitRef().position().Phi(), 0);
302  }
303  */
304  }
305 }
306 namespace {
307  void WrapTwoPi(std::vector<TEveVector>& hc, float y) {
308  if (TMath::Abs(hc[0].fY) < 2)
309  return;
310 
311  if (hc[0].fY > 0 && hc[1].fY > 0 && hc[2].fY > 0 && hc[3].fY > 0)
312  return;
313  if (hc[0].fY < 0 && hc[1].fY < 0 && hc[2].fY < 0 && hc[3].fY < 0)
314  return;
315 
316  for (int i = 0; i < 4; ++i)
317  if (y > 0 && hc[i].fY < 0)
318  hc[i].fY += TMath::TwoPi();
319  else if (y < 0 && hc[i].fY > 0)
320  hc[i].fY -= TMath::TwoPi();
321  }
322 } // namespace
323 //______________________________________________________________________________
324 namespace {
325  TEveStraightLineSet::Line_t* AddLineToLineSet(TEveStraightLineSet* ls,
326  const std::vector<TEveVector>& pnts,
327  int i0,
328  int i1) {
329  if (false) {
330  printf("add line \n");
331  pnts[i0].Dump();
332  pnts[i1].Dump();
333  }
334  return ls->AddLine(pnts[i0], pnts[i1]);
335  // return ls->AddLine(pnts[i0].Eta(),pnts[i0].Phi(), 0 , pnts[i1].Eta(),pnts[i1].Phi(), 0);
336  }
337 } // namespace
338 void FWPFCandidateDetailView::addHits(const std::vector<reco::PFRecHit>* hits) {
339  TEveStraightLineSet* lsOutline = (TEveStraightLineSet*)m_eventList->FindChild("outlines");
340 
341  TEvePointSet* ps = new TEvePointSet("test");
342  m_eventList->AddElement(ps);
343  ps->SetMainColor(kOrange);
344 
345  // FIXME, requires access to geometry
346  if ((!hits->empty()) && hits->front().hasCaloCell())
347  for (std::vector<reco::PFRecHit>::const_iterator it = hits->begin(); it != hits->end(); ++it) {
348  const auto& corners = it->getCornersXYZ();
349  if (!isPntInRng(corners[0].eta(), corners[0].phi()))
350  continue;
351 
352  std::vector<TEveVector> hc;
353  for (int k = 0; k < 4; ++k) {
354  hc.push_back(TEveVector(corners[k].eta(), corners[k].phi(), 0));
355  // ps->SetNextPoint(corners[k].eta(),corners[k].phi(),0 ); //debug
356  }
357 
358  WrapTwoPi(hc, corners[0].phi());
359 
360  AddLineToLineSet(lsOutline, hc, 0, 1);
361  AddLineToLineSet(lsOutline, hc, 1, 2);
362  AddLineToLineSet(lsOutline, hc, 2, 3);
363  AddLineToLineSet(lsOutline, hc, 3, 0);
364 
365  // get scaled corners
366  TEveVector centerOfGravity = hc[0] + hc[1] + hc[2] + hc[3];
367  centerOfGravity *= 0.25;
368 
369  std::vector<TEveVector> radialVectors;
370  for (int k = 0; k < 4; ++k)
371  radialVectors.push_back(TEveVector(hc[k] - centerOfGravity));
372 
373  float factor = 1;
374  if (m_plotEt) {
375  float Et = FWPFMaths::calculateEt(TEveVector(corners[0].x(), corners[0].y(), corners[0].z()), it->energy());
377  } else
378  factor = it->energy() / context().getMaxEnergyInEvent(false);
379 
380  std::vector<TEveVector> scaledCorners;
381  for (int k = 0; k < 4; ++k) {
382  radialVectors[k] *= factor;
383  scaledCorners.push_back(TEveVector(radialVectors[k] + centerOfGravity));
384  }
385 
386  TEveStraightLineSet* ls = (TEveStraightLineSet*)m_eventList->FindChild(Form("%d_rechit", it->depth()));
387  AddLineToLineSet(ls, scaledCorners, 0, 1);
388  AddLineToLineSet(ls, scaledCorners, 1, 2);
389  AddLineToLineSet(ls, scaledCorners, 2, 3);
390  // AddLineToLineSet(ls, scaledCorners, 3, 0);
391  TEveStraightLineSet::Line_t* li = AddLineToLineSet(ls, scaledCorners, 3, 0);
392  ls->AddMarker(centerOfGravity, li->fId);
393  }
394 }
395 
396 //______________________________________________________________________________
397 
399  if (m_eventList->HasChildren())
400  m_eventList->DestroyElements();
401 
402  for (int depth = 0; depth < 6; ++depth) {
403  TEveStraightLineSet* ls = new TEveStraightLineSet(Form("%d_rechit", depth));
404 
405  if (depth == 0)
406  ls->SetLineColor(kGray);
407  else if (depth == 1)
408  ls->SetLineColor(kRed);
409  else if (depth == 2)
410  ls->SetLineColor(kGreen);
411  else if (depth == 3)
412  ls->SetLineColor(kMagenta);
413  else if (depth == 4)
414  ls->SetLineColor(kOrange);
415  else if (depth == 5)
416  ls->SetLineColor(kYellow);
417 
418  ls->SetMarkerStyle(1);
419  m_eventList->AddElement(ls);
420  }
421 
422  TEveStraightLineSet* ls = new TEveStraightLineSet("outlines");
423  ls->SetLineColor(kGray);
424  ls->SetMainTransparency(80);
425  m_eventList->AddElement(ls);
426 
428 
429  //
430  // recHits
431  //
432  try {
434  event->getByLabel(edm::InputTag("particleFlowRecHitECAL"), ecalH);
435  addHits(ecalH.product());
436  } catch (const cms::Exception& iE) {
437  std::cerr << iE.what();
438  }
439 
440  if (m_rnrHcal) {
441  try {
443  event->getByLabel(edm::InputTag("particleFlowRecHitHF"), ecalH);
444  addHits(ecalH.product());
445  } catch (const cms::Exception& iE) {
446  std::cerr << iE.what();
447  }
448 
449  try {
451  event->getByLabel(edm::InputTag("particleFlowRecHitHBHEHO"), hcalH);
452  addHits(hcalH.product());
453  } catch (const cms::Exception& iE) {
454  std::cerr << iE.what();
455  }
456  }
457 
458  //
459  // clusters
460  //
461  try {
463  event->getByLabel(edm::InputTag("particleFlowClusterECAL"), ecalClustersH);
464  addClusters(ecalClustersH.product());
465  } catch (const cms::Exception& iE) {
466  std::cerr << iE.what();
467  }
468 
469  //
470  // tracks
471  //
472  try {
474  event->getByLabel(edm::InputTag("pfTrack"), trackH);
475  addTracks(trackH.product());
476  } catch (const cms::Exception& iE) {
477  std::cerr << iE.what();
478  }
479 }
480 
482  PF Candidate,
483  particleFlowRecHitECAL& particleFlowRecHitHF& particleFlowClusterECAL);
eostools.ls
def ls(path, rec=False)
Definition: eostools.py:349
DDAxes::y
PDWG_EXOHSCP_cff.tracks
tracks
Definition: PDWG_EXOHSCP_cff.py:28
mps_fire.i
i
Definition: mps_fire.py:355
FWDetailViewGL< reco::PFCandidate >::m_eveScene
TEveScene * m_eveScene
Definition: FWDetailViewGL.h:29
FWPFCandidateDetailView::build
void build(const FWModelId &id, const reco::PFCandidate *) override
Definition: FWPFCandidateDetailView.cc:144
TwoPi
const double TwoPi
Definition: CosmicMuonParameters.h:19
FWPFCandidateDetailView::FWPFCandidateDetailView
FWPFCandidateDetailView()
Definition: FWPFCandidateDetailView.cc:49
edm::Handle::product
T const * product() const
Definition: Handle.h:70
configurableAnalysis::Candidate
char Candidate[]
Definition: modules.cc:20
hfClusterShapes_cfi.hits
hits
Definition: hfClusterShapes_cfi.py:5
FWPFCandidateDetailView::m_eventList
TEveElementList * m_eventList
Definition: FWPFCandidateDetailView.h:69
f
double f[11][100]
Definition: MuScleFitUtils.cc:78
FWPFCandidateDetailView::rnrHcalChanged
void rnrHcalChanged()
Definition: FWPFCandidateDetailView.cc:136
FWPFCandidateDetailView::m_sliderListener
FWIntValueListener * m_sliderListener
Definition: FWPFCandidateDetailView.h:67
FWPFMaths.h
FWModelId
Definition: FWModelId.h:28
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
cuy.col
col
Definition: cuy.py:1010
testProducerWithPsetDescEmpty_cfi.i1
i1
Definition: testProducerWithPsetDescEmpty_cfi.py:45
FWDetailViewGL< reco::PFCandidate >::viewerGL
TGLViewer * viewerGL() const
Definition: FWDetailViewGL.h:20
FWPFCandidateDetailView::isPntInRng
bool isPntInRng(float x, float y)
Definition: FWPFCandidateDetailView.cc:65
FWPFCandidateDetailView::m_slider
TGSlider * m_slider
Definition: FWPFCandidateDetailView.h:66
REGISTER_FWDETAILVIEW
#define REGISTER_FWDETAILVIEW(_classname_, _name_,...)
Definition: FWDetailViewFactory.h:32
DDAxes::x
CSGAction
Definition: CSGAction.h:38
cms::Exception::what
char const * what() const noexcept override
Definition: Exception.cc:103
cms::cuda::co
T *__restrict__ co
Definition: prefixScan.h:46
edm::Handle
Definition: AssociativeIterator.h:50
FWPFCandidateDetailView::plotEtChanged
void plotEtChanged()
Definition: FWPFCandidateDetailView.cc:130
FWIntValueListener.h
PFRecHit.h
FWPFCandidateDetailView::buildGLEventScene
void buildGLEventScene()
Definition: FWPFCandidateDetailView.cc:398
FWPFCandidateDetailView::setTextInfo
void setTextInfo(const FWModelId &id, const reco::PFCandidate *) override
Definition: FWPFCandidateDetailView.cc:98
FWPFMaths::calculateEt
float calculateEt(const TEveVector &centre, float e)
Definition: FWPFMaths.cc:115
Abs
T Abs(T a)
Definition: MathUtil.h:49
FWColorManager.h
FWDetailViewGL< reco::PFCandidate >::m_infoCanvas
TCanvas * m_infoCanvas
Definition: FWDetailViewGL.h:25
fireworks::Context::voteMaxEtAndEnergy
void voteMaxEtAndEnergy(float Et, float energy) const
Definition: Context.cc:162
vertices_cff.x
x
Definition: vertices_cff.py:29
FWEventItem::context
const fireworks::Context & context() const
Definition: FWEventItem.h:121
FWPFCandidateDetailView::m_range
float m_range
Definition: FWPFCandidateDetailView.h:61
DDAxes::z
PFCluster.h
particleFlowRecHitHF_cfi.particleFlowRecHitHF
particleFlowRecHitHF
Definition: particleFlowRecHitHF_cfi.py:3
DQMScaleToClient_cfi.factor
factor
Definition: DQMScaleToClient_cfi.py:8
FWGUIManager::getCurrentEvent
const edm::EventBase * getCurrentEvent() const
Definition: FWGUIManager.cc:687
dqmdumpme.k
k
Definition: dqmdumpme.py:60
b
double b
Definition: hdecay.h:118
LEDCalibrationChannels.depth
depth
Definition: LEDCalibrationChannels.py:65
funct::true
true
Definition: Factorize.h:173
FWGeometry.h
Event.h
reco::LeafCandidate::eta
double eta() const final
momentum pseudorapidity
Definition: LeafCandidate.h:152
FWDetailViewBase::item
const FWEventItem * item()
Definition: FWDetailViewBase.h:48
beam_dqm_sourceclient-live_cfg.cerr
cerr
Definition: beam_dqm_sourceclient-live_cfg.py:17
CSGAction.h
writedatasetfile.action
action
Definition: writedatasetfile.py:8
FWPFCandidateDetailView::voteMaxEtEVal
void voteMaxEtEVal(const std::vector< reco::PFRecHit > *hits)
Definition: FWPFCandidateDetailView.cc:233
PVValHelper::dy
Definition: PVValidationHelpers.h:49
fwLog.h
FWPFCandidateDetailView::m_candidate
const reco::PFCandidate * m_candidate
Definition: FWPFCandidateDetailView.h:62
FWPFCandidateDetailView::addClusters
void addClusters(const std::vector< reco::PFCluster > *)
Definition: FWPFCandidateDetailView.cc:273
fireworks::Context::getMaxEnergyInEvent
float getMaxEnergyInEvent(bool isEt) const
Definition: Context.cc:174
PFRecTrack.h
FWEventItem.h
FWGUIManager::getGUIManager
static FWGUIManager * getGUIManager()
Definition: FWGUIManager.cc:685
ecalBarrelClusterFastTimer_cfi.modelName
modelName
Definition: ecalBarrelClusterFastTimer_cfi.py:11
PFRecHitFraction.h
FWMagField.h
FWPFCandidateDetailView::rangeChanged
void rangeChanged(int x)
Definition: FWPFCandidateDetailView.cc:85
FWIntValueListener::valueChanged_
sigc::signal< void, Int_t > valueChanged_
Definition: FWIntValueListener.h:14
FWPFCandidateDetailView::~FWPFCandidateDetailView
~FWPFCandidateDetailView() override
Definition: FWPFCandidateDetailView.cc:59
FWPFCandidateDetailView::m_legend
TLegend * m_legend
Definition: FWPFCandidateDetailView.h:64
reco::LeafCandidate::phi
double phi() const final
momentum azimuthal angle
Definition: LeafCandidate.h:148
FWPFCandidateDetailView::eta
float eta()
Definition: FWPFCandidateDetailView.cc:61
FWDetailViewGL< reco::PFCandidate >::m_guiFrame
TGCompositeFrame * m_guiFrame
Definition: FWDetailViewGL.h:26
edm::EventBase
Definition: EventBase.h:46
detailsBasic3DVector::y
float float y
Definition: extBasic3DVector.h:14
Exception.h
AlignmentPI::index
index
Definition: AlignmentPayloadInspectorHelper.h:46
FWDetailViewBase::context
const fireworks::Context & context() const
Definition: FWDetailViewBase.cc:32
sd
double sd
Definition: CascadeWrapper.h:113
FWPFCandidateDetailView::m_rnrHcal
bool m_rnrHcal
Definition: FWPFCandidateDetailView.h:73
reco::PFCandidate
Particle reconstructed by the particle flow algorithm.
Definition: PFCandidate.h:40
HLT_2018_cff.track
track
Definition: HLT_2018_cff.py:10352
cms::Exception
Definition: Exception.h:70
Candidate.h
FWPFCandidateDetailView::makeLegend
void makeLegend(void)
Definition: FWPFCandidateDetailView.cc:74
FWPFCandidateDetailView::addHits
void addHits(const std::vector< reco::PFRecHit > *)
Definition: FWPFCandidateDetailView.cc:338
FWPFCandidateDetailView::addTracks
void addTracks(const std::vector< reco::PFRecTrack > *)
Definition: FWPFCandidateDetailView.cc:249
FWPFCandidateDetailView::m_plotEt
bool m_plotEt
Definition: FWPFCandidateDetailView.h:71
FWPFCandidateDetailView
Definition: FWPFCandidateDetailView.h:24
FWPFCandidateDetailView::phi
float phi()
Definition: FWPFCandidateDetailView.cc:63
FWPFCandidateDetailView.h
edm::InputTag
Definition: InputTag.h:15
fw3dlego_xbins.h
PVValHelper::dx
Definition: PVValidationHelpers.h:48
FWIntValueListener
Definition: FWIntValueListener.h:7
particleFlowRecHitECAL_cfi.particleFlowRecHitECAL
particleFlowRecHitECAL
Definition: particleFlowRecHitECAL_cfi.py:7
FWGUIManager.h