FEDRA emulsion software from the OPERA Collaboration
EdbDisplay Class Reference

#include <EdbDisplay.h>

Inheritance diagram for EdbDisplay:
Collaboration diagram for EdbDisplay:

Public Member Functions

void AcceptModifiedParams ()
 
void AcceptModifiedTrackParams ()
 
void AcceptModifiedVTX ()
 
void CancelDialogModifiedParams ()
 
void CancelDialogModifiedTrackParams ()
 
void CancelModifiedVTX ()
 
void ClearSegmentEnv ()
 
void CloseDialogModifiedParams ()
 
void CloseDialogModifiedTrackParams ()
 
void CloseDialogModifiedVTX ()
 
void Delete ()
 
void DeleteModifiedVTX ()
 
void DialogModifiedVTX ()
 
void DialogNeighborParameters ()
 
void DialogTrackParameters ()
 
void DrawAllObjects ()
 
void DrawRef (float start[3], float end[3])
 
void DrawSegmentExtrapolationLine (const EdbSegP &s, float zmin, float zmax)
 
void DrawVertexEnvironment ()
 
void DrawVTXTracks (char *type, EdbVertex *v=0)
 
 EdbDisplay ()
 
 EdbDisplay (const char *title, EdbLayer &la, TCanvas *Canvas=0)
 
 EdbDisplay (const char *title, Float_t x0, Float_t x1, Float_t y0, Float_t y1, Float_t z0, Float_t z1, TCanvas *Canvas=0)
 
void GuessRange (float margZmin=3000, float margZmax=1000, float margR=300)
 
void Refresh ()
 
void RemoveTrackFromTable (int ivt=0)
 
EdbSegGSegLine (const EdbSegP *seg)
 
void SelectVertexTracks (TObjArray *vtx)
 
void Set0 ()
 
void SetArrSegG (TObjArray *arrg)
 
void SetArrSegP (TObjArray *arr)
 
void SetArrTr (TObjArray *arr)
 
void SetArrV (TObjArray *arrv)
 
void SetDrawTracks (int opt)
 
void SetDrawVertex (int opt)
 
void SetVerRec (EdbVertexRec *evr)
 
void TrackDraw (EdbTrackP *tr, Color_t kColor=kWhite)
 
void UndoModifiedVTX ()
 
EdbVertexRecVerRec () const
 
void VertexDraw (EdbVertex *v)
 
 ~EdbDisplay ()
 
- Public Member Functions inherited from EdbDisplayBase
virtual void Clear ()
 
virtual void ClearNewVTX ()
 
virtual void ClearPreVTX ()
 
virtual void CreateCanvasVTX ()
 
virtual void DisplayButtons ()
 
virtual Int_t DistancetoPrimitive (Int_t px, Int_t py)
 
virtual void Draw (Option_t *option="")
 
virtual void DrawAcc ()
 
virtual void DrawAllViews ()
 
virtual void DrawCan ()
 
virtual void DrawDetector ()
 
virtual void DrawEnv ()
 
virtual void DrawNewBut (char *text)
 
virtual void DrawNewVTX (char *text)
 
virtual void DrawOldBut (char *text)
 
virtual void DrawOldVTX (char *text)
 
virtual void DrawPreBut (char *text)
 
virtual void DrawPreVTX (char *text)
 
virtual void DrawTitle (Option_t *option="")
 
virtual void DrawUnd ()
 
virtual void DrawView (Float_t theta, Float_t phi, Float_t psi=0)
 
virtual void DrawViewGL ()
 
virtual void DrawViewX3D ()
 
 EdbDisplayBase ()
 
 EdbDisplayBase (const char *title, Float_t x0, Float_t x1, Float_t y0, Float_t y1, Float_t z0, Float_t z1, TCanvas *Canvas=0)
 
virtual void ExecuteEvent (Int_t event, Int_t px, Int_t py)
 
Bool_t GetDrawDet () const
 
virtual char * GetObjectInfo (int px, int py) const
 
virtual void SetColorBG (int color=1)
 
virtual void SetDetector (TGeoVolume *det)
 
virtual void SetDrawDet (Bool_t fflag)
 
virtual void SetLineWidth (int width=1)
 
virtual void SetPickMode ()
 
virtual void SetRange (Float_t x0, Float_t x1, Float_t y0, Float_t y1, Float_t z0, Float_t z1)
 
virtual void SetRotate ()
 
virtual void SetStyle (int Style=0)
 
virtual void SetView (Float_t theta, Float_t phi, Float_t psi=0)
 
virtual void SetZoomMode ()
 
virtual void SwDrawDet ()
 
virtual void UnZoom ()
 
 ~EdbDisplayBase ()
 

Static Public Member Functions

static EdbDisplayEdbDisplayExist (const char *title)
 

Public Attributes

TObjArray * eArrSegG
 
TObjArray * eArrSegP
 
TObjArray * eArrSegPSave
 
TObjArray * eArrTr
 
TObjArray * eArrTrSave
 
TObjArray * eArrV
 
TObjArray * eArrVSave
 
TList eCreatedTracks
 
Double_t eDpat
 
Int_t eFromPlate
 
Double_t eImpMax
 
Int_t eIndVert
 
Int_t eIndVertSave
 
Double_t eM
 
Double_t eP
 
EdbVertexePrevious
 
Double_t eRadMax
 
EdbSegPeSegment
 
TPolyMarker3D * eSegPM
 
Double_t eSegWmin
 
Double_t eTImpMax
 
Int_t eToPlate
 
Double_t eTProbMin
 
EdbTrackPeTrack
 
EdbTrackPeTrack1
 
EdbTrackPeTrack2
 
EdbVertexReceVerRec
 
EdbVertexeVertex
 
Bool_t eWait_Answer
 
EdbVertexeWorking
 
- Public Attributes inherited from EdbDisplayBase
TCanvasfCanvas
 
TCanvasfCanvasTRK
 
TCanvasfCanvasVTX
 
TPad * fPad
 
TPaveText * fVTXTRKInfo
 

Private Attributes

TArrayI * eColors
 
Int_t eDrawTracks
 
Int_t eDrawVertex
 
TArrayF * eDZs
 
TGNumberEntry * fNumericEntries [3]
 

Additional Inherited Members

- Protected Attributes inherited from EdbDisplayBase
TButton * fAccButton
 
TButton * fAllButton
 
TArc * fArcButton
 
TPad * fButtons
 
TButton * fCanButton
 
char fCanvasName [128]
 
Int_t fColorBG
 
TGeoVolume * fDetector
 
Bool_t fDrawAllViews
 
Bool_t fDrawDet
 
TButton * fEnvButton
 
TText * fHdrVTX
 
Width_t fLineWidth
 
TGMainFrame * fMain
 
TButton * fNewBut
 
TText * fNewVTX
 
TButton * fOldBut
 
TText * fOldVTX
 
Float_t fPhi
 
TButton * fPickButton
 
TButton * fPreBut
 
TText * fPreVTX
 
Float_t fPsi
 
TButton * fRemBut [50]
 
Int_t fStyle
 
Float_t fTheta
 
char fTitle [128]
 
TPad * fTrigPad
 
TButton * fUndButton
 
TButton * fUnZoomButton
 
Edb3DViewfView
 
TPaveText * fVTXTracks
 
Float_t fVx0
 
Float_t fVx1
 
Float_t fVy0
 
Float_t fVy1
 
Float_t fVz0
 
Float_t fVz1
 
TButton * fZoomButton
 
Int_t fZoomMode
 
Int_t fZooms
 
Double_t fZoomX0 [kMAXZOOMS]
 
Double_t fZoomX1 [kMAXZOOMS]
 
Double_t fZoomY0 [kMAXZOOMS]
 
Double_t fZoomY1 [kMAXZOOMS]
 

Constructor & Destructor Documentation

◆ EdbDisplay() [1/3]

EdbDisplay::EdbDisplay ( )
inline
72 : EdbDisplayBase() {Set0();}
EdbDisplayBase()
Definition: EdbDisplayBase.cxx:26
void Set0()
Definition: EdbDisplay.cxx:189

◆ ~EdbDisplay()

EdbDisplay::~EdbDisplay ( )
241 {
243 
244  if (gROOT->GetListOfSpecials()->FindObject(this))
245  gROOT->GetListOfSpecials()->Remove(this);
246 
247  SafeDelete(fCanvasVTX);
248  SafeDelete(fCanvasTRK);
249  SafeDelete(eWorking);
250  SafeDelete(ePrevious);
251 
252  if (eArrSegPSave) SafeDelete(eArrSegP);
253  if (eArrVSave) SafeDelete(eArrV);
254  if (eArrTrSave) SafeDelete(eArrTr);
255 
256  //SafeDelete(eArrSegG);
257 }
TCanvas * fCanvasVTX
Definition: EdbDisplayBase.h:124
TCanvas * fCanvasTRK
Definition: EdbDisplayBase.h:125
TObjArray * eArrTrSave
Definition: EdbDisplay.h:45
TObjArray * eArrV
Definition: EdbDisplay.h:43
EdbVertex * ePrevious
Definition: EdbDisplay.h:49
TObjArray * eArrSegP
Definition: EdbDisplay.h:41
TObjArray * eArrTr
Definition: EdbDisplay.h:42
TObjArray * eArrSegPSave
Definition: EdbDisplay.h:44
EdbVertex * eWorking
Definition: EdbDisplay.h:47
void DeleteModifiedVTX()
Definition: EdbDisplay.cxx:3299
TObjArray * eArrVSave
Definition: EdbDisplay.h:46

◆ EdbDisplay() [2/3]

EdbDisplay::EdbDisplay ( const char *  title,
Float_t  x0,
Float_t  x1,
Float_t  y0,
Float_t  y1,
Float_t  z0,
Float_t  z1,
TCanvas Canvas = 0 
)
inline
79  :
80  EdbDisplayBase(title, x0, x1, y0, y1, z0, z1, Canvas) {Set0();}
brick z0
Definition: RecDispMC.C:106

◆ EdbDisplay() [3/3]

EdbDisplay::EdbDisplay ( const char *  title,
EdbLayer la,
TCanvas Canvas = 0 
)
inline
82  :
83  EdbDisplayBase(title, la.Xmin(), la.Xmax(), la.Ymin(), la.Ymax(),
84  la.Zmin(), la.Zmax(), Canvas)
85  {Set0();}
float Ymin() const
Definition: EdbLayer.h:88
float Ymax() const
Definition: EdbLayer.h:89
float Xmax() const
Definition: EdbLayer.h:87
float Zmin() const
Definition: EdbLayer.h:81
float Xmin() const
Definition: EdbLayer.h:86
float Zmax() const
Definition: EdbLayer.h:82

Member Function Documentation

◆ AcceptModifiedParams()

void EdbDisplay::AcceptModifiedParams ( )
3990 {
3991  eWait_Answer = false;
3992  if(fNumericEntries[0]) eRadMax = fNumericEntries[0]->GetIntNumber();
3993  if(fNumericEntries[1]) eDpat = fNumericEntries[1]->GetIntNumber();
3994  if(fNumericEntries[2]) eImpMax = fNumericEntries[2]->GetIntNumber();
3995  if(fNumericEntries[3]) eSegWmin= fNumericEntries[3]->GetIntNumber();
3996 
3997  for (Int_t i = 0; i < 4; i++) SafeDelete(fNumericEntries[i]);
3998 
3999  fMain->SendCloseMessage();
4000  fMain = 0;
4001 }
TGMainFrame * fMain
Definition: EdbDisplayBase.h:107
Double_t eSegWmin
Definition: EdbDisplay.h:66
Double_t eImpMax
Definition: EdbDisplay.h:61
TGNumberEntry * fNumericEntries[3]
Definition: EdbDisplay.h:32
Double_t eDpat
Definition: EdbDisplay.h:60
Bool_t eWait_Answer
Definition: EdbDisplay.h:55
Double_t eRadMax
Definition: EdbDisplay.h:59

◆ AcceptModifiedTrackParams()

void EdbDisplay::AcceptModifiedTrackParams ( )
4018 {
4019  eWait_Answer = false;
4020  if(fNumericEntries[0]) eP = fNumericEntries[0]->GetNumber();
4021  if(fNumericEntries[1]) eM = fNumericEntries[1]->GetNumber();
4022  if(fNumericEntries[2]) eTImpMax = fNumericEntries[2]->GetNumber();
4023  if(fNumericEntries[3]) eTProbMin = fNumericEntries[3]->GetNumber();
4024  for (Int_t i = 0; i < 4; i++) SafeDelete(fNumericEntries[i]);
4025  fMain->SendCloseMessage();
4026  fMain = 0;
4027 }
Double_t eM
Definition: EdbDisplay.h:63
Double_t eTProbMin
Definition: EdbDisplay.h:65
Double_t eTImpMax
Definition: EdbDisplay.h:64
Double_t eP
Definition: EdbDisplay.h:62

