FEDRA emulsion software from the OPERA Collaboration
EdbEDASelection Class Reference

#include <EdbEDA.h>

Inheritance diagram for EdbEDASelection:
Collaboration diagram for EdbEDASelection:

Public Member Functions

void Added (TEveElement *el)
 
void Cleared ()
 
void ClearSelected ()
 
void ClearSelectedVertex ()
 
int Disable (int force=kFALSE)
 
 EdbEDASelection ()
 
int Enable (int force=kFALSE)
 
EdbSegPGetSelected (int i)
 
TObjArray * GetSelected (void)
 
TEveElement * GetSelectedElement ()
 
EdbSegPGetSelectedSegment (int i=-1)
 
EdbTrackPGetSelectedTrack (EdbSegP *s)
 
EdbTrackPGetSelectedTrack (int i=-1)
 
TObjArray * GetSelectedTracks (void)
 
EdbVertexGetSelectedVertex (void)
 
EdbTrackPGetTrack (TEveElement *e)
 
void InitSelection (TEveSelection *sel)
 
int NSelected ()
 
int NSelectedTracks ()
 
void Removed (TEveElement *el)
 
void SelectAll ()
 
TObjArray * SetSelected (TObjArray *selected=NULL)
 
void SetSelectedTracks (TObjArray *arr)
 
void SetSelectedVertex (EdbVertex *v)
 
void SetSelection (TObjArray *selected=NULL)
 
virtual ~EdbEDASelection ()
 

Private Attributes

int eDisable
 
TEveSelection * eSel
 
TObjArray * eSelected
 
TObjArray * eSelectedSegments
 selected segments More...
 
TObjArray * eSelectedTracks
 selected tracks More...
 
EdbVertexeSelectedVertex
 current(last) selected vertex More...
 
TObjArray * eSelectedVertices
 selected vertices More...
 

Constructor & Destructor Documentation

◆ EdbEDASelection()

EdbEDASelection::EdbEDASelection ( )
inline
365 {
366 eSelectedVertices = new TObjArray;
367 eSelectedTracks = new TObjArray;
368 eSelectedSegments = new TObjArray;
369 eSelected = new TObjArray;
371 eSel = NULL;
372 eDisable = 0;
373 }
TObjArray * eSelectedVertices
selected vertices
Definition: EdbEDA.h:357
TEveSelection * eSel
Definition: EdbEDA.h:354
EdbVertex * eSelectedVertex
current(last) selected vertex
Definition: EdbEDA.h:356
TObjArray * eSelectedSegments
selected segments
Definition: EdbEDA.h:359
TObjArray * eSelectedTracks
selected tracks
Definition: EdbEDA.h:358
TObjArray * eSelected
Definition: EdbEDA.h:360
int eDisable
Definition: EdbEDA.h:355
#define NULL
Definition: nidaqmx.h:84

◆ ~EdbEDASelection()

virtual EdbEDASelection::~EdbEDASelection ( )
inlinevirtual
375 {
376 if(eSel!=NULL){
377 eSel->Disconnect("SelectionAdded(TEveElement*)", this, "Added(TEveElement*)");
378 eSel->Disconnect("SelectionRemoved(TEveElement*)", this, "Removed(TEveElement*)");
379 eSel->Disconnect("SelectionCleared()", this, "Cleared()");
380 }
381 }

Member Function Documentation

◆ Added()

void EdbEDASelection::Added ( TEveElement *  el)

function which define the actions by mouse.
if the action is not by the mouse, return.

