FEDRA emulsion software from the OPERA Collaboration
EdbDisplay Class Reference

FEDRA Event Display. More...

#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 Refresh ()
 
virtual void Set0 ()
 
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
 additional array of segments for the presentation purpose only More...
 
TObjArray * eArrSegP
 array of segments to be drawn More...
 
TObjArray * eArrSegPSave
 saved array of segments to be drawn More...
 
TObjArray * eArrTr
 array of tracks to be drawn More...
 
TObjArray * eArrTrSave
 saved array of tracks to be drawn More...
 
TObjArray * eArrV
 array of vertices to be drawn More...
 
TObjArray * eArrVSave
 saved array of vertices to be drawn More...
 
TList eCreatedTracks
 list of tracks, created during vertex operations More...
 
Double_t eDpat
 +/- patterns for neighborhood More...
 
Int_t eFromPlate
 plates range (for colors normalization) More...
 
Double_t eImpMax
 Maximal impact for neighborhood. More...
 
Int_t eIndVert
 Index of selected vertex in ArrV. More...
 
Int_t eIndVertSave
 Index of selected vertex in ArrV (seved) More...
 
Double_t eM
 track mass (creation from segment, propagation) More...
 
Double_t eP
 track momentum (creation from segment, propagation) More...
 
EdbVertexePrevious
 saved previous vertex modifications More...
 
Double_t eRadMax
 Maximal Radius for neighborhood. More...
 
EdbSegPeSegment
 working segment (for segment neighborhood) More...
 
TPolyMarker3D * eSegPM
 green mark for segment selected as working More...
 
Double_t eSegWmin
 Minimal segment W for neighbouring selection. More...
 
Double_t eTImpMax
 Maximal impact for interactive add track. More...
 
Int_t eToPlate
 
Double_t eTProbMin
 Minimal probability for interactive add track. More...
 
EdbTrackPeTrack
 working intermediate track (track creation) More...
 
EdbTrackPeTrack1
 working intermediate track (track splitting) More...
 
EdbTrackPeTrack2
 working intermediate track (track splitting) More...
 
EdbVertexReceVerRec
 
EdbVertexeVertex
 current selected vertex More...
 
Bool_t eWait_Answer
 set TRUE when answer received More...
 
EdbVertexeWorking
 working vertex More...
 
- Public Attributes inherited from EdbDisplayBase
TCanvasfCanvas
 Pointer to the display canvas. More...
 
TCanvasfCanvasTRK
 Pointer to the vertex canvas. More...
 
TCanvasfCanvasVTX
 Pointer to the vertex canvas. More...
 
TPad * fPad
 Pointer to the event display main pad. More...
 
TPaveText * fVTXTRKInfo
 Vertex - tracks information. More...
 

Private Attributes

TArrayI * eColors
 
Int_t eDrawTracks
 tracks drawing option More...
 
Int_t eDrawVertex
 vertex drawing option More...
 
TArrayF * eDZs
 
TGNumberEntry * fNumericEntries [3]
 

Additional Inherited Members

- Protected Attributes inherited from EdbDisplayBase
TButton * fAccButton
 Button to accept modified vertex. More...
 
TButton * fAllButton
 Button to draw all objects. More...
 
TArc * fArcButton
 Gren/Red button to show Pick/Zoom mode. More...
 
TPad * fButtons
 Pointer to the buttons pad. More...
 
TButton * fCanButton
 Button to cancel modified vertex. More...
 
char fCanvasName [128]
 Name of main canvas. More...
 
Int_t fColorBG
 color for the display BG More...
 
TGeoVolume * fDetector
 detector geometry More...
 
Bool_t fDrawAllViews
 Flag True if AllViews selected. More...
 
Bool_t fDrawDet
 True if drawing detector is on. More...
 
TButton * fEnvButton
 Button to draw vertex environment. More...
 
TText * fHdrVTX
 Vertex data header. More...
 
Width_t fLineWidth
 Line width for tracks and segments. More...
 
TGMainFrame * fMain
 Dialog frame. More...
 
TButton * fNewBut
 Modified Vertex display button. More...
 
TText * fNewVTX
 Modified Vertex data. More...
 
TButton * fOldBut
 Old Vertex display button. More...
 
TText * fOldVTX
 Old Vertex data. More...
 
Float_t fPhi
 Viewing angle phi. More...
 
TButton * fPickButton
 Button to activate Pick mode. More...
 
TButton * fPreBut
 Previous Vertex display button. More...
 
TText * fPreVTX
 Previous Vertex data. More...
 
Float_t fPsi
 Viewving angle psi (rotation on display) More...
 
TButton * fRemBut [50]
 track removing buttons More...
 
Int_t fStyle
 Display style (line width, sizes etc) More...
 
Float_t fTheta
 Viewing angle theta. More...
 
char fTitle [128]
 EdbDisplay Object Name. More...
 
TPad * fTrigPad
 Pointer to the trigger pad. More...
 
TButton * fUndButton
 Button to undo vertex modofication. More...
 
TButton * fUnZoomButton
 Button to Undo previous Zoom. More...
 
Edb3DViewfView
 Main View object. More...
 
TPaveText * fVTXTracks
 Vertex tracks information. More...
 
Float_t fVx0
 
Float_t fVx1
 
Float_t fVy0
 
Float_t fVy1
 
Float_t fVz0
 
Float_t fVz1
 
TButton * fZoomButton
 Button to activate Zoom mode. More...
 
Int_t fZoomMode
 =1 if in zoom mode More...
 
Int_t fZooms
 Number of zooms. More...
 
Double_t fZoomX0 [kMAXZOOMS]
 Low x range of zoom number i. More...
 
Double_t fZoomX1 [kMAXZOOMS]
 High x range of zoom number i. More...
 
Double_t fZoomY0 [kMAXZOOMS]
 Low y range of zoom number i. More...
 