◆ AcceptModifiedVTX()

void EdbDisplay::AcceptModifiedVTX ( )
3490 {
3491  EdbVertex *eVe = 0;
3493  if (ePrevious && (ePrevious != eVertex) && (ePrevious != eWorking))
3494  {
3495  delete ePrevious;
3496  ePrevious = 0;
3497  }
3498  if (eWorking && eVertex)
3499  {
3500  //if (!eVerRec) eVerRec = ((EdbVertexRec*)(gROOT->GetListOfSpecials()->FindObject("EdbVertexRec")));
3501  if (eVerRec) if (eVerRec->IsA() != EdbVertexRec::Class()) eVerRec = 0;
3502  if (!eVerRec) {printf("Error: EdbDisplay:AcceptModifiedVTX: EdbVertexRec not defined, use SetVerRec(...)\n"); return;}
3503  EdbVertex *eW = eWorking;
3504  int ind = eVertex->ID();
3505  if (ind < 0)
3506  {
3507  if (eVerRec->eVTX)
3508  {
3509  ind = eVerRec->eVTX->GetEntriesFast();
3510  }
3511  else
3512  {
3513  eVerRec->eVTX = new TObjArray(10);
3514  ind = 0;
3515  }
3516  }
3517  eW->SetID(ind);
3518  eW->SetQuality(eW->V()->prob()/
3519  (eW->V()->vtx_cov_x()+eW->V()->vtx_cov_y()));
3520  if (eVerRec)
3521  {
3522  int ntr = eVertex->N();
3523 // printf("ind %d ntr %d\n", ind, ntr);
3524 // fflush(stdout);
3525  for(int i=0; i<ntr; i++)
3526  {
3527 // printf(" %d\n", i);
3528 // fflush(stdout);
3529  (eVerRec->eVTA).Remove(eVertex->GetVTa(i));
3530  }
3531  }
3532  int indd = -1;
3533 // if (!eArrV) eArrV = new TObjArray(10);
3534  if (eArrV) indd = eArrV->IndexOf(eVertex);
3535  if (indd >= 0)
3536  {
3537 // eArrV->RemoveAt(indd);
3538  eArrV->AddAt(eW, indd);
3539  }
3540  eVe = eVertex;
3541  EdbTrackP *tr = 0;
3542 
3543  TObjArray *etr = 0;
3544  if (eVerRec) etr = eVerRec->eEdbTracks;
3545  int trind = 0;
3546  if (etr) trind = etr->GetEntriesFast();
3547  for (int i = 0; i < eCreatedTracks.GetSize(); i++)
3548  {
3549  tr = (EdbTrackP *)(eCreatedTracks.At(i));
3550  if (tr)
3551  {
3552 // printf("i %d id %d\n", i, tr->ID());
3553 // fflush(stdout);
3554 // if (tr->VTAS() || tr->VTAE())
3555 // {
3556  tr->SetID(trind++);
3557  if (etr) etr->Add(tr);
3558  if (eArrTr) eArrTr->Add(tr);
3559 // printf(" id %d\n", tr->ID());
3560 // fflush(stdout);
3561 // }
3562 // else delete tr;
3563  }
3564  }
3565  eCreatedTracks.Clear();
3566 
3567  delete eVertex; //?????????
3568  eVertex = 0;
3569 
3570  eW->ResetTracks();
3571 
3572  int ntr = eW->N();
3573  int ifl = 0;
3574  for(int i=0; i<ntr; i++)
3575  {
3576  tr = eW->GetTrack(i);
3577  if (eTrack)
3578  {
3579  if (tr == eTrack)
3580  {
3581  TObjArray *etr = 0;
3582  if (eVerRec) etr = eVerRec->eEdbTracks;
3583  int trind = 0;
3584  if (etr) trind = etr->GetEntriesFast();
3585  eTrack->SetID(trind);
3586  if (etr) etr->Add(eTrack);
3588  eTrack = 0;
3589  }
3590  }
3591  if (eW->Zpos(i)) ifl = ifl | 1;
3592  else ifl = ifl | 2;
3593  if (tr && eArrTr)
3594  {
3595  indd = eArrTr->IndexOf(tr);
3596  if (indd < 0)
3597  {
3598  eArrTr->Add(tr);
3599  }
3600  }
3601  }
3602  ifl = 4 - ifl;
3603  if (ifl == 3) ifl = 0;
3604  if (eW->Nv()) ifl += 3;
3605  eW->SetFlag(ifl);
3606  if (eVerRec)
3607  {
3608 // eVerRec->eVTX->RemoveAt(ind);
3609  if (eVerRec->eVTX) eVerRec->eVTX->AddAt(eW, ind);
3610  for(int i=0; i<ntr; i++)
3611  {
3612  eVerRec->AddVTA(eW->GetVTa(i));
3613  }
3614  }
3615  }
3616  if (eVertex && eVertex->ID() < 0 && !eWorking)
3617  {
3618  int ind = 0;
3619  if (eVerRec->eVTX)
3620  {
3621  ind = eVerRec->eVTX->GetEntriesFast();
3622  }
3623  else
3624  {
3625  eVerRec->eVTX = new TObjArray(10);
3626  ind = 0;
3627  }
3628  eVertex->SetID(ind);
3629 // if (!eArrV) eArrV = new TObjArray(10);
3630  if (eArrV) eArrV->Add(eVertex);
3631  EdbTrackP *tr = 0;
3632  TObjArray *etr = 0;
3633  if (eVerRec) etr = eVerRec->eEdbTracks;
3634  int trind = 0;
3635  if (etr) trind = etr->GetEntriesFast();
3636  for (int i = 0; i < eCreatedTracks.GetSize(); i++)
3637  {
3638  tr = (EdbTrackP *)(eCreatedTracks.At(i));
3639  if (tr)
3640  {
3641 // if (tr->VTAS() || tr->VTAE())
3642 // {
3643  tr->SetID(trind++);
3644  if (etr) etr->Add(tr);
3645  if (eArrTr) eArrTr->Add(tr);
3646 // }
3647 // else delete tr;
3648  }
3649  }
3650  eCreatedTracks.Clear();
3651 
3652  eVertex->ResetTracks();
3653  int ntr = eVertex->N();
3654  int ifl = 0;
3655  int indd = 0;
3656  for(int i=0; i<ntr; i++)
3657  {
3658  tr = eVertex->GetTrack(i);
3659  if (eTrack)
3660  {
3661  if (tr == eTrack)
3662  {
3663  TObjArray *etr = 0;
3664  if (eVerRec) etr = eVerRec->eEdbTracks;
3665  int trind = 0;
3666  if (etr) trind = etr->GetEntriesFast();
3667  eTrack->SetID(trind);
3668  if (etr) etr->Add(eTrack);
3670  eTrack = 0;
3671  }
3672  }
3673  if (eVertex->Zpos(i)) ifl = ifl | 1;
3674  else ifl = ifl | 2;
3675  if (tr && eArrTr)
3676  {
3677  indd = eArrTr->IndexOf(tr);
3678  if (indd < 0)
3679  {
3680  eArrTr->Add(tr);
3681  }
3682  }
3683  }
3684  ifl = 4 - ifl;
3685  if (ifl == 3) ifl = 0;
3686  if (eVertex->Nv()) ifl += 3;
3687  eVertex->SetFlag(ifl);
3688  if (eVerRec)
3689  {
3690 // eVerRec->eVTX->RemoveAt(ind);
3691  if (!(eVerRec->eVTX)) eVerRec->eVTX = new TObjArray(10);
3692  eVerRec->eVTX->Add(eVertex);
3693  for(int i=0; i<ntr; i++)
3694  {
3695  eVerRec->AddVTA(eVertex->GetVTa(i));
3696  }
3697  }
3698  }
3699  eWorking = 0;
3700  eVertex = 0;
3701  TList *li = fTrigPad->GetListOfPrimitives();
3702  if (li)
3703  {
3704  li->Remove(fUndButton);
3705  li->Remove(fAccButton);
3706  li->Remove(fCanButton);
3707  li->Remove(fEnvButton);
3708  }
3709  fTrigPad->cd();
3710  fTrigPad->Update();
3711  fTrigPad->Draw();
3712 
3713  fPad->cd();
3715  if (fCanvasVTX) fCanvasVTX->Close();
3716  fCanvasVTX = 0;
3717  Draw();
3718  //if (eVe) delete eVe;
3719  eIndVert = -1;
3720 }
TTree * tr
Definition: Shower_E_FromShowerRoot.C:5
virtual void Draw(Option_t *option="")
Definition: EdbDisplayBase.cxx:786
TButton * fAccButton
Definition: EdbDisplayBase.h:101
TButton * fUndButton
Definition: EdbDisplayBase.h:100
TPad * fPad
Definition: EdbDisplayBase.h:126
TPad * fTrigPad
Definition: EdbDisplayBase.h:96
TButton * fCanButton
Definition: EdbDisplayBase.h:102
TButton * fEnvButton
Definition: EdbDisplayBase.h:99
EdbVertexRec * eVerRec
Definition: EdbDisplay.h:40
Int_t eIndVert
Definition: EdbDisplay.h:56
void DrawAllObjects()
Definition: EdbDisplay.cxx:3805
TList eCreatedTracks
Definition: EdbDisplay.h:58
EdbVertex * eVertex
Definition: EdbDisplay.h:48
EdbTrackP * eTrack
Definition: EdbDisplay.h:51
void CloseDialogModifiedVTX()
Definition: EdbDisplay.cxx:4076
void SetID(int id)
Definition: EdbSegP.h:125
Definition: EdbPattern.h:118
int SetSegmentsTrack(int id)
Definition: EdbPattern.h:252
TObjArray * eVTX
Definition: EdbVertex.h:205
void AddVTA(EdbVTA *vta)
Definition: EdbVertex.h:286
TObjArray * eEdbTracks
Definition: EdbVertex.h:204
TList eVTA
Definition: EdbVertex.h:203
Definition: EdbVertex.h:68
Int_t ID() const
Definition: EdbVertex.h:126
void SetQuality(float q=0)
Definition: EdbVertex.h:161
EdbTrackP * GetTrack(int i)
Definition: EdbVertex.h:141
void SetID(int ID=0)
Definition: EdbVertex.h:156
Int_t N() const
Definition: EdbVertex.h:121
VERTEX::Vertex * V() const
Definition: EdbVertex.h:154
void SetFlag(int flag=0)
Definition: EdbVertex.h:158
EdbVTA * GetVTa(int i)
Definition: EdbVertex.h:139
void ResetTracks()
Definition: EdbVertex.cxx:209
Int_t Zpos(int i)
Definition: EdbVertex.h:127
Int_t Nv()
Definition: EdbVertex.cxx:389
float vtx_cov_x() const
$\sigma_x^2$ of vertex
Definition: VtVertex.C:254
float vtx_cov_y() const
$\sigma_y^2$ of vertex
Definition: VtVertex.C:255
float prob() const
upper tail $\chi^2$ probability
Definition: VtVertex.C:237

◆ CancelDialogModifiedParams()

void EdbDisplay::CancelDialogModifiedParams ( )
4010 {
4011  eWait_Answer = false;
4012  for (Int_t i = 0; i < 3; i++) SafeDelete(fNumericEntries[i]);
4013  fMain->SendCloseMessage();
4014  fMain = 0;
4015 }

◆ CancelDialogModifiedTrackParams()

void EdbDisplay::CancelDialogModifiedTrackParams ( )
4036 {
4037  eWait_Answer = false;
4038  for (Int_t i = 0; i < 4; i++) SafeDelete(fNumericEntries[i]);
4039  fMain->SendCloseMessage();
4040  fMain = 0;
4041 }

◆ CancelModifiedVTX()