1635 {
1638 if(eDisable) return;
1639
1640 printf("%s\n",el ? el->GetElementName() : "");
1641 gEve->SetStatusLine(el->GetElementName());
1642 if(el->GetUserData() ==NULL) return;
1643
1644 // if a vertex was selected, the corresponding tracks will be selected.
1645 if(IsVertex(el)) {
1646 Disable();
1647
1648 EdbVertex *v = (EdbVertex *) el->GetUserData();
1649 // to avoid double selection of the tracks
1650 eSel->RemoveElements();
1651 // add vertex to the selection, avoiding the loop in Added().
1652 eSel->AddElement(el);
1653
1654 // add track into the selection.
1655 for(int i=0;i<v->N();i++){
1656 EdbTrackP *t = v->GetTrack(i);
1657 TEveElement * eltrack = GetTrackElement(t);
1658 if(NULL!=eltrack) {
1659 eSel->AddElement(eltrack);
1660 printf(" %s\n", eltrack->GetElementName());
1661 }
1662 }
1663 Enable();
1664
1665 // change the color of the vertex point.
1666 if( eSelectedVertex!= v) {
1667 TEvePointSet *ps = GetVertexElement(eSelectedVertex);
1668 if(ps!=NULL) ps->SetMarkerColor(kOrange);
1670 ps = (TEvePointSet *) el;
1671 ps->SetMarkerColor(kRed);
1672 gEve->Redraw3D();
1673 }
1674
1675 // write feedback file
1676 gEDA->WriteFeedbackFile2008(v,"tmp.old.feedback");
1677 }
1678
1679 // revise TObjArray * selected, *selected_tracks
1680 SetSelected();
1681
1682 // revice extention
1683 gEDA->GetExtentionSet()->Draw(kFALSE);
1684 gEve->Redraw3D();
1685}
EdbEDA * gEDA
Definition: EdbEDA.C:3
void Draw(int redraw=0, int fix=0)
Definition: EdbEDASets.C:225
void WriteFeedbackFile2008(EdbVertex *v=NULL, char *filename=NULL)
Definition: EdbEDA.C:690
int Enable(int force=kFALSE)
Definition: EdbEDA.h:448
int Disable(int force=kFALSE)
Definition: EdbEDA.h:447
TObjArray * SetSelected(TObjArray *selected=NULL)
Definition: EdbEDA.C:1541
EdbEDAExtentionSet * GetExtentionSet()
Definition: EdbEDA.h:699
Definition: EdbPattern.h:113
Definition: EdbVertex.h:69
Int_t N() const
Definition: EdbVertex.h:121
EdbTrackP * GetTrack(int i)
Definition: EdbVertex.h:141
TTree * t
Definition: check_shower.C:4
TEvePointSet * GetVertexElement(EdbVertex *v)
Definition: EdbEDAUtil.C:56
int IsVertex(TObject *o)
Definition: EdbEDAUtil.C:4
TEveCompound * GetTrackElement(EdbTrackP *t)
Definition: EdbEDAUtil.C:69

◆ Cleared()

void EdbEDASelection::Cleared ( )
1692 {
1693 SetSelected();
1694 if(eDisable) return;
1695 printf("Cleared\n");
1696}

◆ ClearSelected()

void EdbEDASelection::ClearSelected ( )
inline
397 {
398 eSelected->Clear();
399 eSelectedTracks->Clear();
400 }

◆ ClearSelectedVertex()

void EdbEDASelection::ClearSelectedVertex ( )
inline

◆ Disable()

int EdbEDASelection::Disable ( int  force = kFALSE)
inline
447{ return force ? eDisable = 1 : eDisable++;}

◆ Enable()

int EdbEDASelection::Enable ( int  force = kFALSE)
inline
448{ return force ? eDisable = 0 : eDisable--;}

◆ GetSelected() [1/2]

EdbSegP * EdbEDASelection::GetSelected ( int  i)
inline
406{return (EdbSegP *)eSelected->At(i);}
Definition: EdbSegP.h:21

◆ GetSelected() [2/2]

TObjArray * EdbEDASelection::GetSelected ( void  )
inline
405{return eSelected;}

◆ GetSelectedElement()

TEveElement * EdbEDASelection::GetSelectedElement ( )
inline
416{ TEveElement::List_i it= gEve->GetSelection()->EndChildren(); return *(--it);}

◆ GetSelectedSegment()

EdbSegP * EdbEDASelection::GetSelectedSegment ( int  i = -1)
inline
434{if(i==-1) i=NSelected()-1; return (EdbSegP *) eSelected->At(i);}
int NSelected()
Definition: EdbEDA.h:420

◆ GetSelectedTrack() [1/2]