Double_t fZoomY1 [kMAXZOOMS]
 High y range of zoom number i. More...
 

Detailed Description

FEDRA Event Display.

Constructor & Destructor Documentation

◆ EdbDisplay() [1/3]

EdbDisplay::EdbDisplay ( )
inline
73: EdbDisplayBase() {Set0();}
EdbDisplayBase()
Definition: EdbDisplayBase.cxx:27
void Set0()
Definition: EdbDisplay.cxx:190

◆ ~EdbDisplay()

EdbDisplay::~EdbDisplay ( )
242{
244
245 if (gROOT->GetListOfSpecials()->FindObject(this))
246 gROOT->GetListOfSpecials()->Remove(this);
247
248 SafeDelete(fCanvasVTX);
249 SafeDelete(fCanvasTRK);
250 SafeDelete(eWorking);
251 SafeDelete(ePrevious);
252
253 if (eArrSegPSave) SafeDelete(eArrSegP);
254 if (eArrVSave) SafeDelete(eArrV);
255 if (eArrTrSave) SafeDelete(eArrTr);
256
257 //SafeDelete(eArrSegG);
258}
TCanvas * fCanvasVTX
Pointer to the vertex canvas.
Definition: EdbDisplayBase.h:125
TCanvas * fCanvasTRK
Pointer to the vertex canvas.
Definition: EdbDisplayBase.h:126
TObjArray * eArrTrSave
saved array of tracks to be drawn
Definition: EdbDisplay.h:46
TObjArray * eArrV
array of vertices to be drawn
Definition: EdbDisplay.h:44
EdbVertex * ePrevious
saved previous vertex modifications
Definition: EdbDisplay.h:50
TObjArray * eArrSegP
array of segments to be drawn
Definition: EdbDisplay.h:42
TObjArray * eArrTr
array of tracks to be drawn
Definition: EdbDisplay.h:43
TObjArray * eArrSegPSave
saved array of segments to be drawn
Definition: EdbDisplay.h:45
EdbVertex * eWorking
working vertex
Definition: EdbDisplay.h:48
void DeleteModifiedVTX()
Definition: EdbDisplay.cxx:3300
TObjArray * eArrVSave
saved array of vertices to be drawn
Definition: EdbDisplay.h:47

◆ 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
80 :
81 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
83 :
84 EdbDisplayBase(title, la.Xmin(), la.Xmax(), la.Ymin(), la.Ymax(),
85 la.Zmin(), la.Zmax(), Canvas)
86 {Set0();}
float Ymin() const
Definition: EdbLayer.h:87
float Ymax() const
Definition: EdbLayer.h:88
float Xmax() const
Definition: EdbLayer.h:86
float Zmin() const
Definition: EdbLayer.h:80
float Xmin() const
Definition: EdbLayer.h:85
float Zmax() const
Definition: EdbLayer.h:81

Member Function Documentation

◆ AcceptModifiedParams()

void EdbDisplay::AcceptModifiedParams ( )
3991{
3992 eWait_Answer = false;
3993 if(fNumericEntries[0]) eRadMax = fNumericEntries[0]->GetIntNumber();
3994 if(fNumericEntries[1]) eDpat = fNumericEntries[1]->GetIntNumber();
3995 if(fNumericEntries[2]) eImpMax = fNumericEntries[2]->GetIntNumber();
3996 if(fNumericEntries[3]) eSegWmin= fNumericEntries[3]->GetIntNumber();
3997
3998 for (Int_t i = 0; i < 4; i++) SafeDelete(fNumericEntries[i]);
3999
4000 fMain->SendCloseMessage();
4001 fMain = 0;
4002}
TGMainFrame * fMain
Dialog frame.
Definition: EdbDisplayBase.h:108
Double_t eSegWmin
Minimal segment W for neighbouring selection.
Definition: EdbDisplay.h:67
Double_t eImpMax
Maximal impact for neighborhood.
Definition: EdbDisplay.h:62
TGNumberEntry * fNumericEntries[3]
Definition: EdbDisplay.h:33
Double_t eDpat
+/- patterns for neighborhood
Definition: EdbDisplay.h:61
Bool_t eWait_Answer
set TRUE when answer received
Definition: EdbDisplay.h:56
Double_t eRadMax
Maximal Radius for neighborhood.
Definition: EdbDisplay.h:60

◆ AcceptModifiedTrackParams()

void EdbDisplay::AcceptModifiedTrackParams ( )
4019{
4020 eWait_Answer = false;
4021 if(fNumericEntries[0]) eP = fNumericEntries[0]->GetNumber();
4022 if(fNumericEntries[1]) eM = fNumericEntries[1]->GetNumber();
4023 if(fNumericEntries[2]) eTImpMax = fNumericEntries[2]->GetNumber();
4024 if(fNumericEntries[3]) eTProbMin = fNumericEntries[3]->GetNumber();
4025 for (Int_t i = 0; i < 4; i++) SafeDelete(fNumericEntries[i]);
4026 fMain->SendCloseMessage();
4027 fMain = 0;
4028}
Double_t eM
track mass (creation from segment, propagation)
Definition: EdbDisplay.h:64
Double_t eTProbMin
Minimal probability for interactive add track.
Definition: EdbDisplay.h:66
Double_t eTImpMax
Maximal impact for interactive add track.
Definition: EdbDisplay.h:65
Double_t eP
track momentum (creation from segment, propagation)
Definition: EdbDisplay.h:63

◆ AcceptModifiedVTX()