void EdbDisplay::CancelModifiedVTX ( )
3221 {
3223  if (eWorking)
3224  {
3225  delete eWorking;
3226  eWorking = 0;
3227  }
3228  if (ePrevious)
3229  {
3230  delete ePrevious;
3231  ePrevious = 0;
3232  }
3233  if (eVertex)
3234  {
3235  if (eVertex->ID() < 0)
3236  {
3237  if (eArrV)
3238  {
3239  eArrV->Remove(eVertex);
3240  eArrV->Compress();
3241  }
3242  delete eVertex;
3243  eVertex = 0;
3244  }
3245  else
3246  {
3247  (eVertex)->ResetTracks();
3248  }
3249  }
3250  TList *li = fTrigPad->GetListOfPrimitives();
3251  if (li)
3252  {
3253  li->Remove(fUndButton);
3254  li->Remove(fAccButton);
3255  li->Remove(fCanButton);
3256  li->Remove(fEnvButton);
3257  }
3258 
3259  EdbTrackP *tr = 0;
3260 
3261  for (int i = 0; i < eCreatedTracks.GetSize(); i++)
3262  {
3263  tr = (EdbTrackP *)eCreatedTracks.At(i);
3264  if (tr)
3265  {
3266  if (eArrTr) if (eArrTr->FindObject(tr))
3267  {
3268  eArrTr->Remove(tr);
3269  eArrTr->Compress();
3270  }
3271  if (eArrTrSave) if (eArrTrSave->FindObject(tr))
3272  {
3273  eArrTrSave->Remove(tr);
3274  eArrTrSave->Compress();
3275  }
3276  delete tr;
3277  }
3278  }
3279  eCreatedTracks.Clear();
3280 
3281  if (eArrV && (eIndVert >= 0) && eVertex)
3282  {
3283 // eArrV->RemoveAt(eIndVert);
3284  eArrV->AddAt(eVertex, eIndVert);
3285  }
3286  fTrigPad->cd();
3287  fTrigPad->Update();
3288  fTrigPad->Draw();
3289  fPad->cd();
3291  if (fCanvasVTX) fCanvasVTX->Close();
3292  fCanvasVTX = 0;
3293  eIndVert = -1;
3294  eVertex = 0;
3295  Draw();
3296 }

◆ ClearSegmentEnv()

void EdbDisplay::ClearSegmentEnv ( )
4215 {
4216  if (fPad->GetListOfPrimitives()->FindObject(eSegPM))
4217  {
4218  fPad->GetListOfPrimitives()->Remove(eSegPM);
4219  }
4220  delete eSegPM;
4221  eSegPM = 0;
4222  TList *li = fTrigPad->GetListOfPrimitives();
4223  if (eArrVSave || eArrSegPSave || eArrTrSave)
4224  {
4225  li->Remove(fAllButton);
4226  delete eArrV;
4227  eArrV = eArrVSave;
4228  eArrVSave = 0;
4229  if (eArrTrSave)
4230  {
4231  delete eArrTr;
4232  eArrTr = eArrTrSave;
4233  eArrTrSave = 0;
4234  }
4235  if (eArrSegPSave)
4236  {
4237  delete eArrSegP;
4239  eArrSegPSave = 0;
4240  }
4241  Draw();
4242  }
4243  else li->Remove(fEnvButton);
4244 }
TButton * fAllButton
Definition: EdbDisplayBase.h:98
TPolyMarker3D * eSegPM
Definition: EdbDisplay.h:54

◆ CloseDialogModifiedParams()

void EdbDisplay::CloseDialogModifiedParams ( )
4004 {
4005  eWait_Answer = false;
4006  fMain = 0;
4007 }

◆ CloseDialogModifiedTrackParams()

void EdbDisplay::CloseDialogModifiedTrackParams ( )
4030 {
4031  eWait_Answer = false;
4032  fMain = 0;
4033 }

◆ CloseDialogModifiedVTX()

void EdbDisplay::CloseDialogModifiedVTX ( )
4077 {
4078  eWait_Answer = false;
4079  fMain->SendCloseMessage();
4080  fMain = 0;
4081 }

◆ Delete()

void EdbDisplay::Delete ( )
371 {
373 
374  if (gROOT->GetListOfSpecials()->FindObject(this))
375  gROOT->GetListOfSpecials()->Remove(this);
376 
377  SafeDelete(fCanvasVTX);
378  SafeDelete(fCanvasTRK);
379  SafeDelete(eWorking);
380  SafeDelete(ePrevious);
381 
382  if (eArrSegPSave) SafeDelete(eArrSegP);
383  if (eArrVSave) SafeDelete(eArrV);
384  if (eArrTrSave) SafeDelete(eArrTr);
385 }

◆ DeleteModifiedVTX()

void EdbDisplay::DeleteModifiedVTX ( )
3300 {
3301  if (eWorking)
3302  {
3303  delete eWorking;
3304  eWorking = 0;
3305  }
3306  if (ePrevious)
3307  {
3308  delete ePrevious;
3309  ePrevious = 0;
3310  }
3311  if (eVertex)
3312  {
3313  if (eVertex->ID() < 0)
3314  {
3315  if (eArrV)
3316  {
3317  eArrV->Remove(eVertex);
3318  eArrV->Compress();
3319  }
3320  delete eVertex;
3321  eVertex = 0;
3322  }
3323  else
3324  {
3325  (eVertex)->ResetTracks();
3326  }
3327  }
3328 
3329  EdbTrackP *tr = 0;
3330 
3331  for (int i = 0; i < eCreatedTracks.GetSize(); i++)
3332  {
3333  tr = (EdbTrackP *)eCreatedTracks.At(i);
3334  if (tr)
3335  {
3336  if (eArrTr) if (eArrTr->FindObject(tr))
3337  {
3338  eArrTr->Remove(tr);
3339  eArrTr->Compress();
3340  }
3341  if (eArrTrSave) if (eArrTrSave->FindObject(tr))
3342  {
3343  eArrTrSave->Remove(tr);
3344  eArrTrSave->Compress();
3345  }
3346  delete tr;
3347  }
3348  }
3349  eCreatedTracks.Clear();
3350 
3351  if (eArrVSave || eArrTrSave || eArrSegPSave)
3352  {
3353  delete eArrV;
3354  eArrV = eArrVSave;
3355  eArrVSave = 0;
3356  delete eArrTr;
3357  eArrTr = eArrTrSave;
3358  eArrTrSave = 0;
3359  delete eArrSegP;
3361  eArrSegPSave = 0;
3363  }
3364  if (eArrV && (eIndVert >= 0) && eVertex)
3365  {
3366 // eArrV->RemoveAt(eIndVert);
3367  eArrV->AddAt(eVertex, eIndVert);
3368  eIndVert = -1;
3369  }
3370 }
Int_t eIndVertSave
Definition: EdbDisplay.h:57

◆ DialogModifiedVTX()

void EdbDisplay::DialogModifiedVTX ( )
4044 {
4045  eWait_Answer = true;
4046  fMain = new TGMainFrame(gClient->GetRoot(), 250, 40);
4047  TGMainFrame *fTra = fMain;
4048  TGHorizontalFrame *fFrame = new TGHorizontalFrame(fTra, 220, 30);
4049  char cmda[256];
4050  sprintf(cmda,
4051  "((EdbDisplay*)(gROOT->GetListOfSpecials()->FindObject(\"%s\")))->AcceptModifiedVTX()",fTitle);
4052  TGTextButton *abut = new TGTextButton(fFrame, "&Accept", cmda);
4053  fFrame->AddFrame(abut,
4054  new TGLayoutHints(kLHintsCenterY | kLHintsLeft,
4055  5,5,3,4));
4056 
4057  char cmdc[256];
4058  sprintf(cmdc,
4059  "((EdbDisplay*)(gROOT->GetListOfSpecials()->FindObject(\"%s\")))->CancelModifiedVTX()",fTitle);
4060  TGTextButton *cbut = new TGTextButton(fFrame, "&Cancel", cmdc);
4061  fFrame->AddFrame(cbut,
4062  new TGLayoutHints(kLHintsCenterY | kLHintsRight,
4063  5, 5, 4, 4));
4064  fFrame->Resize(210, 30);
4065 
4066  fTra->AddFrame(fFrame,
4067  new TGLayoutHints(kLHintsCenterY | kLHintsCenterX,
4068  5, 5, 4, 4));
4069 
4070  fTra->MapSubwindows();
4071  fTra->Resize(220, fTra->GetDefaultHeight());
4072  fTra->SetWindowName("Modified Vertex Exist!");
4073  fTra->MapWindow();
4074 }
char fTitle[128]
Definition: EdbDisplayBase.h:95

◆ DialogNeighborParameters()

void EdbDisplay::DialogNeighborParameters ( )
3843 {
3844  if (eRadMax == 0)
3845  {
3846  printf("No neighborhood in EdbPVGen object!\n");
3847  fflush(stdout);
3848  return;
3849  }
3850 
3851  eWait_Answer = true;
3852 
3853  fMain = new TGMainFrame(gClient->GetRoot(), 260, 340);
3854  TGMainFrame *fTra = fMain;
3855 
3856 // fTra->Connect("CloseWindow()", "EdbDisplay", this, "CloseDialogModifiedParams()");
3857 
3858  // use hierarchical cleaning
3859 // fTra->SetCleanup(kDeepCleanup);
3860 
3861  TGHorizontalFrame *fF[4] = {0,0,0,0};
3862  TGLabel *fLabel[4] = {0,0,0,0};
3863  Double_t parinit[4] = {eRadMax, eDpat, eImpMax, eSegWmin};
3864  Double_t parmax[4] = { 150000., 50., 10000., 1000. };
3865  Double_t parmin[4] = { 0., 0., 0., 0. };
3866  //if (eVerRec) if (eVerRec->ePVR) parmax[1] = ((eVerRec->ePVR)->Npatterns()-1);
3867  char *parlabel[4] = {"Maximal radius","+/- patterns", "Maximal impact", "Minimal seg W"};
3868 
3869  TGGC myGC = *(gClient->GetResourcePool()->GetFrameGC());
3870  TGFont *myfont = gClient->GetFont("-adobe-helvetica-bold-r-*-*-12-*-*-*-*-*-iso8859-1");
3871  if (myfont) myGC.SetFont(myfont->GetFontHandle());
3872 
3873  TGVerticalFrame *fF1 = new TGVerticalFrame(fTra, 240, 250);
3874  TGLayoutHints *fL1 = new TGLayoutHints(kLHintsTop | kLHintsLeft, 2, 2, 2, 2);
3875  fTra->AddFrame(fF1, fL1);
3876  TGLayoutHints *fL2 = new TGLayoutHints(kLHintsCenterY | kLHintsLeft, 2, 2, 2, 2);
3877  for (int i = 0; i < 4; i++) {
3878  fF[i] = new TGHorizontalFrame(fF1, 220, 35);
3879  fF1->AddFrame(fF[i], fL2);
3880  fNumericEntries[i] = new TGNumberEntry(fF[i], parinit[i], 12, i+1000,
3881  TGNumberFormat::kNESInteger,
3882  TGNumberFormat::kNEANonNegative,
3883  TGNumberFormat::kNELLimitMinMax,
3884  parmin[i], parmax[i]);
3885  fF[i]->AddFrame(fNumericEntries[i], fL2);
3886  fLabel[i] = new TGLabel(fF[i], parlabel[i], myGC(), myfont->GetFontStruct());
3887  fF[i]->AddFrame(fLabel[i], fL2);
3888  }
3889 
3890  TGHorizontalFrame *fFrame = new TGHorizontalFrame(fTra, 220, 30);
3891  char cmda[256];
3892  sprintf(cmda,
3893  "((EdbDisplay*)((gROOT->GetListOfSpecials())->FindObject(\"%s\")))->AcceptModifiedParams()",fTitle);
3894  TGTextButton *abut = new TGTextButton(fFrame, "&Accept", cmda);
3895  fFrame->AddFrame(abut,
3896  new TGLayoutHints(kLHintsCenterY | kLHintsLeft,
3897  5,5,3,4));
3898 
3899  char cmdc[256];
3900  sprintf(cmdc,
3901  "((EdbDisplay*)((gROOT->GetListOfSpecials())->FindObject(\"%s\")))->CancelDialogModifiedParams()",fTitle);
3902  TGTextButton *cbut = new TGTextButton(fFrame, "&Cancel", cmdc);
3903  fFrame->AddFrame(cbut,
3904  new TGLayoutHints(kLHintsCenterY | kLHintsRight,
3905  5, 5, 4, 4));
3906 // fFrame->Resize(220, 30);
3907 
3908  fTra->AddFrame(fFrame,
3909  new TGLayoutHints(kLHintsCenterY | kLHintsCenterX,
3910  5, 5, 4, 4));
3911 
3912  fTra->MapSubwindows();
3913  fTra->Resize(260, fTra->GetDefaultHeight());
3914  fTra->SetWindowName("Neighborhood Parameters");
3915  fTra->MapWindow();
3916  gClient->WaitFor(fTra);
3917 }
FILE * stdout

◆ DialogTrackParameters()

