FEDRA emulsion software from the OPERA Collaboration
EdbEDAMainTab Class Reference

#include <EdbEDAMainTab.h>

Collaboration diagram for EdbEDAMainTab:

Public Types

enum  { kSelSeg , kSelTrack }
 

Public Member Functions

void ApplyParams ()
 
void CalcIP ()
 
void CalcMinimumDistance (void)
 
void CalcPSelected ()
 
void CalcVertex (int clear_previous_local=kTRUE)
 
void CalcVertexPlus ()
 
void ClearTracks (void)
 
void ClearVertices ()
 
void DrawExtentionResolution ()
 
void DrawOnlySelected ()
 
 EdbEDAMainTab (void)
 
void ExecCuts (int redraw=kTRUE)
 
void ExecSegmentSearch ()
 
void ExecTrackSearch ()
 
double GetDT ()
 
int GetNsegCut ()
 
double GetPHCut ()
 
double GetPHDTRMS ()
 
double GetTX ()
 
double GetTY ()
 
void MakeGUICuts (TGGroupFrame *fGroupFrame1)
 
void MakeGUIIDSearch ()
 
void MakeGUIMain ()
 
void MicroTrackSearch ()
 
void PickCenter ()
 
void ReadFeedback ()
 
void ReadFilteredText ()
 
void ReadListFile (char *filename=NULL, bool clear_previous=kFALSE)
 
void Redo (void)
 
void RemoveSelected ()
 
void SearchCouplesDmin (TObjArray *segsarr, int ipl)
 
void SearchCouplesDmin (TObjArray *segsarr=NULL)
 
void SearchCouplesIP (int ipl, double x, double y, double z, double ipcut=50, TObjArray *cps=NULL)
 
void SearchCouplesIP (int ipl, EdbVertex *v, double ipcut=50, TObjArray *cps=NULL)
 
void SearchCouplesIP (TObjArray *segsarr=NULL)
 
void SelectAll ()
 
void SetAnimation ()
 
void SetColorMode ()
 
void SetDrawAreas ()
 
void SetDrawCheckBox ()
 
void SetDrawText ()
 
void SetDrawTrackSets (Bool_t on)
 
void SetExtention ()
 
void SetExtentionZNumber ()
 
void SetExtentionZSlider ()
 
void SetOutputFileModeButton ()
 
void SetPickSegment ()
 
void SetPickTrack ()
 
void SetProjection ()
 
void WriteFeedback ()
 
void WriteFilteredText ()
 
char * WriteListFile (char *filename=NULL)
 
void WriteMxxFile ()
 
virtual ~EdbEDAMainTab ()
 

Public Attributes

TObjArray * eDrawChecks
 
TGCheckButton * eGCBAngleCut
 
TGCheckButton * eGCBAnimation
 
TGCheckButton * eGCBDrawArea
 
TGCheckButton * eGCBExtention
 
TGCheckButton * eGCBExtention_res
 
TGCheckButton * eGCBIpCut
 
TGCheckButton * eGCBNeighbor
 
TGCheckButton * eGClearPrevious
 
TGNumberEntryField * eGNEAX
 
TGNumberEntryField * eGNEAY
 
TGNumberEntryField * eGNEExtentionZ
 
TGNumberEntry * eGNEMaxPlate
 
TGNumberEntryField * eGNENeighborDzDown
 
TGNumberEntryField * eGNENeighborDzUp
 
TGNumberEntry * eGNENseg
 
TGNumberEntryField * eGNEPHDTRMS
 
TGNumberEntry * eGNESearchBTIPL
 
TGNumberEntryField * eGNESearchSegmentIPL
 
TGNumberEntryField * eGNESearchSegmentISeg
 
TGNumberEntryField * eGNESearchTrack
 
TGNumberEntry * eGNETolDT
 
TGNumberEntry * eGNETolDX
 
TGNumberEntryField * eGNEWCut
 
TGRadioButton * eGRBColorBK
 
TGRadioButton * eGRBColorPH
 
TGRadioButton * eGRBColorPL
 
TGCheckButton * eGSideOut
 
TGNumberEntry * eGSideOutPlate
 
TGHSlider * eGSliderExtentionZ
 
TGMainFrame * eIDWindow
 
EdbEDATrackSeteTrackSet
 TrackSet for the search. More...
 
TGCheckButton * fTextButton_scanback
 

Private Attributes

TGCheckButton * eGCBTrackAngle
 
TGCheckButton * eGCBTrackID
 
TGRadioButton * eGRBSelSeg
 
TGRadioButton * eGRBSelTrack
 

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
kSelSeg 
kSelTrack 
@ kSelSeg
Definition: EdbEDAMainTab.h:18
@ kSelTrack
Definition: EdbEDAMainTab.h:18

Constructor & Destructor Documentation

◆ EdbEDAMainTab()

EdbEDAMainTab::EdbEDAMainTab ( void  )
inline
70 {
73 }
void MakeGUIMain()
Definition: EdbEDAMainTab.C:485
TGMainFrame * eIDWindow
Definition: EdbEDAMainTab.h:64
#define NULL
Definition: nidaqmx.h:84

◆ ~EdbEDAMainTab()

virtual EdbEDAMainTab::~EdbEDAMainTab ( )
inlinevirtual
74{}

Member Function Documentation

◆ ApplyParams()

void EdbEDAMainTab::ApplyParams ( )

◆ CalcIP()

void EdbEDAMainTab::CalcIP ( )

calculate IP for the selected tracks wrt the given vertex.
if the vertex is not given, use the selected vertex.

981 {
985 if(NULL==v) {
986 printf("select a vertex!\n");
987 return;
988 }
989 printf("/// Calc IP w.r.t. Vertex %d %8.1lf %8.1lf %8.1lf (red vertex) ///\n",v->ID(), v->X(),v->Y(),v->Z());
990
991 TObjArray *selected = gEDA->GetSelected();
992 if(selected->GetEntries()==0){
993 printf("select segments\n");
994 return;
995 }
996 for(int i=0;i<selected->GetEntries();i++){
997 EdbSegP *s = (EdbSegP *) selected->At(i);
998 double r = EdbEDAUtil::CalcIP(s,v->X(),v->Y(),v->Z());
999
1000 double dz = fabs(v->Z()-s->Z());
1001 double minimum_kink_angle = r / (dz-293.0/2);
1002
1003 printf("%6d PL %2d %7.4lf %7.4lf IP = %6.2lf, dZ = %6.1lf, Minimum kink angle = %6.4lf\n",
1004 s->Track(), s->Plate(), s->TX(), s->TY(), r, dz, minimum_kink_angle);
1005 gEve->SetStatusLine(Form("%4d PL %2d %7.4lf %7.4lf IP = %6.2lf, dZ = %6.1lf, Minimum kink angle = %6.4lf\n",
1006 s->Track(), s->Plate(), s->TX(), s->TY(), r, dz, minimum_kink_angle));
1007 }
1008}
EdbEDA * gEDA
Definition: EdbEDA.C:3
brick dz
Definition: RecDispMC.C:107
Expr< UnaryOp< Fabs< T >, Expr< A, T, D >, T >, T, D > fabs(const Expr< A, T, D > &rhs)
Definition: UnaryOperators.hh:96
TObjArray * GetSelected(void)
Definition: EdbEDA.h:405
EdbVertex * GetSelectedVertex(void)
Definition: EdbEDA.h:439
Definition: EdbSegP.h:21
Definition: EdbVertex.h:69
Int_t ID() const
Definition: EdbVertex.h:126
Float_t X() const
Definition: EdbVertex.h:130
Float_t Z() const
Definition: EdbVertex.h:132
Float_t Y() const
Definition: EdbVertex.h:131
s
Definition: check_shower.C:55
double CalcIP(EdbSegP *s, double x, double y, double z)
Definition: EdbEDAUtil.C:85
void r(int rid=2)
Definition: test.C:201

◆ CalcMinimumDistance()

void EdbEDAMainTab::CalcMinimumDistance ( void  )
790 {
791 printf("/// Calc Dmin //////////////////////////////////////////////////////////////////////////\n");
792 TObjArray * selected = gEDA->GetSelected();
793 if(selected->GetEntries()<2) {
794 printf("Select more than 2 segment!!\n");
795 return;
796 }
797 int i,j;
798 int n = selected->GetEntries();;
799
800 for(i=0;i<n-1;i++){
801 for(j=i+1;j<n;j++){
802 int id1=0,id2=0;
803 EdbSegP *seg1 = (EdbSegP*) selected->At(i);
804 if(IsSegment(seg1)) {
805 id1=seg1->Track();
806 if(id1==-1) id1=seg1->ID();
807 }
808 else id1=seg1->ID();
809
810 EdbSegP *seg2 = (EdbSegP*) selected->At(j);
811
812 if(IsSegment(seg2)) {
813 id2=seg2->Track();
814 if(id2==-1) id2=seg2->ID();
815 }
816 else id2=seg2->ID();
817
818 double dz;
819 double r = CalcDmin(seg1,seg2, &dz);
820
821 printf(" %5d x %5d dmin = %6.1lf um at %6.1lf um upstream from pl %2d. dT=(%7.4lf, %7.4lf).\n",
822 id1,id2, r, dz, seg1->Plate(), seg1->TX()-seg2->TX(), seg1->TY()-seg2->TY());
823
824 gEve->SetStatusLine(Form("min distance = %6.1lf um at %6.1lf um upstream of pl %2d\n", r, dz, seg1->Plate()));
825 }
826 }
827 printf("////////////////////////////////////////////////////////////////////////////////////////\n");
828}
Int_t Track() const
Definition: EdbSegP.h:150
Float_t TX() const
tangens = deltaX/deltaZ
Definition: EdbSegP.h:175
Int_t ID() const
Definition: EdbSegP.h:147
Int_t Plate() const
Definition: EdbSegP.h:159
Float_t TY() const
tangens = deltaY/deltaZ
Definition: EdbSegP.h:176
int IsSegment(TObject *o)
Definition: EdbEDAUtil.C:29
double CalcDmin(EdbSegP *seg1, EdbSegP *seg2, double *dminz=NULL)
Definition: EdbEDAUtil.C:239

◆ CalcPSelected()