void EdbDisplay::AcceptModifiedVTX ( )
3491{
3492 EdbVertex *eVe = 0;
3494 if (ePrevious && (ePrevious != eVertex) && (ePrevious != eWorking))
3495 {
3496 delete ePrevious;
3497 ePrevious = 0;
3498 }
3499 if (eWorking && eVertex)
3500 {
3501 //if (!eVerRec) eVerRec = ((EdbVertexRec*)(gROOT->GetListOfSpecials()->FindObject("EdbVertexRec")));
3502 if (eVerRec) if (eVerRec->IsA() != EdbVertexRec::Class()) eVerRec = 0;
3503 if (!eVerRec) {printf("Error: EdbDisplay:AcceptModifiedVTX: EdbVertexRec not defined, use SetVerRec(...)\n"); return;}
3504 EdbVertex *eW = eWorking;
3505 int ind = eVertex->ID();
3506 if (ind < 0)
3507 {
3508 if (eVerRec->eVTX)
3509 {
3510 ind = eVerRec->eVTX->GetEntries();
3511 }
3512 else
3513 {
3514 eVerRec->eVTX = new TObjArray(10);
3515 ind = 0;
3516 }
3517 }
3518 eW->SetID(ind);
3519 eW->SetQuality(eW->V()->prob()/
3520 (eW->V()->vtx_cov_x()+eW->V()->vtx_cov_y()));
3521 if (eVerRec)
3522 {
3523 int ntr = eVertex->N();
3524// printf("ind %d ntr %d\n", ind, ntr);
3525// fflush(stdout);
3526 for(int i=0; i<ntr; i++)
3527 {
3528// printf(" %d\n", i);
3529// fflush(stdout);
3530 (eVerRec->eVTA).Remove(eVertex->GetVTa(i));
3531 }
3532 }
3533 int indd = -1;
3534// if (!eArrV) eArrV = new TObjArray(10);
3535 if (eArrV) indd = eArrV->IndexOf(eVertex);
3536 if (indd >= 0)
3537 {
3538// eArrV->RemoveAt(indd);
3539 eArrV->AddAt(eW, indd);
3540 }
3541 eVe = eVertex;
3542 EdbTrackP *tr = 0;
3543
3544 TObjArray *etr = 0;
3545 if (eVerRec) etr = eVerRec->eEdbTracks;
3546 int trind = 0;
3547 if (etr) trind = etr->GetEntries();
3548 for (int i = 0; i < eCreatedTracks.GetSize(); i++)
3549 {
3550 tr = (EdbTrackP *)(eCreatedTracks.At(i));
3551 if (tr)
3552 {
3553// printf("i %d id %d\n", i, tr->ID());
3554// fflush(stdout);
3555// if (tr->VTAS() || tr->VTAE())
3556// {
3557 tr->SetID(trind++);
3558 if (etr) etr->Add(tr);
3559 if (eArrTr) eArrTr->Add(tr);
3560// printf(" id %d\n", tr->ID());
3561// fflush(stdout);
3562// }
3563// else delete tr;
3564 }
3565 }
3566 eCreatedTracks.Clear();
3567
3568 delete eVertex; //?????????
3569 eVertex = 0;
3570
3571 eW->ResetTracks();
3572
3573 int ntr = eW->N();
3574 int ifl = 0;
3575 for(int i=0; i<ntr; i++)
3576 {
3577 tr = eW->GetTrack(i);
3578 if (eTrack)
3579 {
3580 if (tr == eTrack)
3581 {
3582 TObjArray *etr = 0;
3583 if (eVerRec) etr = eVerRec->eEdbTracks;
3584 int trind = 0;
3585 if (etr) trind = etr->GetEntries();
3586 eTrack->SetID(trind);
3587 if (etr) etr->Add(eTrack);
3589 eTrack = 0;
3590 }
3591 }
3592 if (eW->Zpos(i)) ifl = ifl | 1;
3593 else ifl = ifl | 2;
3594 if (tr && eArrTr)
3595 {
3596 indd = eArrTr->IndexOf(tr);
3597 if (indd < 0)
3598 {
3599 eArrTr->Add(tr);
3600 }
3601 }
3602 }
3603 ifl = 4 - ifl;
3604 if (ifl == 3) ifl = 0;
3605 if (eW->Nv()) ifl += 3;
3606 eW->SetFlag(ifl);
3607 if (eVerRec)
3608 {
3609// eVerRec->eVTX->RemoveAt(ind);
3610 if (eVerRec->eVTX) eVerRec->eVTX->AddAt(eW, ind);
3611 for(int i=0; i<ntr; i++)
3612 {
3613 eVerRec->AddVTA(eW->GetVTa(i));
3614 }
3615 }
3616 }
3617 if (eVertex && eVertex->ID() < 0 && !eWorking)
3618 {
3619 int ind = 0;
3620 if (eVerRec->eVTX)
3621 {
3622 ind = eVerRec->eVTX->GetEntries();
3623 }
3624 else
3625 {
3626 eVerRec->eVTX = new TObjArray(10);
3627 ind = 0;
3628 }
3629 eVertex->SetID(ind);
3630// if (!eArrV) eArrV = new TObjArray(10);
3631 if (eArrV) eArrV->Add(eVertex);
3632 EdbTrackP *tr = 0;
3633 TObjArray *etr = 0;
3634 if (eVerRec) etr = eVerRec->eEdbTracks;
3635 int trind = 0;
3636 if (etr) trind = etr->GetEntries();
3637 for (int i = 0; i < eCreatedTracks.GetSize(); i++)
3638 {
3639 tr = (EdbTrackP *)(eCreatedTracks.At(i));
3640 if (tr)
3641 {
3642// if (tr->VTAS() || tr->VTAE())
3643// {
3644 tr->SetID(trind++);
3645 if (etr) etr->Add(tr);
3646 if (eArrTr) eArrTr->Add(tr);
3647// }
3648// else delete tr;
3649 }
3650 }
3651 eCreatedTracks.Clear();
3652
3654 int ntr = eVertex->N();
3655 int ifl = 0;
3656 int indd = 0;
3657 for(int i=0; i<ntr; i++)
3658 {
3659 tr = eVertex->GetTrack(i);
3660 if (eTrack)
3661 {
3662 if (tr == eTrack)
3663 {
3664 TObjArray *etr = 0;
3665 if (eVerRec) etr = eVerRec->eEdbTracks;
3666 int trind = 0;
3667 if (etr) trind = etr->GetEntries();
3668 eTrack->SetID(trind);
3669 if (etr) etr->Add(eTrack);
3671 eTrack = 0;
3672 }
3673 }
3674 if (eVertex->Zpos(i)) ifl = ifl | 1;
3675 else ifl = ifl | 2;
3676 if (tr && eArrTr)
3677 {
3678 indd = eArrTr->IndexOf(tr);
3679 if (indd < 0)
3680 {
3681 eArrTr->Add(tr);
3682 }
3683 }
3684 }
3685 ifl = 4 - ifl;
3686 if (ifl == 3) ifl = 0;
3687 if (eVertex->Nv()) ifl += 3;
3688 eVertex->SetFlag(ifl);
3689 if (eVerRec)
3690 {
3691// eVerRec->eVTX->RemoveAt(ind);
3692 if (!(eVerRec->eVTX)) eVerRec->eVTX = new TObjArray(10);
3693 eVerRec->eVTX->Add(eVertex);
3694 for(int i=0; i<ntr; i++)
3695 {
3697 }
3698 }
3699 }
3700 eWorking = 0;
3701 eVertex = 0;
3702 TList *li = fTrigPad->GetListOfPrimitives();
3703 if (li)
3704 {
3705 li->Remove(fUndButton);
3706 li->Remove(fAccButton);
3707 li->Remove(fCanButton);
3708 li->Remove(fEnvButton);
3709 }
3710 fTrigPad->cd();
3711 fTrigPad->Update();
3712 fTrigPad->Draw();
3713
3714 fPad->cd();
3716 if (fCanvasVTX) fCanvasVTX->Close();
3717 fCanvasVTX = 0;
3718 Draw();
3719 //if (eVe) delete eVe;
3720 eIndVert = -1;
3721}
TTree * tr
Definition: Shower_E_FromShowerRoot.C:5
virtual void Draw(Option_t *option="")
Definition: EdbDisplayBase.cxx:787
TButton * fAccButton
Button to accept modified vertex.
Definition: EdbDisplayBase.h:102
TButton * fUndButton
Button to undo vertex modofication.
Definition: EdbDisplayBase.h:101
TPad * fPad
Pointer to the event display main pad.
Definition: EdbDisplayBase.h:127
TPad * fTrigPad
Pointer to the trigger pad.
Definition: EdbDisplayBase.h:97
TButton * fCanButton
Button to cancel modified vertex.
Definition: EdbDisplayBase.h:103
TButton * fEnvButton
Button to draw vertex environment.
Definition: EdbDisplayBase.h:100
EdbVertexRec * eVerRec
Definition: EdbDisplay.h:41
Int_t eIndVert
Index of selected vertex in ArrV.
Definition: EdbDisplay.h:57
void DrawAllObjects()
Definition: EdbDisplay.cxx:3806
TList eCreatedTracks
list of tracks, created during vertex operations
Definition: EdbDisplay.h:59
EdbVertex * eVertex
current selected vertex
Definition: EdbDisplay.h:49
EdbTrackP * eTrack
working intermediate track (track creation)
Definition: EdbDisplay.h:52
void CloseDialogModifiedVTX()
Definition: EdbDisplay.cxx:4077
void SetID(int id)
Definition: EdbSegP.h:128
Definition: EdbPattern.h:113
int SetSegmentsTrack(int id)
Definition: EdbPattern.h:246
TObjArray * eVTX
array of vertex
Definition: EdbVertex.h:205
void AddVTA(EdbVTA *vta)
Definition: EdbVertex.h:286
TObjArray * eEdbTracks
Definition: EdbVertex.h:204
TList eVTA
vertex-track associations
Definition: EdbVertex.h:203
Definition: EdbVertex.h:69
Int_t ID() const
Definition: EdbVertex.h:126
void SetQuality(float q=0)
Definition: EdbVertex.h:161
void SetID(int ID=0)
Definition: EdbVertex.h:156
EdbVTA * GetVTa(int i)
Definition: EdbVertex.h:139
VERTEX::Vertex * V() const
Definition: EdbVertex.h:154
Int_t N() const
Definition: EdbVertex.h:121
EdbTrackP * GetTrack(int i)
Definition: EdbVertex.h:141
void SetFlag(int flag=0)
Definition: EdbVertex.h:158
void ResetTracks()
Definition: EdbVertex.cxx:209
Int_t Zpos(int i)
Definition: EdbVertex.h:127
Int_t Nv()
Definition: EdbVertex.cxx:367
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 ( )
4011{
4012 eWait_Answer = false;
4013 for (Int_t i = 0; i < 3; i++) SafeDelete(fNumericEntries[i]);
4014 fMain->SendCloseMessage();
4015 fMain = 0;
4016}