void EdbDisplay::DialogTrackParameters ( )
3920 {
3921  eWait_Answer = true;
3922 
3923  fMain = new TGMainFrame(gClient->GetRoot(), 280, 360);
3924  TGMainFrame *fTra = fMain;
3925 
3926 // fTra->Connect("CloseWindow()", "EdbDisplay", this, "CloseDialogModifiedParams()");
3927 
3928  // use hierarchical cleaning
3929 // fTra->SetCleanup(kDeepCleanup);
3930 
3931  TGHorizontalFrame *fF[4] = {0,0,0,0};
3932  TGLabel *fLabel[4] = {0,0,0,0};
3933  Double_t parinit[4] = { eP, eM, eTImpMax, eTProbMin};
3934  Double_t parmax[4] = { 1000., 10., 1000000., 1.};
3935  Double_t parmin[4] = { 0., 0., 0., 0.};
3936  char *parlabel[4] = {"Momentum","Mass", "MaxImpact", "MinProb"};
3937 
3938  TGGC myGC = *(gClient->GetResourcePool()->GetFrameGC());
3939  TGFont *myfont = gClient->GetFont("-adobe-helvetica-bold-r-*-*-12-*-*-*-*-*-iso8859-1");
3940  if (myfont) myGC.SetFont(myfont->GetFontHandle());
3941 
3942  TGVerticalFrame *fF1 = new TGVerticalFrame(fTra, 260, 250);
3943  TGLayoutHints *fL1 = new TGLayoutHints(kLHintsTop | kLHintsLeft, 2, 2, 2, 2);
3944  fTra->AddFrame(fF1, fL1);
3945  TGLayoutHints *fL2 = new TGLayoutHints(kLHintsCenterY | kLHintsLeft, 2, 2, 2, 2);
3946  for (int i = 0; i < 4; i++) {
3947  fF[i] = new TGHorizontalFrame(fF1, 240, 35);
3948  fF1->AddFrame(fF[i], fL2);
3949  fNumericEntries[i] = new TGNumberEntry(fF[i], parinit[i], 12, i+2000,
3950  TGNumberFormat::kNESReal,
3951  TGNumberFormat::kNEANonNegative,
3952  TGNumberFormat::kNELLimitMinMax,
3953  parmin[i], parmax[i]);
3954  fF[i]->AddFrame(fNumericEntries[i], fL2);
3955  fLabel[i] = new TGLabel(fF[i], parlabel[i], myGC(), myfont->GetFontStruct());
3956  fF[i]->AddFrame(fLabel[i], fL2);
3957  }
3958 
3959  TGHorizontalFrame *fFrame = new TGHorizontalFrame(fTra, 240, 30);
3960  char cmda[256];
3961  sprintf(cmda,
3962 // "((EdbDisplay*)(gROOT->GetListOfSpecials()->FindObject((TObject *)0x%08x)))->AcceptModifiedTrackParams()",this);
3963  "((EdbDisplay*)((gROOT->GetListOfSpecials())->FindObject(\"%s\")))->AcceptModifiedTrackParams()",fTitle);
3964  TGTextButton *abut = new TGTextButton(fFrame, "&Accept", cmda);
3965  fFrame->AddFrame(abut,
3966  new TGLayoutHints(kLHintsCenterY | kLHintsLeft,
3967  5,5,3,4));
3968 
3969  char cmdc[256];
3970  sprintf(cmdc,
3971  "((EdbDisplay*)((gROOT->GetListOfSpecials())->FindObject(\"%s\")))->CancelDialogModifiedTrackParams()",fTitle);
3972  TGTextButton *cbut = new TGTextButton(fFrame, "&Cancel", cmdc);
3973  fFrame->AddFrame(cbut,
3974  new TGLayoutHints(kLHintsCenterY | kLHintsRight,
3975  5, 5, 4, 4));
3976 // fFrame->Resize(220, 30);
3977 
3978  fTra->AddFrame(fFrame,
3979  new TGLayoutHints(kLHintsCenterY | kLHintsCenterX,
3980  5, 5, 4, 4));
3981 
3982  fTra->MapSubwindows();
3983  fTra->Resize(280, fTra->GetDefaultHeight());
3984  fTra->SetWindowName("Track Parameters");
3985  fTra->MapWindow();
3986  gClient->WaitFor(fTra);
3987 }

◆ DrawAllObjects()

void EdbDisplay::DrawAllObjects ( )
3806 {
3807  fTrigPad->cd();
3808  fTrigPad->GetListOfPrimitives()->Remove(fAllButton);
3809  if (fStyle/2 == 1)
3810  fEnvButton->SetFillColor(33);
3811  else
3812  fEnvButton->SetFillColor(38);
3813  fTrigPad->GetListOfPrimitives()->Add(fEnvButton);
3814  fEnvButton->SetPad(0.05,0.47,0.95,0.56);
3815  fEnvButton->Draw();
3816  fTrigPad->Modified(kTRUE);
3817  fTrigPad->Update();
3818  fTrigPad->Draw();
3819  fPad->cd();
3820 
3821  if (eArrVSave || eArrTrSave || eArrSegPSave)
3822  {
3823  delete eArrV;
3824  eArrV = eArrVSave;
3825  eArrVSave = 0;
3827  delete eArrTr;
3828  eArrTr = eArrTrSave;
3829  eArrTrSave = 0;
3830  delete eArrSegP;
3832  eArrSegPSave = 0;
3833  }
3834  if (eArrV && eWorking && (eIndVert >= 0))
3835  {
3836 // eArrV->RemoveAt(eIndVert);
3837  eArrV->AddAt(eWorking, eIndVert);
3838  }
3839  Draw();
3840 }
Int_t fStyle
Definition: EdbDisplayBase.h:88

◆ DrawRef()

void EdbDisplay::DrawRef ( float  start[3],
float  end[3] 
)
620 {
621  // reference vector to indicate the direction (ie scanback track) can be drawn
622 
623  TPolyLine3D *line = new TPolyLine3D(2);
624  line->SetPoint(0, start[0],start[1], start[2] );
625  line->SetPoint(1, end[0], end[1], end[2] );
626  line->SetLineColor(kGreen);
627  line->SetLineWidth(fLineWidth);
628  line->SetBit(kCannotPick);
629  line->Draw();
630 
631  TPolyMarker3D *mark = new TPolyMarker3D(1);
632  mark->SetPoint(0, start[0],start[1], start[2] );
633  mark->SetMarkerColor(kGreen);
634  mark->SetMarkerStyle(kMultiply);
635  mark->SetMarkerSize(1.2);
636  mark->Draw();
637 }
Width_t fLineWidth
Definition: EdbDisplayBase.h:92

◆ DrawSegmentExtrapolationLine()

void EdbDisplay::DrawSegmentExtrapolationLine ( const EdbSegP s,
float  zmin,
float  zmax 
)
737 {
738  EdbSegP start(s);
739  EdbSegP end(s);
740  start.PropagateTo(zmin);
741  start.PropagateTo(zmax);
742  TPolyLine3D *trline = new TPolyLine3D(2);
743  trline->SetPoint(0, start.X(),start.Y(),start.Z() );
744  trline->SetPoint( 1, end.X(), end.Y(), end.Z() );
745  if (fStyle/2 == 1) trline->SetLineColor(kBlack);
746  else trline->SetLineColor(kWhite);
747  trline->SetLineWidth(1);
748  trline->SetBit(kCannotPick);
749  trline->Draw();
750  Log(3,"EdbDisplay::DrawSegmentExtrapolationLine", "(%f %f %f) -> (%f %f %f)", start.X(),start.Y(),start.Z(), end.X(), end.Y(), end.Z());
751 }
bool Log(int level, const char *location, const char *fmt,...)
Definition: EdbLog.cxx:75
Definition: EdbSegP.h:18
EdbSegP * s
Definition: tlg2pattern.C:32

◆ DrawVertexEnvironment()

void EdbDisplay::DrawVertexEnvironment ( )
3723 {
3724  if (eRadMax == 0)
3725  {
3726  printf("No neighborhood in EdbPVRec object!\n");
3727  fflush(stdout);
3728  return;
3729  }
3730  //if (!eVerRec) eVerRec = ((EdbVertexRec *)(gROOT->GetListOfSpecials()->FindObject("EdbVertexRec")));
3731  if (eVerRec) if((eVerRec->IsA()) != EdbVertexRec::Class()) eVerRec = 0;
3732  if (!eVerRec)
3733  {printf("Error: EdbDisplay:DrawVertexEnvironment: EdbVertexRec not defined, use SetVerRec(...)\n"); fflush(stdout); return;}
3734  if (!eVertex && !eSegment)
3735  {printf("Error: EdbDisplay:DrawVertexEnvironment: Working vertex (or segment) not defined\n"); fflush(stdout); return;}
3736 
3737  fTrigPad->cd();
3738  fTrigPad->GetListOfPrimitives()->Remove(fEnvButton);
3739  if (fStyle/2 == 1)
3740  fAllButton->SetFillColor(33);
3741  else
3742  fAllButton->SetFillColor(38);
3743  fTrigPad->GetListOfPrimitives()->Add(fAllButton);
3744  fAllButton->SetPad(0.05,0.47,0.95,0.56);
3745  fAllButton->Draw();
3746  fTrigPad->Modified(kTRUE);
3747  fTrigPad->Update();
3748  fTrigPad->Draw();
3749  fPad->cd();
3750 
3751  EdbVertex *eW = eVertex;
3752  EdbTrackP *tr = 0;
3753  if (eWorking) eW = eWorking;
3754  float Rmax = eRadMax, ImpMax = eImpMax;
3755  int Dpat = (int)eDpat;
3756 
3757  eArrTrSave = eArrTr;
3759  eArrVSave = eArrV;
3761  eArrV = new TObjArray(20);
3762  eArrTr = new TObjArray(20);
3763  eArrSegP = new TObjArray(20);
3764 
3765  if (eW)
3766  {
3767  eVerRec->VertexNeighbor(eW, Rmax, Dpat, ImpMax);
3768  eArrV->Add(eW);
3769  int ntr = eW->N();
3770  for(int i=0; i<ntr; i++)
3771  {
3772  eArrTr->Add((tr = eW->GetTrack(i)));
3773  }
3774  int nntr = eW->Nn();
3775  EdbVTA *vta = 0;
3776  for(int i=0; i<nntr; i++)
3777  {
3778  if ((vta = eW->GetVTn(i)))
3779  {
3780  if (vta->Flag() == 0) //track
3781  {
3782  eArrTr->Add((tr = vta->GetTrack()));
3783  }
3784  else if (vta->Flag() == 1) //segment
3785  {
3786  eArrSegP->Add((EdbSegP *)(vta->GetTrack()));
3787  }
3788  else if (vta->Flag() == 3) //vertex
3789  {
3790  eArrV->Add((EdbVertex *)(vta->GetTrack()));
3791  }
3792  }
3793  }
3794  eIndVert = eArrV->IndexOf(eW);
3795  }
3796  else if (eSegment)
3797  {
3798  eIndVert = -1;
3800  if (eArrV->GetEntriesFast()) eDrawVertex = 1;
3801  }
3802  Draw();
3803 }
EdbSegP * eSegment
Definition: EdbDisplay.h:50
Int_t eDrawVertex
Definition: EdbDisplay.h:27
Definition: EdbVertex.h:25
Int_t Flag() const
Definition: EdbVertex.h:47
EdbTrackP * GetTrack() const
Definition: EdbVertex.h:50
Int_t VertexNeighbor(float RadMax=1000., int Dpat=1, float ImpMax=1000000.)
Definition: EdbVertex.cxx:2754
Int_t SegmentNeighbor(EdbSegP *s, float RadMax=1000., int Dpat=1, float ImpMax=1000000., float SegWmin=9, TObjArray *aseg=0, TObjArray *atr=0, TObjArray *arv=0)
Definition: EdbVertex.cxx:3027
EdbVTA * GetVTn(int i)
Definition: EdbVertex.h:140
Int_t Nn() const
Definition: EdbVertex.h:122
float ImpMax
Definition: check_vertex.C:30

◆ DrawVTXTracks()

