Belle II Software  release-05-01-25
EveTower.cc
1 #include <display/EveTower.h>
2 
3 #include <TEveCaloData.h>
4 #include <TEveSelection.h>
5 #include <TEveManager.h>
6 
7 
8 using namespace Belle2;
9 
10 void EveTower::SelectElement(Bool_t state)
11 {
12  auto& cellVector = m_caloData->GetCellsSelected();
13  if (state)
14  cellVector.emplace_back(m_id, 0); //tower id, slice 0
15  else
16  cellVector.clear();
17  m_caloData->CellSelectionChanged();
18 
19  //to emulate a user click, also select the parent ECLData object
20  //otherwise there will be no SelectionRepeated() signal if the
21  //user clicks on another cluster after we're done here.
22  //Note: also needs to be done without generating a selection event
23  if (!gEve->GetSelection()->HasChild(m_caloData))
24  gEve->GetSelection()->AddElement(m_caloData);
25 
26  //without selecting the visualisation objects, there is no highlighting, so lets do that, too.
27  TEveElement::Set_t vizset;
28  m_caloData->FillImpliedSelectedSet(vizset);
29  for (TEveElement* viz : vizset)
30  viz->SelectElement(state);
31 }
Belle2::EveTower::m_id
int m_id
id of tower.
Definition: EveTower.h:26
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::EveTower::m_caloData
TEveCaloData * m_caloData
Calo data object containing the tower.
Definition: EveTower.h:25
Belle2::EveTower::SelectElement
virtual void SelectElement(Bool_t state)
Overrides TEveElement::SelectElement(), performs magic to select a single cluster.
Definition: EveTower.cc:10