◆ CancelDialogModifiedTrackParams()

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

◆ CancelModifiedVTX()

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

◆ ClearSegmentEnv()

void EdbDisplay::ClearSegmentEnv ( )
4216{
4217 if (fPad->GetListOfPrimitives()->FindObject(eSegPM))
4218 {
4219 fPad->GetListOfPrimitives()->Remove(eSegPM);
4220 }
4221 delete eSegPM;
4222 eSegPM = 0;
4223 TList *li = fTrigPad->GetListOfPrimitives();
4225 {
4226 li->Remove(fAllButton);
4227 delete eArrV;
4228 eArrV = eArrVSave;
4229 eArrVSave = 0;
4230 if (eArrTrSave)
4231 {
4232 delete eArrTr;
4234 eArrTrSave = 0;
4235 }
4236 if (eArrSegPSave)
4237 {
4238 delete eArrSegP;
4240 eArrSegPSave = 0;
4241 }
4242 Draw();
4243 }
4244 else li->Remove(fEnvButton);
4245}
TButton * fAllButton
Button to draw all objects.
Definition: EdbDisplayBase.h:99
TPolyMarker3D * eSegPM
green mark for segment selected as working
Definition: EdbDisplay.h:55

◆ CloseDialogModifiedParams()

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

◆ CloseDialogModifiedTrackParams()

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