void EdbDisplay::DrawVTXTracks ( char *  type,
EdbVertex v = 0 
)
4084 {
4085  EdbVertex *vv = v;
4086  if (!vv)
4087  {
4088  if (!strcmp(type, "Original") && eVertex)
4089  {
4090  vv = eVertex;
4091  }
4092  else if (!strcmp(type, "Previous") && ePrevious)
4093  {
4094  vv = ePrevious;
4095  }
4096  else if (!strcmp(type, "Modified") && eWorking)
4097  {
4098  vv = eWorking;
4099  }
4100  }
4101  if (!vv) return;
4102  bool drawrem = true;
4103  if (vv == eVertex && eWorking) drawrem = false;
4104  if (vv == ePrevious) drawrem = false;
4105 
4106  fCanvasVTX->cd();
4107 
4108  if (fVTXTracks)
4109  {
4110  fVTXTracks->Clear();
4111  }
4112  else
4113  {
4114  fVTXTracks = new TPaveText(0.05, 0.05, 0.95, 0.72);
4115  fVTXTracks->ResetBit(kCanDelete);
4116  }
4117  char line[128];
4118  EdbTrackP *tr = 0;
4119  TText *t = 0;
4120  int ntr = vv->N();
4121  sprintf(line, " Tracks parameters for %s vertex", type);
4122  t = fVTXTracks->AddText(line);
4123  t->SetTextColor(kBlue);
4124  t->SetTextSize(0.03);
4125  t->SetTextAlign(12);
4126  t->SetTextFont(102);
4127  strcpy(line, " # ID Nseg Mass P Chi2/ndf Prob Chi2Contrib Impact");
4128  t = fVTXTracks->AddText(line);
4129  t->SetTextColor(kBlue);
4130  t->SetTextSize(0.03);
4131  t->SetTextAlign(12);
4132  t->SetTextFont(102);
4133  for (int i=0; i<ntr; i++)
4134  {
4135  tr = vv->GetTrack(i);
4136  sprintf(line,"%4d %4d %4d %7.4f %7.2f %5.2f %7.4f %6.3f %7.2f",
4137  i, tr->ID(), tr->N(), tr->M(), tr->P(),
4138  tr->Chi2()/tr->N(), tr->Prob(), vv->V()->track_chi2(i), vv->Impact(i));
4139  t = fVTXTracks->AddText(line);
4140  t->SetTextColor(kBlack);
4141  t->SetTextSize(0.03);
4142  t->SetTextAlign(12);
4143  t->SetTextFont(102);
4144  }
4145  t = fVTXTracks->AddText("");
4146  t->SetTextColor(kBlack);
4147  t->SetTextSize(0.03);
4148  t->SetTextAlign(12);
4149  t->SetTextFont(102);
4150  fVTXTracks->Draw();
4151 
4152  float dy = 0.67/(2+ntr+1);
4153  for (int i=0; i<50; i++)
4154  {
4155  if (!drawrem)
4156  {
4157  if (fRemBut[i])
4158  {
4159  fRemBut[i]->Delete();
4160  fRemBut[i] = 0;
4161  }
4162  continue;
4163  }
4164  if ( i < ntr )
4165  {
4166  if (!fRemBut[i])
4167  {
4168  char but[256], tit[32]="Rem";
4169  sprintf(but,
4170  "((EdbDisplay*)(gROOT->GetListOfSpecials()->FindObject(\"%s\")))->RemoveTrackFromTable(%d)",fTitle,i);
4171  fRemBut[i] = new TButton(tit, but, 0.88, 0.635-(i+2)*dy, 0.94, 0.675-(i+2)*dy);
4172  fRemBut[i]->SetToolTipText("Remove corresponding track");
4173  fRemBut[i]->ResetBit(kCanDelete);
4174  fRemBut[i]->SetFillColor(38);
4175  sprintf(tit,"RemTr%d",i);
4176  fRemBut[i]->SetName(tit);
4177  fRemBut[i]->Draw();
4178  }
4179  else
4180  {
4181  fRemBut[i]->SetPad(0.88,0.635-(i+2)*dy,0.94,0.675-(i+2)*dy);
4182  fRemBut[i]->Draw();
4183  }
4184  }
4185  else if (fRemBut[i])
4186  {
4187  fRemBut[i]->Delete();
4188  fRemBut[i] = 0;
4189  }
4190  }
4191 
4192  fPad->Modified(kTRUE);
4193  fPad->Update();
4194 }
TTree * t
Definition: check_shower.C:4
TPaveText * fVTXTracks
Definition: EdbDisplayBase.h:112
TButton * fRemBut[50]
Definition: EdbDisplayBase.h:116
Float_t Impact(int i)
Definition: EdbVertex.h:149
double track_chi2(int i)
get track $\chi^2$ contribution
Definition: VtVertex.C:783
strcpy(cmd,"cp Shower.root Shower2.root")
Int_t type
Definition: testBGReduction_By_ANN.C:15

◆ EdbDisplayExist()

EdbDisplay * EdbDisplay::EdbDisplayExist ( const char *  title)
static
233 {
234  TSeqCollection *l = gROOT->GetListOfSpecials();
235  if (!l) return 0;
236  EdbDisplay *ds = (EdbDisplay*)(l->FindObject(title));
237  return ds;
238 }
EdbDisplay * ds
Definition: check_vertex.C:16
Definition: EdbDisplay.h:21

◆ GuessRange()

void EdbDisplay::GuessRange ( float  margZmin = 3000,
float  margZmax = 1000,
float  margR = 300 
)
261 {
262  // guess minimum display range to fit all objects
263 
264  float xmin=0,xmax=1,ymin=0,ymax=1,zmin=0,zmax=1;
265 
266  if (eArrSegG) {
267  EdbSegG *s=0;
268  for(int i=0; i<eArrSegG->GetEntriesFast(); i++) {
269  s = (EdbSegG *)(eArrSegG->At(i));
270  if(!s) continue;
271  if(xmax-xmin<margR) {
272  xmax=s->X()+margR;
273  xmin=s->X()-margR;
274  ymax=s->Y()+margR;
275  ymin=s->Y()-margR;
276  zmax=s->Z()+margZmax;
277  zmin=s->Z()-margZmin;
278  }
279  if(xmax<s->X()+margR) xmax=s->X()+margR;
280  if(xmin>s->X()-margR) xmin=s->X()-margR;
281  if(ymax<s->Y()+margR) ymax=s->Y()+margR;
282  if(ymin>s->Y()-margR) ymin=s->Y()-margR;
283  if(zmax<s->Z()+margZmax) zmax=s->Z()+margZmax;
284  if(zmin>s->Z()-margZmin) zmin=s->Z()-margZmin;
285  }
286  }
287 
288  if (eArrSegP) {
289  EdbSegP *s=0;
290  for(int i=0; i<eArrSegP->GetEntriesFast(); i++) {
291  s = (EdbSegP *)(eArrSegP->At(i));
292  if(!s) continue;
293  if(xmax-xmin<margR) {
294  xmax=s->X()+margR;
295  xmin=s->X()-margR;
296  ymax=s->Y()+margR;
297  ymin=s->Y()-margR;
298  zmax=s->Z()+margZmax;
299  zmin=s->Z()-margZmin;
300  }
301  if(xmax<s->X()+margR) xmax=s->X()+margR;
302  if(xmin>s->X()-margR) xmin=s->X()-margR;
303  if(ymax<s->Y()+margR) ymax=s->Y()+margR;
304  if(ymin>s->Y()-margR) ymin=s->Y()-margR;
305  if(zmax<s->Z()+margZmax) zmax=s->Z()+margZmax;
306  if(zmin>s->Z()-margZmin) zmin=s->Z()-margZmin;
307  }
308  }
309 
310  if (eArrV) {
311  for(int i=0; i<eArrV->GetEntriesFast(); i++) {
312  EdbVertex *v = (EdbVertex *)(eArrV->At(i));
313  if(!v) continue;
314  if(!v->V()) continue;
315  if(!v->V()->valid()) continue;
316  if(xmax-xmin<margR) {
317  xmax=v->VX()+margR;
318  xmin=v->VX()-margR;
319  ymax=v->VY()+margR;
320  ymin=v->VY()-margR;
321  zmax=v->VZ()+margZmax;
322  zmin=v->VZ()-margZmin;
323  }
324  if(xmax<v->VX()+margR) xmax=v->VX()+margR;
325  if(xmin>v->VX()-margR) xmin=v->VX()-margR;
326  if(ymax<v->VY()+margR) ymax=v->VY()+margR;
327  if(ymin>v->VY()-margR) ymin=v->VY()-margR;
328  if(zmax<v->VZ()+margZmax) zmax=v->VZ()+margZmax;
329  if(zmin>v->VZ()-margZmin) zmin=v->VZ()-margZmin;
330  }
331  }
332 
333  if (eArrTr) {
334  EdbTrackP *t;
335  EdbSegP *s;
336  for(int i=0; i<eArrTr->GetEntriesFast(); i++) {
337  t = (EdbTrackP *)eArrTr->At(i);
338  if(!t) continue;
339  for(int j=0; j<t->N(); j++) {
340  s = t->GetSegment(j);
341  if(!s) continue;
342  if(xmax-xmin<margR) {
343  xmax=s->X()+margR;
344  xmin=s->X()-margR;
345  ymax=s->Y()+margR;
346  ymin=s->Y()-margR;
347  zmax=s->Z()+margZmax;
348  zmin=s->Z()-margZmin;
349  }
350  if(xmax<s->X()+margR) xmax=s->X()+margR;
351  if(xmin>s->X()-margR) xmin=s->X()-margR;
352  if(ymax<s->Y()+margR) ymax=s->Y()+margR;
353  if(ymin>s->Y()-margR) ymin=s->Y()-margR;
354  if(zmax<s->Z()+margZmax) zmax=s->Z()+margZmax;
355  if(zmin>s->Z()-margZmin) zmin=s->Z()-margZmin;
356  }
357  }
358  }
359  if(gEDBDEBUGLEVEL>1) {
360  printf("Guess Range:\n");
361  printf("X: %10.1f %10.1f\n",xmin,xmax);
362  printf("Y: %10.1f %10.1f\n",ymin,ymax);
363  printf("Z: %10.1f %10.1f\n",zmin,zmax);
364  }
365  SetRange(xmin,xmax,ymin,ymax,zmin,zmax);
366  fZooms=0;
367 }
virtual void SetRange(Float_t x0, Float_t x1, Float_t y0, Float_t y1, Float_t z0, Float_t z1)
Definition: EdbDisplayBase.cxx:575
Int_t fZooms
Definition: EdbDisplayBase.h:87
TObjArray * eArrSegG
Definition: EdbDisplay.h:68
Definition: EdbDisplay.h:196
Float_t X() const
Definition: EdbSegP.h:170
Float_t Z() const
Definition: EdbSegP.h:150
Float_t Y() const
Definition: EdbSegP.h:171
Float_t VX() const
Definition: EdbVertex.h:133
Float_t VY() const
Definition: EdbVertex.h:134
Float_t VZ() const
Definition: EdbVertex.h:135
bool valid() const
is vertex valid?
float xmin
Definition: emthickness.cpp:61
struct @8 Z
float ymin
Definition: emthickness.cpp:63
float xmax
Definition: emthickness.cpp:61
float ymax
Definition: emthickness.cpp:63
gEDBDEBUGLEVEL
Definition: energy.C:7
Double_t X
Definition: tlg2pattern.C:77
Double_t Y
Definition: tlg2pattern.C:77

◆ Refresh()

void EdbDisplay::Refresh ( )
virtual

Reimplemented from EdbDisplayBase.

552 {
553  EdbSegP *seg=0;
554  if( eArrSegP ) {
555  int nseg = eArrSegP->GetEntriesFast();
556  printf("%d segments to draw...\n",nseg);
557  for(int j=0;j<nseg;j++) {
558  seg = (EdbSegP*)(eArrSegP->At(j));
559  if (seg)
560  {
561  SegLine(seg)->Draw();
562  }
563  }
564  }
565 
566 
567  EdbTrackP *tr=0;
568  if( eArrTr ) {
569  int ntr = eArrTr->GetEntriesFast();
570  printf("%d tracks to draw...\n",ntr);
571  for(int j=0;j<ntr;j++) {
572  tr = (EdbTrackP*)(eArrTr->At(j));
573  if(tr)
574  {
575  TrackDraw(tr);
576  }
577  }
578  }
579 
580  EdbVertex *v=0;
581  if( eArrV ) {
582  int nv = eArrV->GetEntriesFast();
583  printf("%d vertices to draw...\n",nv);
584  for(int j=0;j<nv;j++) {
585  v = (EdbVertex*)(eArrV->At(j));
586  if (v)
587  {
588  VertexDraw(v);
589  }
590  }
591  }
592 
593  if( eArrSegG ) {
594  int nseg = eArrSegG->GetEntriesFast();
595  printf("%d Graph segments to draw...\n",nseg);
596  for(int j=0;j<nseg;j++) {
597  EdbSegG *sg = (EdbSegG*)(eArrSegG->At(j));
598  if (sg) sg->Draw();
599  }
600  }
601 
602  if (eSegment)
603  {
604  eSegPM = new TPolyMarker3D(1);
605  eSegPM->SetMarkerStyle(kFullCircle);
606  float dz = TMath::Abs(eSegment->DZ()/2.);
607  eSegPM->SetPoint(0,
608  eSegment->X() + eSegment->TX()*dz,
609  eSegment->Y() + eSegment->TY()*dz,
610  eSegment->Z() + dz);
611  eSegPM->SetMarkerColor(kGreen);
612  eSegPM->SetMarkerSize(1.2);
613  eSegPM->SetBit(kCannotPick);
614  eSegPM->Draw();
615  }
616 }
brick dz
Definition: RecDispMC.C:107
EdbSegG * SegLine(const EdbSegP *seg)
Definition: EdbDisplay.cxx:888
void VertexDraw(EdbVertex *v)
Definition: EdbDisplay.cxx:640
void TrackDraw(EdbTrackP *tr, Color_t kColor=kWhite)
Definition: EdbDisplay.cxx:754
Float_t DZ() const
Definition: EdbSegP.h:151
Float_t TX() const
Definition: EdbSegP.h:172
Float_t TY() const
Definition: EdbSegP.h:173