EdbTrackP * EdbEDASelection::GetSelectedTrack ( EdbSegP s)
inline
426 {
427 for( int i=0; i<NSelectedTracks(); i++){
429 for(int j=0; j<t->N(); j++) if(s==t->GetSegment(j)) return t;
430 }
431 return NULL;
432 }
EdbTrackP * GetSelectedTrack(int i=-1)
Definition: EdbEDA.h:421
int NSelectedTracks()
Definition: EdbEDA.h:419
s
Definition: check_shower.C:55

◆ GetSelectedTrack() [2/2]

EdbTrackP * EdbEDASelection::GetSelectedTrack ( int  i = -1)
inline
421 {
422 if(NSelectedTracks()==0) return NULL;
423 if(i==-1) i=NSelectedTracks()-1;
424 return (EdbTrackP *) eSelectedTracks->At(i);
425 }

◆ GetSelectedTracks()

TObjArray * EdbEDASelection::GetSelectedTracks ( void  )
inline
417{ return eSelectedTracks; }

◆ GetSelectedVertex()

EdbVertex * EdbEDASelection::GetSelectedVertex ( void  )
inline
439{ return eSelectedVertex;}

◆ GetTrack()

EdbTrackP * EdbEDASelection::GetTrack ( TEveElement *  e)
1531 {
1532 if(IsTrack(e)) return (EdbTrackP*) e->GetUserData();
1533 if(IsSegment(e)){
1534 TEveElement *parent = *(e->BeginParents());
1535 if(IsTrack(parent)) return (EdbTrackP*) parent->GetUserData();
1536 }
1537 return NULL;
1538}
int IsTrack(TObject *o)
Definition: EdbEDAUtil.C:17
int IsSegment(TObject *o)
Definition: EdbEDAUtil.C:29

◆ InitSelection()

void EdbEDASelection::InitSelection ( TEveSelection *  sel)
inline
384 {
385 if(eSel!=NULL){
386 eSel->Disconnect("SelectionAdded(TEveElement*)", this, "Added(TEveElement*)");
387 eSel->Disconnect("SelectionRemoved(TEveElement*)", this, "Removed(TEveElement*)");
388 eSel->Disconnect("SelectionCleared()", this, "Cleared()");
389 }
390
391 eSel = sel; // supposed to be sel = gEDA->GetSelection()
392 eSel->Connect("SelectionAdded(TEveElement*)", "EdbEDASelection", this, "Added(TEveElement*)");
393 eSel->Connect("SelectionRemoved(TEveElement*)", "EdbEDASelection", this, "Removed(TEveElement*)");
394 eSel->Connect("SelectionCleared()", "EdbEDASelection", this, "Cleared()");
395 }

◆ NSelected()

int EdbEDASelection::NSelected ( )
inline
420{ return eSelected-> GetEntries();}
cout<< tr-> GetEntries()<< endl

◆ NSelectedTracks()

int EdbEDASelection::NSelectedTracks ( )
inline
419{ return eSelectedTracks->GetEntries();}

◆ Removed()

void EdbEDASelection::Removed ( TEveElement *  el)
1687 {
1688 printf("Cancel %s\n", el ? el->GetElementName() : "");
1689 SetSelected();
1690}

◆ SelectAll()

void EdbEDASelection::SelectAll ( )
1570 {
1571 TEveSelection *sel = gEve->GetSelection();
1572 sel->RemoveElements();
1573 TEveEventManager *ev = gEve->GetCurrentEvent();
1574 TEveElement::List_i it = ev->BeginChildren();
1575 for(int i=0;i<ev->NumChildren();i++, it++){
1576 TEveElement *e = *it;
1577 if (!IsTrack(e)) continue;
1578 TEveElement::List_i itseg = e->BeginChildren();
1579 for(int j=0;j<e->NumChildren();j++, itseg++){
1580 TEveElement *s = *itseg;
1581 if(e->FindChild(e->GetElementName())) continue;
1582 sel->AddElement(s);
1583 }
1584 }
1585}

◆ SetSelected()

TObjArray * EdbEDASelection::SetSelected ( TObjArray *  selected = NULL)

fill eSelected by the current selected tracks.

