FEDRA emulsion software from the OPERA Collaboration
TBitView Class Reference

#include <bitview.h>

Inheritance diagram for TBitView:
Collaboration diagram for TBitView:

Public Member Functions

void AddNewLayer (TBitMatrix *TLayer)
 
void FillBitView (EdbView *view, float sx, float sy, float Xmin, float Xmax, float Ymin, float Ymax, int inside=1, int rep=1)
 
TBitMatrixGetLayer (int n)
 
int GetNumberOfLayers (void)
 
float GetZ1 (void)
 
float GetZ2 (void)
 
float GetZ3 (void)
 
float GetZ4 (void)
 
TBitMatrixoperator[] (int n)
 
 TBitView ()
 
 TBitView (float z, float bs)
 
virtual ~TBitView ()
 

Public Attributes

float bitSize
 
float ZBase
 

Protected Attributes

float delta
 
TObjArray * TBitArray
 
float Z1
 
float Z2
 
float Z3
 
float Z4
 

Constructor & Destructor Documentation

◆ TBitView() [1/2]

TBitView::TBitView ( )
368 {
369  ZBase=0.;
370  delta = 1.6;
371 // NumberOfLayers=0;
372  TBitArray = new TObjArray();
373 }
TObjArray * TBitArray
Definition: bitview.h:29
float delta
Definition: bitview.h:32
float ZBase
Definition: bitview.h:34

◆ TBitView() [2/2]

TBitView::TBitView ( float  z,
float  bs 
)
377 {
378  ZBase = z;
379  delta = 1.6;
380 // NumberOfLayers = 0;
381  bitSize = bs;
382  TBitArray = new TObjArray();
383 }
float bitSize
Definition: bitview.h:35

◆ ~TBitView()

TBitView::~TBitView ( )
virtual
386 {
387  if (TBitArray) {
388  TBitArray->Delete();
389  delete TBitArray;
390  }
391 // NumberOfLayers=0;
392 }

Member Function Documentation

◆ AddNewLayer()

void TBitView::AddNewLayer ( TBitMatrix TLayer)
395 {
396  TBitArray->Add(TLayer);
397  //new((*TBitArray)[TBitArray->GetEntries]) TBitMatrix(*TLayer);
398 // NumberOfLayers = TBitArray.GetEntries();
399 }

◆ FillBitView()

