FEDRA emulsion software from the OPERA Collaboration
EdbEDAAreaSet Class Reference

#include <EdbEDASets.h>

Inheritance diagram for EdbEDAAreaSet:
Collaboration diagram for EdbEDAAreaSet:

Public Member Functions

void AddArea (EdbEDAArea *area)
 
void AddArea (int ipl, double xmin, double xmax, double ymin, double ymax, double z)
 
void Clear ()
 
void Draw (int redraw=0)
 
 EdbEDAAreaSet ()
 
 EdbEDAAreaSet (EdbDataSet *dset, double x, double y, double dx, double dy)
 
 EdbEDAAreaSet (EdbPVRec *pvr)
 
EdbEDAAreaGetArea (int i)
 
EdbEDAAreaGetAreaIPL (int ipl)
 
TObjArray * GetAreas ()
 
void Init ()
 
int N ()
 
void Print ()
 
void SetAreas (EdbDataSet *dset, double x, double y, double dx, double dy)
 
void SetAreas (EdbPVRec *pvr)
 
void SetAreas (EdbScanSet *ss)
 
void SetAreas (TObjArray *tracks)
 
void SetDraw (bool draw)
 
void SetDrawG (bool draw)
 
void UnDraw (int redraw=0)
 

Private Attributes

TObjArray * eAreas
 
TEveCompound * eCompound
 
bool eDraw
 
bool eDrawG
 
int eLineColor
 
int eLineWidth
 
int eTextColor
 
int eTextSize
 

Constructor & Destructor Documentation

◆ EdbEDAAreaSet() [1/3]

EdbEDAAreaSet::EdbEDAAreaSet ( )
inline
70 {Init();};
void Init()
Definition: EdbEDASets.h:96

◆ EdbEDAAreaSet() [2/3]

EdbEDAAreaSet::EdbEDAAreaSet ( EdbPVRec pvr)
inline
71  {
72  Init();
73  SetAreas(pvr);
74  }
void SetAreas(EdbPVRec *pvr)

◆ EdbEDAAreaSet() [3/3]

EdbEDAAreaSet::EdbEDAAreaSet ( EdbDataSet dset,
double  x,
double  y,
double  dx,
double  dy 
)
inline
75  {
76  Init();
77  SetAreas(dset,x,y,dx,dy);
78  }
EdbDataProc * dset
Definition: RecDispEX.C:9

Member Function Documentation

◆ AddArea() [1/2]

void EdbEDAAreaSet::AddArea ( EdbEDAArea area)
inline
114 { eAreas->Add(area);}
TObjArray * eAreas
Definition: EdbEDASets.h:57

◆ AddArea() [2/2]

void EdbEDAAreaSet::AddArea ( int  ipl,
double  xmin,
double  xmax,
double  ymin,
double  ymax,
double  z 
)
inline
110  {
111  EdbEDAArea *area = new EdbEDAArea(ipl, xmin, xmax, ymin, ymax, z);
112  eAreas->Add(area);
113  }
Definition: EdbEDASets.h:7
float xmin
Definition: emthickness.cpp:61
float ymin
Definition: emthickness.cpp:63
float xmax
Definition: emthickness.cpp:61
float ymax
Definition: emthickness.cpp:63

◆ Clear()

void EdbEDAAreaSet::Clear ( )
inline
137 { eAreas->Clear();}

◆ Draw()

void EdbEDAAreaSet::Draw ( int  redraw = 0)
107  {
108  if(eCompound) UnDraw();
109  if(eDraw==kFALSE||eDrawG==kFALSE) return;
110  if(eAreas->GetEntriesFast()==0) return;
111  eCompound = new TEveCompound;
112  eCompound->SetElementName("Scanning Areas");
113  gEve->AddElement(eCompound);
114 
115  for(int i=0;i<eAreas->GetEntriesFast();i++){
116  EdbEDAArea *area = (EdbEDAArea *) eAreas->At(i);
117  if(area->GetDraw()==kFALSE) continue;
118  TEveLine *l = new TEveLine;
119  l->SetLineColor(eLineColor);
120  l->SetLineWidth(eLineWidth);
121  if(gEDA->Japanese()) l->SetName(
122  Form("PL %2d (%2d), X: %8.1lf -> %8.1lf, Y: %8.1lf -> %8.1lf, Z: %8.1lf, Area : %6d x %6d = %.1lfcm2",
123  area->Plate(), 58-area->Plate(), area->Xmin(),area->Xmax(),area->Ymin(),area->Ymax(),area->Z(),
124  (int)(area->Xmax()-area->Xmin()), (int)(area->Ymax()-area->Ymin()),
125  (area->Xmax()-area->Xmin())*(area->Ymax()-area->Ymin())/1e8));
126  else l->SetName(
127  Form("PL %2d, X: %8.1lf -> %8.1lf, Y: %8.1lf -> %8.1lf, Z: %8.1lf, Area : %6d x %6d = %.1lfcm2",
128  area->Plate(),area->Xmin(),area->Xmax(),area->Ymin(),area->Ymax(),area->Z(),
129  (int)(area->Xmax()-area->Xmin()), (int)(area->Ymax()-area->Ymin()),
130  (area->Xmax()-area->Xmin())*(area->Ymax()-area->Ymin())/1e8));
131  l->SetNextPoint(area->Xmin(), area->Ymin(), area->Z()*gEDA->GetScaleZ());
132  l->SetNextPoint(area->Xmin(), area->Ymax(), area->Z()*gEDA->GetScaleZ());
133  l->SetNextPoint(area->Xmax(), area->Ymax(), area->Z()*gEDA->GetScaleZ());
134  l->SetNextPoint(area->Xmax(), area->Ymin(), area->Z()*gEDA->GetScaleZ());
135  l->SetNextPoint(area->Xmin(), area->Ymin(), area->Z()*gEDA->GetScaleZ());
136  eCompound->AddElement(l);
137 
138  TEveText* t = new TEveText;
139  t->SetText(Form("%d",area->Plate()));
140  t->PtrMainTrans()->SetPos( area->Xmax(), area->Ymax(), area->Z()*gEDA->GetScaleZ());
141  t->SetFontSize(eTextSize);
142  t->SetMainColor(eTextColor);
143  t->SetFontMode(TGLFont::kBitmap);
144  l->AddElement(t);
145 
146  /*
147  // Trial using transparent geometories.
148  // Make Shape
149  TEveGeoShape *s = new TEveGeoShape(Form("PL %2d, X: %8.1lf -> %8.1lf, Y: %8.1lf -> %8.1lf, Z: %6.1lf",
150  area->Plate(),area->Xmin(),area->Xmax(),area->Ymin(),area->Ymax(),area->Z()));
151  // register Box
152  s->SetShape(new TGeoBBox("BOX", area->RX(), area->RY(), 300));
153 
154  // Set position
155  s->PtrMainTrans()->SetPos(area->X(), area->Y(), area->Z()*gEDA->GetScaleZ());
156 
157  // Set Color
158  s->SetMainColor(kCyan);
159 
160  // Set Transparency.
161  s->SetMainTransparency( 90 );
162 
163  eCompound->AddElement(s);
164  */
165  }
166  if(redraw) gEve->Redraw3D();
167 }
EdbEDA * gEDA
Definition: EdbEDA.C:3
TTree * t
Definition: check_shower.C:4
int eLineColor
Definition: EdbEDASets.h:58
int eLineWidth
Definition: EdbEDASets.h:59
int eTextSize
Definition: EdbEDASets.h:60
bool eDraw
Definition: EdbEDASets.h:63
int eTextColor
Definition: EdbEDASets.h:61
void UnDraw(int redraw=0)
Definition: EdbEDASets.h:125
TEveCompound * eCompound
Definition: EdbEDASets.h:62
bool eDrawG
Definition: EdbEDASets.h:64
bool GetDraw()
Definition: EdbEDASets.h:46
double Z()
Definition: EdbEDASets.h:35
double Ymax()
Definition: EdbEDASets.h:32
int Plate()
Definition: EdbEDASets.h:28
double Xmax()
Definition: EdbEDASets.h:30
double Xmin()
Definition: EdbEDASets.h:29
double Ymin()
Definition: EdbEDASets.h:31
double GetScaleZ()
Definition: EdbEDA.h:732
bool Japanese()
Definition: EdbEDA.h:734

◆ GetArea()

EdbEDAArea* EdbEDAAreaSet::GetArea ( int  i)
inline
134 { if(0<=i&&i<N()) return (EdbEDAArea *) eAreas->At(i); else return NULL;}
int N()
Definition: EdbEDASets.h:133
#define NULL
Definition: nidaqmx.h:84

◆ GetAreaIPL()

EdbEDAArea* EdbEDAAreaSet::GetAreaIPL ( int  ipl)
inline
135 { for(int i=0; i<N(); i++) if(GetArea(i)->Plate()==ipl) return GetArea(i); return NULL;}
EdbEDAArea * GetArea(int i)
Definition: EdbEDASets.h:134