1541 {
1543
1544 if(selected){ // fill by given object array.
1545 *eSelected = *selected;
1546 return eSelected;
1547 }
1548 ClearSelected();
1549
1550 if(gEve->GetCurrentEvent()==NULL) return NULL; // if current event is not set, return.
1551
1552 TEveSelection *sel = gEve->GetSelection();
1553
1554 for(TEveElement::List_i it=sel->BeginChildren();it!=sel->EndChildren();it++){
1555 TEveElement *e = *it;
1556 if( IsSegment (e) || IsTrack(e) ){
1557 TObject *o = (TObject *)e->GetUserData();
1558 if(NULL==eSelected->FindObject(o)) eSelected->Add(o); // no double entry
1559 EdbTrackP *t = GetTrack(e);
1560 if(t!=NULL&&NULL==eSelectedTracks->FindObject(t)) eSelectedTracks->Add(t);
1561 }
1562 if( IsVertex (e)){
1563 // selection of vertex is managed in Added().
1564 }
1565 }
1566 return eSelected;
1567}
void ClearSelected()
Definition: EdbEDA.h:397
EdbTrackP * GetTrack(TEveElement *e)
Definition: EdbEDA.C:1531
AcqOdyssey * o
Definition: hwinit.C:2

◆ SetSelectedTracks()

void EdbEDASelection::SetSelectedTracks ( TObjArray *  arr)
inline
408 {
409 if(arr) {
410 *eSelectedTracks = *arr;
411 *eSelected = *arr;
412 }
413 }

◆ SetSelectedVertex()

void EdbEDASelection::SetSelectedVertex ( EdbVertex v)
inline
440{ eSelectedVertex = v; }

◆ SetSelection()

void EdbEDASelection::SetSelection ( TObjArray *  selected = NULL)
1587 {
1588 if(selected) *eSelected = *selected;
1589 //if(GetTrackSet("TS")->N()==0) return;
1590
1591 Disable();
1592
1593 // TEveSelection clear
1594 TEveSelection *sel = gEve->GetSelection();
1595 sel->Clear();
1596
1597 // loop for all elements in the current event.
1598 TEveEventManager *eEvent = gEve->GetCurrentEvent();
1599 if(eEvent==NULL) return;
1600 int nselected = eSelected->GetEntries();
1601
1602 for(TEveElement::List_i it = eEvent->BeginChildren(); it!=eEvent->EndChildren(); it++){
1603 TEveElement *e = *it;
1604
1605 // only track or segment will be target to be selected.
1606 if(IsTrack(e)){
1607 // if this track is in the list of eSelected, add to TEveSelection
1608 for(int i=0; i<nselected;i++){
1609 if( eSelected->At(i) == e->GetUserData() ) sel->AddElement(e);
1610 }
1611
1612 // loop over segments.
1613 if(e->NumChildren()==0) continue;
1614 for(TEveElement::List_i itj = e->BeginChildren(); itj!=e->EndChildren(); itj++){
1615 // if this track is in the list of eSelected, add to TEveSelection
1616 TEveElement *ee = *itj;
1617 for(int i=0;i<nselected;i++){
1618 if( eSelected->At(i) == ee->GetUserData() ) sel->AddElement(ee);
1619 }
1620 }
1621 }
1622 // coloring of selected vertex is done in EdbEDAVertexSet::DrawSingleVertex()
1623 /*
1624 if(IsVertex(e)){
1625 if(eVertex==(EdbVertex *) e->GetUserData()){
1626 TEvePointSet *ps = (TEvePointSet *) el;
1627 ps->SetMarkerColor(kRed);
1628 }
1629 }
1630 */
1631 }
1632 Enable();
1633}
ee
Definition: energy.C:8

Member Data Documentation

◆ eDisable

int EdbEDASelection::eDisable
private

◆ eSel

TEveSelection* EdbEDASelection::eSel
private

◆ eSelected

TObjArray* EdbEDASelection::eSelected
private

◆ eSelectedSegments

TObjArray* EdbEDASelection::eSelectedSegments
private

selected segments

◆ eSelectedTracks

TObjArray* EdbEDASelection::eSelectedTracks
private

selected tracks

◆ eSelectedVertex

EdbVertex* EdbEDASelection::eSelectedVertex
private

current(last) selected vertex

◆ eSelectedVertices

TObjArray* EdbEDASelection::eSelectedVertices
private

selected vertices


The documentation for this class was generated from the following files: