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]
 
TObjArray * eCells
 
Int_t eNcell [3]
 
Float_t eVmax [3]
 
Float_t eVmin [3]
 

Constructor & Destructor Documentation

◆ EdbVertexSpace()

EdbVertexSpace::EdbVertexSpace ( float  vmin[3],
float  vmax[3],
float  bin[3] 
)
17 {
18  for(int i=0; i<3; i++) {
19  eVmin[i] = vmin[i];
20  eVmax[i] = vmax[i];
21  eBin[i] = bin[i];
22  eNcell[i] = (int)( (vmax[i]-vmin[i])/bin[i] );
23  }
24 
25  Long_t N = eNcell[0]*eNcell[1]*eNcell[2];
26  printf("create :EdbVertexSpace: %d %d %d = %ld\n",eNcell[0],eNcell[1],eNcell[2], N);
27  if(N>10e9) { printf("N is too big - no space...\n"); return; }
28 
29  eCells = new TObjArray(N);
30  return;
31 }
Int_t eNcell[3]
Definition: EdbVertexSpace.h:24
TObjArray * eCells
Definition: EdbVertexSpace.h:26
Float_t eVmin[3]
Definition: EdbVertexSpace.h:19
Float_t eVmax[3]
Definition: EdbVertexSpace.h:20
Float_t eBin[3]
Definition: EdbVertexSpace.h:22
float bin
Definition: emthickness.cpp:98

◆ ~EdbVertexSpace()

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

Member Function Documentation

◆ AddTrackLine()

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

◆ Cycle()

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

Member Data Documentation

◆ eBin

Float_t EdbVertexSpace::eBin[3]
private

◆ eCells

TObjArray* EdbVertexSpace::eCells
private

◆ eNcell

Int_t EdbVertexSpace::eNcell[3]
private

◆ eVmax

Float_t EdbVertexSpace::eVmax[3]
private

◆ eVmin

Float_t EdbVertexSpace::eVmin[3]
private

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