◆ GetAreas()

TObjArray* EdbEDAAreaSet::GetAreas ( )
inline
122 {return eAreas;}

◆ Init()

void EdbEDAAreaSet::Init ( void  )
inline
96  {
97  eAreas = new TObjArray();
98  eLineColor = kGray+2;
99  eLineWidth = 1;
100  eTextSize = 13;
101  eTextColor = kGray;
102  eCompound = NULL;
103  eDraw = kFALSE;
104  eDrawG = kTRUE;
105  }

◆ N()

int EdbEDAAreaSet::N ( )
inline
133 { return eAreas->GetEntriesFast();}

◆ Print()

void EdbEDAAreaSet::Print ( )
inline
116  {
117  printf("EdbEDAAreaSet eLineColor = %d, eLineWidth = %d, eTextSize = %d, eTextColor = %d nAreas = %d\n",
118  eLineColor, eLineWidth, eTextSize, eTextColor, eAreas->GetEntriesFast());
119  for(int i=0;i<eAreas->GetEntriesFast();i++) ((EdbEDAArea*)eAreas->At(i))->Print();
120  }

◆ SetAreas() [1/4]

void EdbEDAAreaSet::SetAreas ( EdbDataSet dset,
double  x,
double  y,
double  dx,
double  dy 
)
inline
83  {
84  if(dset==NULL) return;
85  for(int i=0;i<dset->N(); i++){
86  EdbDataPiece *piece = dset->GetPiece(i);
87  if(NULL==piece) continue;
88  EdbLayer* l = piece->GetLayer(0);
89  EdbEDAArea *area = new EdbEDAArea( piece->Plate(), x-dx, x+dx, y-dy, y+dy, l->Z());
90  eAreas->Add(area);
91  }
92  }
Definition: EdbDataSet.h:25
EdbLayer * GetLayer(int id)
Definition: EdbDataSet.h:86
int Plate() const
Definition: EdbDataSet.h:65
Definition: EdbLayer.h:40
float Z() const
Definition: EdbLayer.h:78

◆ SetAreas() [2/4]

void EdbEDAAreaSet::SetAreas ( EdbPVRec pvr)

◆ SetAreas() [3/4]

void EdbEDAAreaSet::SetAreas ( EdbScanSet ss)
28  {
29  if(ss){
30  EdbBrickP *b = &ss->eB;
31  for(int i=0;i<b->Npl();i++){
32  EdbPlateP *pl = b->GetPlate(i);
33  EdbLayer *l = pl->GetLayer(0);
34  EdbEDAArea *a = new EdbEDAArea(pl->ID(), l->Xmin(), l->Xmax(), l->Ymin(), l->Ymax(), l->Z());
35  eAreas->Add(a);
36  }
37  return;
38  }
39 }
void a()
Definition: check_aligned.C:59
Definition: EdbBrick.h:37
EdbPlateP * GetPlate(int i)
Definition: EdbBrick.h:52
int Npl() const
Definition: EdbBrick.h:50
float Ymin() const
Definition: EdbLayer.h:88
int ID() const
Definition: EdbLayer.h:74
float Ymax() const
Definition: EdbLayer.h:89
float Xmax() const
Definition: EdbLayer.h:87
float Xmin() const
Definition: EdbLayer.h:86
Definition: EdbBrick.h:13
EdbLayer * GetLayer(int i)
Definition: EdbBrick.h:28
ss
Definition: energy.C:62

◆ SetAreas() [4/4]