void EdbEDAMainTab::CalcPSelected ( )
944 {
945 printf("/// Calc Momentum, temporary version//////////////////////\n");
946 TObjArray *selected = gEDA->GetSelected();
947 for(int i=0; i<selected->GetEntries(); i++ ){
948 EdbTrackP *t=gEDA->GetTrack((EdbSegP *)selected->At(i));
949 if(t==NULL) continue;
950 double p, pmin, pmax;
951
952// CalcP(t,p,pmin,pmax);
953// printf(" %5d %7.4lf %7.4lf p pmin pmax = %6.2f %6.2f %6.2f GeV/c (90%%CL)\n",
954// t->ID(), t->TX(), t->TY(), p, pmin, pmax);
955// gEve->SetStatusLine(Form(" %5d %7.4lf %7.4lf p pmin pmax = %6.2f %6.2f %6.2f GeV/c (90%%CL)",
956// t->ID(), t->TX(), t->TY(), p, pmin, pmax));
957
958// printf("Bern conventional (Magali's)\n");
959 CalcP(t,p,pmin,pmax);
960// printf("Bern %5d %7.4lf %7.4lf p pmin pmax = %6.2f %6.2f %6.2f GeV/c (90%%CL)\n",
961// t->ID(), t->TX(), t->TY(), p, pmin, pmax);
962 gEve->SetStatusLine(Form(" %5d %7.4lf %7.4lf p pmin pmax = %6.2f %6.2f %6.2f GeV/c (90%%CL)",
963 t->ID(), t->TX(), t->TY(), p, pmin, pmax));
964/*
965 printf("Andrea conventional\n");
966 CalcP2(t,p,pmin,pmax);
967 printf("A_g0 %5d %7.4lf %7.4lf p pmin pmax = %6.2f %6.2f %6.2f GeV/c (90%%CL)\n",
968 t->ID(), t->TX(), t->TY(), p, pmin, pmax);
969
970 printf("Andrea new statistical treatment\n");
971 CalcP3(t,p,pmin,pmax);
972 printf("A_g2 %5d %7.4lf %7.4lf p pmin pmax = %6.2f %6.2f %6.2f GeV/c (90%%CL)\n",
973 t->ID(), t->TX(), t->TY(), p, pmin, pmax);
974*/
975 }
976
977 printf("////////////////////////////////////////////////////////////////\n");
978}
EdbTrackP * GetTrack(EdbSegP *s)
Definition: EdbEDA.h:598
Definition: EdbPattern.h:113
TTree * t
Definition: check_shower.C:4
EdbMomentumEstimator * CalcP(EdbTrackP *t, double &p, double &pmin, double &pmax, bool print=kTRUE)
Definition: EdbEDAUtil.C:369
p
Definition: testBGReduction_AllMethods.C:8

◆ CalcVertex()

void EdbEDAMainTab::CalcVertex ( int  clear_previous_local = kTRUE)

calculate a vertex with the selected tracks (segments).
use the data of (the selected object)->X(), Y(), Z(), TX(), TY().
means, if the selected object == segment, use the data of the segment. or it == track, the use the fitted data.

832 {
836 printf("/// Calc Vertex /////////////////////////////////////////////////\n");
837 TObjArray *selected = gEDA->GetSelected();
838
839 if(selected->GetEntries()<1){
840 ErrorMessage("CalcVertex() error : please select more than 1 segment or track\n");
841 return;
842 }
843
844 if(eGClearPrevious->IsOn()&&clear_previous_local) gEDA->GetVertexSet()->Clear();
845
846
847 /*
848 // this is for FEDRA vertex using libVt++. but it's not convenient. use only topological.
849
850 EdbVertex *v0 = EdbEDAUtil::CalcVertex(selected); // by Tomoo func. pre-vertexing. to know vertex z.
851
852 EdbVertex *v;
853 if(selected->GetEntries()==1){
854 EdbSegP *s = (EdbSegP *)selected->At(0);
855 EdbTrackP *t = gEDA->GetSelectedTrack(s);
856
857 EdbVTA *vta = new EdbVTA(t, v0);
858 vta->SetFlag(2);
859 vta->SetImp(EdbEDAUtil::CalcIP(s,v0));
860 v0->AddVTA(vta);
861 v=v0;
862 }
863 else {
864 // Calc vertex by FEDRA version.
865 v = new EdbVertex;
866 // register the tracks to vertex.
867 for(int i=0;i<selected->GetEntries();i++){
868 EdbSegP *s = (EdbSegP *)selected->At(i);
869 EdbTrackP *t = gEDA->GetSelectedTrack(s);
870
871 //if(t==NULL) t = new EdbTrackP(s);
872
873 double dz1 = abs(t->GetSegmentFirst()->Z()-v0->Z()); // z distance from 1st segment to vertex
874 double dz2 = abs(t->GetSegmentLast()->Z()-v0->Z()); // z distance from last segment to vertex
875
876 EdbVTA *vta = new EdbVTA(t, v);
877 vta->SetZpos(dz1<dz2?1:0); // if 1st segment is near to vertex, use 1st segment.
878 vta->SetFlag(2);
879 vta->SetImp(EdbEDAUtil::CalcIP(s,v));
880 v->AddVTA(vta);
881 }
882 // calculate in EdbVertexRec.
883 EdbVertexRec VR;
884 VR.eImpMax=1e6;
885 EdbPVRec PVR; // needed because of X0.
886 PVR.SetScanCond(new EdbScanCond);
887 VR.SetPVRec(&PVR);
888 VR.eUseSegPar=kTRUE; // definitely need for better IP calculation.
889 VR.MakeV(*v);
890 }
891 */
892 // calc vertex point by Tomoko // VTA is not set.
893 // old version. upto 2009 10 29
894 EdbVertex *v = EdbEDAUtil::CalcVertex(selected);
895
896 static int vid=0;
897 if(vid<gEDA->GetVertexSet()->N()) vid=gEDA->GetVertexSet()->N();
898 v->SetID(vid++);
899 // register the vertex to selected_vertex.
900 for(int i=0;i<selected->GetEntries();i++){
901 EdbSegP *s = (EdbSegP *)selected->At(i);
903
904 if(t==NULL) t = new EdbTrackP(s);
905
906 EdbVTA *vta = new EdbVTA(t, v);
907 vta->SetZpos(1);
908 vta->SetFlag(2);
909 vta->SetImp(EdbEDAUtil::CalcIP(s,v));
910 v->AddVTA(vta);
911 }
912
913 // claculate the dZ from the last plate
914 double vertexplz = 1e6;
915 int vertexipl = 0;
916 for(int i=0;i<gEDA->GetNPL();i++){
917 if(gEDA->GetZPID(i)<v->Z()) continue;
918 if(gEDA->GetZPID(i)<vertexplz) {
919 vertexplz = gEDA->GetZPID(i);
920 vertexipl = gEDA->GetIPL(i);
921 }
922 }
923 if(gEDA->GetNPL()==0){
925 EdbSegP *s = t->GetSegmentFirst();
926 vertexplz=s->Z();
927 vertexipl=s->Plate();
928 }
929
930 gEve->SetStatusLine(Form("Vertex position (x,y,z) = (%8.1lf, %8.1lf, %8.1lf). %.1lf micron upstream of pl %d\n",
931 v->X(), v->Y(), v->Z(), vertexplz-v->Z(), vertexipl));
932
933 printf(" --------------------------------------------------------------------------\n");
934 printf("Vertex position (x,y,z) = (%8.1lf, %8.1lf, %8.1lf). %.1lf micron upstream of pl %d\n",v->X(), v->Y(), v->Z(), vertexplz-v->Z(), vertexipl);
935
936
937 gEDA->WriteFeedbackFile2008(v,"tmp.feedback");
938 printf("/// Calc Vertex end//////////////////////////////////////////////\n");
941 gEDA->Redraw();
942}
int GetIPL(int PID)
Definition: EdbEDA.h:252
double GetZPID(int pid)
Definition: EdbEDA.h:321
int GetNPL()
Definition: EdbEDA.h:246
void WriteFeedbackFile2008(EdbVertex *v=NULL, char *filename=NULL)
Definition: EdbEDA.C:690
TGCheckButton * eGClearPrevious
Definition: EdbEDAMainTab.h:25
void SetSelectedVertex(EdbVertex *v)
Definition: EdbEDA.h:440
EdbTrackP * GetSelectedTrack(int i=-1)
Definition: EdbEDA.h:421
void AddVertex(EdbVertex *v)
Definition: EdbEDASets.h:183
int N()
Definition: EdbEDASets.h:215
void Clear()
Definition: EdbEDASets.h:214
EdbEDAVertexSet * GetVertexSet()
Definition: EdbEDA.h:660
void Redraw()
Definition: EdbEDA.h:680
Definition: EdbVertex.h:26
void SetImp(float imp)
Definition: EdbVertex.h:57
void SetZpos(int zpos)
Definition: EdbVertex.h:55
void SetFlag(int flag)
Definition: EdbVertex.h:56
void AddVTA(EdbVTA *vta)
Definition: EdbVertex.cxx:355
void SetID(int ID=0)
Definition: EdbVertex.h:156
void ErrorMessage(char *title, char *message)
Definition: EdbEDAUtil.C:479
EdbVertex * CalcVertex(TObjArray *segments)
calc vertex from the segments array (EdbSegP*)
Definition: EdbEDAUtil.C:282

◆ CalcVertexPlus()

void EdbEDAMainTab::CalcVertexPlus ( )
830{ CalcVertex(kFALSE);}
void CalcVertex(int clear_previous_local=kTRUE)
Definition: EdbEDAMainTab.C:832

◆ ClearTracks()

void EdbEDAMainTab::ClearTracks ( void  )
EdbEDATrackSet * eTrackSet
TrackSet for the search.
Definition: EdbEDAMainTab.h:66
void ClearTracks(void)
Definition: EdbEDATrackSet.h:327
void StorePrevious()
Definition: EdbEDA.h:689

◆ ClearVertices()

void EdbEDAMainTab::ClearVertices ( )
void ClearVertices()
Definition: EdbEDA.h:663

◆ DrawExtentionResolution()

void EdbEDAMainTab::DrawExtentionResolution ( )
1111 {
1112 // Draw Extention with resolution
1114}
void DrawResolution(int redraw=0)
Definition: EdbEDASets.C:265
EdbEDAExtentionSet * GetExtentionSet()
Definition: EdbEDA.h:699

◆ DrawOnlySelected()

void EdbEDAMainTab::DrawOnlySelected ( )
1011 {
1017 gEDA->Redraw();
1018}
TObjArray * GetSelectedTracks(void)
Definition: EdbEDA.h:417
void SetTracks(TObjArray *tracks)
Definition: EdbEDATrackSet.h:303
void ClearVertices()
Definition: EdbEDASets.h:213
void SetVertex(EdbVertex *v)
Definition: EdbEDASets.h:191

◆ ExecCuts()