◆ CloseDialogModifiedVTX()

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

◆ Delete()

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

◆ DeleteModifiedVTX()

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

◆ DialogModifiedVTX()

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

◆ DialogNeighborParameters()

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

◆ DialogTrackParameters()

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

◆ DrawAllObjects()

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

◆ DrawRef()

void EdbDisplay::DrawRef ( float  start[3],
float  end[3] 
)

reference vector to indicate the direction (ie scanback track) can be drawn

621{
623
624 TPolyLine3D *line = new TPolyLine3D(2);
625 line->SetPoint(0, start[0],start[1], start[2] );
626 line->SetPoint(1, end[0], end[1], end[2] );
627 line->SetLineColor(kGreen);
628 line->SetLineWidth(fLineWidth);
629 line->SetBit(kCannotPick);
630 line->Draw();
631
632 TPolyMarker3D *mark = new TPolyMarker3D(1);
633 mark->SetPoint(0, start[0],start[1], start[2] );
634 mark->SetMarkerColor(kGreen);
635 mark->SetMarkerStyle(kMultiply);
636 mark->SetMarkerSize(1.2);
637 mark->Draw();
638}
Width_t fLineWidth
Line width for tracks and segments.
Definition: EdbDisplayBase.h:93

◆ DrawSegmentExtrapolationLine()

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

◆ DrawVertexEnvironment()