void EdbEDAAreaSet::SetAreas ( TObjArray *  tracks)
41  {
42  printf("Set scanning areas from TS tracks %d\n", tracks->GetEntriesFast());
43 
44  TObjArray *areas = new TObjArray;
46  if(ss){
47  EdbBrickP *b = &ss->eB;
48  for(int i=0;i<b->Npl();i++){
49  EdbPlateP *pl = b->GetPlate(i);
50  //EdbLayer *l = pl->GetLayer(0);
51  //EdbEDAArea *a = new EdbEDAArea(pl->ID(), l->Xmin(), l->Xmax(), l->Ymin(), l->Ymax(), l->Z());
52  EdbEDAArea *a = new EdbEDAArea;
53  a->SetPlate(pl->ID());
54  a->SetZ(pl->Z());
55  areas->Add(a);
56  }
57  for(int i=0;i<tracks->GetEntriesFast();i++){
58  EdbTrackP *t = (EdbTrackP *)tracks->At(i);
59  if(t==NULL) continue;
60  for(int j=0;j<t->N();j++){
61  EdbSegP *s = t->GetSegment(j);
62  EdbEDAArea *a=NULL;
63  for(int k=0;k<areas->GetEntriesFast();k++){
64  a = (EdbEDAArea *) areas->At(k);
65  if(a->Plate()==s->Plate()) break;
66  }
67 
68  if(s->X()<a->Xmin()) a->SetXmin(s->X());
69  if(s->X()>a->Xmax()) a->SetXmax(s->X());
70  if(s->Y()<a->Ymin()) a->SetYmin(s->Y());
71  if(s->Y()>a->Ymax()) a->SetYmax(s->Y());
72  }
73  }
74 
75  for(int i=0;i<areas->GetEntriesFast();i++){ AddArea( (EdbEDAArea *)areas->At(i));}
76  return;
77  }
78 
79 
81  for(int i=0;i<dset->N();i++){
82  EdbEDAArea *a = new EdbEDAArea;
83  a->SetZ(gEDA->GetZPID(i));
84  a->SetPlate(gEDA->GetIPL(i));
85  areas->Add(a);
86  }
87 
88  for(int i=0;i<tracks->GetEntriesFast();i++){
89  EdbTrackP *t = (EdbTrackP *)tracks->At(i);
90  if(t==NULL) continue;
91  for(int j=0;j<t->N();j++){
92  EdbSegP *s = t->GetSegment(j);
93  EdbEDAArea *a = GetAreaIPL(s->Plate());
94  if(s->X()<a->Xmin()) {a->SetXmin(s->X()); if(s->PID()==0)printf("xmin %lf\n", s->X());}
95  if(s->X()>a->Xmax()) {a->SetXmax(s->X()); if(s->PID()==0)printf("xman %lf\n", s->X());}
96  if(s->Y()<a->Ymin()) a->SetYmin(s->Y());
97  if(s->Y()>a->Ymax()) a->SetYmax(s->Y());
98  }
99  }
100 
101  for(int i=0;i<areas->GetEntriesFast();i++){ AddArea( (EdbEDAArea *)areas->At(i));}
102 // areas->Delete();
103 }
Definition: EdbDataSet.h:143
void AddArea(int ipl, double xmin, double xmax, double ymin, double ymax, double z)
Definition: EdbEDASets.h:110
EdbEDAArea * GetAreaIPL(int ipl)
Definition: EdbEDASets.h:135
EdbDataSet * GetDataSet()
Definition: EdbEDA.h:244
int GetIPL(int PID)
Definition: EdbEDA.h:252
EdbScanSet * GetScanSet()
Definition: EdbEDA.h:222
double GetZPID(int pid)
Definition: EdbEDA.h:321
Definition: EdbScanSet.h:11
Definition: EdbSegP.h:18
Float_t X() const
Definition: EdbSegP.h:170
Int_t Plate() const
Definition: EdbSegP.h:156
Float_t Y() const
Definition: EdbSegP.h:171
Int_t PID() const
Definition: EdbSegP.h:145
Definition: EdbPattern.h:118
TTree * tracks
Definition: check_tr.C:19
EdbSegP * s
Definition: tlg2pattern.C:32

◆ SetDraw()

void EdbEDAAreaSet::SetDraw ( bool  draw)
inline
106 { eDraw = draw;}

◆ SetDrawG()

void EdbEDAAreaSet::SetDrawG ( bool  draw)
inline
107 { eDrawG = draw;}

◆ UnDraw()

void EdbEDAAreaSet::UnDraw ( int  redraw = 0)
inline
125  {
126  TEveEventManager *ev = gEve->GetCurrentEvent();
127  TEveElement *el = ev->FindChild("Scanning Areas");
128  if(el) el->Destroy();
129  eCompound=NULL;
130  if(redraw) gEve->Redraw3D();
131  }

Member Data Documentation

◆ eAreas

TObjArray* EdbEDAAreaSet::eAreas
private

◆ eCompound

TEveCompound* EdbEDAAreaSet::eCompound
private

◆ eDraw

bool EdbEDAAreaSet::eDraw
private

◆ eDrawG

bool EdbEDAAreaSet::eDrawG
private

◆ eLineColor

int EdbEDAAreaSet::eLineColor
private

◆ eLineWidth

int EdbEDAAreaSet::eLineWidth
private

◆ eTextColor

int EdbEDAAreaSet::eTextColor
private

◆ eTextSize

int EdbEDAAreaSet::eTextSize
private

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