void EdbEDAMainTab::ExecCuts ( int  redraw = kTRUE)
28 {
29 printf("Execute cuts\n");
31 printf("Apply Parameters\n");
33
35 if(eGClearPrevious->IsOn()) gEDA->ClearVertices();
37 }
38
39 // selection of tracks in the tracks-base.
41
42 // selected tracks are anyway shown.
44
45 if(redraw) gEDA->Redraw();
46}
void ApplyParams()
bool GetImpactSearch()
Definition: EdbEDATrackSet.h:109
void DoSelection()
Definition: EdbEDATrackSet.h:503
void AddVertex(EdbVertex *v)
Definition: EdbEDA.h:661

◆ ExecSegmentSearch()

void EdbEDAMainTab::ExecSegmentSearch ( )
250 {
252 int ipl = eGNESearchSegmentIPL->GetIntNumber();
253 int iseg = eGNESearchSegmentISeg->GetIntNumber();
254 printf("Track Search by Segment, ipl = %d iseg = %d\n", ipl, iseg);
256 EdbTrackP *t = eTrackSet->SearchSegment(ipl, iseg);
257 if(t) eTrackSet->AddTrack(t);
258 else printf("track not found.\n");
259 gEDA->Redraw();
260 if(eIDWindow!=NULL) eIDWindow->CloseWindow();
261 eIDWindow = NULL;
262
263}
TGNumberEntryField * eGNESearchSegmentIPL
Definition: EdbEDAMainTab.h:42
TGNumberEntryField * eGNESearchSegmentISeg
Definition: EdbEDAMainTab.h:43
EdbTrackP * SearchSegment(int ipl, int iseg)
Definition: EdbEDATrackSet.C:1198
void AddTrack(EdbTrackP *t)
Definition: EdbEDATrackSet.h:277

◆ ExecTrackSearch()

void EdbEDAMainTab::ExecTrackSearch ( )
234 {
236 int itrk = eGNESearchTrack->GetIntNumber();
238 printf("Track Search, itrk = %d\n", itrk);
240 if(t) eTrackSet->AddTrack(t);
241 gEDA->Redraw();
242
243 if(eIDWindow!=NULL) eIDWindow->CloseWindow();
244 eIDWindow = NULL;
245
246}
TGNumberEntryField * eGNESearchTrack
Definition: EdbEDAMainTab.h:41
EdbTrackP * SearchTrack(int itrk)
Definition: EdbEDATrackSet.h:365

◆ GetDT()

double EdbEDAMainTab::GetDT ( )
inline
113{ return eGNETolDT->GetNumber();}
TGNumberEntry * eGNETolDT
Definition: EdbEDAMainTab.h:33

◆ GetNsegCut()

int EdbEDAMainTab::GetNsegCut ( )
inline
108{ return eGNENseg->GetIntNumber();}
TGNumberEntry * eGNENseg
Definition: EdbEDAMainTab.h:20

◆ GetPHCut()

double EdbEDAMainTab::GetPHCut ( )
inline
109{ return eGNEWCut->GetNumber();}
TGNumberEntryField * eGNEWCut
Definition: EdbEDAMainTab.h:22

◆ GetPHDTRMS()

double EdbEDAMainTab::GetPHDTRMS ( )
inline
110{ return eGNEPHDTRMS->GetNumber();}
TGNumberEntryField * eGNEPHDTRMS
Definition: EdbEDAMainTab.h:23

◆ GetTX()

double EdbEDAMainTab::GetTX ( )
inline
111{ return eGNEAX->GetNumber();}
TGNumberEntryField * eGNEAX
Definition: EdbEDAMainTab.h:35

◆ GetTY()

double EdbEDAMainTab::GetTY ( )
inline
112{ return eGNEAY->GetNumber();}
TGNumberEntryField * eGNEAY
Definition: EdbEDAMainTab.h:36

◆ MakeGUICuts()

void EdbEDAMainTab::MakeGUICuts ( TGGroupFrame *  fGroupFrame1)
318 {
319 int posy=20, posx, dx;
320 TGLabel *fLabel;
321 TGTextButton *fb;
322 fLabel = new TGLabel(fGroupFrame1,"Nseg >=");
323 fLabel->MoveResize(10,posy,50,20);
324
325 eGNENseg = new TGNumberEntry(fGroupFrame1, eTrackSet->GetNsegCut(),11,-1,TGNumberFormat::kNESInteger);
326 eGNENseg->MoveResize(70,posy,50,20);
327
328 posy+=20;
329 fLabel = new TGLabel(fGroupFrame1," iPlate >= ");
330 if(gEDA->Japanese()) fLabel->SetTitle(" iPlate <= ");
331 fLabel->MoveResize(10,posy,50,20);
332
334 eGNEMaxPlate = new TGNumberEntry(fGroupFrame1, eTrackSet->GetUpstreamPlate(),11,-1,TGNumberFormat::kNESInteger);
335 eGNEMaxPlate->MoveResize(70,posy,50,20);
336
337 posy+=22;
338 posx=5;
339 fLabel = new TGLabel(fGroupFrame1,"ph>=");
340 fLabel->MoveResize(posx,posy,dx=27,18);
341
342 posx+=dx;
343 eGNEWCut = new TGNumberEntryField(fGroupFrame1, -1, (Double_t) eTrackSet->GetPHCut());
344 eGNEWCut->SetFormat(TGNumberFormat::kNESRealOne);
345 eGNEWCut->MoveResize(posx,posy,dx=33,18);
346 eGNEWCut->SetToolTipText("Cut for PH mean.");
347
348 posx+=dx+5;
349 fLabel = new TGLabel(fGroupFrame1,"dt/ph=");
350 fLabel->MoveResize(posx,posy,dx=40,18);
351
352 posx+=dx;
353 eGNEPHDTRMS = new TGNumberEntryField(fGroupFrame1, -1, (Double_t) eTrackSet->GetPHDTRMS());
354 eGNEPHDTRMS->SetFormat(TGNumberFormat::kNESRealThree);
355 eGNEPHDTRMS->SetLimits(TGNumberFormat::kNELLimitMin, 0);
356 eGNEPHDTRMS->MoveResize(posx,posy,dx=40,18);
357
358
359 posx+=dx+8;
360 eGClearPrevious = new TGCheckButton(fGroupFrame1,"Clear prev");
361 eGClearPrevious->MoveResize(posx,posy,dx=80,20);
362 eGClearPrevious->SetState(kButtonDown);
363
364 posy+=20;
365 eGSideOut = new TGCheckButton(fGroupFrame1,"Penetration and Side-out");
366 eGSideOut->MoveResize(10,posy,160,20);
367 eGSideOut->SetToolTipText( "Reject penetrating and side-out tracks,\n"
368 "by requesting the scanning area upstream\n"
369 "of the track for a given number of plates.");
370
371 eGSideOutPlate = new TGNumberEntry(fGroupFrame1, eTrackSet->GetSideOutPlate(),11,-1,TGNumberFormat::kNESInteger);
372 eGSideOutPlate->MoveResize(175,posy,35,18);
373
374 fLabel = new TGLabel(fGroupFrame1,"pl");
375 fLabel->MoveResize(210,posy,dx=25,20);
376
377 posy+=23;
378 // Check Neighbor search
379 eGCBNeighbor = new TGCheckButton(fGroupFrame1,"Neighbor search");
380 eGCBNeighbor->MoveResize(10,posy,115,20);
381 eGCBNeighbor->SetToolTipText("Search neighbors.\nAngular and position tolerance are valid.");
382
383
384 eGCBIpCut = new TGCheckButton(fGroupFrame1,"IP cut");
385 eGCBIpCut->MoveResize(128,posy,100,20);
386 eGCBIpCut->SetState(kButtonUp);
387 eGCBIpCut->SetToolTipText("IP cut against a selected vertex (Red).\nPosition tolerance is valid.");
388
389
390 posy+=20;
391 // Check Angular cut
392 eGCBAngleCut = new TGCheckButton(fGroupFrame1,"Angular cut");
393 eGCBAngleCut->MoveResize(10,posy,90,20);
394 eGCBAngleCut->SetToolTipText("Angular cut against a given angle.\nAngular tolerance is valid.");
395
396 eGNEAX = new TGNumberEntryField(fGroupFrame1);
397 eGNEAX->MoveResize(100,posy,60,18);
398 eGNEAX->SetFormat(TGNumberFormat::kNESRealThree);
399
400 eGNEAY = new TGNumberEntryField(fGroupFrame1);
401 eGNEAY->MoveResize(170,posy,60,18);
402 eGNEAY->SetFormat(TGNumberFormat::kNESRealThree);
403
404 posy+=25;
405
406 fLabel = new TGLabel(fGroupFrame1,"tol :");
407 fLabel->MoveResize(10,posy,25,20);
408
409 eGNETolDT = new TGNumberEntry(fGroupFrame1, 0.05,11,-1,TGNumberFormat::kNESRealTwo);
410 eGNETolDT->MoveResize(35,posy,60,20);
411// eGNETolDT->SetToolTipText("Angular tolerance");
412
413 fLabel = new TGLabel(fGroupFrame1,"rad");
414 fLabel->MoveResize(100,posy,25,18);
415
416 eGNETolDX = new TGNumberEntry(fGroupFrame1, 250,11,-1,TGNumberFormat::kNESReal);
417 eGNETolDX->MoveResize(130,posy,60,20);
418// eGNETolDX->SetToolTipText("Position tolerance");
419
420 fLabel = new TGLabel(fGroupFrame1,"micron");
421 fLabel->MoveResize(190,posy,40,18);
422
423 posy+=25;
424 fLabel = new TGLabel(fGroupFrame1,"dz range : up");
425 fLabel->MoveResize(12,posy,75,18);
426 eGNENeighborDzUp = new TGNumberEntryField(fGroupFrame1, -1,5000);
427 eGNENeighborDzUp->MoveResize(90,posy,50,18);
428 eGNENeighborDzUp->SetToolTipText("dZ range for neighbor search");
429
430
431 fLabel = new TGLabel(fGroupFrame1,"down");
432 fLabel->MoveResize(145,posy,30,18);
433 eGNENeighborDzDown = new TGNumberEntryField(fGroupFrame1, -1,5000);
434 eGNENeighborDzDown->MoveResize(180,posy,50,18);
435 eGNENeighborDzDown->SetToolTipText("dZ range for neighbor search");
436
437
438 // Apply
439 fb = new TGTextButton(fGroupFrame1,"Apply");
440 fb->MoveResize(128,20,74,40);
441 fb->Connect("Clicked()","EdbEDAMainTab",this, "ExecCuts()");
442
443 fb = new TGTextButton(fGroupFrame1,"clr");
444 fb->MoveResize(205,20,30,20);
445 fb->Connect("Clicked()","EdbEDAMainTab",this,"ClearTracks()");
446
447 fb = new TGTextButton(fGroupFrame1,"<");
448 fb->MoveResize(205,40,30,20);
449 fb->Connect("Clicked()","EdbEDAMainTab",this,"Redo()");
450
451 posy+=23;
452 fb = new TGTextButton(fGroupFrame1,"ID Search");
453 fb->MoveResize(5,posy,80,18);
454 fb->Connect("Clicked()","EdbEDAMainTab",this,"MakeGUIIDSearch()");
455
456 fb = new TGTextButton(fGroupFrame1,"MT search");
457 fb->MoveResize(130,posy,70,18);
458 fb->Connect("Clicked()","EdbEDAMainTab", this, "MicroTrackSearch()");
459
460
461 posy+=23;
462 fLabel = new TGLabel(fGroupFrame1,"Search BT : pl");
463 fLabel->MoveResize(5,posy,80,18);
464
465 eGNESearchBTIPL = new TGNumberEntry(fGroupFrame1, -1, 0,TGNumberFormat::kNESInteger);
466 eGNESearchBTIPL->MoveResize(90,posy,35,18);
467
468 fb = new TGTextButton(fGroupFrame1,"Dmin");
469 fb->MoveResize(130,posy,35,18);
470 fb->Connect("Clicked()","EdbEDAMainTab", this, "SearchCouplesDmin()");
471 fb->SetToolTipText("Search BT by Neibor search. \nif ipl==-1, search in all plate.\nPHcut is valid.");
472
473 fb = new TGTextButton(fGroupFrame1,"IP cut");
474 fb->MoveResize(170,posy,40,18);
475 fb->Connect("Clicked()","EdbEDAMainTab", this, "SearchCouplesIP()");
476 fb->SetToolTipText("Search BT by IP cut. \nif ipl==-1, search in all plate.\nPHcut is valid.");
477
478 fb = new TGTextButton(fGroupFrame1,"clr");
479 fb->MoveResize(215,posy,20,18);
480 fb->Connect("Clicked()","EdbEDAMainTab", this, "ClearTracks()");
481
482
483}
TGNumberEntry * eGSideOutPlate
Definition: EdbEDAMainTab.h:28
TGCheckButton * eGCBNeighbor
Definition: EdbEDAMainTab.h:29
TGNumberEntryField * eGNENeighborDzUp
Definition: EdbEDAMainTab.h:37
TGNumberEntry * eGNETolDX
Definition: EdbEDAMainTab.h:34
TGCheckButton * eGSideOut
Definition: EdbEDAMainTab.h:27
TGCheckButton * eGCBAngleCut
Definition: EdbEDAMainTab.h:31
TGNumberEntry * eGNESearchBTIPL
Definition: EdbEDAMainTab.h:46
TGNumberEntryField * eGNENeighborDzDown
Definition: EdbEDAMainTab.h:38
TGCheckButton * eGCBIpCut
Definition: EdbEDAMainTab.h:30
TGNumberEntry * eGNEMaxPlate
Definition: EdbEDAMainTab.h:21
double GetPHDTRMS()
Definition: EdbEDATrackSet.h:116
int GetNsegCut()
Definition: EdbEDATrackSet.h:114
int GetSideOutPlate()
Definition: EdbEDATrackSet.h:117
int GetUpstreamPlate()
Definition: EdbEDATrackSet.h:113
double GetPHCut()
Definition: EdbEDATrackSet.h:115
void SetUpstreamPlate(int ipl)
Definition: EdbEDATrackSet.h:92
int FindUpstreamPlate()
Definition: EdbEDATrackSet.h:445
bool Japanese()
Definition: EdbEDA.h:734