void EdbDisplay::DrawVertexEnvironment ( )
3724{
3725 if (eRadMax == 0)
3726 {
3727 printf("No neighborhood in EdbPVRec object!\n");
3728 fflush(stdout);
3729 return;
3730 }
3731 //if (!eVerRec) eVerRec = ((EdbVertexRec *)(gROOT->GetListOfSpecials()->FindObject("EdbVertexRec")));
3732 if (eVerRec) if((eVerRec->IsA()) != EdbVertexRec::Class()) eVerRec = 0;
3733 if (!eVerRec)
3734 {printf("Error: EdbDisplay:DrawVertexEnvironment: EdbVertexRec not defined, use SetVerRec(...)\n"); fflush(stdout); return;}
3735 if (!eVertex && !eSegment)
3736 {printf("Error: EdbDisplay:DrawVertexEnvironment: Working vertex (or segment) not defined\n"); fflush(stdout); return;}
3737
3738 fTrigPad->cd();
3739 fTrigPad->GetListOfPrimitives()->Remove(fEnvButton);
3740 if (fStyle/2 == 1)
3741 fAllButton->SetFillColor(33);
3742 else
3743 fAllButton->SetFillColor(38);
3744 fTrigPad->GetListOfPrimitives()->Add(fAllButton);
3745 fAllButton->SetPad(0.05,0.47,0.95,0.56);
3746 fAllButton->Draw();
3747 fTrigPad->Modified(kTRUE);
3748 fTrigPad->Update();
3749 fTrigPad->Draw();
3750 fPad->cd();
3751
3752 EdbVertex *eW = eVertex;
3753 EdbTrackP *tr = 0;
3754 if (eWorking) eW = eWorking;
3755 float Rmax = eRadMax, ImpMax = eImpMax;
3756 int Dpat = (int)eDpat;
3757
3758 eArrTrSave = eArrTr;
3760 eArrVSave = eArrV;
3762 eArrV = new TObjArray(20);
3763 eArrTr = new TObjArray(20);
3764 eArrSegP = new TObjArray(20);
3765
3766 if (eW)
3767 {
3768 eVerRec->VertexNeighbor(eW, Rmax, Dpat, ImpMax);
3769 eArrV->Add(eW);
3770 int ntr = eW->N();
3771 for(int i=0; i<ntr; i++)
3772 {
3773 eArrTr->Add((tr = eW->GetTrack(i)));
3774 }
3775 int nntr = eW->Nn();
3776 EdbVTA *vta = 0;
3777 for(int i=0; i<nntr; i++)
3778 {
3779 if ((vta = eW->GetVTn(i)))
3780 {
3781 if (vta->Flag() == 0) //track
3782 {
3783 eArrTr->Add((tr = vta->GetTrack()));
3784 }
3785 else if (vta->Flag() == 1) //segment
3786 {
3787 eArrSegP->Add((EdbSegP *)(vta->GetTrack()));
3788 }
3789 else if (vta->Flag() == 3) //vertex
3790 {
3791 eArrV->Add((EdbVertex *)(vta->GetTrack()));
3792 }
3793 }
3794 }
3795 eIndVert = eArrV->IndexOf(eW);
3796 }
3797 else if (eSegment)
3798 {
3799 eIndVert = -1;
3801 if (eArrV->GetEntries()) eDrawVertex = 1;
3802 }
3803 Draw();
3804}
EdbSegP * eSegment
working segment (for segment neighborhood)
Definition: EdbDisplay.h:51
Int_t eDrawVertex
vertex drawing option
Definition: EdbDisplay.h:28
Definition: EdbVertex.h:26
EdbTrackP * GetTrack() const
Definition: EdbVertex.h:51
Int_t Flag() const
Definition: EdbVertex.h:48
Int_t VertexNeighbor(float RadMax=1000., int Dpat=1, float ImpMax=1000000.)
Definition: EdbVertex.cxx:2732
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:3005
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 
)
4085{
4086 EdbVertex *vv = v;
4087 if (!vv)
4088 {
4089 if (!strcmp(type, "Original") && eVertex)
4090 {
4091 vv = eVertex;
4092 }
4093 else if (!strcmp(type, "Previous") && ePrevious)
4094 {
4095 vv = ePrevious;
4096 }
4097 else if (!strcmp(type, "Modified") && eWorking)
4098 {
4099 vv = eWorking;
4100 }
4101 }
4102 if (!vv) return;
4103 bool drawrem = true;
4104 if (vv == eVertex && eWorking) drawrem = false;
4105 if (vv == ePrevious) drawrem = false;
4106
4107 fCanvasVTX->cd();
4108
4109 if (fVTXTracks)
4110 {
4111 fVTXTracks->Clear();
4112 }
4113 else
4114 {
4115 fVTXTracks = new TPaveText(0.05, 0.05, 0.95, 0.72);
4116 fVTXTracks->ResetBit(kCanDelete);
4117 }
4118 char line[128];
4119 EdbTrackP *tr = 0;
4120 TText *t = 0;
4121 int ntr = vv->N();
4122 sprintf(line, " Tracks parameters for %s vertex", type);
4123 t = fVTXTracks->AddText(line);
4124 t->SetTextColor(kBlue);
4125 t->SetTextSize(0.03);
4126 t->SetTextAlign(12);
4127 t->SetTextFont(102);
4128 strcpy(line, " # ID Nseg Mass P Chi2/ndf Prob Chi2Contrib Impact");
4129 t = fVTXTracks->AddText(line);
4130 t->SetTextColor(kBlue);
4131 t->SetTextSize(0.03);
4132 t->SetTextAlign(12);
4133 t->SetTextFont(102);
4134 for (int i=0; i<ntr; i++)
4135 {
4136 tr = vv->GetTrack(i);
4137 sprintf(line,"%4d %4d %4d %7.4f %7.2f %5.2f %7.4f %6.3f %7.2f",
4138 i, tr->ID(), tr->N(), tr->M(), tr->P(),
4139 tr->Chi2()/tr->N(), tr->Prob(), vv->V()->track_chi2(i), vv->Impact(i));
4140 t = fVTXTracks->AddText(line);
4141 t->SetTextColor(kBlack);
4142 t->SetTextSize(0.03);
4143 t->SetTextAlign(12);
4144 t->SetTextFont(102);
4145 }
4146 t = fVTXTracks->AddText("");
4147 t->SetTextColor(kBlack);
4148 t->SetTextSize(0.03);
4149 t->SetTextAlign(12);
4150 t->SetTextFont(102);
4151 fVTXTracks->Draw();
4152
4153 float dy = 0.67/(2+ntr+1);
4154 for (int i=0; i<50; i++)
4155 {
4156 if (!drawrem)
4157 {
4158 if (fRemBut[i])
4159 {
4160 fRemBut[i]->Delete();
4161 fRemBut[i] = 0;
4162 }
4163 continue;
4164 }
4165 if ( i < ntr )
4166 {
4167 if (!fRemBut[i])
4168 {
4169 char but[256], tit[32]="Rem";
4170 sprintf(but,
4171 "((EdbDisplay*)(gROOT->GetListOfSpecials()->FindObject(\"%s\")))->RemoveTrackFromTable(%d)",fTitle,i);
4172 fRemBut[i] = new TButton(tit, but, 0.88, 0.635-(i+2)*dy, 0.94, 0.675-(i+2)*dy);
4173 fRemBut[i]->SetToolTipText("Remove corresponding track");
4174 fRemBut[i]->ResetBit(kCanDelete);
4175 fRemBut[i]->SetFillColor(38);
4176 sprintf(tit,"RemTr%d",i);
4177 fRemBut[i]->SetName(tit);
4178 fRemBut[i]->Draw();
4179 }
4180 else
4181 {
4182 fRemBut[i]->SetPad(0.88,0.635-(i+2)*dy,0.94,0.675-(i+2)*dy);
4183 fRemBut[i]->Draw();
4184 }
4185 }
4186 else if (fRemBut[i])
4187 {
4188 fRemBut[i]->Delete();
4189 fRemBut[i] = 0;
4190 }
4191 }
4192
4193 fPad->Modified(kTRUE);
4194 fPad->Update();
4195}
TPaveText * fVTXTracks
Vertex tracks information.
Definition: EdbDisplayBase.h:113
TButton * fRemBut[50]
track removing buttons
Definition: EdbDisplayBase.h:117
Float_t Impact(int i)
Definition: EdbVertex.h:149
double track_chi2(int i)
get track $\chi^2$ contribution
Definition: VtVertex.C:783
TTree * t
Definition: check_shower.C:4
strcpy(cmd,"cp Shower.root Shower2.root")
Int_t type
Definition: testBGReduction_By_ANN.C:15

◆ EdbDisplayExist()

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

◆ GuessRange()

void EdbDisplay::GuessRange ( float  margZmin = 3000,
float  margZmax = 1000,
float  margR = 300 
)

guess minimum display range to fit all objects

