StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
EEsmdPlain.cxx
1 #include <string.h>
2 #include <assert.h>
3 #include <stdio.h>
4 
5 #include "EEsmdPlain.h"
6 //-------------------------------------------------
7 //-------------------------------------------------
8 EEsmdPlain::EEsmdPlain(){
9  thresE=-1;
10  nDot=-2;
11  uv='N';
12  pattXX[0]=0;
13  pattX[0]=0;
14  hitOver=dotArray+oneOff; // map real strips in the middle of dot Arrary
15  clear();
16 }
17 //-------------------------------------------------
18 //-------------------------------------------------
19 void EEsmdPlain::set(float th, int nd, char uv0) {
20  thresE=th;
21  nDot=nd;
22  uv=uv0;
23  int len=2*nDot+2;
24  assert(len>=2); // makes no sense to search for 0xx0, JB
25  assert(len+2<MaxSmdStrips);
26 
27  memset(pattXX,'.',len);
28  pattXX[len]=0; // string terminatinon
29  pattXX[nDot]='x';
30  pattXX[nDot+1]='x';
31 
32  memset(pattX,'.',len);
33  pattX[len]=0; // string terminatinon
34  pattX[nDot]='x';
35 
36  printf("Set %c-plain , nDot=%d, thrE/MeV=%.2f, pattXX='%s'\n",uv,nDot,thresE*1000.,pattXX);
37 }
38 
39 //-------------------------------------------------
40 //-------------------------------------------------
41 void EEsmdPlain::clear(){
42  memset(dotArray,'.',sizeof(dotArray)); // clear it
43  dotArray[2*oneOff+MaxSmdStrips]=0;// terminate the string to make strstr work properly
44  nMatch=0;
45  memset(iStrip,-1,sizeof(iStrip));
46  memset(type,0,sizeof(type));
47 }
48 
49 //-------------------------------------------------
50 //-------------------------------------------------
51 void EEsmdPlain::print(int k){
52  printf("nMatch=%d to plain='%c' \n",nMatch,uv);
53  int i;
54  for(i=0;i<nMatch;i++) printf("i=%d, iStrip=%d type=%d\n",i,iStrip[i],type[i]);
55 
56  if(k<=0) return;
57  printf("%c-plain , X-off=%d, nDot='%s'\n",uv,nDot,pattXX);
58 
59  printf("iStrip:");
60  for(i=0;i<MaxSmdStrips;i++) {
61  if(hitOver[i]==0) break; // sense the terminating null
62  if(i%50==0) printf("\ni=%3d ",i);
63  if(i%10==0) printf(" ");
64  printf("%c",hitOver[i]);
65  }
66  printf("\n");
67 }
68 
69 //-------------------------------------------------
70 //-------------------------------------------------
71 void EEsmdPlain::findMipPattern(){
72  char *p=0;
73  nMatch=0;
74  // print(1);
75 
76  // ............. search for XX
77  p=dotArray;
78 
79  while((p=strstr(p,pattXX))) {
80  int j=p-hitOver+nDot;
81  assert(j>=0 && j<MaxSmdStrips); // logical error
82  iStrip[nMatch]=j;
83  type[nMatch]=2;
84  nMatch++;
85  p+=nDot;// move pointer a bit
86  }
87 
88 #if 1 //smdMap -- take it off for mapping test
89  // ............. search for X
90  p=dotArray;
91  while((p=strstr(p,pattX))) {
92  int j=p-hitOver+nDot;
93  // printf("aa %d %d \n", p-dotArray, j);
94  assert(j>=0 && j<MaxSmdStrips); // logical error
95  iStrip[nMatch]=j;
96  type[nMatch]=1;
97  nMatch++;
98  p+=nDot;// move pointer a bit
99  }
100 
101 #endif
102 }
103 
104 //-------------------------------------------------
105 //-------------------------------------------------
106 void EEsmdPlain::scanAdc(float *val, float thr) {
107 
108  int istrip;
109  for(istrip=0;istrip<MaxSmdStrips;istrip++) {
110  if( val[istrip]>thr) hitOver[istrip]='x';
111  // printf("istrip=%3d val=%6.2f --> '%c'\n",istrip,val[istrip],hitOver[istrip]);
112  }
113 }