◆ RemoveTrackFromTable()

void EdbDisplay::RemoveTrackFromTable ( int  ivt = 0)
2667 {
2668  char text[512];
2669  EdbTrackP *etr = 0;
2670  if (eWait_Answer) return;
2671  if (!(eVertex)) return;
2672  Log(3,"EdbDisplay::RemoveTrackFromTable","%d tracks in vertex before",eVertex->N());
2673 
2674  EdbVTA *vta = 0;
2675  EdbVertex *ePreviousSaved = ePrevious;
2676  int n = 0;
2677  int ntr = 0;
2678  if (eWorking == 0)
2679  {
2680  ntr = eVertex->N();
2681  if (ntr < 3)
2682  {
2683 
2684  printf("Working vertex has 2 prongs only!\n");
2685  fflush(stdout);
2686  return;
2687  }
2688  if (eVerRec) if (eVerRec->IsA() != EdbVertexRec::Class()) eVerRec = 0;
2689  if (!eVerRec) {
2690  printf("Error: EdbDisplay:RemoveTrackFromTable: EdbVertexRec not defined, use SetVerRec(...)\n");
2691  fflush(stdout); return;
2692  }
2693  eWorking = new EdbVertex();
2694  int i = 0;
2695  etr = eVertex->GetTrack(ivt);
2696  for(i=0; i<ntr; i++)
2697  {
2698  if (i == ivt)
2699  {
2700  etr->ClearVTA(eVertex->GetVTa(i));
2701  continue;
2702  }
2703  if ((vta = (eVerRec)->EdbVertexRec::AddTrack( *(eWorking), (eVertex)->GetTrack(i), (eVertex)->Zpos(i))))
2704  {
2705  ((eVertex)->GetTrack(i))->AddVTA(vta);
2706  n++;
2707  }
2708  }
2709  }
2710  else
2711  {
2712  ntr = eWorking->N();
2713  if (ntr < 3)
2714  {
2715 
2716  printf("Working vertex has 2 prongs only!\n");
2717  fflush(stdout);
2718  return;
2719  }
2720  if (eVerRec) if (eVerRec->IsA() != EdbVertexRec::Class()) eVerRec = 0;
2721  if (!eVerRec) {printf("Error: EdbDisplay:RemoveTrackFromTable: EdbVertexRec not defined, use SetVerRec(...)\n"); fflush(stdout); return;}
2722  etr = eWorking->GetTrack(ivt);
2723  ePrevious = eWorking;
2724  eWorking = new EdbVertex();
2725  int i = 0;
2726  for(i=0; i<ntr; i++)
2727  {
2728  if (i == ivt)
2729  {
2730  etr->ClearVTA(ePrevious->GetVTa(i));
2731  continue;
2732  }
2733  if ((vta = (eVerRec)->EdbVertexRec::AddTrack(*(eWorking),(ePrevious)->GetTrack(i), (ePrevious)->Zpos(i))))
2734  {
2735  ((ePrevious)->GetTrack(i))->AddVTA(vta);
2736  n++;
2737  }
2738  }
2739  }
2740  if ((n < 2)||(n == ntr))
2741  {
2742  delete eWorking;
2743  if (ePrevious)
2744  {
2745  eWorking = ePrevious;
2746  (eWorking)->ResetTracks();
2747  ePrevious = ePreviousSaved;
2748  }
2749  else
2750  {
2751  eWorking = 0;
2752  (eVertex)->ResetTracks();
2753  }
2754  printf("Can't create working copy of the vertex!\n");
2755  fflush(stdout);
2756  return;
2757  }
2758 
2759  if ((eVerRec)->MakeV(*(eWorking)))
2760  {
2761  EdbVertex *eW = eWorking;
2762  eW->ResetTracks();
2763  eW->SetID(eVertex->ID());
2764  eW->V()->rmsDistAngle();
2765  sprintf(text,"New %-4d %-4d %-8.1f %-8.1f %-8.1f %-6.1f %-7.1f %-7.5f",
2766  eW->ID(), eW->N(), eW->VX(), eW->VY(), eW->VZ(), eW->V()->dist(),
2767  eW->V()->chi2()/eW->V()->ndf(), eW->V()->prob());
2768  DrawOldBut("Original");
2769  if (ePrevious)
2770  {
2771  DrawNewVTX(text);
2772  DrawNewBut("Modified");
2773  eW = ePrevious;
2774  sprintf(text,"Pre %-4d %-4d %-8.1f %-8.1f %-8.1f %-6.1f %-7.1f %-7.5f",
2775  eW->ID(), eW->N(), eW->VX(), eW->VY(), eW->VZ(), eW->V()->dist(),
2776  eW->V()->chi2()/eW->V()->ndf(), eW->V()->prob());
2777  DrawPreVTX(text);
2778  DrawPreBut("Previous");
2779  }
2780  else
2781  {
2782  DrawPreVTX(text);
2783  DrawPreBut("Modified");
2784  if (eVertex->ID() >= 0)
2785  {
2786  DrawAcc();
2787  DrawCan();
2788  DrawUnd();
2789  }
2790  }
2791  // DrawOldBut("Original");
2792  TButton *rm = fRemBut[ivt];
2793  fRemBut[ivt] = 0;
2794  DrawVTXTracks("Modified", eWorking);
2795  if (eArrV && (eIndVert >= 0))
2796  {
2797  // eArrV->RemoveAt(eIndVert);
2798  eArrV->AddAt(eWorking, eIndVert);
2799  }
2800  // if (eCreatedTracks.FindObject(etr))
2801  // {
2802  // eCreatedTracks.Remove(etr);
2803  // if ( eArrTr)
2804  // if (eArrTr->FindObject(etr)) eArrTr->Remove(etr);
2805  // if ( eArrTrSave)
2806  // if (eArrTrSave->FindObject(etr)) eArrTrSave->Remove(etr);
2807  // delete etr;
2808  // }
2809  fCanvas->cd();
2810  Draw();
2811  fPad->Update();
2812  if (ePreviousSaved) delete ePreviousSaved;
2813  ePreviousSaved = 0;
2814  fCanvasVTX->cd();
2815  if (rm) delete rm;
2816  }
2817  else
2818  {
2819  delete eWorking;
2820  if (ePrevious)
2821  {
2822  eWorking = ePrevious;
2823  (eWorking)->ResetTracks();
2824  ePrevious = ePreviousSaved;
2825  }
2826  else
2827  {
2828  eWorking = 0;
2829  (eVertex)->ResetTracks();
2830  }
2831  printf("Can't create new vertex after track removing!\n");
2832  fflush(stdout);
2833  }
2834 }
TText * text
Definition: Canv_SYSTEMATICS_ALLCOMBINED__RMSEnergy__vs__Energy__ELECTRON.C:164
virtual void DrawOldBut(char *text)
Definition: EdbDisplayBase.cxx:1047
virtual void DrawNewVTX(char *text)
Definition: EdbDisplayBase.cxx:970
virtual void DrawNewBut(char *text)
Definition: EdbDisplayBase.cxx:1107
virtual void DrawPreVTX(char *text)
Definition: EdbDisplayBase.cxx:948
TCanvas * fCanvas
Definition: EdbDisplayBase.h:123
virtual void DrawAcc()
Definition: EdbDisplayBase.cxx:1153
virtual void DrawUnd()
Definition: EdbDisplayBase.cxx:1137
virtual void DrawPreBut(char *text)
Definition: EdbDisplayBase.cxx:1077
virtual void DrawCan()
Definition: EdbDisplayBase.cxx:1169
void DrawVTXTracks(char *type, EdbVertex *v=0)
Definition: EdbDisplay.cxx:4083
void ClearVTA()
Definition: EdbPattern.cxx:502
EdbVTA * AddTrack(EdbVertex &edbv, EdbTrackP *track, int zpos)
Definition: EdbVertex.cxx:900
unsigned short int ndf() const
degrees of freedom of vertex fit
Definition: VtVertex.C:238
float chi2() const
$\chi^2$ of vertex fit
Definition: VtVertex.C:236
double rmsDistAngle() const
calc rms dist and rms angle
Definition: VtVertex.C:1073
double dist() const
available after call to rmsDistAngle()

◆ SegLine()

EdbSegG * EdbDisplay::SegLine ( const EdbSegP seg)

889 {
890  if (!seg) return 0;
891  float dz = TMath::Abs(seg->DZ())/2.;
892  EdbSegG *line = new EdbSegG(2, this);
893  //line->SetPoint(0, seg->X(), seg->Y(), seg->Z()-dz );
894  line->SetPoint(0,
895  seg->X() - seg->TX()*dz,
896  seg->Y() - seg->TY()*dz,
897  seg->Z() - dz);
898  line->SetPoint(1,
899  seg->X() + seg->TX()*dz,
900  seg->Y() + seg->TY()*dz,
901  seg->Z() + dz);
902 
903  int npieces=eToPlate-eFromPlate;
904  line->SetLineColor(gStyle->GetColorPalette(150+int(46.*(1.-1.*(seg->PID()-eFromPlate)/npieces))));
905  //line->SetLineColor( 2+seg->PID()%7 );
906  Width_t lwf = int(seg->W()/10.);
907  if (lwf > 3) lwf = 2;
908  line->SetLineWidth(lwf*fLineWidth);
909  if (seg->Track() <= -2) line->SetLineWidth(3*lwf*fLineWidth);
910  line->SetSeg(seg);
911  return line;
912 }
Int_t eToPlate
Definition: EdbDisplay.h:37
Int_t eFromPlate
Definition: EdbDisplay.h:36
void SetSeg(const EdbSegP *s)
Definition: EdbDisplay.h:210
Int_t Track() const
Definition: EdbSegP.h:147
Float_t W() const
Definition: EdbSegP.h:148
Int_t PID() const
Definition: EdbSegP.h:145

◆ SelectVertexTracks()

void EdbDisplay::SelectVertexTracks ( TObjArray *  vtx)
4198 {
4199  if (!vtx) return;
4200 
4201  if (!eArrTr) eArrTr = new TObjArray();
4202  else eArrTr->Clear();
4203 
4204  Int_t nv = vtx->GetEntriesFast();
4205 
4206  for (Int_t i = 0; i < nv; i++) {
4207  EdbVertex *vertex = (EdbVertex*)(vtx->At(i));
4208  if (!vertex || vertex->Flag() < 0) continue;
4209  for (Int_t j = 0; j < vertex->N(); j++) eArrTr->Add(vertex->GetTrack(j));
4210  }
4211 }
Int_t Flag() const
Definition: EdbVertex.h:124

◆ Set0()

void EdbDisplay::Set0 ( )
virtual

Reimplemented from EdbDisplayBase.

190 {
191  //eVerRec = ((EdbVertexRec *)(gROOT->GetListOfSpecials()->FindObject("EdbVertexRec")));
192  //if (eVerRec) if (eVerRec->IsA() != EdbVertexRec::Class()) eVerRec = 0;
193  //if (!eVerRec) {printf("Warning: EdbDisplay:Set0: EdbVertexRec not defined, use SetVerRec(...)\n");}
194  eArrSegG = 0;
195  eArrSegP = 0;
196  eArrTr = 0;
197  eArrV = 0;
198  eArrSegPSave = 0;
199  eArrTrSave = 0;
200  eArrVSave = 0;
201  eDrawTracks = 1;
202  eDrawVertex = 0;
203  eColors = 0;
204  eDZs = 0;
205  eVertex = 0;
206  eWorking = 0;
207  ePrevious= 0;
208  eSegment = 0;
209  eTrack = 0;
210  eTrack1 = 0;
211  eTrack2 = 0;
212  eSegPM = 0;
213  eWait_Answer = false;
214  eIndVert = -1;
215  eIndVertSave = -1;
216  eRadMax = 10000.;
217  eDpat = 2;
218  eImpMax = 1000.;
219  eSegWmin = 9;
220  eP = 0.;
221  eM = 0.;
222  eTImpMax = 10000.;
223  eTProbMin = 0.0;
224  fNumericEntries[0] = 0;
225  fNumericEntries[1] = 0;
226  fNumericEntries[2] = 0;
227  eFromPlate=1;
228  eToPlate=57;
229  if (fCanvas) fCanvas->Connect("Closed()", "EdbDisplay", this, "Delete()");
230 }
EdbTrackP * eTrack1
Definition: EdbDisplay.h:52
TArrayI * eColors
Definition: EdbDisplay.h:29
Int_t eDrawTracks
Definition: EdbDisplay.h:25
EdbTrackP * eTrack2
Definition: EdbDisplay.h:53
TArrayF * eDZs
Definition: EdbDisplay.h:30