262{
264
265 float xmin=0,xmax=1,ymin=0,ymax=1,zmin=0,zmax=1;
266
267 if (eArrSegG) {
268 EdbSegG *s=0;
269 for(int i=0; i<eArrSegG->GetEntries(); i++) {
270 s = (EdbSegG *)(eArrSegG->At(i));
271 if(!s) continue;
272 if(xmax-xmin<margR) {
273 xmax=s->X()+margR;
274 xmin=s->X()-margR;
275 ymax=s->Y()+margR;
276 ymin=s->Y()-margR;
277 zmax=s->Z()+margZmax;
278 zmin=s->Z()-margZmin;
279 }
280 if(xmax<s->X()+margR) xmax=s->X()+margR;
281 if(xmin>s->X()-margR) xmin=s->X()-margR;
282 if(ymax<s->Y()+margR) ymax=s->Y()+margR;
283 if(ymin>s->Y()-margR) ymin=s->Y()-margR;
284 if(zmax<s->Z()+margZmax) zmax=s->Z()+margZmax;
285 if(zmin>s->Z()-margZmin) zmin=s->Z()-margZmin;
286 }
287 }
288
289 if (eArrSegP) {
290 EdbSegP *s=0;
291 for(int i=0; i<eArrSegP->GetEntries(); i++) {
292 s = (EdbSegP *)(eArrSegP->At(i));
293 if(!s) continue;
294 if(xmax-xmin<margR) {
295 xmax=s->X()+margR;
296 xmin=s->X()-margR;
297 ymax=s->Y()+margR;
298 ymin=s->Y()-margR;
299 zmax=s->Z()+margZmax;
300 zmin=s->Z()-margZmin;
301 }
302 if(xmax<s->X()+margR) xmax=s->X()+margR;
303 if(xmin>s->X()-margR) xmin=s->X()-margR;
304 if(ymax<s->Y()+margR) ymax=s->Y()+margR;
305 if(ymin>s->Y()-margR) ymin=s->Y()-margR;
306 if(zmax<s->Z()+margZmax) zmax=s->Z()+margZmax;
307 if(zmin>s->Z()-margZmin) zmin=s->Z()-margZmin;
308 }
309 }
310
311 if (eArrV) {
312 for(int i=0; i<eArrV->GetEntries(); i++) {
313 EdbVertex *v = (EdbVertex *)(eArrV->At(i));
314 if(!v) continue;
315 if(!v->V()) continue;
316 if(!v->V()->valid()) continue;
317 if(xmax-xmin<margR) {
318 xmax=v->VX()+margR;
319 xmin=v->VX()-margR;
320 ymax=v->VY()+margR;
321 ymin=v->VY()-margR;
322 zmax=v->VZ()+margZmax;
323 zmin=v->VZ()-margZmin;
324 }
325 if(xmax<v->VX()+margR) xmax=v->VX()+margR;
326 if(xmin>v->VX()-margR) xmin=v->VX()-margR;
327 if(ymax<v->VY()+margR) ymax=v->VY()+margR;
328 if(ymin>v->VY()-margR) ymin=v->VY()-margR;
329 if(zmax<v->VZ()+margZmax) zmax=v->VZ()+margZmax;
330 if(zmin>v->VZ()-margZmin) zmin=v->VZ()-margZmin;
331 }
332 }
333
334 if (eArrTr) {
335 EdbTrackP *t;
336 EdbSegP *s;
337 for(int i=0; i<eArrTr->GetEntries(); i++) {
338 t = (EdbTrackP *)eArrTr->At(i);
339 if(!t) continue;
340 for(int j=0; j<t->N(); j++) {
341 s = t->GetSegment(j);
342 if(!s) continue;
343 if(xmax-xmin<margR) {
344 xmax=s->X()+margR;
345 xmin=s->X()-margR;
346 ymax=s->Y()+margR;
347 ymin=s->Y()-margR;
348 zmax=s->Z()+margZmax;
349 zmin=s->Z()-margZmin;
350 }
351 if(xmax<s->X()+margR) xmax=s->X()+margR;
352 if(xmin>s->X()-margR) xmin=s->X()-margR;
353 if(ymax<s->Y()+margR) ymax=s->Y()+margR;
354 if(ymin>s->Y()-margR) ymin=s->Y()-margR;
355 if(zmax<s->Z()+margZmax) zmax=s->Z()+margZmax;
356 if(zmin>s->Z()-margZmin) zmin=s->Z()-margZmin;
357 }
358 }
359 }
360 if(gEDBDEBUGLEVEL>1) {
361 printf("Guess Range:\n");
362 printf("X: %10.1f %10.1f\n",xmin,xmax);
363 printf("Y: %10.1f %10.1f\n",ymin,ymax);
364 printf("Z: %10.1f %10.1f\n",zmin,zmax);
365 }
366 SetRange(xmin,xmax,ymin,ymax,zmin,zmax);
367 fZooms=0;
368}
virtual void SetRange(Float_t x0, Float_t x1, Float_t y0, Float_t y1, Float_t z0, Float_t z1)
Definition: EdbDisplayBase.cxx:576
Int_t fZooms
Number of zooms.
Definition: EdbDisplayBase.h:88
TObjArray * eArrSegG
additional array of segments for the presentation purpose only
Definition: EdbDisplay.h:69
Segment.
Definition: EdbDisplay.h:197
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?
gEDBDEBUGLEVEL
Definition: energy.C:7
Double_t X
Definition: tlg2couples.C:76
Double_t Y
Definition: tlg2couples.C:76
Double_t Z
Definition: tlg2couples.C:104

◆ Refresh()

void EdbDisplay::Refresh ( )
virtual

Reimplemented from EdbDisplayBase.

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

◆ RemoveTrackFromTable()

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

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

◆ SelectVertexTracks()

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

◆ Set0()

void EdbDisplay::Set0 ( )
virtual

eVerRec = ((EdbVertexRec *)(gROOT->GetListOfSpecials()->FindObject("EdbVertexRec"))); if (eVerRec) if (eVerRec->IsA() != EdbVertexRec::Class()) eVerRec = 0; if (!eVerRec) {printf("Warning: EdbDisplay:Set0: EdbVertexRec not defined, use SetVerRec(...)\n");}

Reimplemented from EdbDisplayBase.