◆ MakeGUIIDSearch()

void EdbEDAMainTab::MakeGUIIDSearch ( )
265 {
266 if(eIDWindow!=NULL) {
267 eIDWindow->RaiseWindow();
268 return;
269 }
270 TGTransientFrame *fMainFrame = new TGTransientFrame(gClient->GetRoot(),gEve?gEve->GetMainWindow():0,10,300,kMainFrame | kVerticalFrame);
271 fMainFrame->SetLayoutBroken(kTRUE);
272
273 eIDWindow = fMainFrame;
274
275 // Search
276 int posy=10;
277
278 TGLabel *fLabel = new TGLabel(fMainFrame,"Search: track id = ");
279 fLabel->MoveResize(10,posy,120,18);
280 eGNESearchTrack = new TGNumberEntryField(fMainFrame, -1, 0,TGNumberFormat::kNESInteger);
281 fMainFrame->AddFrame(eGNESearchTrack, new TGLayoutHints(kLHintsTop | kLHintsLeft, 5, 5, 5, 5));
282 eGNESearchTrack->MoveResize(130,posy,60,18);
283 TGTextButton *fb = new TGTextButton(fMainFrame,"Go");
284 fb->MoveResize(200,posy+1,30,18);
285 fMainFrame->AddFrame(fb, new TGLayoutHints(kLHintsTop | kLHintsLeft, 5, 5, 5, 5));
286 fb->Connect("Clicked()","EdbEDAMainTab",this,"ExecTrackSearch()");
287
288 posy+=20;
289 fLabel = new TGLabel(fMainFrame,"pl = ");
290 fLabel->MoveResize(18,posy,30,18);
291 eGNESearchSegmentIPL = new TGNumberEntryField(fMainFrame, -1, 0,TGNumberFormat::kNESInteger);
292 fMainFrame->AddFrame(eGNESearchSegmentIPL, new TGLayoutHints(kLHintsTop | kLHintsLeft, 5, 5, 5, 5));
293 eGNESearchSegmentIPL->MoveResize(55,posy,30,18);
294
295 fLabel = new TGLabel(fMainFrame,"iseg = ");
296 fLabel->MoveResize(90,posy,35,18);
297 eGNESearchSegmentISeg = new TGNumberEntryField(fMainFrame, -1, 0,TGNumberFormat::kNESInteger);
298 fMainFrame->AddFrame(eGNESearchSegmentISeg, new TGLayoutHints(kLHintsTop | kLHintsLeft, 5, 5, 5, 5));
299 eGNESearchSegmentISeg->MoveResize(130,posy,60,18);
300
301 fb = new TGTextButton(fMainFrame,"Go");
302 fb->MoveResize(200,posy+1,30,18);
303 fMainFrame->AddFrame(fb, new TGLayoutHints(kLHintsTop | kLHintsLeft, 5, 5, 5, 5));
304 fb->Connect("Clicked()","EdbEDAMainTab",this,"ExecSegmentSearch()");
305
306 fMainFrame->SetMWMHints(kMWMDecorAll,
307 kMWMFuncAll,
308 kMWMInputModeless);
309 fMainFrame->MapSubwindows();
310
311 fMainFrame->Resize(fMainFrame->GetDefaultSize());
312 fMainFrame->MapWindow();
313 fMainFrame->Resize(250,70);
314
315}

◆ MakeGUIMain()