◆ SetArrSegG()

void EdbDisplay::SetArrSegG ( TObjArray *  arrg)
inline
94 {eArrSegG = arrg;}

◆ SetArrSegP()

void EdbDisplay::SetArrSegP ( TObjArray *  arr)
390 {
391  eArrSegP=arr;
392 
393  float x = 0., y = 0., z = 0;
394  float wx0 = fVx0, wy0 = fVy0, wz0 = fVz0;
395  float wx1 = fVx1, wy1 = fVy1, wz1 = fVz1;
396 
397  EdbSegP *seg=0;
398  if( eArrSegP ) {
399  int nseg = eArrSegP->GetEntriesFast();
400  for(int j=0;j<nseg;j++) {
401  seg = (EdbSegP*)(eArrSegP->At(j));
402  if (seg)
403  {
404  x = seg->X();
405  y = seg->Y();
406  z = seg->Z();
407  if (fView == 0)
408  {
409  wx0 = x < wx0 ? x : wx0;
410  wy0 = y < wy0 ? y : wy0;
411  wz0 = z < wz0 ? z : wz0;
412  wx1 = x > wx1 ? x : wx1;
413  wy1 = y > wy1 ? y : wy1;
414  wz1 = z > wz1 ? z : wz1;
415  }
416  }
417  }
418  }
419  if (fView == 0)
420  {
421  if (wx0 < fVx0) fVx0 = wx0 - 500.;
422  if (wy0 < fVy0) fVy0 = wy0 - 500.;
423  if (wz0 < fVz0) fVz0 = wz0 - 500.;
424  if (wx1 > fVx1) fVx1 = wx1 + 500.;
425  if (wy1 > fVy1) fVy1 = wy1 + 500.;
426  if (wz1 > fVz1) fVz1 = wz1 + 500.;
427  }
428 }
Float_t fVz1
Definition: EdbDisplayBase.h:75
Float_t fVy0
Definition: EdbDisplayBase.h:75
Edb3DView * fView
Definition: EdbDisplayBase.h:94
Float_t fVy1
Definition: EdbDisplayBase.h:75
Float_t fVz0
Definition: EdbDisplayBase.h:75
Float_t fVx0
Definition: EdbDisplayBase.h:75
Float_t fVx1
Definition: EdbDisplayBase.h:75

◆ SetArrTr()

void EdbDisplay::SetArrTr ( TObjArray *  arr)
431 {
432  eArrTr=arr;
433 
434  float x = 0., y = 0., z = 0;
435  float wx0 = fVx0, wy0 = fVy0, wz0 = fVz0;
436  float wx1 = fVx1, wy1 = fVy1, wz1 = fVz1;
437 
438  EdbTrackP *tr=0;
439  if( eArrTr ) {
440  int ntr = eArrTr->GetEntriesFast();
441  for(int j=0;j<ntr;j++) {
442  tr = (EdbTrackP*)(eArrTr->At(j));
443  if(tr)
444  {
445  if (fView == 0)
446  {
447  if (tr->NF())
448  {
449  x = tr->TrackZmin()->X();
450  y = tr->TrackZmin()->Y();
451  z = tr->TrackZmin()->Z();
452  }
453  else
454  {
455  eRadMax = 0;
456  x = tr->GetSegmentFirst()->X();
457  y = tr->GetSegmentFirst()->Y();
458  z = tr->GetSegmentFirst()->Z();
459  }
460  wx0 = x < wx0 ? x : wx0;
461  wy0 = y < wy0 ? y : wy0;
462  wz0 = z < wz0 ? z : wz0;
463  wx1 = x > wx1 ? x : wx1;
464  wy1 = y > wy1 ? y : wy1;
465  wz1 = z > wz1 ? z : wz1;
466  if (tr->NF())
467  {
468  x = tr->TrackZmax()->X();
469  y = tr->TrackZmax()->Y();
470  z = tr->TrackZmax()->Z();
471  }
472  else
473  {
474  eRadMax = 0;
475  x = tr->GetSegmentLast()->X();
476  y = tr->GetSegmentLast()->Y();
477  z = tr->GetSegmentLast()->Z();
478  }
479  wx0 = x < wx0 ? x : wx0;
480  wy0 = y < wy0 ? y : wy0;
481  wz0 = z < wz0 ? z : wz0;
482  wx1 = x > wx1 ? x : wx1;
483  wy1 = y > wy1 ? y : wy1;
484  wz1 = z > wz1 ? z : wz1;
485  }
486  }
487  }
488  }
489  if (fView == 0)
490  {
491  if (wx0 < fVx0) fVx0 = wx0 - 500.;
492  if (wy0 < fVy0) fVy0 = wy0 - 500.;
493  if (wz0 < fVz0) fVz0 = wz0 - 500.;
494  if (wx1 > fVx1) fVx1 = wx1 + 500.;
495  if (wy1 > fVy1) fVy1 = wy1 + 500.;
496  if (wz1 > fVz1) fVz1 = wz1 + 500.;
497  }
498 }

◆ SetArrV()

void EdbDisplay::SetArrV ( TObjArray *  arrv)
501 {
502  eArrV=arrv;
503 
504  float x = 0., y = 0., z = 0;
505  float wx0 = fVx0, wy0 = fVy0, wz0 = fVz0;
506  float wx1 = fVx1, wy1 = fVy1, wz1 = fVz1;
507 
508  EdbVertex *v=0;
509  if( eArrV ) {
510  int nv = eArrV->GetEntriesFast();
511  for(int j=0;j<nv;j++) {
512  v = (EdbVertex*)(eArrV->At(j));
513  if (v)
514  {
515  if (fView == 0)
516  {
517  if (v->V())
518  {
519  x = v->VX();
520  y = v->VY();
521  z = v->VZ();
522  }
523  else
524  {
525  eRadMax = 0;
526  x = v->X();
527  y = v->Y();
528  z = v->Z();
529  }
530  wx0 = x < wx0 ? x : wx0;
531  wy0 = y < wy0 ? y : wy0;
532  wz0 = z < wz0 ? z : wz0;
533  wx1 = x > wx1 ? x : wx1;
534  wy1 = y > wy1 ? y : wy1;
535  wz1 = z > wz1 ? z : wz1;
536  }
537  }
538  }
539  }
540  if (fView == 0)
541  {
542  if (wx0 < fVx0) fVx0 = wx0 - 500.;
543  if (wy0 < fVy0) fVy0 = wy0 - 500.;
544  if (wz0 < fVz0) fVz0 = wz0 - 500.;
545  if (wx1 > fVx1) fVx1 = wx1 + 500.;
546  if (wy1 > fVy1) fVy1 = wy1 + 500.;
547  if (wz1 > fVz1) fVz1 = wz1 + 500.;
548  }
549 }
TObjArray * arrv
Definition: RecDispMC.C:130
Float_t X() const
Definition: EdbVertex.h:130
Float_t Z() const
Definition: EdbVertex.h:132
Float_t Y() const
Definition: EdbVertex.h:131

◆ SetDrawTracks()

void EdbDisplay::SetDrawTracks ( int  opt)
inline
const char * opt
Definition: mc2raw.cxx:42

◆ SetDrawVertex()

void EdbDisplay::SetDrawVertex ( int  opt)
inline
108 {eDrawVertex=opt;}

◆ SetVerRec()

void EdbDisplay::SetVerRec ( EdbVertexRec evr)
inline
91 { eVerRec = evr; };

◆ TrackDraw()

void EdbDisplay::TrackDraw ( EdbTrackP tr,
Color_t  kColor = kWhite 
)
755 {
756  // eDrawTracks: 1 - draw fitted track dotted line only
757  // 2 - draw also white marker at zmin
758  // 3 - draw also red marker at zmax
759  // 4 - draw also measured segments
760  // 5 - draw fitted line and measured segments, no markers
761  // 6 - draw measured segments only
762  // 7 - draw measured segments only
763  // 8 - draw only solid white track line
764  // 14 - as "4" plus track extrapolation line
765 
766  if (!tr) return;
767  TPolyLine3D *line=0;
768  const EdbSegP *seg=0;
769  float dz = 0.;
770 
771  if(eDrawTracks%10>0 && eDrawTracks%10<6) { // only dotted track line
772  line = new TPolyLine3D(tr->N());
773  if (tr->NF()) {
774  for(int is=0; is<tr->NF(); is++) {
775  seg = tr->GetSegmentF(is);
776  if(seg)
777  {
778  if (is == 0)
779  {
780  dz = TMath::Abs(seg->DZ());
781  line->SetPoint(is, seg->X()+seg->TX()*dz,
782  seg->Y()+seg->TY()*dz,
783  seg->Z()+ dz );
784  }
785  else
786  {
787  line->SetPoint(is, seg->X(), seg->Y(), seg->Z() );
788  }
789  }
790  }
791  }
792  else {
793  for(int is=0; is<tr->N(); is++) {
794  seg = tr->GetSegment(is);
795  if(seg)
796  {
797  if (is == 0)
798  {
799  dz = TMath::Abs(seg->DZ());
800  line->SetPoint(is, seg->X()+seg->TX()*dz,
801  seg->Y()+seg->TY()*dz,
802  seg->Z()+ dz);
803  }
804  else
805  {
806  line->SetPoint(is, seg->X(), seg->Y(), seg->Z() );
807  }
808  }
809  }
810  }
811  if (fStyle/2 == 1) line->SetLineColor(kBlack);
812  else line->SetLineColor(kColor);
813  line->SetLineWidth(fLineWidth);
814  line->SetBit(kCannotPick);
815  if (tr->Flag() != -10)
816  line->SetLineStyle(3);
817  else
818  line->SetLineStyle(4);
819  line->Draw();
820  }
821 
822  if(eDrawTracks%10>3 && eDrawTracks%10<8 && tr->N()>0 ) {
823  for(int is=0; is<tr->N(); is++) {
824  seg = tr->GetSegment(is);
825  if (seg) SegLine(seg)->Draw();
826  }
827  }
828 
829  if(eDrawTracks%10>7) {
830  line = new TPolyLine3D(tr->N());
831  if (tr->NF()){
832  for(int is=0; is<tr->NF(); is++) {
833  seg = tr->GetSegmentF(is);
834  if(seg) line->SetPoint(is, seg->X(), seg->Y(), seg->Z() );
835  }
836  } else {
837  for(int is=0; is<tr->N(); is++) {
838  seg = tr->GetSegment(is);
839  if(seg) line->SetPoint(is, seg->X(), seg->Y(), seg->Z() );
840  }
841  }
842  if (fStyle/2 == 1) line->SetLineColor(kBlack);
843  else line->SetLineColor(kColor);
844  line->SetLineWidth(fLineWidth);
845  line->SetLineStyle(1);
846  line->Draw();
847  }
848 
849  if(eDrawTracks%10>1 && eDrawTracks%10<5) {
850  EdbTrackG *pms = new EdbTrackG(1, this);
851  pms->SetTrack( tr );
852  pms->SetMarkerStyle(kOpenCircle);
853 
854  if (tr->NF()) seg = tr->TrackZmin();
855  else seg = tr->GetSegmentFirst();
856  if(seg) {
857  pms->SetPoint(0, seg->X(), seg->Y(), seg->Z() );
858  if (fStyle/2 == 1) pms->SetMarkerColor(kBlack);
859  else pms->SetMarkerColor(kColor);
860  pms->SetMarkerSize(1.2);
861  pms->Draw();
862  //printf("White track edge, Id %d, Nseg %d.\n", tr->ID(), tr->N());
863  }
864  }
865 
866  if(eDrawTracks%10>2 && eDrawTracks%10<5) {
867  EdbTrackG *pme = new EdbTrackG(1, this);
868  pme->SetTrack( tr );
869  pme->SetMarkerStyle(kOpenCircle);
870 
871  if (tr->NF()) seg = tr->TrackZmax();
872  else seg = tr->GetSegmentLast();
873  if(seg) {
874  pme->SetPoint(0, seg->X(), seg->Y(), seg->Z() );
875 // dz = TMath::Abs(seg->DZ());
876 // pme->SetPoint(0, seg->X()+seg->TX()*dz,
877 // seg->Y()+seg->TY()*dz,
878 // seg->Z()+ dz);
879  pme->SetMarkerColor(kRed);
880  pme->SetMarkerSize(1.2);
881  pme->Draw();
882  }
883  }
884 
885 }
Definition: EdbDisplay.h:160
void SetTrack(EdbTrackP *tr)
Definition: EdbDisplay.h:172