191{
195 eArrSegG = 0;
196 eArrSegP = 0;
197 eArrTr = 0;
198 eArrV = 0;
199 eArrSegPSave = 0;
200 eArrTrSave = 0;
201 eArrVSave = 0;
202 eDrawTracks = 1;
203 eDrawVertex = 0;
204 eColors = 0;
205 eDZs = 0;
206 eVertex = 0;
207 eWorking = 0;
208 ePrevious= 0;
209 eSegment = 0;
210 eTrack = 0;
211 eTrack1 = 0;
212 eTrack2 = 0;
213 eSegPM = 0;
214 eWait_Answer = false;
215 eIndVert = -1;
216 eIndVertSave = -1;
217 eRadMax = 10000.;
218 eDpat = 2;
219 eImpMax = 1000.;
220 eSegWmin = 9;
221 eP = 0.;
222 eM = 0.;
223 eTImpMax = 10000.;
224 eTProbMin = 0.0;
225 fNumericEntries[0] = 0;
226 fNumericEntries[1] = 0;
227 fNumericEntries[2] = 0;
228 eFromPlate=1;
229 eToPlate=57;
230 if (fCanvas) fCanvas->Connect("Closed()", "EdbDisplay", this, "Delete()");
231}
EdbTrackP * eTrack1
working intermediate track (track splitting)
Definition: EdbDisplay.h:53
TArrayI * eColors
Definition: EdbDisplay.h:30
Int_t eDrawTracks
tracks drawing option
Definition: EdbDisplay.h:26
EdbTrackP * eTrack2
working intermediate track (track splitting)
Definition: EdbDisplay.h:54
TArrayF * eDZs
Definition: EdbDisplay.h:31

◆ SetArrSegG()

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

◆ SetArrSegP()

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

◆ SetArrTr()

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

◆ SetArrV()

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

◆ SetVerRec()

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

◆ TrackDraw()

void EdbDisplay::TrackDraw ( EdbTrackP tr,
Color_t  kColor = kWhite 
)

eDrawTracks: 1 - draw fitted track dotted line only
2 - draw also white marker at zmin
3 - draw also red marker at zmax
4 - draw also measured segments
5 - draw fitted line and measured segments, no markers
6 - draw measured segments only
7 - draw measured segments only
8 - draw only solid white track line
14 - as "4" plus track extrapolation line

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

◆ UndoModifiedVTX()

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

◆ VerRec()

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

◆ VertexDraw()

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

Member Data Documentation

◆ eArrSegG

TObjArray* EdbDisplay::eArrSegG

additional array of segments for the presentation purpose only

◆ eArrSegP

TObjArray* EdbDisplay::eArrSegP

array of segments to be drawn

◆ eArrSegPSave

TObjArray* EdbDisplay::eArrSegPSave

saved array of segments to be drawn

◆ eArrTr

TObjArray* EdbDisplay::eArrTr

array of tracks to be drawn

◆ eArrTrSave

TObjArray* EdbDisplay::eArrTrSave

saved array of tracks to be drawn

◆ eArrV

TObjArray* EdbDisplay::eArrV

array of vertices to be drawn

◆ eArrVSave

TObjArray* EdbDisplay::eArrVSave

saved array of vertices to be drawn

◆ eColors

TArrayI* EdbDisplay::eColors
private

◆ eCreatedTracks

TList EdbDisplay::eCreatedTracks

list of tracks, created during vertex operations

◆ eDpat

Double_t EdbDisplay::eDpat

+/- patterns for neighborhood

◆ eDrawTracks

Int_t EdbDisplay::eDrawTracks
private

tracks drawing option

◆ eDrawVertex

Int_t EdbDisplay::eDrawVertex
private

vertex drawing option

◆ eDZs

TArrayF* EdbDisplay::eDZs
private

◆ eFromPlate

Int_t EdbDisplay::eFromPlate

plates range (for colors normalization)

◆ eImpMax

Double_t EdbDisplay::eImpMax

Maximal impact for neighborhood.

◆ eIndVert

Int_t EdbDisplay::eIndVert

Index of selected vertex in ArrV.

◆ eIndVertSave

Int_t EdbDisplay::eIndVertSave

Index of selected vertex in ArrV (seved)

◆ eM

Double_t EdbDisplay::eM

track mass (creation from segment, propagation)

◆ eP

Double_t EdbDisplay::eP

track momentum (creation from segment, propagation)

◆ ePrevious

EdbVertex* EdbDisplay::ePrevious

saved previous vertex modifications

◆ eRadMax

Double_t EdbDisplay::eRadMax

Maximal Radius for neighborhood.

◆ eSegment

EdbSegP* EdbDisplay::eSegment

working segment (for segment neighborhood)

◆ eSegPM

TPolyMarker3D* EdbDisplay::eSegPM

green mark for segment selected as working

◆ eSegWmin

Double_t EdbDisplay::eSegWmin

Minimal segment W for neighbouring selection.

◆ eTImpMax

Double_t EdbDisplay::eTImpMax

Maximal impact for interactive add track.

◆ eToPlate

Int_t EdbDisplay::eToPlate

◆ eTProbMin

Double_t EdbDisplay::eTProbMin

Minimal probability for interactive add track.

◆ eTrack

EdbTrackP* EdbDisplay::eTrack

working intermediate track (track creation)

◆ eTrack1

EdbTrackP* EdbDisplay::eTrack1

working intermediate track (track splitting)

◆ eTrack2

EdbTrackP* EdbDisplay::eTrack2

working intermediate track (track splitting)

◆ eVerRec

EdbVertexRec* EdbDisplay::eVerRec

◆ eVertex

EdbVertex* EdbDisplay::eVertex

current selected vertex

◆ eWait_Answer

Bool_t EdbDisplay::eWait_Answer

set TRUE when answer received

◆ eWorking

EdbVertex* EdbDisplay::eWorking

working vertex

◆ fNumericEntries

TGNumberEntry* EdbDisplay::fNumericEntries[3]
private

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