FEDRA emulsion software from the OPERA Collaboration
EdbEDATrackSet.h
Go to the documentation of this file.
1 #ifndef __EDA_TRACKSET_H__
2 #define __EDA_TRACKSET_H__
3 
4 using namespace EdbEDAUtil;
5 
6 #include <EdbEDASets.h>
7 #include<EdbRunTracking.h>
8 
9 class EdbEDATrackComment:public TObject{
10  private:
11  TString *eComment;
13 
14  public:
15  EdbEDATrackComment(EdbTrackP *t, const char *cmt):eTrack(t){
16  eComment = new TString(cmt);
17  }
18  EdbTrackP * GetTrack(){ return eTrack;}
19  const char * GetComment(){ return eComment->Data();}
20  ClassDef(EdbEDATrackComment,0) // for comment
21 };
22 
23 /*
24 class EdbEDATrack: public EdbTrackP{
25  private:
26  TString *eComment;
27  public:
28  EdbEDATrack (EdbTrackP *t, char *cmt) : EdbTrackP(*t){
29  eComment = new TString(cmt);
30  }
31  const char * GetComment(){ return eComment->Data();}
32 
33  ClassDef(EdbEDATrack, 0) // Track class for EDA, inherited from EdbTrackP.
34 }
35 */
36 
38  int eNsegCut;
39  int ePlateUp;
44  int eSideOut;
46  double eTolDX;
47  double eTolDTX;
48  double eTolDTY;
49  double eTX;
50  double eTY;
51 
53  double ePHCut;
54  double ePHDTRMS;
55  double eNeighborDzUp ;
57  TObjArray *eSelected;
58 
59 
60  public:
62  EdbRunTracking eRunTracking; // Run Tracking for microtrack search
63 
64  EdbEDATrackSelection(){ Reset(); }
66 
67  void Reset(){
68  eNsegCut = 3;
69  ePlateUp = 0;
70  ePlateDown = 0;
71  eNeighborSearch = 0;
72  eImpactSearch = 0;
73  eAngularCut = 0;
74  eSideOut = 0;
75  eSideOutPlate = 3;
76  eTolDX = 200.;
77  eTolDTX = 2.0;
78  eTolDTY = 2.0;
79  eTX = 0.0;
80  eTY = 0.0;
81  eClearPrevious = 1;
82  ePHCut = 0.0;
83  ePHDTRMS = 0.05;
84  eNeighborDzUp = 5000.;
85  eNeighborDzDown = 5000.;
86  eVertex = NULL;
87  eSelected = NULL;
88  eRunTracking.ePredictionScan = false;
89  SetCondTrackingDefault();
90  }
91  void SetNsegCut (int nseg) { eNsegCut = nseg;}
92  void SetUpstreamPlate (int ipl) { ePlateUp = ipl;}
93  //void SetDownstreamPlate(int ipl) { ePlateUp = ipl;}
94  void SetImpactSearch (bool b=kTRUE, EdbVertex *v = NULL) { eImpactSearch = b; eVertex = v;}
95  void SetNeighborSearch (bool b=kTRUE, TObjArray *selected = NULL, double dzup=-1, double dzdown=-1) {
96  eNeighborSearch = b; eSelected=selected;
97  if(dzup>=0) eNeighborDzUp = dzup;
98  if(dzdown>=0) eNeighborDzDown = dzdown;
99  }
100  void SetSideOut(bool b=kTRUE) { eSideOut = b;}
101  void SetSideOutPlate(int npl) { eSideOutPlate = npl;}
102  void SetAngularCut (bool b=kTRUE) { eAngularCut = b;}
103  void SetDX (double dx) { eTolDX=dx;}
104  void SetDT (double dtx, double dty=-1) { eTolDTX=dtx; eTolDTY=dty; if(eTolDTY<0) eTolDTY=eTolDTX;}
105  void SetAngle (double tx, double ty) { eTX=tx; eTY=ty;}
106  void SetClearPrevious (bool b=kTRUE) { eClearPrevious = b;}
107  void SetPHCut (double phcut =0.0) { ePHCut=phcut;}
108  void SetPHDTRMS (double slope) {ePHDTRMS=slope;}
109  bool GetImpactSearch () { return eImpactSearch;}
110  int Neighborhood (EdbSegP *s, double *dmin=NULL);
112  int SideOut(EdbTrackP *t);
113  int GetUpstreamPlate() { return ePlateUp;}
114  int GetNsegCut() { return eNsegCut;}
115  double GetPHCut() { return ePHCut;}
116  double GetPHDTRMS() { return ePHDTRMS;}
117  int GetSideOutPlate() { return eSideOutPlate;}
118 
119  void DoSelection (TObjArray *tracksbase, TObjArray *tracks);
120 
121  void SetRunTracking(EdbRunTracking &rt) {eRunTracking=rt;}
122  EdbRunTracking &GetRunTracking(){ return eRunTracking;}
123 
125  eRunTracking.eDeltaRview = 400.;
126  eRunTracking.eDeltaTheta = 0.2;
127  eRunTracking.eDeltaR = 20.;
128 
129  eRunTracking.ePreliminaryPulsMinMT = 7;
130  eRunTracking.ePreliminaryChi2MaxMT = 3.0;
131 
132  eRunTracking.ePulsMinMT = 9;
133  eRunTracking.ePulsMinDegradMT = 1.5;
134  eRunTracking.eChi2MaxMT = 1.6;
135 
136  eRunTracking.ePulsMinBT = 18;
137  eRunTracking.ePulsMinDegradBT = 1.5;
138  eRunTracking.eChi2MaxBT = 1.8;
139 
140  eRunTracking.eDegradPos = 5.;
141  eRunTracking.eDegradSlope = 0.003;
142 
143  SetCondMTDefault( eRunTracking.eCondMT);
144  SetCondBTDefault( eRunTracking.eCondBT);
145  }
146 
148  cond.SetSigma0( 1., 1., 0.010, 0.010 ); // sigma0 "x, y, tx, ty" at zero angle
149  cond.SetDegrad( 5. ); // sigma(tx) = sigma0*(1+degrad*tx)
150  cond.SetBins(0, 0, 0, 0); //??? // bins in [sigma] for checks
151  cond.SetPulsRamp0( 5., 5. ); // in range (Pmin:Pmax) Signal/All is nearly linear
152  cond.SetPulsRamp04( 5., 5. );
153  cond.SetChi2Max( 6.5 );
154  cond.SetChi2PMax( 6.5 );
155  cond.SetRadX0( 5810. );
156  cond.SetName("OPERA_microtrack");
157  }
158 
160  cond.SetSigma0( 10., 10., 0.007, 0.007 ); // sigma0 "x, y, tx, ty" at zero angle
161  cond.SetDegrad( 2. ); // sigma(tx) = sigma0*(1+degrad*tx)
162  cond.SetBins(0, 0, 0, 0); // bins in [sigma] for checks
163  cond.SetPulsRamp0( 5., 5. ); // in range (Pmin:Pmax) Signal/All is nearly linear
164  cond.SetPulsRamp04( 5., 5. );
165  cond.SetChi2Max( 6.5 );
166  cond.SetChi2PMax( 6.5 );
167  cond.SetRadX0( 5810. );
168  cond.SetName("OPERA_basetrack");
169  }
170 
171  ClassDef(EdbEDATrackSelection,0) // Selection of Tracks
172 };
173 
174 
175 
176 
177 
178 class EdbEDATrackSet: public TNamed, public EdbEDATrackSelection{
179 
180  private:
181 
182 // int eVer;
183 // int eRun;
185 
189  double eTrackLength;
190 
193  double eLayerLength;
194 
199 
201 
202  bool eDraw; // control of drawing
203  bool eDrawMT; // control of drawing microtrack
204  bool eDrawTrackID; // control of Track ID drawing
205  bool eDrawTrackIDG; // Global control of Track ID drawing by Main tab.
206  bool eDrawTrackAngle; // control of Track Angle drawing.
207  bool eDrawTrackAngleG; // Global control of Track angle drawing by Main tab.
208 
211 
212  EdbPVRec *ePVR; // pointer for original EdbPVRec. tracks are copied to eTracksBase through AddTracksPVR().
215 
216  TObjArray *eTracks; // array of tracks to be drawn
217  TObjArray *eTracksBase; // array of tracks, base of track search
218  TObjArray *eTracksPrevious; // previous array of tracks
219 
220  TObjArray *eComments;
221 
223 
224  public:
225 
226  enum { kEnd, kTop, kMiddle};
227 
228  EdbEDATrackSet(const char *title, TObjArray *EdbTrackPArray=NULL)
229  : eID(0,0,1,0), ePVR(NULL), eDataSet(NULL), eScanSet(NULL){
230  SetName(title);
231  eTracks = new TObjArray;
232  eTracksBase = new TObjArray;
233  eTracksPrevious = new TObjArray;
234  eComments = new TObjArray;
235  eDraw = kTRUE;
236  eColorMode = kCOLOR_BY_PH;
237 
238  eAreaSet = new EdbEDAAreaSet();
239 
240  SetTrackAttribute();
241  SetTextAttribute();
242  SetDrawMT(kTRUE);
243  SetDrawTrackID(kTRUE);
244  SetDrawTrackAngle(kTRUE);
245  SetDrawTrackIDG(kFALSE);
246  SetDrawTrackAngleG(kFALSE);
247  SetExtendMode(kExtendAuto);
248  SetInterpolation(kTRUE);
249 
250  eTextPosition = kEnd;
251 
252  if(EdbTrackPArray) {
253  SetTracks(EdbTrackPArray);
254  SetTracksBase(EdbTrackPArray);
255  }
256  }
257 
258  void Print(){
259  printf("EdbEDATrackSet : %s\n", GetName());
260  printf("TracksBase : %5d tracks\n", NBase());
261  printf("Tracks to Draw : %5d tracks\n", N());
262 
263  }
264 
265  void SetTracksBase(TObjArray *tracksbase) {
266  // Copy tracks to eTracksBase. tracksbase should be an array of EdbTrackP
267  *eTracksBase = *tracksbase;
268  }
269  void AddTracksBase(TObjArray *tracksbase) {
270  // Add tracks to eTracksBase. tracksbase should be an array of EdbTrackP
271  if(tracksbase==NULL) return;
272  for(int i=0;i<tracksbase->GetEntriesFast();i++) eTracksBase->Add(tracksbase->At(i));
273  }
274 
275  TObjArray * GetTracksBase() { return eTracksBase;}
276 
278  // Add a track to both eTracksBase and eTracks, if it is not yet registered.
279  if(eTracksBase->FindObject(t)==NULL) eTracksBase->Add(t);
280  if(eTracks->FindObject(t)==NULL) eTracks->Add(t);
281  }
282  void AddTracks(TObjArray *arr) {
283  // Add tracks to both eTracksBase and eTracks, if it is not yet registerd.
284  // arr is a TObjArray of EdbTrackP.
285  if(NULL==arr) return; for(int i=0;i<arr->GetEntriesFast();i++) AddTrack( (EdbTrackP *) arr->At(i));
286  }
287 
289  // Set a track to be drawn.
290  // the track is requiered to be already registered in eTracksBase.
291  // if you want to simply draw the track, use AddTrack().
292  if(eTracksBase->FindObject(t)&&eTracks->FindObject(t)==NULL) eTracks->Add(t);
293  }
294 
295  void SetTrack(int itrack){
296  // Set Tracks to draw with the given track id.
297  for(int i=0; i<N(); i++) {
298  EdbTrackP *t = GetTrack(i);
299  if(t->ID()==itrack) SetTrack(t);
300  }
301  }
302 
303  void SetTracks(TObjArray *tracks) {
304  // Set tracks to be draw.
305  // the tracks are requiered to be already resistered in eTracksBase.
306  // if you want to simply draw the tracks, use AddTracks().
307  if(NULL==tracks) return; for(int i=0; i<tracks->GetEntriesFast(); i++) SetTrack((EdbTrackP *)tracks->At(i));
308  }
309 
310  TObjArray * GetTracks() { return eTracks;}
311 
312  void AddTracksPVR(EdbPVRec *pvr) {
313  // COPY tracks from EdbPVRec.
314  // original PVRec is accessible through GetPVRec().
315  ePVR = pvr;
316  AddTracksBase(ePVR->eTracks);
317  SetTracksAll();
318  eAreaSet->SetAreas(ePVR);
319  }
320  EdbPVRec * GetPVRec() { return ePVR;}
321  void SetPVRec(EdbPVRec *pvr) { ePVR=pvr;}
322 
323  void RemoveTrackBase(EdbTrackP *t){ if(eTracksBase->FindObject(t)) {eTracksBase->Remove(t); eTracksBase->Sort();} RemoveTrack(t);}
324  void RemoveTrack(EdbTrackP *t){ if(eTracks->FindObject(t)) {eTracks->Remove(t); eTracks->Sort();}}
325  void RemoveTracks(TObjArray *tracks) { for(int i=0; i<tracks->GetEntriesFast(); i++) RemoveTrack((EdbTrackP *) tracks->At(i));}
326 
327  void ClearTracks(void) {
328  // Clear Tracks to be draw.
329  eTracks->Clear();
330  }
331  void ClearTracksBase(void) {
332  // Clear eTracksBase.
333  eTracksBase->Clear();
334  }
335 
336  void Clear() {
337  // Clear Tracks and TracksBase.
338  ClearTracks(); ClearTracksBase(); eAreaSet->Clear();
339  }
340 
341  void SetTracksAll(void) { *eTracks = *eTracksBase;}
342  void SetTracksNseg(int nsegcut = 3) {
343  eTracks->Clear();
344  for(int i=0; i<NBase(); i++) {
345  EdbTrackP *t = GetTrackBase(i);
346  if(t->N()<nsegcut) continue;
347  SetTrack(t);
348  }
349  }
350 
351  void RestorePrevious(void) {
352  TObjArray arr = *eTracks;
353  *eTracks = *eTracksPrevious;
354  *eTracksPrevious = arr;
355  }
356  void StorePrevious() { *eTracksPrevious = *eTracks;}
357 
358 
359  EdbTrackP * SearchCorrespondTrack(EdbTrackP *t);
360 
361  int MicroTrackSearch(EdbTrackP *t, EdbSegP *pred, int ipl);
362  void MicroTrackSearch(EdbTrackP *t);
363  int PrepareScanSetForMT();
364 
365  EdbTrackP * SearchTrack(int itrk) { for(int i=0;i<eTracksBase->GetEntriesFast(); i++) {if(itrk==((EdbTrackP *) eTracksBase->At(i))->ID()) return (EdbTrackP *) eTracksBase->At(i);} return NULL;}
366 
367  EdbTrackP * SearchSegment(int ipl, int iseg);
368 
369  EdbTrackP * FindTrack(EdbSegP *s, double dx = 10, double dt = 0.02){
370  EdbSegP *ss = new EdbSegP;
371  for(int i=0;i<NBase();i++){
372  EdbTrackP *t = GetTrackBase(i);
373  if(t==NULL) continue;
374  *ss = *(t->GetSegmentFirst());
375  ss->PropagateTo(s->Z());
376  if( fabs(s->X()-ss->X()) < dx){
377  if( fabs(s->Y()-ss->Y()) < dx){
378  if( fabs(s->TX()-ss->TX()) < dt) {
379  if( fabs(s->TY()-ss->TY()) < dt) {
380  return t;
381  }}}}
382 
383  }
384  delete ss;
385  return NULL;
386  }
387 
389  if(eTracks==NULL) return NULL;
390  if(eTracks->FindObject(t)) return t;
391  return NULL;
392  }
393 
394  EdbTrackP * FindTrackLast(EdbSegP *s, double dx = 20, double dt = 0.03){
395 
396  EdbSegP ss;
397  for(int i=0;i<eTracksBase->GetEntriesFast();i++){
398  EdbTrackP *tt = (EdbTrackP *) eTracksBase->At(i);
399  for(int j=0;j<tt->N();j++){
400  ss.Copy(*tt->GetSegment(j));
401  ss.PropagateTo(s->Z());
402  if(fabs(s->TX()-ss.TX())<dt){
403  if(fabs(s->TY()-ss.TY())<dt){
404  if( fabs(s->X()-ss.X())<dx ){
405  if( fabs(s->Y()-ss.Y())<dx ){
406  return tt;
407  }}
408  }}
409  }
410  }
411  return NULL;
412  }
413 
414  void AddSegments(TObjArray *segments){
415  if(segments==NULL) return;
416  if(segments->GetEntriesFast()==0) return;
417 
418  for(int i=0;i<segments->GetEntriesFast();i++){
419  EdbSegP *s = (EdbSegP *)segments->At(i);
420  EdbTrackP *t = new EdbTrackP(s);
421  t->SetCounters();
422  t->SetPlate(s->Plate());
423  AddTrack(t);
424  }
425  return;
426  }
427 
429  if(IsTrack(s)) return (EdbTrackP*) s;
430  if(IsSegment(s)){
431  for(int i=0;i<eTracksBase->GetEntriesFast();i++){
432  EdbTrackP *t = (EdbTrackP *) eTracksBase->At(i);
433  for(int j=0;j<t->N();j++) if(s==t->GetSegment(j)) return t;
434  }
435  }
436  return NULL;
437  }
438 
439  int N() { return eTracks->GetEntriesFast();}
440  int NBase() { return eTracksBase->GetEntriesFast();}
441  EdbTrackP * GetTrack(int i){ return (EdbTrackP *) eTracks->At(i);}
442  EdbTrackP * GetTrackBase(int i){ return (EdbTrackP *) eTracksBase->At(i);}
443  bool IsMember(EdbTrackP *t) {return (eTracksBase->FindObject(t) != NULL) ? kTRUE : kFALSE;}
444 
446  if(NBase()==0) return 0;
447  int iplup = 1000;
448  for(int i=0;i<NBase(); i++) {
449  int ipl= GetTrackBase(i)->GetSegmentFirst()->Plate();
450  if(ipl<iplup) iplup=ipl;
451  }
452  return iplup;
453  }
455  int ipldw = -1000;
456  for(int i=0;i<NBase(); i++) {
457  int ipl= GetTrackBase(i)->GetSegmentLast()->Plate();
458  if(ipl>ipldw) ipldw=ipl;
459  }
460  return ipldw;
461  }
462 
463  void SetID(EdbID id) { eID=id;}
464  EdbID& GetID() {return eID;}
465 // void SetRun(int run) { eRun = run;}
466 // void SetVer(int ver) { eVer = ver;}
467 // int GetRun() { return eRun;}
468 // int GetVer() { return eVer;}
469 
470  void SetScanSet (EdbScanSet *ss) { eScanSet = ss;}
471  EdbScanSet * GetScanSet(){ return eScanSet;}
472  void SetDataSet (EdbDataSet *dset) { eDataSet = dset;}
473  EdbDataSet * GetDataSet(){ return eDataSet;}
474 
475  void AddComment(EdbTrackP *t, const char *cmt){ eComments->Add(new EdbEDATrackComment(t,cmt));}
476  void ClearComments() {eComments->Clear();}
477  const char * GetComment(EdbTrackP *t) {
478  for(int i=0;i<eComments->GetEntriesFast();i++){
479  EdbEDATrackComment *cmt = (EdbEDATrackComment *) eComments->At(i);
480  if(cmt->GetTrack()==t) {
481  return cmt->GetComment();
482  }
483  }
484  return "";
485  }
486 
487  void ReadFile(const char *filename = NULL, int datatype = 100, TCut rcut = "1");
488  void ReadTracksTree (const char *scanset_filename, TCut cut="1");
489  void ReadTracksTree (EdbID ID, TCut cut = "1"); // for EdbScanProc style
490  EdbDataProc *ReadLinkedTracks (const char *lnkdef="lnk.def", TCut cut = "1"); // for EdbDataProc style
491  EdbDataProc *ReadLinkedTracksFile (const char *filename="linked_tracks.root", TCut cut = "1"); // for EdbDataProc style
492  EdbDataProc *ReadLinkedTracks (EdbDataProc *dproc); // for EdbDataProc style. expect EdbDataProc after InitVolume.
493 
494  void ReadPredictionScan(int BRICK, int SBVERSION, int RUN_PRED, int UseMicrotrack=0); // for EdbDataProc style.
495  void ReadPredictionScan(EdbID id, bool force_update_setroot=0); // for EdbScanProc style
496  void ReadPredictionScan(EdbScanSet *ss); // for EdbScanProc style
497  void ReadTextTracks(const char *filename = NULL);
498  void ReadMxxFile(const char *filename);
499  void ReadListFile (const char *filename = NULL, bool clear_previous=kTRUE);
500  const char *WriteListFile (const char *filename = NULL, bool append = kFALSE, bool open_editor = kFALSE);
501 
502  void DoVertexing(EdbVertexRec *VR = NULL, int ntrkcut = 3);
503  void DoSelection() { EdbEDATrackSelection::DoSelection(eTracksBase,eTracks);}
504 
505  void SetTracksVertex(EdbVertex *v, bool clear_previous = kTRUE){
506  // Set eTracks as the tracks which belongs to the vertex.
507  if(clear_previous) ClearTracks();
508  for(int j=0 ; j < v->N() ; j++){
509  EdbTrackP *t = v->GetTrack(j);
510  if(t==NULL) continue;
511  SetTrack(t);
512  }
513  }
514 
515  void SetTracksVertices(TObjArray *vertices, bool clear_previous = kTRUE){
516  // Set eTracks as the tracks which belongs to the vertices.
517  printf("Set Tracks for %d Vertices\n", vertices->GetEntriesFast());
518  if(clear_previous) ClearTracks();
519  for(int i=0;i<vertices->GetEntriesFast();i++){
520  EdbVertex *v = (EdbVertex *) vertices->At(i);
521  if(v==NULL) continue;
522  SetTracksVertex(v, kFALSE);
523  }
524  }
525 
526  void SetExtendMode(int mode=kExtendAuto) { eExtendMode=mode;}
527  int GetExtendMode() { return eExtendMode;}
528  void SetInterpolation(int interpolation=kTRUE) { eInterpolation = interpolation;} // kTRUE: fill hole with dashed line.
529 
531  int track_color = -1,
532  int track_width = 1,
533  double track_length = -1,
534  int layer_color = kYellow,
535  int layer_width = 2,
536  double layer_length = 150,
537  int layer_color_MT = kCyan){
538  // set track attribute. -1 means automatic setting.
539  eTrackColor = track_color;
540  eTrackWidth = track_width;
541  eTrackLength = track_length;
542  eLayerColor = layer_color;
543  eLayerWidth = layer_width>track_width? layer_width: track_width+1;
544  eLayerLength = layer_length;
545  }
546 
547  void GetTrackAttribute( int *track_color , int *track_width, double *track_length, int *layer_color, int *layer_width, double *layer_length, int *layer_color_MT){
548  *track_color = eTrackColor ;
549  *track_width = eTrackWidth ;
550  *track_length = eTrackLength;
551  *layer_color = eLayerColor ;
552  *layer_width = eLayerWidth ;
553  *layer_length = eLayerLength;
554  *layer_color_MT = eLayerColorMT;
555  }
556  void SetLayerLength(double length) { eLayerLength=length;}
557 
558  void ResetTrackAttribute(void) { SetTrackAttribute(); }
559  void SetColorMode(int mode);
560 
561  int GetTrackColor (EdbSegP *s);
562  int GetTrackWidth (EdbSegP *s){ return eTrackWidth;}
563  double GetTrackLength(EdbSegP *s, int updown = 1); // up = -1, down = 1
564 
565  int GetLayerColor (EdbSegP *s){ return s->Side()==0?eLayerColor:eLayerColorMT;}
566  int GetLayerWidth (EdbSegP *s){ return eLayerWidth;}//eLayerWidth>=0 ? eLayerWidth : (int)s->W()/10+1;}
567  double GetLayerLength(EdbSegP *s){ return eLayerLength;};
568 
569 
570  void SetTextAttribute(int size=14, int color=kWhite, int fontfile=4){
571  eTextSize = size;
572  eTextColor = color;
573  eTextFont = fontfile;
574  }
575 
576  int GetTextColor() { return eTextColor;}
577  int GetTextSize () { return eTextSize;}
578  int GetTextFont () { return eTextFont;}
579 
580  void SetTextPosition (int pos) { eTextPosition = pos;}
581  int GetTextPosition () { return eTextPosition;}
582 
583  void SetDraw(bool b=kTRUE) { eDraw = b;} // Setting Draw or not.
584  bool GetDraw() { return eDraw;}
585  void SetDrawMT (bool b=kTRUE) { eDrawMT = b;} // Setting Draw or not.
586  bool GetDrawMT() { return eDrawMT;}
587  void SetDrawTrackID (bool draw) { eDrawTrackID = draw;}
588  void SetDrawTrackAngle(bool draw) { eDrawTrackAngle = draw;}
589  void SetDrawTrackIDG (bool draw) { eDrawTrackIDG = draw;}
590  void SetDrawTrackAngleG(bool draw) { eDrawTrackAngleG = draw;}
591  bool GetDrawTrackID () { return eDrawTrackID;}
592  bool GetDrawTrackAngle() { return eDrawTrackAngle;}
593 
594 
595  void Draw(int redraw=kFALSE);
596  void DrawSingleTrack(EdbTrackP *t);
597  void DrawSingleSegment(EdbSegP *s, const char *elname, TEveCompound *cmp = NULL, int extendup = 1, int extenddown = 1);
598  void DrawSingleComment(EdbEDATrackComment *tcmt);
599 
600  // Area related
601  void SetAreaSet(EdbEDAAreaSet *set) { eAreaSet=set;}
602  EdbEDAAreaSet * GetAreaSet(){ return eAreaSet;}
603  void SetDrawAreaSet(bool draw = kTRUE) { eAreaSet->SetDraw(draw);}
604 
605  ClassDef(EdbEDATrackSet,0) // Track Set
606 };
607 
609  private:
610  bool eEnable;
611 
613 
614  TGNumberEntryField *fBrick;
615  TGNumberEntryField *fRun;
616  TGNumberEntryField *fVer;
617  TGTextButton *fPredScan;
618  TGTextButton *fReadText;
619  TGCheckButton *fColorAuto;
620  TGCheckButton *fReadMicro;
621  TGCheckButton *fTrackID;
622  TGCheckButton *fTrackAngle;
623  TGComboBox *fTrackSet;
624  TGColorSelect *fTrackColor;
625  TGLineWidthComboBox *fTrackWidth;
626  TGColorSelect *fLayerColor;
627  TGLineWidthComboBox *fLayerWidth;
628  TGNumberEntryField *fLayerLength;
629  TGComboBox *fExtendMode;
630  TGComboBox *fFontSize;
631  TGComboBox *fFontFile;
632  TGColorSelect *fFontColor;
633  TGMainFrame *fFontWindow;
634  TGTextButton *fScanID; // Label to indicate scan id.
635 
636  TGLabel *fDataText;
637 
638  public:
639  EdbEDATrackSetTab(void);
640  void Select(int id) {fTrackSet->Select(id, kTRUE);}
641  void Selected(const char *txt);
642  void SetAttributeGUIs(EdbEDATrackSet *set);
643  void Enable(bool b=kTRUE) {eEnable = b;}
644  void Update();
645  void ToggleAuto(bool b) { fTrackColor->Enable(!b); Update();}
646  void ReadPredictionScan();
647  void ReadTextTracks();
648  void ReadFile();
649  void ClearTracks();
650  void MakeFontWindow();
651  void CloseFontWindow();
652  void SetFont();
653  void ChangeScanID();
654 };
655 
656 
657 #endif // __EDA_TRACKSET_H__
graph SetName("Graph")
EdbDataProc * dset
Definition: RecDispEX.C:9
Expr< UnaryOp< Fabs< T >, Expr< A, T, D >, T >, T, D > fabs(const Expr< A, T, D > &rhs)
Definition: UnaryOperators.hh:96
TTree * t
Definition: check_shower.C:4
TCut cut
Definition: check_shower.C:6
t Draw("sizeb>>NbBT", cut2)
EdbDataProc * dproc
Definition: check_vertex.C:13
Definition: EdbDataSet.h:180
Definition: EdbDataSet.h:143
Definition: EdbEDASets.h:55
void SetAreas(EdbPVRec *pvr)
void SetDraw(bool draw)
Definition: EdbEDASets.h:106
void Clear()
Definition: EdbEDASets.h:137
Definition: EdbEDATrackSet.h:9
TString * eComment
Definition: EdbEDATrackSet.h:11
EdbTrackP * eTrack
Definition: EdbEDATrackSet.h:12
const char * GetComment()
Definition: EdbEDATrackSet.h:19
EdbTrackP * GetTrack()
Definition: EdbEDATrackSet.h:18
EdbEDATrackComment(EdbTrackP *t, const char *cmt)
Definition: EdbEDATrackSet.h:15
Definition: EdbEDATrackSet.h:37
double GetPHDTRMS()
Definition: EdbEDATrackSet.h:116
double eTY
Definition: EdbEDATrackSet.h:50
EdbRunTracking eRunTracking
Definition: EdbEDATrackSet.h:62
int eNeighborSearch
Definition: EdbEDATrackSet.h:41
void SetImpactSearch(bool b=kTRUE, EdbVertex *v=NULL)
Definition: EdbEDATrackSet.h:94
TObjArray * eSelected
Definition: EdbEDATrackSet.h:57
double ePHCut
Definition: EdbEDATrackSet.h:53
void SetSideOut(bool b=kTRUE)
Definition: EdbEDATrackSet.h:100
int ImpactSearch(EdbTrackP *t)
EdbEDATrackSelection()
Definition: EdbEDATrackSet.h:64
double eTolDX
Definition: EdbEDATrackSet.h:46
void Reset()
Definition: EdbEDATrackSet.h:67
void SetNeighborSearch(bool b=kTRUE, TObjArray *selected=NULL, double dzup=-1, double dzdown=-1)
Definition: EdbEDATrackSet.h:95
int eImpactSearch
Definition: EdbEDATrackSet.h:42
int GetNsegCut()
Definition: EdbEDATrackSet.h:114
int ePlateUp
Definition: EdbEDATrackSet.h:39
double eTolDTY
Definition: EdbEDATrackSet.h:48
int eAngularCut
Definition: EdbEDATrackSet.h:43
void SetAngle(double tx, double ty)
Definition: EdbEDATrackSet.h:105
void SetCondBTDefault(EdbScanCond &cond)
Definition: EdbEDATrackSet.h:159
void SetDT(double dtx, double dty=-1)
Definition: EdbEDATrackSet.h:104
int eClearPrevious
Definition: EdbEDATrackSet.h:52
double eNeighborDzDown
Definition: EdbEDATrackSet.h:56
void SetDX(double dx)
Definition: EdbEDATrackSet.h:103
int eNsegCut
Definition: EdbEDATrackSet.h:38
int eSideOut
Definition: EdbEDATrackSet.h:44
int GetSideOutPlate()
Definition: EdbEDATrackSet.h:117
void SetRunTracking(EdbRunTracking &rt)
Definition: EdbEDATrackSet.h:121
int GetUpstreamPlate()
Definition: EdbEDATrackSet.h:113
void SetCondMTDefault(EdbScanCond &cond)
Definition: EdbEDATrackSet.h:147
void DoSelection(TObjArray *tracksbase, TObjArray *tracks)
Definition: EdbEDATrackSet.C:126
double ePHDTRMS
Definition: EdbEDATrackSet.h:54
double GetPHCut()
Definition: EdbEDATrackSet.h:115
int ePlateDown
Definition: EdbEDATrackSet.h:40
void SetClearPrevious(bool b=kTRUE)
Definition: EdbEDATrackSet.h:106
EdbVertex * eVertex
Definition: EdbEDATrackSet.h:61
double eTolDTX
Definition: EdbEDATrackSet.h:47
void SetSideOutPlate(int npl)
Definition: EdbEDATrackSet.h:101
void SetCondTrackingDefault()
Definition: EdbEDATrackSet.h:124
int eSideOutPlate
Definition: EdbEDATrackSet.h:45
void SetUpstreamPlate(int ipl)
Definition: EdbEDATrackSet.h:92
void SetNsegCut(int nseg)
Definition: EdbEDATrackSet.h:91
EdbRunTracking & GetRunTracking()
Definition: EdbEDATrackSet.h:122
double eNeighborDzUp
Definition: EdbEDATrackSet.h:55
void SetPHCut(double phcut=0.0)
Definition: EdbEDATrackSet.h:107
bool GetImpactSearch()
Definition: EdbEDATrackSet.h:109
void SetPHDTRMS(double slope)
Definition: EdbEDATrackSet.h:108
double eTX
Definition: EdbEDATrackSet.h:49
void SetAngularCut(bool b=kTRUE)
Definition: EdbEDATrackSet.h:102
virtual ~EdbEDATrackSelection()
Definition: EdbEDATrackSet.h:65
Definition: EdbEDATrackSet.h:608
TGColorSelect * fTrackColor
Definition: EdbEDATrackSet.h:624
TGLabel * fDataText
Definition: EdbEDATrackSet.h:636
TGNumberEntryField * fLayerLength
Definition: EdbEDATrackSet.h:628
void ToggleAuto(bool b)
Definition: EdbEDATrackSet.h:645
TGCheckButton * fTrackID
Definition: EdbEDATrackSet.h:621
TGMainFrame * fFontWindow
Definition: EdbEDATrackSet.h:633
TGComboBox * fExtendMode
Definition: EdbEDATrackSet.h:629
void Enable(bool b=kTRUE)
Definition: EdbEDATrackSet.h:643
TGComboBox * fFontFile
Definition: EdbEDATrackSet.h:631
bool eEnable
Definition: EdbEDATrackSet.h:610
TGComboBox * fTrackSet
Definition: EdbEDATrackSet.h:623
TGCheckButton * fReadMicro
Definition: EdbEDATrackSet.h:620
TGTextButton * fReadText
Definition: EdbEDATrackSet.h:618
TGLineWidthComboBox * fTrackWidth
Definition: EdbEDATrackSet.h:625
void Select(int id)
Definition: EdbEDATrackSet.h:640
TGCheckButton * fTrackAngle
Definition: EdbEDATrackSet.h:622
TGCheckButton * fColorAuto
Definition: EdbEDATrackSet.h:619
TGComboBox * fFontSize
Definition: EdbEDATrackSet.h:630
TGTextButton * fScanID
Definition: EdbEDATrackSet.h:634
TGLineWidthComboBox * fLayerWidth
Definition: EdbEDATrackSet.h:627
TGColorSelect * fLayerColor
Definition: EdbEDATrackSet.h:626
TGNumberEntryField * fBrick
Definition: EdbEDATrackSet.h:614
TGNumberEntryField * fVer
Definition: EdbEDATrackSet.h:616
TGColorSelect * fFontColor
Definition: EdbEDATrackSet.h:632
TGTextButton * fPredScan
Definition: EdbEDATrackSet.h:617
TGNumberEntryField * fRun
Definition: EdbEDATrackSet.h:615
EdbEDATrackSet * eSet
Definition: EdbEDATrackSet.h:612
Definition: EdbEDATrackSet.h:178
bool eDrawTrackID
Definition: EdbEDATrackSet.h:204
int GetTextPosition()
Definition: EdbEDATrackSet.h:581
bool IsMember(EdbTrackP *t)
Definition: EdbEDATrackSet.h:443
bool GetDrawTrackAngle()
Definition: EdbEDATrackSet.h:592
void SetPVRec(EdbPVRec *pvr)
Definition: EdbEDATrackSet.h:321
void SetTrackAttribute(int track_color=-1, int track_width=1, double track_length=-1, int layer_color=kYellow, int layer_width=2, double layer_length=150, int layer_color_MT=kCyan)
Definition: EdbEDATrackSet.h:530
int N()
Definition: EdbEDATrackSet.h:439
int GetExtendMode()
Definition: EdbEDATrackSet.h:527
void RemoveTrack(EdbTrackP *t)
Definition: EdbEDATrackSet.h:324
int eTextColor
Definition: EdbEDATrackSet.h:195
int eTrackWidth
Definition: EdbEDATrackSet.h:188
void ClearTracks(void)
Definition: EdbEDATrackSet.h:327
EdbPVRec * GetPVRec()
Definition: EdbEDATrackSet.h:320
double GetLayerLength(EdbSegP *s)
Definition: EdbEDATrackSet.h:567
bool eDrawTrackAngle
Definition: EdbEDATrackSet.h:206
void RemoveTracks(TObjArray *tracks)
Definition: EdbEDATrackSet.h:325
EdbScanSet * GetScanSet()
Definition: EdbEDATrackSet.h:471
EdbPVRec * ePVR
Definition: EdbEDATrackSet.h:212
EdbID & GetID()
Definition: EdbEDATrackSet.h:464
void SetDataSet(EdbDataSet *dset)
Definition: EdbEDATrackSet.h:472
int eLayerColorMT
Definition: EdbEDATrackSet.h:200
int eTextFont
Definition: EdbEDATrackSet.h:197
int GetLayerWidth(EdbSegP *s)
Definition: EdbEDATrackSet.h:566
void RemoveTrackBase(EdbTrackP *t)
Definition: EdbEDATrackSet.h:323
int eExtendMode
Definition: EdbEDATrackSet.h:209
bool eDrawTrackIDG
Definition: EdbEDATrackSet.h:205
EdbTrackP * GetTrack(int i)
Definition: EdbEDATrackSet.h:441
void AddComment(EdbTrackP *t, const char *cmt)
Definition: EdbEDATrackSet.h:475
int eTextPosition
Definition: EdbEDATrackSet.h:198
bool eDrawMT
Definition: EdbEDATrackSet.h:203
int eInterpolation
Definition: EdbEDATrackSet.h:210
void Print()
Definition: EdbEDATrackSet.h:258
bool GetDrawMT()
Definition: EdbEDATrackSet.h:586
double eTrackLength
Definition: EdbEDATrackSet.h:189
void SetDrawTrackIDG(bool draw)
Definition: EdbEDATrackSet.h:589
bool eDraw
Definition: EdbEDATrackSet.h:202
void SetTracksVertex(EdbVertex *v, bool clear_previous=kTRUE)
Definition: EdbEDATrackSet.h:505
int GetTrackWidth(EdbSegP *s)
Definition: EdbEDATrackSet.h:562
int NBase()
Definition: EdbEDATrackSet.h:440
EdbTrackP * GetTrackBase(int i)
Definition: EdbEDATrackSet.h:442
TObjArray * eTracks
Definition: EdbEDATrackSet.h:216
void AddSegments(TObjArray *segments)
Definition: EdbEDATrackSet.h:414
void RestorePrevious(void)
Definition: EdbEDATrackSet.h:351
void ClearComments()
Definition: EdbEDATrackSet.h:476
EdbTrackP * GetTrack(EdbSegP *s)
Definition: EdbEDATrackSet.h:428
int GetLayerColor(EdbSegP *s)
Definition: EdbEDATrackSet.h:565
void SetTrack(EdbTrackP *t)
Definition: EdbEDATrackSet.h:288
void SetTextPosition(int pos)
Definition: EdbEDATrackSet.h:580
int eTrackColor
Definition: EdbEDATrackSet.h:187
void AddTrack(EdbTrackP *t)
Definition: EdbEDATrackSet.h:277
void DoSelection()
Definition: EdbEDATrackSet.h:503
void SetDrawTrackAngle(bool draw)
Definition: EdbEDATrackSet.h:588
void ResetTrackAttribute(void)
Definition: EdbEDATrackSet.h:558
void StorePrevious()
Definition: EdbEDATrackSet.h:356
void SetTextAttribute(int size=14, int color=kWhite, int fontfile=4)
Definition: EdbEDATrackSet.h:570
int eLayerColor
Definition: EdbEDATrackSet.h:191
void SetDrawTrackAngleG(bool draw)
Definition: EdbEDATrackSet.h:590
void SetTracks(TObjArray *tracks)
Definition: EdbEDATrackSet.h:303
double eLayerLength
Definition: EdbEDATrackSet.h:193
int GetTextColor()
Definition: EdbEDATrackSet.h:576
int eTextSize
Definition: EdbEDATrackSet.h:196
void ClearTracksBase(void)
Definition: EdbEDATrackSet.h:331
TObjArray * eTracksBase
Definition: EdbEDATrackSet.h:217
int FindDownstreamPlate()
Definition: EdbEDATrackSet.h:454
EdbScanSet * eScanSet
Definition: EdbEDATrackSet.h:214
void AddTracks(TObjArray *arr)
Definition: EdbEDATrackSet.h:282
void SetAreaSet(EdbEDAAreaSet *set)
Definition: EdbEDATrackSet.h:601
void SetLayerLength(double length)
Definition: EdbEDATrackSet.h:556
int FindUpstreamPlate()
Definition: EdbEDATrackSet.h:445
EdbID eID
Definition: EdbEDATrackSet.h:184
EdbTrackP * FindTrack(EdbTrackP *t)
Definition: EdbEDATrackSet.h:388
void AddTracksBase(TObjArray *tracksbase)
Definition: EdbEDATrackSet.h:269
TObjArray * eComments
Definition: EdbEDATrackSet.h:220
void SetTracksVertices(TObjArray *vertices, bool clear_previous=kTRUE)
Definition: EdbEDATrackSet.h:515
int eLayerWidth
Definition: EdbEDATrackSet.h:192
void AddTracksPVR(EdbPVRec *pvr)
Definition: EdbEDATrackSet.h:312
int GetTextSize()
Definition: EdbEDATrackSet.h:577
bool eDrawTrackAngleG
Definition: EdbEDATrackSet.h:207
void SetID(EdbID id)
Definition: EdbEDATrackSet.h:463
void SetTracksBase(TObjArray *tracksbase)
Definition: EdbEDATrackSet.h:265
void SetTrack(int itrack)
Definition: EdbEDATrackSet.h:295
void GetTrackAttribute(int *track_color, int *track_width, double *track_length, int *layer_color, int *layer_width, double *layer_length, int *layer_color_MT)
Definition: EdbEDATrackSet.h:547
const char * GetComment(EdbTrackP *t)
Definition: EdbEDATrackSet.h:477
EdbDataSet * GetDataSet()
Definition: EdbEDATrackSet.h:473
@ kEnd
Definition: EdbEDATrackSet.h:226
EdbEDATrackSet(const char *title, TObjArray *EdbTrackPArray=NULL)
Definition: EdbEDATrackSet.h:228
TObjArray * GetTracksBase()
Definition: EdbEDATrackSet.h:275
void Clear()
Definition: EdbEDATrackSet.h:336
int eColorMode
Definition: EdbEDATrackSet.h:186
void SetDraw(bool b=kTRUE)
Definition: EdbEDATrackSet.h:583
void SetTracksAll(void)
Definition: EdbEDATrackSet.h:341
int GetTextFont()
Definition: EdbEDATrackSet.h:578
void SetDrawAreaSet(bool draw=kTRUE)
Definition: EdbEDATrackSet.h:603
EdbTrackP * SearchTrack(int itrk)
Definition: EdbEDATrackSet.h:365
EdbEDAAreaSet * GetAreaSet()
Definition: EdbEDATrackSet.h:602
void SetExtendMode(int mode=kExtendAuto)
Definition: EdbEDATrackSet.h:526
void SetScanSet(EdbScanSet *ss)
Definition: EdbEDATrackSet.h:470
EdbDataSet * eDataSet
Definition: EdbEDATrackSet.h:213
EdbTrackP * FindTrack(EdbSegP *s, double dx=10, double dt=0.02)
Definition: EdbEDATrackSet.h:369
EdbTrackP * FindTrackLast(EdbSegP *s, double dx=20, double dt=0.03)
Definition: EdbEDATrackSet.h:394
void SetInterpolation(int interpolation=kTRUE)
Definition: EdbEDATrackSet.h:528
bool GetDrawTrackID()
Definition: EdbEDATrackSet.h:591
TObjArray * eTracksPrevious
Definition: EdbEDATrackSet.h:218
void SetDrawTrackID(bool draw)
Definition: EdbEDATrackSet.h:587
TObjArray * GetTracks()
Definition: EdbEDATrackSet.h:310
EdbEDAAreaSet * eAreaSet
Definition: EdbEDATrackSet.h:222
void SetDrawMT(bool b=kTRUE)
Definition: EdbEDATrackSet.h:585
void SetTracksNseg(int nsegcut=3)
Definition: EdbEDATrackSet.h:342
bool GetDraw()
Definition: EdbEDATrackSet.h:584
Definition: EdbID.h:7
Definition: EdbPVRec.h:148
Definition: EdbRunTracking.h:18
Float_t ePulsMinDegradBT
Definition: EdbRunTracking.h:44
Float_t ePulsMinBT
Definition: EdbRunTracking.h:37
Float_t eDeltaR
Definition: EdbRunTracking.h:33
EdbScanCond eCondMT
Definition: EdbRunTracking.h:22
Float_t ePreliminaryPulsMinMT
Definition: EdbRunTracking.h:27
Float_t eChi2MaxMT
Definition: EdbRunTracking.h:45
Float_t eDeltaRview
Definition: EdbRunTracking.h:25
Float_t ePreliminaryChi2MaxMT
Definition: EdbRunTracking.h:28
Float_t ePulsMinMT
Definition: EdbRunTracking.h:43
Float_t eDegradSlope
Definition: EdbRunTracking.h:56
EdbScanCond eCondBT
Definition: EdbRunTracking.h:23
Float_t eChi2MaxBT
Definition: EdbRunTracking.h:39
bool ePredictionScan
Definition: EdbRunTracking.h:61
Float_t eDegradPos
Definition: EdbRunTracking.h:55
Float_t ePulsMinDegradMT
Definition: EdbRunTracking.h:38
Float_t eDeltaTheta
Definition: EdbRunTracking.h:26
Definition: EdbScanCond.h:10
void SetPulsRamp0(float p1, float p2)
Definition: EdbScanCond.h:74
void SetChi2Max(float chi2)
Definition: EdbScanCond.h:83
void SetDegrad(float d)
Definition: EdbScanCond.h:71
void SetSigma0(float x, float y, float tx, float ty)
Definition: EdbScanCond.h:62
void SetBins(float bx, float by, float btx, float bty)
Definition: EdbScanCond.h:65
void SetPulsRamp04(float p1, float p2)
Definition: EdbScanCond.h:75
void SetRadX0(float x0)
Definition: EdbScanCond.h:57
void SetChi2PMax(float chi2)
Definition: EdbScanCond.h:84
Definition: EdbScanSet.h:11
Definition: EdbSegP.h:18
Float_t TX() const
Definition: EdbSegP.h:172
Float_t X() const
Definition: EdbSegP.h:170
Int_t Plate() const
Definition: EdbSegP.h:156
Float_t Z() const
Definition: EdbSegP.h:150
Int_t Side() const
Definition: EdbSegP.h:167
Float_t Y() const
Definition: EdbSegP.h:171
Float_t TY() const
Definition: EdbSegP.h:173
Definition: EdbPattern.h:118
Int_t N() const
Definition: EdbPattern.h:182
EdbSegP * GetSegment(int i) const
Definition: EdbPattern.h:200
Definition: EdbVertex.h:194
Definition: EdbVertex.h:68
EdbTrackP * GetTrack(int i)
Definition: EdbVertex.h:141
Int_t N() const
Definition: EdbVertex.h:121
string filename
Definition: emthickness.cpp:34
EdbScanSet * set
Definition: emtraceback.cpp:14
ss
Definition: energy.C:62
TTree * tracks
Definition: check_tr.C:19
Definition: EdbEDAUtil.h:78
@ kCOLOR_BY_PH
Definition: EdbEDAUtil.h:82
int IsTrack(TObject *o)
Definition: EdbEDAUtil.C:17
int IsSegment(TObject *o)
Definition: EdbEDAUtil.C:29
@ kExtendAuto
Definition: EdbEDAUtil.h:90
UInt_t id
Definition: tlg2pattern.C:118
#define NULL
Definition: nidaqmx.h:84
Definition: RecDispMC.C:95
ePVR
Definition: testBGReduction_By_ANN.C:3
EdbSegP * s
Definition: tlg2pattern.C:32