FEDRA emulsion software from the OPERA Collaboration
EdbDisplay.h
Go to the documentation of this file.
1 #ifndef ROOT_EdbDisplay
2 #define ROOT_EdbDisplay
3 
5 // //
6 // EdbDisplay //
7 // //
8 // Class to display pattern volume in 3D //
9 // //
11 #include "TGNumberEntry.h"
12 #include "EdbDisplayBase.h"
13 #include "EdbPVRec.h"
14 #include "EdbVertex.h"
15 #include "EdbBrick.h"
16 
17 class EdbSegG;
18 //class EdbBrickP;
19 
20 //_________________________________________________________________________
21 class EdbDisplay: public EdbDisplayBase {
22 
23  private:
24 
25  Int_t eDrawTracks; // tracks drawing option
26 
27  Int_t eDrawVertex; // vertex drawing option
28 
29  TArrayI *eColors;
30  TArrayF *eDZs;
31 
32  TGNumberEntry *fNumericEntries[3];
33 
34  public:
35 
36  Int_t eFromPlate; // plates range (for colors normalization)
37  Int_t eToPlate;
38 
39  //EdbBrickP *eB; // brick object with the plates geometry inside
41  TObjArray *eArrSegP; // array of segments to be drawn
42  TObjArray *eArrTr; // array of tracks to be drawn
43  TObjArray *eArrV; // array of vertices to be drawn
44  TObjArray *eArrSegPSave; // saved array of segments to be drawn
45  TObjArray *eArrTrSave; // saved array of tracks to be drawn
46  TObjArray *eArrVSave; // saved array of vertices to be drawn
47  EdbVertex *eWorking; // working vertex
48  EdbVertex *eVertex; // current selected vertex
49  EdbVertex *ePrevious; // saved previous vertex modifications
50  EdbSegP *eSegment; // working segment (for segment neighborhood)
51  EdbTrackP *eTrack; // working intermediate track (track creation)
52  EdbTrackP *eTrack1; // working intermediate track (track splitting)
53  EdbTrackP *eTrack2; // working intermediate track (track splitting)
54  TPolyMarker3D *eSegPM; // green mark for segment selected as working
55  Bool_t eWait_Answer; // set TRUE when answer received
56  Int_t eIndVert; // Index of selected vertex in ArrV
57  Int_t eIndVertSave; // Index of selected vertex in ArrV (seved)
58  TList eCreatedTracks; // list of tracks, created during vertex operations
59  Double_t eRadMax; // Maximal Radius for neighborhood
60  Double_t eDpat; // +/- patterns for neighborhood
61  Double_t eImpMax; // Maximal impact for neighborhood
62  Double_t eP; // track momentum (creation from segment, propagation)
63  Double_t eM; // track mass (creation from segment, propagation)
64  Double_t eTImpMax; // Maximal impact for interactive add track
65  Double_t eTProbMin; // Minimal probability for interactive add track
66  Double_t eSegWmin; // Minimal segment W for neighbouring selection
67 
68  TObjArray *eArrSegG; // additional array of segments for the presentation purpose only
69 
70  public:
71 
73  ~EdbDisplay();
74 
75  EdbDisplay(const char *title,
76  Float_t x0, Float_t x1,
77  Float_t y0, Float_t y1,
78  Float_t z0, Float_t z1,
79  TCanvas *Canvas = 0) :
80  EdbDisplayBase(title, x0, x1, y0, y1, z0, z1, Canvas) {Set0();}
81 
82  EdbDisplay(const char *title, EdbLayer &la, TCanvas *Canvas = 0) :
83  EdbDisplayBase(title, la.Xmin(), la.Xmax(), la.Ymin(), la.Ymax(),
84  la.Zmin(), la.Zmax(), Canvas)
85  {Set0();}
86 
87  static EdbDisplay *EdbDisplayExist(const char *title);
88  void Delete();
89  void Set0();
90  void GuessRange( float margZmin=3000,float margZmax=1000,float margR=300 );
91  void SetVerRec(EdbVertexRec *evr) { eVerRec = evr; };
92 
93  void Refresh();
94  void SetArrSegG(TObjArray *arrg) {eArrSegG = arrg;}
95  void SetArrSegP(TObjArray *arr);
96  void SetArrTr(TObjArray *arr);
98 
99  EdbVertexRec *VerRec() const {return eVerRec;}
100  //void PatternDraw(EdbPattern &pat);
101  void TrackDraw(EdbTrackP *tr, Color_t kColor=kWhite);
102  EdbSegG *SegLine(const EdbSegP *seg);
103 
104  void DrawRef(float start[3], float end[3]);
105  void SelectVertexTracks(TObjArray *vtx);
106  void SetArrV(TObjArray *arrv);
107  void VertexDraw(EdbVertex *v);
109  void CancelModifiedVTX();
110  void DeleteModifiedVTX();
111  void AcceptModifiedVTX();
112  void DialogModifiedVTX();
113  void CloseDialogModifiedVTX();
114  void UndoModifiedVTX();
115  void DrawVertexEnvironment();
116  void DrawAllObjects();
117  void DrawVTXTracks(char *type, EdbVertex *v = 0);
118  void RemoveTrackFromTable( int ivt = 0 );
120  void AcceptModifiedParams();
123  void DialogTrackParameters();
127  void ClearSegmentEnv();
128  void DrawSegmentExtrapolationLine(const EdbSegP &s, float zmin, float zmax);
129 
130  ClassDef(EdbDisplay,1) //FEDRA Event Display
131 };
132 //_________________________________________________________________________
133 class EdbVertexG : public TPolyMarker3D {
134  private:
135 
138 
139  public:
140  EdbVertexG():TPolyMarker3D(1) {eV=0; eD=0;}
141  EdbVertexG(EdbDisplay *D):TPolyMarker3D(1) {eV=0; eD=D;}
142  virtual ~EdbVertexG(){}
143 
144  void SetVertex(EdbVertex *v) {eV=v;}
145 
146  virtual void DumpVertex(); // *MENU*
147  virtual void InspectVertex(); // *MENU*
148  virtual void SetAsWorking(); // *MENU*
149  virtual void DeleteVertex(); // *MENU*
150  virtual void RemoveKink(); // *MENU*
151  virtual void TestVertex(); // *MENU*
152  virtual const char * GetTitle() const;
153  virtual const char * GetName() const;
154  virtual char * GetObjectInfo(int px, int py) const;
155 
156  ClassDef(EdbVertexG,1) //Vertex
157 };
158 
159 //_________________________________________________________________________
160 class EdbTrackG : public TPolyMarker3D {
161  private:
162 
165 
166  public:
167  EdbTrackG() {eTr=0; eD=0;}
169  EdbTrackG(Int_t nhits, EdbDisplay *D):TPolyMarker3D(nhits) {eTr=0; eD=D;}
170  virtual ~EdbTrackG(){}
171 
173 
174  virtual void DumpTrack(); // *MENU*
175  virtual void InspectTrack(); // *MENU*
176  virtual void SetAsWorkingVertex(); // *MENU*
177  virtual void RemoveTrackFromVertex(); // *MENU*
178  virtual void AddTrackToVertex(); // *MENU*
179  virtual void FixNewTrack(); // *MENU*
180  virtual void DeleteTrack(); // *MENU*
181  virtual void UndoNewTrack(); // *MENU*
182  virtual void UndoSplit(); // *MENU*
183  virtual void UndoRemoveKink(); // *MENU*
184  virtual void AddToNewTrack(); // *MENU*
185  virtual void AddToNewTrackAndFit();// *MENU*
186  virtual void InfoTrackVert(); // *MENU*
187  virtual void EstimateMomentum(); // *MENU*
188  virtual const char * GetTitle() const;
189  virtual const char * GetName() const;
190  virtual char * GetObjectInfo(int px, int py) const;
191 
192  ClassDef(EdbTrackG,1) //Track
193 };
194 
195 //_________________________________________________________________________
196 class EdbSegG : public TPolyLine3D {
197  private:
198 
199  const EdbSegP *eSeg;
201 
202  public:
203  EdbSegG() {eSeg=0; eD=0;}
204  EdbSegG(EdbSegP &s);
205  EdbSegG(EdbDisplay *D) {eSeg=0; eD=D;}
206  EdbSegG(Int_t nhits):TPolyLine3D(nhits) {eSeg=0; eD=0;}
207  EdbSegG(Int_t nhits, EdbDisplay *D):TPolyLine3D(nhits) {eSeg=0; eD=D;}
208  virtual ~EdbSegG(){}
209 
210  void SetSeg(const EdbSegP *s) {eSeg=s;}
211  float X() { return GetP()[0]; }
212  float Y() { return GetP()[1]; }
213  float Z() { return GetP()[2]; }
214 
215  virtual void DumpSegment(); // *MENU*
216  virtual void InspectSegment(); // *MENU*
217  virtual void AddAsTrackToVertex(); // *MENU*
218  virtual void AddToNewTrack(); // *MENU*
219  virtual void AddToNewTrackAndFit();// *MENU*
220  virtual void RemoveFromTrack(); // *MENU*
221  virtual void SplitTrack(); // *MENU*
222  virtual void SetAsWorking(); // *MENU*
223  virtual void InfoSegVert(); // *MENU*
224  virtual void InfoSegSeg(); // *MENU*
225  virtual const char * GetTitle() const;
226  virtual const char * GetName() const;
227  virtual char * GetObjectInfo(int px, int py) const;
228 
229  ClassDef(EdbSegG,1) //Segment
230 };
231 
232 
233 #endif /* ROOT_EdbDisplay */
brick z0
Definition: RecDispMC.C:106
TObjArray * arrv
Definition: RecDispMC.C:130
TTree * tr
Definition: Shower_E_FromShowerRoot.C:5
Definition: EdbDisplayBase.h:72
Definition: EdbDisplay.h:21
Double_t eM
Definition: EdbDisplay.h:63
TObjArray * eArrTrSave
Definition: EdbDisplay.h:45
void SetDrawVertex(int opt)
Definition: EdbDisplay.h:108
TObjArray * eArrV
Definition: EdbDisplay.h:43
void AcceptModifiedTrackParams()
Definition: EdbDisplay.cxx:4017
Int_t eToPlate
Definition: EdbDisplay.h:37
void SetArrSegP(TObjArray *arr)
Definition: EdbDisplay.cxx:389
EdbTrackP * eTrack1
Definition: EdbDisplay.h:52
void SetArrTr(TObjArray *arr)
Definition: EdbDisplay.cxx:430
Double_t eSegWmin
Definition: EdbDisplay.h:66
void DrawSegmentExtrapolationLine(const EdbSegP &s, float zmin, float zmax)
Definition: EdbDisplay.cxx:736
void RemoveTrackFromTable(int ivt=0)
Definition: EdbDisplay.cxx:2666
void DrawVTXTracks(char *type, EdbVertex *v=0)
Definition: EdbDisplay.cxx:4083
EdbDisplay()
Definition: EdbDisplay.h:72
EdbSegG * SegLine(const EdbSegP *seg)
Definition: EdbDisplay.cxx:888
Double_t eTProbMin
Definition: EdbDisplay.h:65
void Delete()
Definition: EdbDisplay.cxx:370
~EdbDisplay()
Definition: EdbDisplay.cxx:240
void Refresh()
Definition: EdbDisplay.cxx:551
EdbVertexRec * VerRec() const
Definition: EdbDisplay.h:99
EdbVertex * ePrevious
Definition: EdbDisplay.h:49
EdbVertexRec * eVerRec
Definition: EdbDisplay.h:40
void CancelDialogModifiedTrackParams()
Definition: EdbDisplay.cxx:4035
void DialogNeighborParameters()
Definition: EdbDisplay.cxx:3842
void UndoModifiedVTX()
Definition: EdbDisplay.cxx:3372
Int_t eIndVertSave
Definition: EdbDisplay.h:57
void VertexDraw(EdbVertex *v)
Definition: EdbDisplay.cxx:640
void SetArrV(TObjArray *arrv)
Definition: EdbDisplay.cxx:500
void TrackDraw(EdbTrackP *tr, Color_t kColor=kWhite)
Definition: EdbDisplay.cxx:754
void CancelModifiedVTX()
Definition: EdbDisplay.cxx:3220
Int_t eIndVert
Definition: EdbDisplay.h:56
void DrawAllObjects()
Definition: EdbDisplay.cxx:3805
EdbDisplay(const char *title, EdbLayer &la, TCanvas *Canvas=0)
Definition: EdbDisplay.h:82
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)
Definition: EdbDisplay.h:75
void CloseDialogModifiedTrackParams()
Definition: EdbDisplay.cxx:4029
TList eCreatedTracks
Definition: EdbDisplay.h:58
TObjArray * eArrSegP
Definition: EdbDisplay.h:41
void Set0()
Definition: EdbDisplay.cxx:189
TArrayI * eColors
Definition: EdbDisplay.h:29
EdbSegP * eSegment
Definition: EdbDisplay.h:50
TObjArray * eArrTr
Definition: EdbDisplay.h:42
void ClearSegmentEnv()
Definition: EdbDisplay.cxx:4214
Double_t eImpMax
Definition: EdbDisplay.h:61
TGNumberEntry * fNumericEntries[3]
Definition: EdbDisplay.h:32
EdbVertex * eVertex
Definition: EdbDisplay.h:48
Double_t eDpat
Definition: EdbDisplay.h:60
Int_t eDrawVertex
Definition: EdbDisplay.h:27
void DrawRef(float start[3], float end[3])
Definition: EdbDisplay.cxx:619
TObjArray * eArrSegG
Definition: EdbDisplay.h:68
void SetDrawTracks(int opt)
Definition: EdbDisplay.h:97
void DialogTrackParameters()
Definition: EdbDisplay.cxx:3919
void SetVerRec(EdbVertexRec *evr)
Definition: EdbDisplay.h:91
static EdbDisplay * EdbDisplayExist(const char *title)
Definition: EdbDisplay.cxx:232
void CancelDialogModifiedParams()
Definition: EdbDisplay.cxx:4009
Int_t eDrawTracks
Definition: EdbDisplay.h:25
Double_t eTImpMax
Definition: EdbDisplay.h:64
Bool_t eWait_Answer
Definition: EdbDisplay.h:55
Int_t eFromPlate
Definition: EdbDisplay.h:36
void DrawVertexEnvironment()
Definition: EdbDisplay.cxx:3722
void SelectVertexTracks(TObjArray *vtx)
Definition: EdbDisplay.cxx:4197
TObjArray * eArrSegPSave
Definition: EdbDisplay.h:44
void AcceptModifiedVTX()
Definition: EdbDisplay.cxx:3489
void GuessRange(float margZmin=3000, float margZmax=1000, float margR=300)
Definition: EdbDisplay.cxx:260
void SetArrSegG(TObjArray *arrg)
Definition: EdbDisplay.h:94
TPolyMarker3D * eSegPM
Definition: EdbDisplay.h:54
void AcceptModifiedParams()
Definition: EdbDisplay.cxx:3989
Double_t eRadMax
Definition: EdbDisplay.h:59
Double_t eP
Definition: EdbDisplay.h:62
void CloseDialogModifiedParams()
Definition: EdbDisplay.cxx:4003
EdbTrackP * eTrack2
Definition: EdbDisplay.h:53
EdbTrackP * eTrack
Definition: EdbDisplay.h:51
EdbVertex * eWorking
Definition: EdbDisplay.h:47
void CloseDialogModifiedVTX()
Definition: EdbDisplay.cxx:4076
void DeleteModifiedVTX()
Definition: EdbDisplay.cxx:3299
TObjArray * eArrVSave
Definition: EdbDisplay.h:46
void DialogModifiedVTX()
Definition: EdbDisplay.cxx:4043
TArrayF * eDZs
Definition: EdbDisplay.h:30
Definition: EdbLayer.h:40
Definition: EdbDisplay.h:196
virtual void AddToNewTrackAndFit()
Definition: EdbDisplay.cxx:1153
virtual const char * GetName() const
Definition: EdbDisplay.cxx:172
virtual void InfoSegVert()
Definition: EdbDisplay.cxx:1424
EdbSegG(Int_t nhits, EdbDisplay *D)
Definition: EdbDisplay.h:207
virtual void AddAsTrackToVertex()
Definition: EdbDisplay.cxx:915
virtual void InfoSegSeg()
Definition: EdbDisplay.cxx:1547
float X()
Definition: EdbDisplay.h:211
void SetSeg(const EdbSegP *s)
Definition: EdbDisplay.h:210
EdbSegG()
Definition: EdbDisplay.h:203
virtual void InspectSegment()
Definition: EdbDisplay.cxx:157
EdbSegG(Int_t nhits)
Definition: EdbDisplay.h:206
virtual void SplitTrack()
Definition: EdbDisplay.cxx:1246
const EdbSegP * eSeg
Definition: EdbDisplay.h:199
virtual void SetAsWorking()
Definition: EdbDisplay.cxx:1360
float Y()
Definition: EdbDisplay.h:212
EdbSegG(EdbDisplay *D)
Definition: EdbDisplay.h:205
virtual void AddToNewTrack()
Definition: EdbDisplay.cxx:1130
virtual ~EdbSegG()
Definition: EdbDisplay.h:208
virtual const char * GetTitle() const
Definition: EdbDisplay.cxx:163
virtual char * GetObjectInfo(int px, int py) const
Definition: EdbDisplay.cxx:179
virtual void DumpSegment()
Definition: EdbDisplay.cxx:151
EdbDisplay * eD
Definition: EdbDisplay.h:200
float Z()
Definition: EdbDisplay.h:213
virtual void RemoveFromTrack()
Definition: EdbDisplay.cxx:1183
Definition: EdbSegP.h:18
Definition: EdbDisplay.h:160
virtual void DumpTrack()
Definition: EdbDisplay.cxx:73
virtual void UndoNewTrack()
Definition: EdbDisplay.cxx:2042
EdbTrackG(Int_t nhits, EdbDisplay *D)
Definition: EdbDisplay.h:169
virtual void FixNewTrack()
Definition: EdbDisplay.cxx:2192
virtual void AddToNewTrackAndFit()
Definition: EdbDisplay.cxx:2446
void SetTrack(EdbTrackP *tr)
Definition: EdbDisplay.h:172
virtual void AddToNewTrack()
Definition: EdbDisplay.cxx:2396
virtual const char * GetTitle() const
Definition: EdbDisplay.cxx:94
EdbDisplay * eD
Definition: EdbDisplay.h:164
virtual ~EdbTrackG()
Definition: EdbDisplay.h:170
virtual void DeleteTrack()
Definition: EdbDisplay.cxx:2359
virtual const char * GetName() const
Definition: EdbDisplay.cxx:103
virtual void UndoRemoveKink()
Definition: EdbDisplay.cxx:2245
virtual void RemoveTrackFromVertex()
Definition: EdbDisplay.cxx:2501
virtual void AddTrackToVertex()
Definition: EdbDisplay.cxx:2837
virtual void UndoSplit()
Definition: EdbDisplay.cxx:2111
virtual void SetAsWorkingVertex()
Definition: EdbDisplay.cxx:1766
virtual void InfoTrackVert()
Definition: EdbDisplay.cxx:3094
virtual void EstimateMomentum()
Definition: EdbDisplay.cxx:85
EdbTrackG(EdbDisplay *D)
Definition: EdbDisplay.h:168
EdbTrackP * eTr
Definition: EdbDisplay.h:163
virtual char * GetObjectInfo(int px, int py) const
Definition: EdbDisplay.cxx:110
virtual void InspectTrack()
Definition: EdbDisplay.cxx:79
EdbTrackG()
Definition: EdbDisplay.h:167
Definition: EdbPattern.h:118
Definition: EdbDisplay.h:133
EdbVertex * eV
Definition: EdbDisplay.h:136
virtual void RemoveKink()
Definition: EdbDisplay.cxx:1930
EdbDisplay * eD
Definition: EdbDisplay.h:137
virtual void DeleteVertex()
Definition: EdbDisplay.cxx:1890
EdbVertexG()
Definition: EdbDisplay.h:140
virtual char * GetObjectInfo(int px, int py) const
Definition: EdbDisplay.cxx:62
virtual void TestVertex()
Definition: EdbDisplay.cxx:1682
virtual const char * GetTitle() const
Definition: EdbDisplay.cxx:44
virtual void DumpVertex()
Definition: EdbDisplay.cxx:32
EdbVertexG(EdbDisplay *D)
Definition: EdbDisplay.h:141
virtual void InspectVertex()
Definition: EdbDisplay.cxx:38
virtual const char * GetName() const
Definition: EdbDisplay.cxx:55
virtual ~EdbVertexG()
Definition: EdbDisplay.h:142
virtual void SetAsWorking()
Definition: EdbDisplay.cxx:1695
void SetVertex(EdbVertex *v)
Definition: EdbDisplay.h:144
Definition: EdbVertex.h:194
Definition: EdbVertex.h:68
const char * opt
Definition: mc2raw.cxx:42
new TCanvas()
Int_t type
Definition: testBGReduction_By_ANN.C:15
EdbSegP * s
Definition: tlg2pattern.C:32