◆ UndoModifiedVTX()

void EdbDisplay::UndoModifiedVTX ( )
3373 {
3374  char text[512];
3375  EdbTrackP *LastCreated = 0;
3376  int CreatedInd = eCreatedTracks.GetSize();
3377  if (CreatedInd > 0) LastCreated = (EdbTrackP *)eCreatedTracks.At(CreatedInd-1);
3378  if (ePrevious)
3379  {
3380  int InWork = 0;
3381  if (LastCreated)
3382  {
3383  for (int i=0; i<eWorking->N(); i++)
3384  if (eWorking->GetTrack(i) == LastCreated)
3385  InWork = 1;
3386  }
3387  int InPrev = 0;
3388  if (LastCreated)
3389  {
3390  for (int i=0; i<ePrevious->N(); i++)
3391  if (ePrevious->GetTrack(i) == LastCreated)
3392  InPrev = 1;
3393  }
3394  delete eWorking;
3395  if (InWork && !InPrev)
3396  {
3397  eCreatedTracks.Remove(LastCreated);
3398  if (eArrTr) if (eArrTr->FindObject(LastCreated))
3399  {
3400  eArrTr->Remove(LastCreated);
3401  eArrTr->Compress();
3402  }
3403  if (eArrTrSave) if (eArrTrSave->FindObject(LastCreated))
3404  {
3405  eArrTrSave->Remove(LastCreated);
3406  eArrTrSave->Compress();
3407  }
3408  delete LastCreated;
3409  }
3410  eWorking = ePrevious;
3411  (eWorking)->ResetTracks();
3412  EdbVertex *eW = eWorking;
3413  eW->V()->rmsDistAngle();
3414  sprintf(text,"New %-4d %-4d %-8.1f %-8.1f %-8.1f %-6.1f %-7.1f %-7.5f",
3415  eW->ID(), eW->N(), eW->VX(), eW->VY(), eW->VZ(), eW->V()->dist(),
3416  eW->V()->chi2()/eW->V()->ndf(), eW->V()->prob());
3417  DrawPreVTX(text);
3418  DrawPreBut("Modified");
3419  ClearNewVTX();
3420  if (fNewBut)
3421  {
3422  delete fNewBut;
3423  fNewBut = 0;
3424  }
3425  ePrevious = 0;
3426  DrawVTXTracks("Modified", eWorking);
3427  if (eIndVert >= 0)
3428  {
3429 // eArrV->RemoveAt(eIndVert);
3430  eArrV->AddAt(eWorking, eIndVert);
3431  }
3432  Draw();
3433  }
3434  else if (eWorking)
3435  {
3436  EdbTrackP *tr = eWorking->GetTrack(eWorking->N() - 1);
3437  delete eWorking;
3438  if (tr && eCreatedTracks.FindObject(tr))
3439  {
3440  eCreatedTracks.Remove(tr);
3441  if (eArrTr) if (eArrTr->FindObject(tr))
3442  {
3443  eArrTr->Remove(tr);
3444  eArrTr->Compress();
3445  }
3446  if (eArrTrSave) if (eArrTrSave->FindObject(tr))
3447  {
3448  eArrTrSave->Remove(tr);
3449  eArrTrSave->Compress();
3450  }
3451  delete tr;
3452  }
3453  (eVertex)->ResetTracks();
3454  EdbVertex *eW = eVertex;
3455  eW->V()->rmsDistAngle();
3456  sprintf(text,"Orig %-4d %-4d %-8.1f %-8.1f %-8.1f %-6.1f %-7.1f %-7.5f",
3457  eW->ID(), eW->N(), eW->VX(), eW->VY(), eW->VZ(), eW->V()->dist(),
3458  eW->V()->chi2()/eW->V()->ndf(), eW->V()->prob());
3459  DrawOldVTX(text);
3460  ClearPreVTX();
3461  if (fPreBut)
3462  {
3463  delete fPreBut;
3464  fPreBut = 0;
3465  }
3466  if (fOldBut)
3467  {
3468  delete fOldBut;
3469  fOldBut = 0;
3470  }
3471  eWorking = 0;
3472  DrawVTXTracks("Original", eVertex);
3473  if (eArrV && (eIndVert >= 0))
3474  {
3475 // eArrV->RemoveAt(eIndVert);
3476  eArrV->AddAt(eVertex, eIndVert);
3477  }
3478  TList *li = fTrigPad->GetListOfPrimitives();
3479  if (li)
3480  {
3481  li->Remove(fUndButton);
3482  li->Remove(fAccButton);
3483  li->Remove(fCanButton);
3484  }
3485  Draw();
3486  }
3487 }
TButton * fNewBut
Definition: EdbDisplayBase.h:114
TButton * fOldBut
Definition: EdbDisplayBase.h:113
virtual void ClearNewVTX()
Definition: EdbDisplayBase.cxx:1031
virtual void DrawOldVTX(char *text)
Definition: EdbDisplayBase.cxx:926
TButton * fPreBut
Definition: EdbDisplayBase.h:115
virtual void ClearPreVTX()
Definition: EdbDisplayBase.cxx:1039

◆ VerRec()

EdbVertexRec* EdbDisplay::VerRec ( ) const
inline
99 {return eVerRec;}

◆ VertexDraw()

void EdbDisplay::VertexDraw ( EdbVertex v)
641 {
642  float xv,yv,zv;
643  if (!vv) return;
644  //if (vv->Flag() == -10) {
645  Log(2,"EdbDisplay::VertexDraw","id=%d %d-prong flag = %d", vv->ID(), vv->N(), vv->Flag() );
646  //return;
647  //}
648  EdbVertexG *v = new EdbVertexG(this);
649  v->SetVertex( vv );
650 
651  xv = vv->X();
652  yv = vv->Y();
653  zv = vv->Z();
654 
655  v->SetPoint(0, xv, yv, zv);
656  v->SetMarkerStyle(kFullCircle);
657  if (fStyle/2 == 1) v->SetMarkerColor(kBlack);
658  else v->SetMarkerColor(kWhite);
659 // v->Draw();
660 
661  if (vv->V())
662  {
663 // v = new EdbVertexG(this);
664 // v->SetVertex( vv );
665 
666  xv = vv->VX();
667  yv = vv->VY();
668  zv = vv->VZ();
669  v->SetPoint(0, xv, yv, zv);
670  }
671  if (eWorking == vv)
672  {
673  v->SetMarkerColor(kGreen);
674  }
675  else if (eVertex == vv)
676  {
677  if (!eWorking) v->SetMarkerColor(kGreen);
678  else
679  {
680  if (fStyle/2 == 1) v->SetMarkerColor(kBlack);
681  else v->SetMarkerColor(kWhite);
682  }
683  }
684  else
685  {
686  if (fStyle/2 == 1) v->SetMarkerColor(kBlack);
687  else v->SetMarkerColor(kWhite);
688  }
689 
690  if(vv->Flag()==-10) v->SetMarkerStyle(kOpenStar);
691  else v->SetMarkerStyle(kFullStar);
692  v->SetMarkerSize(1.2);
693  v->Draw();
694 
695 
696  if(eDrawVertex>0) {
697  TPolyLine3D *line=0;
698  const EdbSegP *seg=0;
699  EdbTrackP *tr=0;
700  bool measured_segment = false;
701  if (eVerRec) measured_segment = eVerRec->eUseSegPar;
702  for(int i=0; i<vv->N(); i++ ) {
703  tr = vv->GetTrack(i);
704  if (!(tr->NF())) measured_segment = true;
705 
706  seg = vv->GetTrackV(i,measured_segment); if(!seg) continue;
707  line = new TPolyLine3D(2);
708  line->SetPoint(0, xv,yv,zv );
709  line->SetPoint(1, seg->X(), seg->Y(), seg->Z());
710  if (fStyle/2 == 1) line->SetLineColor(kBlack);
711  else line->SetLineColor(kYellow);
712  line->SetLineWidth(2);
713  line->SetBit(kCannotPick);
714  line->Draw();
715  if(eDrawTracks>10) DrawSegmentExtrapolationLine( *seg, seg->Z(), zv );
716  }
717  for(int i=0; i<vv->Nn(); i++ ) { //draw auxillary tracks if any
718  EdbVTA * vtn = vv->GetVTn(i);
719  if (vtn->Flag() < 3){ //neighbor track
720  EdbTrackP *t = vv->GetTrackN(i);
721  TrackDraw(t);
722  if(eDrawTracks>10) DrawSegmentExtrapolationLine( *((EdbSegP *)t), t->Z(), zv );
723  }
724  else if (vtn->Flag()==3){ //neighbor vertex
725  EdbVertex *neighv = (EdbVertex*) vv->GetTrackN(i);
726  int currentdrawvertexopt = eDrawVertex;
727  eDrawVertex= 0; //do not look for neighbors of this neighbor vertex
728  VertexDraw(neighv);
729  eDrawVertex = currentdrawvertexopt;
730  }
731  }
732  }
733 }
void DrawSegmentExtrapolationLine(const EdbSegP &s, float zmin, float zmax)
Definition: EdbDisplay.cxx:736
Definition: EdbDisplay.h:133
void SetVertex(EdbVertex *v)
Definition: EdbDisplay.h:144
Bool_t eUseSegPar
Definition: EdbVertex.h:182
EdbTrackP * GetTrackN(int i)
Definition: EdbVertex.h:142

Member Data Documentation

◆ eArrSegG

TObjArray* EdbDisplay::eArrSegG

◆ eArrSegP

TObjArray* EdbDisplay::eArrSegP

◆ eArrSegPSave

TObjArray* EdbDisplay::eArrSegPSave

◆ eArrTr

TObjArray* EdbDisplay::eArrTr

◆ eArrTrSave

TObjArray* EdbDisplay::eArrTrSave

◆ eArrV

TObjArray* EdbDisplay::eArrV

◆ eArrVSave

TObjArray* EdbDisplay::eArrVSave

◆ eColors

TArrayI* EdbDisplay::eColors
private

◆ eCreatedTracks

TList EdbDisplay::eCreatedTracks

◆ eDpat

Double_t EdbDisplay::eDpat

◆ eDrawTracks

Int_t EdbDisplay::eDrawTracks
private

◆ eDrawVertex

Int_t EdbDisplay::eDrawVertex
private

◆ eDZs

TArrayF* EdbDisplay::eDZs
private

◆ eFromPlate

Int_t EdbDisplay::eFromPlate

◆ eImpMax

Double_t EdbDisplay::eImpMax

◆ eIndVert

Int_t EdbDisplay::eIndVert

◆ eIndVertSave

Int_t EdbDisplay::eIndVertSave

◆ eM

Double_t EdbDisplay::eM

◆ eP

Double_t EdbDisplay::eP

◆ ePrevious

EdbVertex* EdbDisplay::ePrevious

◆ eRadMax

Double_t EdbDisplay::eRadMax

◆ eSegment

EdbSegP* EdbDisplay::eSegment

◆ eSegPM

TPolyMarker3D* EdbDisplay::eSegPM

◆ eSegWmin

Double_t EdbDisplay::eSegWmin

◆ eTImpMax

Double_t EdbDisplay::eTImpMax

◆ eToPlate

Int_t EdbDisplay::eToPlate

◆ eTProbMin

Double_t EdbDisplay::eTProbMin

◆ eTrack

EdbTrackP* EdbDisplay::eTrack

◆ eTrack1

EdbTrackP* EdbDisplay::eTrack1

◆ eTrack2

EdbTrackP* EdbDisplay::eTrack2

◆ eVerRec

EdbVertexRec* EdbDisplay::eVerRec

◆ eVertex

EdbVertex* EdbDisplay::eVertex

◆ eWait_Answer

Bool_t EdbDisplay::eWait_Answer

◆ eWorking

EdbVertex* EdbDisplay::eWorking

◆ fNumericEntries

TGNumberEntry* EdbDisplay::fNumericEntries[3]
private

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