void TBitView::FillBitView ( EdbView view,
float  sx,
float  sy,
float  Xmin,
float  Xmax,
float  Ymin,
float  Ymax,
int  inside = 1,
int  rep = 1 
)
408 {
409  int i;
410  long xs = (long)((Xmax-Xmin)/bitSize +1);
411  long ys = (long)((Ymax-Ymin)/bitSize +1);
412 // added at 31.01.2005 //////////////////////////////////////////////
413  {
414  EdbFrame *f=0;
415  EdbFrame *fpred=0;
416  EdbFrame *fsuc=0;
417  TClonesArray *dc = new TClonesArray("Deriv");
418  Deriv *d=new Deriv();
419  float zmin,zmax;
420 
421  TClonesArray* t = Smoothing(v);
422  int nFrame = t->GetEntries();
423 // printf(" View: %d of %d \n",j+jj,nEntries);
424  for (int ifr=0; ifr<nFrame; ifr++) {
425 // printf(" Field:%d of %d; ",ifr,nFrame);
426  f = (EdbFrame *)(t->At(ifr));
427  if (ifr==0) fpred=NULL;
428  else fpred = (EdbFrame *)(t->At(ifr-1));
429  if (ifr==nFrame-1) fsuc=NULL;
430  else fsuc = (EdbFrame *)(t->At(ifr+1));
431 // d = new Deriv();
432 // printf(" deriv=%f\n",
433  d->derivate(fpred,f,fsuc);
434 // d2->Fill(d->GetZ(),d->GetD());
435 // tree->Fill();
436 // dc->Add(d);
437 // fc->Add(f);
438 // delete d;
439  new((*dc)[ifr]) Deriv(*d);
440 // new((*fc)[ifr]) EdbFrame(*f);
441  }
442  zmin=min(dc);
443  zmax=max(dc);
444  if (v->GetNframesTop()) {
445  PreciseBasePosition(zmin,zmax,dc,Z1,Z2);
446  if ((Z1-Z2)<30||(Z1-Z2)>60) {
447  printf("!!!!!!!! dztop=%f, z1=%f, z2=%f\n",Z1-Z2,Z1,Z2);
448  Z1 = v->GetZ1();
449  Z2 = v->GetZ2();
450  }
451  }
452  else {
453  PreciseBasePosition(zmin,zmax,dc,Z3,Z4);
454  if ((Z3-Z4)<30||(Z3-Z4)>60) {
455  printf("!!!!!!!! dzbot=%f, z3=%f, z4=%f\n",Z3-Z4,Z3,Z4);
456  Z3 = v->GetZ3();
457  Z4 = v->GetZ4();
458  }
459  }
460 // printf("zmin=%f, zmax=%f, dif=%f \n",zmin,zmax,zmax-zmin);
461 // tree->Fill();
462  dc->Delete();
463  t->Delete();
464  delete d;
465  delete dc;
466  delete t;
467  }
469  TClonesArray* frames = v->GetFrames();
470  // TClonesArray* clusters = v->GetClusters();
471  EdbFrame* f = 0;
472  EdbCluster* c = 0;
473  int nframes = v->GetNframes();
474  int nclusters = v->Nclusters();
475 // int NumberOfLayers = nframes;
476  float zmin = ((EdbFrame *)(frames->At(0)))->GetZ();
477  float zmax = zmin;
478  for (i=0; i<nframes; i=i+rep) {
479  f = (EdbFrame *)(frames->At(i));
480  if (inside)
481  if (!(f->GetZ()>((v->GetNframesTop())?(Z2+delta):(Z4+delta))&&
482  f->GetZ()<((v->GetNframesTop())?(Z1-delta):(Z3-delta)))) continue;
483  if (zmin>f->GetZ()) zmin = f->GetZ();
484  if (zmax<f->GetZ()) zmax = f->GetZ();
485  TBitMatrix* TBit = new TBitMatrix(xs,ys,f->GetZ());
486  TBitArray->Add(TBit);
487 // delete TBit;
488  }
489  cout<<GetNumberOfLayers()<<endl;
490  for (i=0; i<nclusters; i++) {
491  int j;
492  int flag = false;
493  c = v->GetCluster(i);
494  float xc = c->GetX();
495  float yc = c->GetY();
496  if (In(xc,yc,Xmin,Xmax,Ymin,Ymax)) {
497  for (j=0; j<GetNumberOfLayers(); j++) {
498 // cout<<c->GetZ()<<" "<<GetLayer(j)->GetZ()<<endl;
499  if (c->GetZ()==GetLayer(j)->GetZ()) {
500  flag = true;
501  break;
502  }
503  }
504  if (!flag) continue;
505  long xi = (long)((xc-Xmin)/bitSize);
506  long yi = (long)((yc-Ymin)/bitSize);
507  float area = c->GetArea();
508  GetLayer(j)->SetBit(xi,yi,(int)(area*sx*sy/(bitSize*bitSize)));
509  }
510  }
512 /* cout<<"layers= "<<NumberOfLayers<<endl;
513  for (long ij=0; ij<NumberOfLayers; ij++) {
514 // cout<<c->GetZ()<<" "<<GetLayer(j)->GetZ()<<endl;
515 // if (c->GetZ()==GetLayer(j)->GetZ()) break;
516  cout<<"layer= "<<ij<<endl;
517  GetLayer(ij)->Print(1);
518  _getch();
519  }
520 */
521  ZBase = (v->GetNframesTop())?(Z2):(Z3);
522 /* if (c->GetSide()) ZBase = v->GetZ3();
523  else ZBase = v->GetZ2();
524  */
525 }
void d()
Definition: RecDispEX.C:381
FILE * f
Definition: RecDispMC.C:150
TClonesArray * Smoothing(EdbView *v)
Definition: bitview.cxx:237
int In(float X, float Y, float Xmin, float Xmax, float Ymin, float Ymax)
Definition: bitview.cxx:18
float min(TClonesArray *t)
Definition: bitview.cxx:275
void PreciseBasePosition(float zmin, float zmax, TClonesArray *dc, float &zup, float &zdown)
Definition: bitview.cxx:315
float max(TClonesArray *t)
Definition: bitview.cxx:297
TTree * t
Definition: check_shower.C:4
Definition: deriv.h:7
Definition: EdbCluster.h:19
Float_t GetX() const
Definition: EdbCluster.h:51
Float_t GetY() const
Definition: EdbCluster.h:52
Float_t GetArea() const
Definition: EdbCluster.h:54
Float_t GetZ() const
Definition: EdbCluster.h:53
Definition: EdbFrame.h:20
Definition: bitmatrix.h:13
float GetZ(void)
Definition: bitmatrix.h:37
void SetBit(long i, long j)
Definition: bitmatrix.cxx:120
float Z3
Definition: bitview.h:31
TBitMatrix * GetLayer(int n)
Definition: bitview.cxx:401
int GetNumberOfLayers(void)
Definition: bitview.h:47
float Z4
Definition: bitview.h:31
float Z1
Definition: bitview.h:31
float Z2
Definition: bitview.h:31
MFTYPE32 long(MFTYPE MPTYPE *MOCRHOOKFCTPTR)(long HookType
Definition: milocr.h:32
#define NULL
Definition: nidaqmx.h:84

◆ GetLayer()

TBitMatrix * TBitView::GetLayer ( int  n)
402 {
403  if (n<TBitArray->GetEntries()) return (TBitMatrix *)TBitArray->At(n);
404  else return NULL;
405 }
cout<< tr-> GetEntries()<< endl

◆ GetNumberOfLayers()

int TBitView::GetNumberOfLayers ( void  )
inline
47 {return TBitArray->GetEntries();}

◆ GetZ1()

float TBitView::GetZ1 ( void  )
inline
39 {return Z1;}

◆ GetZ2()

float TBitView::GetZ2 ( void  )
inline
40 {return Z2;}

◆ GetZ3()

float TBitView::GetZ3 ( void  )
inline
41 {return Z3;}

◆ GetZ4()

float TBitView::GetZ4 ( void  )
inline
42 {return Z4;}

◆ operator[]()

TBitMatrix* TBitView::operator[] ( int  n)
inline
46 {return GetLayer(n);}

Member Data Documentation

◆ bitSize

float TBitView::bitSize

◆ delta

float TBitView::delta
protected

◆ TBitArray

TObjArray* TBitView::TBitArray
protected

◆ Z1

float TBitView::Z1
protected

◆ Z2

float TBitView::Z2
protected

◆ Z3

float TBitView::Z3
protected

◆ Z4

float TBitView::Z4
protected

◆ ZBase

float TBitView::ZBase

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