void EdbEDAMainTab::MakeGUIMain ( )
485 {
486
487 eTrackSet = gEDA->GetTrackSet("TS");
488
489
490 TEveBrowser * browser = gEve->GetBrowser();
491 browser->StartEmbedding(TRootBrowser::kLeft);
492
493 TGMainFrame* frmMain = new TGMainFrame(gClient->GetRoot(), 1000, 600);
494 frmMain->SetWindowName("XX GUI");
495 frmMain->SetCleanup(kDeepCleanup);
496
497 //TGLabel *fLabel;
498 TGTextButton *fb;
499
500 TGVerticalFrame* hf = new TGVerticalFrame(frmMain);
501 {
502 // "fGroupFrame600" group frame
503 TGGroupFrame *fGroupFrame1 = new TGGroupFrame(hf,"Cuts");
504 fGroupFrame1->SetLayoutBroken(kTRUE);
505 MakeGUICuts(fGroupFrame1);
506 hf->AddFrame(fGroupFrame1, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
507 fGroupFrame1->MoveResize(0,0,240,255);
508
509
510 // Group2
511 TGGroupFrame *fGroupFrame2 = new TGGroupFrame(hf,"Selection");
512 fGroupFrame2->SetLayoutBroken(kTRUE);
513 {
514 int posy = 15;
515 TGLabel *fLabel = new TGLabel(fGroupFrame2,"method ");
516 fLabel->MoveResize(10,posy,50,18);
517
518 eGRBSelSeg = new TGRadioButton(fGroupFrame2,"segment");
519 eGRBSelSeg->MoveResize(80,posy,80,18);
520 eGRBSelSeg->Connect("Clicked()","EdbEDAMainTab", this, "SetPickSegment()");
521 eGRBSelSeg->SetState((EButtonState)1);
522
523 eGRBSelTrack = new TGRadioButton(fGroupFrame2,"track");
524 eGRBSelTrack->MoveResize(170,posy,65,18);
525 eGRBSelTrack->Connect("Clicked()","EdbEDAMainTab", this, "SetPickTrack()");
526
527 posy+=23;
528 fb = new TGTextButton(fGroupFrame2,"Only selected");
529 fb->MoveResize(10,posy,90,18);
530 fb->Connect("Clicked()","EdbEDAMainTab", this,"DrawOnlySelected()");
531
532 fb = new TGTextButton(fGroupFrame2,"Remove");
533 fb->MoveResize(105,posy,60,18);
534 fb->Connect("Clicked()","EdbEDAMainTab", this,"RemoveSelected()");
535 fb->SetToolTipText("Remove selected tracks.");
536
537 fb = new TGTextButton(fGroupFrame2,"All");
538 fb->MoveResize(170,posy,60,18);
539 fb->Connect("Clicked()","EdbEDAMainTab", this,"SelectAll()");
540 fb->SetToolTipText("Select all tracks shown in the display.");
541
542 posy+=23;
543 eGCBExtention = new TGCheckButton(fGroupFrame2,"Extention");
544 eGCBExtention->MoveResize(15,posy,80,18);
545 eGCBExtention->Connect("Clicked()","EdbEDAMainTab", this,"SetExtention()");
546
547 fb = new TGTextButton(fGroupFrame2,"res");
548 fb->MoveResize(100,posy,40,18);
549 fb->Connect("Clicked()","EdbEDAMainTab", this,"DrawExtentionResolution()");
550 fb->SetToolTipText("Draw extention with measurement error + scattering.");
551
552 fLabel = new TGLabel(fGroupFrame2,"z =");
553 fLabel->MoveResize(145,posy,20,18);
554 eGNEExtentionZ = new TGNumberEntryField(fGroupFrame2, -1, gEDA->GetExtentionSet()->GetZ(), TGNumberFormat::kNESInteger);
555 eGNEExtentionZ -> MoveResize(170,posy,55,18);
556 eGNEExtentionZ -> Connect("TextChanged(char *)","EdbEDAMainTab", this,"SetExtentionZNumber()");
557
558
559 posy+=20;
560 eGSliderExtentionZ = new TGHSlider(fGroupFrame2,220,kSlider1 | kScaleBoth,-1,kHorizontalFrame);
561 eGSliderExtentionZ->SetRange(-80000,0);
562 eGSliderExtentionZ->SetPosition((int)gEDA->GetExtentionSet()->GetZ());
563 eGSliderExtentionZ->MoveResize(5,posy,225,15);
564 eGSliderExtentionZ->Connect("PositionChanged(int)","EdbEDAMainTab", this,"SetExtentionZSlider()");
565
566 }
567 hf->AddFrame(fGroupFrame2, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
568 fGroupFrame2->MoveResize(0,200,240,105);
569
570
571 // Group3
572 TGGroupFrame *fGroupFrame3 = new TGGroupFrame(hf,"Analysis");
573 fGroupFrame3->SetLayoutBroken(kTRUE);
574 {
575 fb = new TGTextButton(fGroupFrame3,"Min distance");
576 fb->MoveResize(10,20,110,18);
577 fb->Connect("Clicked()","EdbEDAMainTab", this,"CalcMinimumDistance()");
578
579 fb = new TGTextButton(fGroupFrame3,"Vertex");
580 fb->MoveResize(10,40,68,18);
581 fb->Connect("Clicked()","EdbEDAMainTab", this,"CalcVertex()");
582 fb->SetToolTipText("Calc vertex using only the selected segments.");
583
584 fb = new TGTextButton(fGroupFrame3,"+");
585 fb->MoveResize(78,40,18,18);
586 fb->Connect("Clicked()","EdbEDAMainTab", this,"CalcVertexPlus()");
587 fb->SetToolTipText("Calc vertex without clearing existing vertices.");
588
589 fb = new TGTextButton(fGroupFrame3,"clr");
590 fb->MoveResize(98,40,22,18);
591 fb->Connect("Clicked()","EdbEDAMainTab", this,"ClearVertices()");
592
593 fb = new TGTextButton(fGroupFrame3,"Momentum");
594 fb->MoveResize(125,20,110,18);
595 fb->Connect("Clicked()","EdbEDAMainTab", this,"CalcPSelected()");
596
597 fb = new TGTextButton(fGroupFrame3,"Calc IP");
598 fb->MoveResize(125,40,110,18);
599 fb->Connect("Clicked()","EdbEDAMainTab", this,"CalcIP()");
600 }
601 hf->AddFrame(fGroupFrame3, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
602 fGroupFrame3->MoveResize(0,210,240,72);
603
604 // Group4
605 TGGroupFrame *fGroupFrame4 = new TGGroupFrame(hf,"Display");
606 fGroupFrame4->SetLayoutBroken(kTRUE);
607 {
608 int posy=20;
609// TGLabel *fLabel = new TGLabel(fGroupFrame4,"Camera");
610// fLabel->MoveResize(10,posy,50,20);
611 int posx = 10;
612 int dx = 20;
613 fb = new TGTextButton(fGroupFrame4,"X", EdbEDACamera::X);
614 fb->MoveResize(posx,posy,dx,18);
615 //fb->SetCommand("gEDA->SetCamera(kEDA_CAMERA_X)");
616 fb->Connect("Clicked()","EdbEDAMainTab", this,"SetProjection()");
617
618 posx+=dx+5;
619 fb = new TGTextButton(fGroupFrame4,"Y", EdbEDACamera::Y);
620 fb->MoveResize(posx,posy,dx,18);
621// fb->SetCommand("gEDA->SetCamera(kEDA_CAMERA_Y)");
622 fb->Connect("Clicked()","EdbEDAMainTab", this,"SetProjection()");
623
624 posx+=dx+5;
625 fb = new TGTextButton(fGroupFrame4,"Z", EdbEDACamera::Z);
626 fb->MoveResize(posx,posy,dx,18);
627// fb->SetCommand("gEDA->SetCamera(kEDA_CAMERA_Z)");
628 fb->Connect("Clicked()","EdbEDAMainTab", this,"SetProjection()");
629
630 posx+=dx+5;
631 fb = new TGTextButton(fGroupFrame4,"Beam", EdbEDACamera::B);
632 fb->MoveResize(posx,posy,dx=50,18);
633// fb->SetCommand("gEDA->SetCamera(kEDA_CAMERA_B)");
634 fb->Connect("Clicked()","EdbEDAMainTab", this,"SetProjection()");
635
636 posx+=dx+5;
637 fb = new TGTextButton(fGroupFrame4,"Pick center");
638 fb->MoveResize(posx,posy,dx=80,18);
639 fb->Connect("Clicked()","EdbEDAMainTab", this,"PickCenter()");
640
641 posy+=20;
642
643 TGLabel *fLabel = new TGLabel(fGroupFrame4,"Track Color");
644 fLabel->MoveResize(10,posy,70,18);
645 //fb = new TGTextButton(fGroupFrame4,"Track Color");
646 //fb->SetCommand("gEDA->ShowColorTable()");
647 //fb->MoveResize(10,posy,70,18);
648
649 eGRBColorPL = new TGRadioButton(fGroupFrame4,"Plate", kCOLOR_BY_PLATE);
650 eGRBColorPL->MoveResize(85,posy,50,18);
651// eGRBColorPL->SetCommand("gEDA->SetColorMode(kCOLOR_BY_PLATE)");
652 eGRBColorPL->Connect("Clicked()","EdbEDAMainTab", this, "SetColorMode()");
653
654 eGRBColorPH = new TGRadioButton(fGroupFrame4,"PH", kCOLOR_BY_PH);
655 eGRBColorPH->MoveResize(140,posy,40,18);
656 //eGRBColorPH->SetCommand("gEDA->SetColorMode(kCOLOR_BY_PH)");
657 eGRBColorPH->Connect("Clicked()","EdbEDAMainTab", this, "SetColorMode()");
658 eGRBColorPH->SetState((EButtonState)1);
659
660 eGRBColorBK = new TGRadioButton(fGroupFrame4,"Black", kBLACKWHITE);
661 eGRBColorBK->MoveResize(185,posy,50,18);
662// eGRBColorBK->SetCommand("gEDA->SetColorMode(kBLACKWHITE)");
663 eGRBColorBK->Connect("Clicked()","EdbEDAMainTab", this, "SetColorMode()");
664
665 posy+=22;
666 dx=37;
667
668 eDrawChecks = new TObjArray;
669 posx=10;
670 dx = 45;
671 for(int i=0;i<gEDA->NTrackSets();i++){
672// posx+=dx+5;
673 if(i==5||i==10||i==15){
674 posx=10;
675 posy+=20;
676 }
678 TGCheckButton *cb = new TGCheckButton(fGroupFrame4,set->GetName(),i);
679 eDrawChecks->Add(cb);
680 cb->MoveResize(posx,posy,dx,20);
681 cb->SetState((EButtonState)1);
682 cb->Connect("Toggled(Bool_t)","EdbEDAMainTab", this, "SetDrawTrackSets(Bool_t)");
683 posx+=dx;
684 }
685
686 posy+=22;
687 posx = 10;
688 eGCBDrawArea = new TGCheckButton(fGroupFrame4,"Scan area");
689 eGCBDrawArea->MoveResize(posx,posy,dx=85,20);
690 eGCBDrawArea->SetState((EButtonState)1);
691 eGCBDrawArea->Connect("Clicked()","EdbEDAMainTab", this,"SetDrawAreas()");
692
693 posx+=dx+10;
694 eGCBTrackID = new TGCheckButton(fGroupFrame4,"track ID");
695 eGCBTrackID->MoveResize(posx,posy,dx=65,20);
696 eGCBTrackID->SetState((EButtonState)0);
697 eGCBTrackID->Connect("Clicked()","EdbEDAMainTab", this,"SetDrawText()");
698
699 posx+=dx+5;
700 eGCBTrackAngle = new TGCheckButton(fGroupFrame4,"angle");
701 eGCBTrackAngle->MoveResize(posx,posy,dx=60,20);
702 eGCBTrackAngle->SetState((EButtonState)0);
703 eGCBTrackAngle->Connect("Clicked()","EdbEDAMainTab", this,"SetDrawText()");
704
705
706 posy+=22;
707 eGCBAnimation = new TGCheckButton(fGroupFrame4,"Animation");
708 eGCBAnimation->MoveResize(10,posy,80,20);
709 //fb->SetCommand("gEDA->SetCamera(EDA_CAMERA_B)");
710 eGCBAnimation->Connect("Clicked()","EdbEDAMainTab", this,"SetAnimation()");
711
712 fb = new TGTextButton(fGroupFrame4,"op");
713 fb->MoveResize(90,posy,20,18);
714 fb->Connect("Clicked()", "EdbEDA", gEDA, "SetAnimationMode()");
715
716 fb = new TGTextButton(fGroupFrame4,"Save animation");
717 fb->MoveResize(125,posy,100,18);
718 fb->Connect("Clicked()", "EdbEDA", gEDA, "SaveAnimation()");
719
720 posy+=21;
721 fb = new TGTextButton(fGroupFrame4,"Snapshot");
722 fb->MoveResize(10,posy,100,18);
723 fb->Connect("Clicked()", "EdbEDA", gEDA, "Snapshot()");
724
725 fb = new TGTextButton(fGroupFrame4,"Save projections");
726 fb->MoveResize(125,posy,100,18);
727 fb->Connect("Clicked()", "EdbEDA", gEDA, "SavePictures()");
728
729 posy+=21;
730 fb = new TGTextButton(fGroupFrame4,"Write track list");
731 fb->MoveResize(10,posy,100,18);
732 fb->Connect("Clicked()","EdbEDAMainTab",this,"WriteListFile()");
733
734 fb = new TGTextButton(fGroupFrame4,"Read track list");
735 fb->MoveResize(125,posy,100,18);
736 fb->Connect("Clicked()","EdbEDAMainTab",this,"ReadListFile()");
737/*
738 posy+=21;
739 fb = new TGTextButton(fGroupFrame4,"Write filtered text");
740 fb->MoveResize(10,posy,100,18);
741 fb->Connect("Clicked()","EdbEDAMainTab", this, "WriteFilteredText()");
742
743
744 fb = new TGTextButton(fGroupFrame4,"Read filtered text");
745 fb->MoveResize(125,posy,100,18);
746 fb->Connect("Clicked()","EdbEDAMainTab", this, "ReadFilteredText()");
747*/
748 posy+=21;
749 fb = new TGTextButton(fGroupFrame4,"Write feedback");
750 fb->MoveResize(10,posy,90,18);
751 fb->Connect("Clicked()","EdbEDAMainTab", this, "WriteFeedback()");
752
753 fb = new TGTextButton(fGroupFrame4,"op");
754 fb->MoveResize(102,posy,20,18);
755 fb->Connect("Clicked()", "EdbEDAMainTab", this, "SetOutputFileModeButton()");
756
757 fb = new TGTextButton(fGroupFrame4,"Read feedback");
758 fb->MoveResize(125,posy,100,18);
759 fb->Connect("Clicked()","EdbEDAMainTab", this, "ReadFeedback()");
760
761 if(gEDA->Japanese()){
762
763 posy+=21;
764 fb = new TGTextButton(fGroupFrame4,"Write Mxx.all");
765 fb->MoveResize(10,posy,90,18);
766 fb->Connect("Clicked()","EdbEDAMainTab", this, "WriteMxxFile()");
767
768 }
769
770
771
772 }
773 hf->AddFrame(fGroupFrame4, new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2));
774 fGroupFrame4->MoveResize(0,260,240,240);
775
776 }
777
778 frmMain->AddFrame(hf);
779
780 frmMain->MapSubwindows();
781 frmMain->Resize();
782 frmMain->MapWindow();
783
784 browser->StopEmbedding();
785 browser->SetTabTitle("Main", 0);
786}
@ Z
Definition: EdbEDA.h:139
@ B
Definition: EdbEDA.h:139
@ Y
Definition: EdbEDA.h:139
@ X
Definition: EdbEDA.h:139
double GetZ()
Definition: EdbEDASets.h:246
TGRadioButton * eGRBColorPL
Definition: EdbEDAMainTab.h:57
TGNumberEntryField * eGNEExtentionZ
Definition: EdbEDAMainTab.h:54
void MakeGUICuts(TGGroupFrame *fGroupFrame1)
Definition: EdbEDAMainTab.C:318
TGHSlider * eGSliderExtentionZ
Definition: EdbEDAMainTab.h:52
TGCheckButton * eGCBTrackAngle
Definition: EdbEDAMainTab.h:12
TGCheckButton * eGCBExtention
Definition: EdbEDAMainTab.h:48
TGCheckButton * eGCBDrawArea
Definition: EdbEDAMainTab.h:62
TGRadioButton * eGRBColorPH
Definition: EdbEDAMainTab.h:56
TObjArray * eDrawChecks
Definition: EdbEDAMainTab.h:59
TGCheckButton * eGCBTrackID
Definition: EdbEDAMainTab.h:11
TGCheckButton * eGCBAnimation
Definition: EdbEDAMainTab.h:61
TGRadioButton * eGRBColorBK
Definition: EdbEDAMainTab.h:58
TGRadioButton * eGRBSelSeg
Definition: EdbEDAMainTab.h:13
TGRadioButton * eGRBSelTrack
Definition: EdbEDAMainTab.h:14
Definition: EdbEDATrackSet.h:178
EdbEDATrackSet * GetTrackSet(int i)
Definition: EdbEDA.h:617
int NTrackSets()
Definition: EdbEDA.h:616
EdbScanSet * set
Definition: emtraceback.cpp:14
@ kBLACKWHITE
Definition: EdbEDAUtil.h:86
@ kCOLOR_BY_PH
Definition: EdbEDAUtil.h:82
@ kCOLOR_BY_PLATE
Definition: EdbEDAUtil.h:81

◆ MicroTrackSearch()

void EdbEDAMainTab::MicroTrackSearch ( )

Micro-track search
search +- 1 plate from end of track.
fill holes by microtrack.

203 {
207
208 if(gEDA->NSelectedTracks()==0){
209 ErrorMessage("Please select tracks\n");
210 return;
211 }
212
213 for(int i=0;i<gEDA->NSelectedTracks();i++){
216 if(set!=gEDA->GetTrackSet("TS")){
217 ErrorMessage("Currently only MT search for TrackSet:TS is supported.");
218
219 int move=AskYesNo("Do you want to move the selected track to TS?");
220 if(move==kFALSE) continue;
221 else {
222 gEDA->GetTrackSet("TS")->AddTrack(t);
223 set->RemoveTrack(t);
224 set->RemoveTrackBase(t);
225 printf("track %5d move from TrackSet %s to %s.\n", t->ID(), set->GetName(), "TS");
226 }
227 }
228 set->MicroTrackSearch(t);
229 }
230 gEDA->Redraw();
231}
int NSelectedTracks()
Definition: EdbEDA.h:419
bool AskYesNo(char *message)
Definition: EdbEDAUtil.C:484

◆ PickCenter()

void EdbEDAMainTab::PickCenter ( )
1146 {
1147 TGLViewer *v = gEDA->GetGLViewer();
1148 v->PickCameraCenter();
1149 gEve->SetStatusLine("Pick a segment as the rotation center");
1150 printf("Pick a segment as the rotation center.\n");
1151}
TGLViewer * GetGLViewer()

◆ ReadFeedback()

void EdbEDAMainTab::ReadFeedback ( )
void ReadFeedbackFile(char *filename=NULL)
Definition: EdbEDA.C:757

◆ ReadFilteredText()

void EdbEDAMainTab::ReadFilteredText ( )
1310 {
1312 gEDA->Redraw();
1313}
EdbPVRec * ReadFilteredText(char *filename=NULL)
Definition: EdbEDA.C:1108

◆ ReadListFile()

void EdbEDAMainTab::ReadListFile ( char *  filename = NULL,
bool  clear_previous = kFALSE 
)

Read list file.
search tracks with plateID and segmentID of BT.
if corresponding track is not found in TS, it search in BT (couples file).

previously EdbEDATrackSet::ReadListFile is used.
however, in order to allow to read BT, this has changed.
and now this func play a real role.

1177 {
1185
1186 gEDA->StorePrevious();
1187
1188 // previously EdbEDATrackSet::ReadListFile is used.
1189 // eTrackSet->ReadListFile(NULL);
1190
1191 if(filename==NULL){
1192 TGFileInfo *fi = new TGFileInfo;
1193 fi->fIniDir = StrDup(".");
1194 const char *filetypes[] = { "List file", "*.lst", "All files","*",0,0};
1195 fi->fFileTypes = filetypes;
1196 new TGFileDialog(gClient->GetRoot(), gEve->GetMainWindow(), kFDOpen, fi);
1197 filename=fi->fFilename;
1198 }
1199
1200 EdbEDATrackSet *setTS = gEDA->GetTrackSet("TS");
1201 EdbEDATrackSet *setBT = gEDA->GetTrackSet("BT");
1202 printf("Read List file : %s\n", filename);
1203
1204 FILE *fp=NULL;
1205 if(filename!=NULL) fp = fopen(filename,"rt");
1206
1207 if(fp==NULL){
1208 printf("List file is not available.\n");
1209 return;
1210 }
1211
1212 if(clear_previous) {
1213 setTS->ClearTracks();
1214 setTS->ClearComments();
1215 setBT->ClearTracks();
1216 setBT->ClearComments();
1217 }
1218
1219 char buf[256];
1220 int ipl, iseg;
1221 char comment[256];
1222 // read list, setting TObjArray *selected.
1223 for(int i=0;NULL!=fgets(buf,sizeof(buf),fp);i++){
1224 if(feof(fp)||ferror(fp)) break;
1225 sscanf(buf,"%d %d %s", &ipl, &iseg, comment);
1226
1227 EdbTrackP *t=NULL;
1228 for(int j=0;j<setTS->NBase();j++){
1229 EdbTrackP *tt = setTS->GetTrackBase(j);
1230 if(NULL==tt) continue;
1231 for(int k=0;k<tt->N();k++){
1232 EdbSegP *s = tt->GetSegment(k);
1233 if(s->ID()==iseg){
1234 if(s->Plate()==ipl){
1235 setTS->SetTrack(tt); // add tt for drawing
1236 t=tt;
1237 break;
1238 }}
1239 }
1240 }
1241
1242 EdbEDATrackSet *set = NULL; // set for comments
1243 if(t) set = setTS;
1244 else set = setBT;
1245
1246 if(t==NULL) {
1247 // no track found in TS
1248 // search in BT
1249
1250 EdbPattern *pat = gEDA->GetPatternIPL(ipl);
1251 for(int j=0; j<pat->N(); j++){
1252 EdbSegP *s = pat->GetSegment(j);
1253 if(s->ID()==iseg){
1254 t = new EdbTrackP(s);
1255 t->SetCounters();
1256 t->SetPlate(s->Plate());
1257 setBT->AddTrack(t);
1258 }
1259 }
1260
1261 }
1262
1263
1264 if(t==NULL) continue;
1265
1266 unsigned int l;
1267 for(l=0;l<strlen(buf);l++){
1268 if(buf[l]=='\"') break;
1269 }
1270 if(l<strlen(buf) ){
1271 strcpy(comment, buf+l+1);
1272 for(l=0;l<strlen(comment);l++){
1273 if(comment[l]=='\"') comment[l]='\0';
1274 }
1275 if(strlen(comment)!=0) {
1276 set->AddComment(t,comment);
1277 }
1278 }
1279
1280 }
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291 gEDA->Redraw();
1292}
const char filename[256]
Definition: RecDispNU.C:83
EdbPattern * GetPatternIPL(int pid)
Definition: EdbEDA.C:262
EdbTrackP * GetTrackBase(int i)
Definition: EdbEDATrackSet.h:442
int NBase()
Definition: EdbEDATrackSet.h:440
void ClearComments()
Definition: EdbEDATrackSet.h:476
void SetTrack(EdbTrackP *t)
Definition: EdbEDATrackSet.h:288
Definition: EdbPattern.h:273
Int_t N() const
Definition: EdbPattern.h:86
EdbSegP * GetSegment(int i) const
Definition: EdbPattern.h:66
Int_t N() const
Definition: EdbPattern.h:177
EdbSegP * GetSegment(int i) const
Definition: EdbPattern.h:195
strcpy(cmd,"cp Shower.root Shower2.root")

◆ Redo()

void EdbEDAMainTab::Redo ( void  )
void RestorePrevious()
Definition: EdbEDA.h:694

◆ RemoveSelected()

void EdbEDAMainTab::RemoveSelected ( )
1019 {
1022 gEDA->Redraw();
1023}
void RemoveSelected()
Definition: EdbEDA.h:643

◆ SearchCouplesDmin() [1/2]

void EdbEDAMainTab::SearchCouplesDmin ( TObjArray *  segsarr,
int  ipl 
)
127 {
128
129 EdbPattern *pat = gEDA->GetPatternIPL(ipl);
130 if(pat==NULL) {
131 //ErrorMessage(Form("Cannot read couples. pl=%d",ipl));
132 //printf("Cannot read couples. pl=%d. stop.\n",ipl);
133 return;
134 }
135 printf("Search BaseTrack in PL %d with dmin cut %.1lf micron wrt the selected tracks\n", ipl, eGNETolDX->GetNumber());
136
138
139 int k=0;
140 printf("%2s %7s %5s %2s %8s %8s %4s\n", "PL","ID","Dmin","PH","TX","TY","Chi2");
141 double phcut = GetPHCut();
142 for(int i=0;i<pat->N();i++){
143 EdbSegP *s = pat->GetSegment(i);
144 if(s->W()<phcut) continue;
145
146 double dmin;
147 if(eTrackSet->Neighborhood(s,&dmin)){
148 // already found as tracks to be drawn?
149 int flag=0;
150 for(int j=0;j<eTrackSet->N();j++){
152 for(int k=0;k<t->N();k++){
153 EdbSegP *ss = t->GetSegment(k);
154 if(ss->PID()==s->PID()&&ss->ID()==s->ID()){
155 flag++;
156 }
157 }
158 }
159
160 if(flag) {
161 printf("%2d %7d %5.1lf %2d %8.4f %8.4f %4.2f already selected as Track\n",
162 ipl, s->ID(), dmin, (int)s->W(), s->TX(), s->TY(), s->Chi2()); continue;
163 }
164
165 if(NULL==segsarr->FindObject(s)) {
166 segsarr->Add(s);
167 k++;
168 printf("%2d %7d %5.1lf %2d %8.4f %8.4f %4.2f\n",
169 ipl, s->ID(), dmin, (int)s->W(), s->TX(), s->TY(), s->Chi2());
170 }
171 }
172 }
173 printf("%d basetracks are selected\n",k);
174 return;
175}
double GetPHCut()
Definition: EdbEDAMainTab.h:109
void SetNeighborSearch(bool b=kTRUE, TObjArray *selected=NULL, double dzup=-1, double dzdown=-1)
Definition: EdbEDATrackSet.h:95
int Neighborhood(EdbSegP *s, double *dmin=NULL)
Definition: EdbEDATrackSet.C:20
int N()
Definition: EdbEDATrackSet.h:439
EdbTrackP * GetTrack(EdbSegP *s)
Definition: EdbEDATrackSet.h:428
ss
Definition: energy.C:62

◆ SearchCouplesDmin() [2/2]

void EdbEDAMainTab::SearchCouplesDmin ( TObjArray *  segsarr = NULL)

this is called from MainTab.

178 {
181 ApplyParams();
182 if(segsarr==NULL) segsarr = new TObjArray;
183 int ipl = eGNESearchBTIPL->GetIntNumber();
184
185 if(ipl==-1) {
186 printf("Search BaseTrack in all plate with dmin cut %.1lf micron wrt the selected tracks\n", eGNETolDX->GetNumber());
187 for(int i=0;i<60;i++) {
188 SearchCouplesDmin(segsarr, i);
189 }
190 }
191 else{
192 SearchCouplesDmin(segsarr, ipl);
193 }
194
195 EdbEDATrackSet *TrackSet = gEDA->GetTrackSet("BT");
196 if(eGClearPrevious->IsOn()) TrackSet->ClearTracks();
197
198 TrackSet->AddSegments(segsarr);
199 gEDA->Redraw();
200}
void SearchCouplesDmin(TObjArray *segsarr, int ipl)
Definition: EdbEDAMainTab.C:127
void AddSegments(TObjArray *segments)
Definition: EdbEDATrackSet.h:414

◆ SearchCouplesIP() [1/3]

void EdbEDAMainTab::SearchCouplesIP ( int  ipl,
double  x,
double  y,
double  z,
double  ipcut = 50,
TObjArray *  cps = NULL 
)
79 {
80 if(NULL==cps) return;
81 EdbPattern *pat = gEDA->GetPatternIPL(ipl);
82 if(pat==NULL) {
83 //ErrorMessage(Form("Cannot read couples. pl=%d",ipl));
84 //printf("Cannot read couples. pl=%d. stop.\n",ipl);
85 return;
86 }
87 printf("Search BaseTrack in PL %d with IP cut %.1lf micron wrt (%.1lf, %.1lf, %.1lf)\n",
88 ipl, ipcut, x, y, z);
89
91 printf("%2s %6s %5s %2s %8s %8s\n", "pl","id","IP","ph","tx","ty");
92
93 int k=0;
94 int phcut = (int) GetPHCut();
95 for(int i=0;i<pat->N();i++){
96 EdbSegP *s = pat->GetSegment(i);
97 if(s->W()<phcut) continue;
98 double ip = EdbEDAUtil::CalcIP(s, x, y, z);
99 if(ipcut < ip) continue;
100
101 // already found as tracks to be drawn?
102 int flag=0;
103 for(int j=0;j<TS->N();j++){
104 EdbTrackP *t = TS->GetTrack(j);
105 for(int k=0;k<t->N();k++){
106 EdbSegP *ss = t->GetSegment(k);
107 if(ss->PID()==s->PID()&&ss->ID()==s->ID()){
108 flag++;
109 }
110 }
111 }
112 if(flag) {
113 printf("%2d %6d %5.1lf %2d %8.4f %8.4f already selected as Track\n",
114 ipl, s->ID(), ip, (int)s->W(), s->TX(), s->TY());
115 continue;
116 }
117 else printf("%2d %6d %5.1lf %2d %8.4f %8.4f\n", ipl, s->ID(), ip, (int)s->W(), s->TX(), s->TY());
118
119 cps->Add(s);
120 k++;
121 }
122
123 printf("%d basetracks are selected.\n",k);
124}
AcqTrackScanner * TS
Definition: hwinit.C:4

◆ SearchCouplesIP() [2/3]

void EdbEDAMainTab::SearchCouplesIP ( int  ipl,
EdbVertex v,
double  ipcut = 50,
TObjArray *  cps = NULL 
)
50 {
51 if(NULL==v) return;
52 if(NULL==cps) return;
53 SearchCouplesIP (ipl, v->X(), v->Y(), v->Z(), ipcut, cps);
54}
void SearchCouplesIP(int ipl, double x, double y, double z, double ipcut=50, TObjArray *cps=NULL)
Definition: EdbEDAMainTab.C:79

◆ SearchCouplesIP() [3/3]

void EdbEDAMainTab::SearchCouplesIP ( TObjArray *  segsarr = NULL)

This will be called from Main tab.

57 {
60 if(NULL==segsarr) segsarr = new TObjArray;
61 EdbVertex *selected_vertex=gEDA->GetSelectedVertex();
62 if(NULL==selected_vertex) return;
63 int ipl = eGNESearchBTIPL->GetIntNumber();
64 double ipcut = eGNETolDX->GetIntNumber();
65 if(ipl==0) return;
66
67 if(ipl==-1){
68 for(int i=1; i<60;i++) SearchCouplesIP ( i, selected_vertex, ipcut, segsarr);
69 }
70 else SearchCouplesIP (ipl, selected_vertex, ipcut, segsarr);
71
72 EdbEDATrackSet *TrackSet = gEDA->GetTrackSet("BT");
73 if(eGClearPrevious->IsOn()) TrackSet->ClearTracks();
74
75 TrackSet->AddSegments(segsarr);
76 gEDA->Redraw();
77}

◆ SelectAll()

void EdbEDAMainTab::SelectAll ( )
1024 {
1025 gEDA->SelectAll();
1026 gEDA->Redraw();
1027}
void SelectAll()
Definition: EdbEDA.C:1570

◆ SetAnimation()

void EdbEDAMainTab::SetAnimation ( )
1153 {
1154 if( eGCBAnimation->IsOn() ) gEDA->StartAnimation();
1155 else gEDA->StopAnimation();
1156}
void StopAnimation()
Definition: EdbEDA.C:122
void StartAnimation()
Definition: EdbEDA.C:114

◆ SetColorMode()

void EdbEDAMainTab::SetColorMode ( )
1158 {
1159 TGButton *btn = (TGButton *) gTQSender;
1160 int mode = btn->WidgetId();
1161 if(mode== kCOLOR_BY_PH){
1162 eGRBColorPH->SetState(kButtonDown);
1163 eGRBColorPL->SetState(kButtonUp);
1164 eGRBColorBK->SetState(kButtonUp);
1165 }else if(mode== kCOLOR_BY_PLATE){
1166 eGRBColorPH->SetState(kButtonUp);
1167 eGRBColorPL->SetState(kButtonDown);
1168 eGRBColorBK->SetState(kButtonUp);
1169 }else if(mode==kBLACKWHITE) {
1170 eGRBColorPH->SetState(kButtonUp);
1171 eGRBColorPL->SetState(kButtonUp);
1172 eGRBColorBK->SetState(kButtonDown);
1173 }
1174 gEDA->SetColorMode(mode);
1175}
void SetColorMode(int mode)
Definition: EdbEDA.h:701

◆ SetDrawAreas()

void EdbEDAMainTab::SetDrawAreas ( )
1126 {
1127 if(eGCBDrawArea->IsOn()) gEDA->SetDrawAreaSet(kTRUE);
1128 else gEDA->SetDrawAreaSet(kFALSE);
1129 //gEDA->Redraw();
1130 gEDA->Redraw();
1131}
void SetDrawAreaSet(bool draw)
Definition: EdbEDA.h:676

◆ SetDrawCheckBox()

void EdbEDAMainTab::SetDrawCheckBox ( )
1084 {
1085 for(int i=0;i<gEDA->NTrackSets();i++){
1086 TGCheckButton *cb = (TGCheckButton *) eDrawChecks->At(i);
1088 if(cb==NULL) continue;
1089 //cb->SetState((EButtonState) set->GetDraw());
1090
1091 cb->SetState(set->GetDraw()&&set->NBase()?kButtonDown:kButtonUp);
1092
1093 //if(set->NBase()>0){
1094 // cb->SetEnabled(kTRUE);
1095 // cb->SetState(set->GetDraw()?kButtonDown:kButtonUp);
1096 //}
1097 //else cb->SetEnabled(kFALSE);
1098 }
1099}

◆ SetDrawText()

void EdbEDAMainTab::SetDrawText ( )
1040 {
1041 if(eGCBTrackID->IsOn()) gEDA->SetDrawTrackID(kTRUE);
1042 else gEDA->SetDrawTrackID(kFALSE);
1043
1044 if(eGCBTrackAngle->IsOn()) gEDA->SetDrawTrackAngle(kTRUE);
1045 else gEDA->SetDrawTrackAngle(kFALSE);
1046
1047 gEDA->Redraw();
1048}
void SetDrawTrackID(bool draw)
Definition: EdbEDA.h:674
void SetDrawTrackAngle(bool draw)
Definition: EdbEDA.h:675

◆ SetDrawTrackSets()

void EdbEDAMainTab::SetDrawTrackSets ( Bool_t  on)

Control Draw option for each Track sets.

1050 {
1052
1053 TGButton *btn = (TGButton *) gTQSender;
1054 int id = btn->WidgetId(); // id is ordinal of TrackSets. TS=0, SB=1,,,,
1055
1056 TGCheckButton *cb = (TGCheckButton *) eDrawChecks->At(id);
1058 if(cb==NULL||set==NULL) return;
1059
1060 if(set->NBase()) set->SetDraw(cb->GetState()?kTRUE:kFALSE);
1061
1062 if(set->NBase()==0) {
1063 gEve->GetBrowser()->GetTabBottom()->SetTab(0); // set TrackSetTab in front.
1064 }
1065
1066 gEDA->GetTrackSetTab()->Select(id);
1067 gEDA->GetTrackSetTab()->Selected(set->GetName());
1068
1069/*
1070 for(int i=0;i<gEDA->NTrackSets();i++){
1071 TGCheckButton *cb = (TGCheckButton *) eDrawChecks->At(i);
1072 EdbEDATrackSet *set = gEDA->GetTrackSet(i);
1073 if(cb==NULL) continue;
1074 set->SetDraw(cb->GetState()?kTRUE:kFALSE);
1075 }
1076*/
1077 gEDA->Redraw();
1078}
void Selected(const char *txt)
Definition: EdbEDATrackSet.C:1822
void Select(int id)
Definition: EdbEDATrackSet.h:640
EdbEDATrackSetTab * GetTrackSetTab()
Definition: EdbEDA.h:725

◆ SetExtention()

void EdbEDAMainTab::SetExtention ( )
1029 {
1030 int extention=(int) eGCBExtention->IsOn();
1031 if(extention){
1033 gEDA->GetExtentionSet()->Draw(kTRUE);
1034 } else {
1036 gEDA->GetExtentionSet()->UnDraw(kTRUE);
1037 }
1038 printf("extention %s\n", eGCBExtention->IsOn()? "On": "Off");
1039}
void Enable()
Definition: EdbEDASets.h:243
void Draw(int redraw=0, int fix=0)
Definition: EdbEDASets.C:225
void UnDraw(int redraw=0)
Definition: EdbEDASets.C:255
void Disable()
Definition: EdbEDASets.h:244

◆ SetExtentionZNumber()

void EdbEDAMainTab::SetExtentionZNumber ( )
1104 {
1105 double z = eGNEExtentionZ ->GetNumber();
1106 eGSliderExtentionZ->SetPosition((int) z);
1107 gEDA->GetExtentionSet()->SetZ(z);
1108 gEDA->GetExtentionSet()->Draw(kTRUE);
1109 }
void SetZ(double z)
Definition: EdbEDASets.h:245

◆ SetExtentionZSlider()

void EdbEDAMainTab::SetExtentionZSlider ( )
1101 {
1102 eGNEExtentionZ->SetNumber(eGSliderExtentionZ->GetPosition());
1103}

◆ SetOutputFileModeButton()

void EdbEDAMainTab::SetOutputFileModeButton ( )
1315 {
1318 "Feeback output mode : 0 = with comment and true-track-id. 1: without.",
1320}
int eOutputFileMode
Definition: EdbEDA.h:164
int InputNumberInteger(char *message, int idefault=0)
Definition: EdbEDAUtil.C:846

◆ SetPickSegment()

void EdbEDAMainTab::SetPickSegment ( )
1134 {
1135 printf("selection mode : Segment\n");
1136 gEve->GetSelection()->SetPickToSelect(TEveSelection::kPS_Element);
1137 eGRBSelSeg->SetState((EButtonState)1);
1138 eGRBSelTrack->SetState((EButtonState)0);
1139}

◆ SetPickTrack()

void EdbEDAMainTab::SetPickTrack ( )
1140 {
1141 gEve->GetSelection()->SetPickToSelect(TEveSelection::kPS_Compound);
1142 eGRBSelSeg->SetState((EButtonState)0);
1143 eGRBSelTrack->SetState((EButtonState)1);
1144}

◆ SetProjection()

void EdbEDAMainTab::SetProjection ( )
1116 {
1117 // Set Camera Projection
1118 TGButton *btn = (TGButton *) gTQSender;
1119 int id = btn->WidgetId();
1120
1121 gEDA->SetCamera(id);
1122}
void SetCamera(int projection=Y)
Definition: EdbEDA.C:50

◆ WriteFeedback()

void EdbEDAMainTab::WriteFeedback ( )
void WriteFeedbackFile(char *filename=NULL)
Definition: EdbEDA.C:308

◆ WriteFilteredText()

void EdbEDAMainTab::WriteFilteredText ( )
1307 {
1309}
void WriteFilteredText(char *filename=NULL)
Definition: EdbEDA.C:1375

◆ WriteListFile()

char * EdbEDAMainTab::WriteListFile ( char *  filename = NULL)
1294 {
1296
1297 EdbEDATrackSet *setBT = gEDA->GetTrackSet("BT");
1298
1299 if (setBT->N()){
1300 gEDA->GetTrackSet("BT")->WriteListFile(filename, kTRUE);
1301 }
1302
1303 return filename;
1304
1305}
char * WriteListFile(char *filename=NULL, bool append=kFALSE, bool open_editor=kFALSE)
Definition: EdbEDATrackSet.C:1138

◆ WriteMxxFile()

void EdbEDAMainTab::WriteMxxFile ( )
1324 {
1325 TObjArray *tracks = gEDA->GetCurrentTracks();
1327}
TObjArray * GetCurrentTracks(void)
Definition: EdbEDA.h:588
TTree * tracks
Definition: check_tr.C:19
void WriteTracksMxx(TObjArray *pvr, char *filename=NULL)
Definition: EdbEDAUtil.C:1231

Member Data Documentation

◆ eDrawChecks

TObjArray* EdbEDAMainTab::eDrawChecks

◆ eGCBAngleCut

TGCheckButton* EdbEDAMainTab::eGCBAngleCut

◆ eGCBAnimation

TGCheckButton* EdbEDAMainTab::eGCBAnimation

◆ eGCBDrawArea

TGCheckButton* EdbEDAMainTab::eGCBDrawArea

◆ eGCBExtention

TGCheckButton* EdbEDAMainTab::eGCBExtention

◆ eGCBExtention_res

TGCheckButton* EdbEDAMainTab::eGCBExtention_res

◆ eGCBIpCut

TGCheckButton* EdbEDAMainTab::eGCBIpCut

◆ eGCBNeighbor

TGCheckButton* EdbEDAMainTab::eGCBNeighbor

◆ eGCBTrackAngle

TGCheckButton* EdbEDAMainTab::eGCBTrackAngle
private

◆ eGCBTrackID

TGCheckButton* EdbEDAMainTab::eGCBTrackID
private

◆ eGClearPrevious

TGCheckButton* EdbEDAMainTab::eGClearPrevious

◆ eGNEAX

TGNumberEntryField* EdbEDAMainTab::eGNEAX

◆ eGNEAY

TGNumberEntryField* EdbEDAMainTab::eGNEAY

◆ eGNEExtentionZ

TGNumberEntryField* EdbEDAMainTab::eGNEExtentionZ

◆ eGNEMaxPlate

TGNumberEntry* EdbEDAMainTab::eGNEMaxPlate

◆ eGNENeighborDzDown

TGNumberEntryField* EdbEDAMainTab::eGNENeighborDzDown

◆ eGNENeighborDzUp

TGNumberEntryField* EdbEDAMainTab::eGNENeighborDzUp

◆ eGNENseg

TGNumberEntry* EdbEDAMainTab::eGNENseg

◆ eGNEPHDTRMS

TGNumberEntryField* EdbEDAMainTab::eGNEPHDTRMS

◆ eGNESearchBTIPL

TGNumberEntry* EdbEDAMainTab::eGNESearchBTIPL

◆ eGNESearchSegmentIPL

TGNumberEntryField* EdbEDAMainTab::eGNESearchSegmentIPL

◆ eGNESearchSegmentISeg

TGNumberEntryField* EdbEDAMainTab::eGNESearchSegmentISeg

◆ eGNESearchTrack

TGNumberEntryField* EdbEDAMainTab::eGNESearchTrack

◆ eGNETolDT

TGNumberEntry* EdbEDAMainTab::eGNETolDT

◆ eGNETolDX

TGNumberEntry* EdbEDAMainTab::eGNETolDX

◆ eGNEWCut

TGNumberEntryField* EdbEDAMainTab::eGNEWCut

◆ eGRBColorBK

TGRadioButton* EdbEDAMainTab::eGRBColorBK

◆ eGRBColorPH

TGRadioButton* EdbEDAMainTab::eGRBColorPH

◆ eGRBColorPL

TGRadioButton* EdbEDAMainTab::eGRBColorPL

◆ eGRBSelSeg

TGRadioButton* EdbEDAMainTab::eGRBSelSeg
private

◆ eGRBSelTrack

TGRadioButton* EdbEDAMainTab::eGRBSelTrack
private

◆ eGSideOut

TGCheckButton* EdbEDAMainTab::eGSideOut

◆ eGSideOutPlate

TGNumberEntry* EdbEDAMainTab::eGSideOutPlate

◆ eGSliderExtentionZ

TGHSlider* EdbEDAMainTab::eGSliderExtentionZ

◆ eIDWindow

TGMainFrame* EdbEDAMainTab::eIDWindow

◆ eTrackSet

EdbEDATrackSet* EdbEDAMainTab::eTrackSet

TrackSet for the search.

◆ fTextButton_scanback

TGCheckButton* EdbEDAMainTab::fTextButton_scanback

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