StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
tGeom.C
1 //
2 // Created 14-mar-2001 for testing method StEmcGeom::getBinEnv by PAI
3 // Corr. 15-mar =>use only Jose's scheme
4 //
5 #if !defined(__CINT__)
6 #include <TROOT.h>
7 #include <TSystem.h>
8 #include "StEmcUtil/StEmcGeom.h"
9 #endif
10 
11 void tgeom(const Int_t det=1);
12 Int_t tg1(const Int_t id);
13 Int_t tg2(const Int_t det=1, const Int_t id=0);
14 void tg3();
15 void tg4(const Int_t det=1, const Int_t m1=1,const Int_t m2=120);
16 //void tg4(const Int_t det, const Int_t m) {tg4(det,m,m);}
17 
18 class StEmcGeom; StEmcGeom *geom = 0;
19 Int_t m,e,s;
20 
21 void
22 tgeom(const Int_t det)
23 {
24  if(strlen(gSystem->GetLibraries("*StEmcUtil.so","D")) == 0){
25  gROOT->ProcessLine(".x Load.C");
26  gSystem->Load("StEmcUtil.so");
27  }
28  if(det>=1&&det<=4) {
29  // if(geom) delete geom;
30  geom = new StEmcGeom(det);
31  }
32 }
33 
34 Int_t
35 tg1(const Int_t id)
36 {
37  tgeom();
38 
39  Int_t ret;
40  ret = geom->getBin(id,m,e,s);
41 
42  if(ret == 0) {
43  printf(" id %4i => m %3i e %2i s %i \n", id, m, e, s);
44  return ret;
45  }
46  else return 1;
47 }
48 
49 Int_t
50 tg2(const Int_t det, const Int_t id)
51 {
52  // Cross checking for getBin and getId
53  tgeom(det);
54 
55  Int_t m,e,s, idW, id1, id2;
56  // det=geom->Detector();
57 
58  id1 = id; id2=id; // Default
59  if(id == 0) {
60  switch (det){
61  case 1:
62  case 2: {id1=1; id2=4800; break;}
63  case 3:
64  case 4: {id1=1; id2=18000; break;}
65  default: return 0;
66  }
67  }
68 
69  Int_t ibad = 0; // bad case
70  for(Int_t i=id1; i<=id2; i++){
71  Int_t ret = geom->getBin(i,m,e,s);
72  if(ret == 0) {
73  Int_t retW = geom->getId(m,e,s,idW);
74  if(retW == 0){
75  if(i != idW) {
76  ibad++;
77  printf(" bad case %i | id %4i : %4i => m %3i e %2i s %i \n"
78  ,ibad, i, idW, m, e, s);
79  }
80  }
81  else {printf(" Something wrong \n"); return 0;}
82  }
83  else return 1;
84  }
85 
86  if(ibad) printf(" Detector %i Bad case %i \n", det, ibad);
87  else printf(" Detector %i => No Errors \n", det);
88 
89  return 10;
90 }
91 
92 void
93 tg3()
94 {
95  //
96  tgeom(0);
97  Int_t det, id=1;
98  for(det=1; det<=4; det++){
99  geom = new StEmcGeom(det);
100  Int_t ret = geom->getBin(id,m,e,s);
101  if(ret == 0) printf(" det %i id %i => m %i e %i s %i \n",
102  det,id, m,e,s);
103  }
104 }
105 
106 void
107 tg4(const Int_t det,const Int_t m1, const Int_t m2)
108 {
109  //
110  // For checking getBin(phi,eta,m,e,s) - 26-jul-2001
111  //
112  tgeom(det);
113  Float_t phi,eta;
114  Int_t mw, ew, sw, ier1=0, ier2=0;
115 
116  for(Int_t m=m1; m<=m2; m++){
117  for(Int_t e=1; e<=geom->NEta(); e++){
118  for(Int_t s=1; s<=geom->NSub(); s++){
119  if(geom->getEta(m,e,eta)==0&&geom->getPhi(m,s,phi)==0){
120  geom->getBin(phi,eta, mw,ew,sw);
121  if(m!=mw || e!=ew || s!=sw) {
122  ier2++;
123  printf("<E> %5i | m %i=>%i e %i=>%i s %i=>%i phi %f eta %f \n",
124  ier2, m,mw, e,ew, s,sw, phi,eta);
125  }
126  }
127  else {
128  ier1++;
129  printf("<E> %5i | something wrong m %i e %i s %i\n", ier1, m,e,s);
130  }
131  }
132  }
133  }
134  printf(" For Detector %i ",det);
135  if(ier1==0 && ier2==0) printf(" => No Errors \n");
136  else printf(" #Error1 %i #Error2 %i\n", ier1, ier2);
137 }
138 
Int_t getBin(const Float_t phi, const Float_t eta, Int_t &m, Int_t &e, Int_t &s) const
Definition: StEmcGeom.h:321