CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
AutoCorrMat.h
Go to the documentation of this file.
1 /*
2  Author: Stan Durkin
3 
4 */
5 
6 #include <stdio.h>
7 #include <math.h>
8 #define LAYERS_ma 6
9 #define STRIPS_ma 80
10 
12 
13  public:
14 
16  for(int i=0;i<12;i++){
17  Mat[i]=0.0;
18  N[i]=0.0;
19  }
20  }
21 
23 
24  void zero(){
25  for(int i=0;i<12;i++){
26  Mat[i]=0.0;
27  N[i]=0.0;
28  }
29  for (int i=3;i<12;i++){
30  evar[i]=1;
31  variance[i]=10.0;
32  mymean[i]=3.2;
33  }
34  evt=0;
35  }
36 
37  void add(int *adc){
38  int pairs[12][2]={{3,3},{3,4},{4,4},{3,5},{4,5},{5,5},{4,6},{5,6},{6,6},{5,7},{6,7},{7,7}};
39  double ped=(adc[0]+adc[1])/2.;
40  evt++;
41 
42  for(int i=3;i<8;i++){
43  if(fabs(adc[i]-ped)<25.){
44  evar[i]++;
45  mymean[i] += adc[i]-ped;
46  variance[i] += (adc[i]-ped)*(adc[i]-ped);
47  }
48  }
49 
50  for(int i=0;i<12;i++){
51 
52  //Add values within 3 sigma of mean only
53  float threeSigma0 = 3. * sqrt(variance[pairs[i][0]]/evar[pairs[i][0]]);
54  float threeSigma1 = 3. * sqrt(variance[pairs[i][1]]/evar[pairs[i][1]]);
55 
56  if (fabs(adc[pairs[i][0]]-ped)<threeSigma0 && fabs(adc[pairs[i][1]]-ped)<threeSigma1){
57  N[i]=N[i]+1;
58  Mat[i]=Mat[i]+(adc[pairs[i][0]]-ped)*(adc[pairs[i][1]]-ped);
59  }
60  //end 3 sigma
61  }
62  }
63 
64  float *mat(){
65  float *tmp;
66  for(int i=0;i<12;i++)tMat[i]=Mat[i]/N[i];
67  tmp=tMat;
68  return tmp;
69  }
70 
71  private:
72 
73  float Mat[12];
74  float N[12];
75  float tMat[12];
76  float mymean[12];
77  float variance[12];
78  int evt;
79  int evar[12];
80 };
81 
83  public:
84 
87 
88  void zero(){
89  for(int lay=0;lay<6;lay++){
90  for(int strip=0;strip<STRIPS_ma;strip++){
91  CMat[lay][strip].zero();
92  }
93  }
94  }
95 
96  void add(int lay,int strip,int *adc){
97  CMat[lay][strip].add(adc);
98  }
99 
100  float *autocorrmat(int lay,int strip){
101  float *tmp;
102  tmp=m;
103  tmp=CMat[lay][strip].mat();
104  return tmp;
105  }
106 
107  private:
108 
110  float m[12];
111 
112 };
int adc(sample_type sample)
get the ADC sample (12 bits)
float tMat[12]
Definition: AutoCorrMat.h:75
float mymean[12]
Definition: AutoCorrMat.h:76
int i
Definition: DBlmapReader.cc:9
int evar[12]
Definition: AutoCorrMat.h:79
AutoCorrMat CMat[6][80]
Definition: AutoCorrMat.h:109
void add(int lay, int strip, int *adc)
Definition: AutoCorrMat.h:96
float * autocorrmat(int lay, int strip)
Definition: AutoCorrMat.h:100
float N[12]
Definition: AutoCorrMat.h:74
void zero()
Definition: AutoCorrMat.h:24
#define LAYERS_ma
Definition: AutoCorrMat.h:8
#define STRIPS_ma
Definition: AutoCorrMat.h:9
T sqrt(T t)
Definition: SSEVec.h:48
float * mat()
Definition: AutoCorrMat.h:64
float variance[12]
Definition: AutoCorrMat.h:77
float Mat[12]
Definition: AutoCorrMat.h:73
std::vector< std::vector< double > > tmp
Definition: MVATrainer.cc:100
void add(int *adc)
Definition: AutoCorrMat.h:37