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
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
TClonesArray * Smoothing(EdbView *v)
Definition: bitview.cxx:237
float max(TClonesArray *t)
Definition: bitview.cxx:297
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
TTree * t
Definition: check_shower.C:4
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: