HGCal Test Beam  03a93d6239a951948e06fb3ef8dae4cbdebfad30
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
Pickable.cc
Go to the documentation of this file.
1 //-----------------------------------------------------------------------------
2 /** PhysicsTools/PyGui/src/Pickable.cc
3 
4  Description: Wrapper around TEveSelection for use with Connection and Slot
5 
6  Implementation:
7  As simple as possible
8 */
9 // Created: April 2016 Harrison B. Prosper
10 //-----------------------------------------------------------------------------
11 #include <cassert>
12 #include <algorithm>
13 //#include "PhysicsTools/PyGui/interface/Pickable.h"
14 #include "HGCal/TBEventDisplay/interface/Pickable.h"
15 #include "TEveManager.h"
16 using namespace std;
17 //-----------------------------------------------------------------------------
18 
19 ClassImp(Pickable); // Needed to get signals to work
20 
22  : _selection(gEve->GetSelection()),
23  _element2id(map<TEveElement*, int>()),
24  _id2element(map<int, TEveElement*>()),
25  _id(0)
26 {
27  _selection->Connect("SelectionAdded(TEveElement*)", "Pickable",
28  this, "Selected(TEveElement*)");
29 
30  _selection->Connect("SelectionCleared()", "Pickable",
31  this, "Cleared()");
32 }
33 
35 {
36  _selection->Disconnect("SelectionAdded(TEveElement*)",
37  this, "Selected(TEveElement*)");
38 
39  _selection->Disconnect("SelectionCleared()",
40  this, "Cleared()");
41 }
42 
43 void
44 Pickable::AddElement(TEveElement* element)
45 {
46  _element2id[element] = _id;
47  _id2element[_id] = element;
48  _id++;
49 }
50 
51 void
53 {
54  _selection->RemoveElements();
55  _element2id.clear();
56  _id2element.clear();
57 }
58 
59 TEveElement*
61 {
62  TEveElement* element=0;
63  try
64  {
65  element = _id2element[id];
66  }
67  catch (...)
68  {
69  assert(element);
70  }
71  return element;
72 }
73 
74 void
76 {
77  this->Emit("Selected(int)", id);
78 }
79 
80 void
82 {
83  this->Emit("Cleared()");
84 }
85 
86 void
87 Pickable::Selected(TEveElement* element)
88 {
89  int id=-1;
90  try
91  {
92  int id = _element2id[element];
93  Selected(id);
94  }
95  catch (...)
96  {
97  assert(id>-1);
98  }
99 }
TEveElement * operator[](int id)
Definition: Pickable.cc:60
void Selected(TEveElement *element)
Definition: Pickable.cc:87
Pickable()
Definition: Pickable.cc:21
ClassImp(Pickable)
void Cleared()
Definition: Pickable.cc:81
virtual ~Pickable()
Definition: Pickable.cc:34
void AddElement(TEveElement *element)
Definition: Pickable.cc:44
void Clear()
Definition: Pickable.cc:52