FEDRA emulsion software from the OPERA Collaboration
EdbVertexSpace Class Reference

#include <EdbVertexSpace.h>

Inheritance diagram for EdbVertexSpace:
Collaboration diagram for EdbVertexSpace:

Public Member Functions

void AddTrackLine (float x1[3], float x2[3], int id)
 
void Cycle ()
 
 EdbVertexSpace (float vmin[3], float vmax[3], float bin[3])
 
virtual ~EdbVertexSpace ()
 

Private Attributes

Float_t eBin [3]
 xyz bin sizes More...
 
TObjArray * eCells
 
Int_t eNcell [3]
 number of cells in each dimension More...
 
Float_t eVmax [3]
 x,y,z of max point More...
 
Float_t eVmin [3]
 Volume limits: More...
 

Detailed Description

//////////////////////////////////////////////////////////////////////// // EdbVertexSpace // // Class for fast vertex check // // ////////////////////////////////////////////////////////////////////////

Constructor & Destructor Documentation

◆ EdbVertexSpace()

EdbVertexSpace::EdbVertexSpace ( float  vmin[3],
float  vmax[3],
float  bin[3] 
)
18{
19 for(int i=0; i<3; i++) {
20 eVmin[i] = vmin[i];
21 eVmax[i] = vmax[i];
22 eBin[i] = bin[i];
23 eNcell[i] = (int)( (vmax[i]-vmin[i])/bin[i] );
24 }
25
26 Long_t N = eNcell[0]*eNcell[1]*eNcell[2];
27 printf("create :EdbVertexSpace: %d %d %d = %ld\n",eNcell[0],eNcell[1],eNcell[2], N);
28 if(N>10e9) { printf("N is too big - no space...\n"); return; }
29
30 eCells = new TObjArray(N);
31 return;
32}
Int_t eNcell[3]
number of cells in each dimension
Definition: EdbVertexSpace.h:25
TObjArray * eCells
Definition: EdbVertexSpace.h:27
Float_t eVmin[3]
Volume limits:
Definition: EdbVertexSpace.h:20
Float_t eVmax[3]
x,y,z of max point
Definition: EdbVertexSpace.h:21
Float_t eBin[3]
xyz bin sizes
Definition: EdbVertexSpace.h:23

◆ ~EdbVertexSpace()

virtual EdbVertexSpace::~EdbVertexSpace ( )
inlinevirtual
31{ if(eCells) delete eCells; }

Member Function Documentation

◆ AddTrackLine()

void EdbVertexSpace::AddTrackLine ( float  x1[3],
float  x2[3],
int  id 
)
36{
37 float zstep = eBin[2];
38 //float z = x1[2];
39 int nstep = (int)((x2[2]-x1[2])/zstep);
40
41 for(int i=0; i<nstep; i++) {
42 }
43}

◆ Cycle()

void EdbVertexSpace::Cycle ( )
47{
48 int ii[26];
49 int jj[26];
50 int kk[26];
51
52 int ind=0;
53 for(int i=-1; i<2; i++)
54 for(int j=-1; j<2; j++)
55 for(int k=-1; k<2; k++) {
56 if( i==0&&j==0&&k==0 ) continue;
57 ii[ind]=i;
58 jj[ind]=j;
59 kk[ind]=k;
60 ind++;
61 }
62
63 if(!eCells) return;
64 int n = eCells->GetSize();
65 printf("cycle: %d\n",n);
66
67 for(int i=1; i<eNcell[0]-1; i++)
68 for(int j=1; j<eNcell[1]-1; j++)
69 for(int k=1; k<eNcell[2]-1; k++) {
70 ind = i*eNcell[0]+j*eNcell[1] + k;
71 if( eCells->UncheckedAt(ind) ) printf("ops: %d\n",ind);
72
73 for(int i2=0; i2<26; i2++) {
74 ind =
75 (i+ii[i2])*eNcell[0] +
76 (j+jj[i2])*eNcell[1] +
77 (k+kk[i2]);
78 if( eCells->UncheckedAt(ind) ) printf("ops: %d\n",ind);
79 }
80 }
81}

Member Data Documentation

◆ eBin

Float_t EdbVertexSpace::eBin[3]
private

xyz bin sizes

◆ eCells

TObjArray* EdbVertexSpace::eCells
private

◆ eNcell

Int_t EdbVertexSpace::eNcell[3]
private

number of cells in each dimension

◆ eVmax

Float_t EdbVertexSpace::eVmax[3]
private

x,y,z of max point

◆ eVmin

Float_t EdbVertexSpace::eVmin[3]
private

Volume limits:

x,y,z of min point


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