CMS 3D CMS Logo

Conv Class Reference

#include <OnlineDB/CSCCondDB/interface/CSCxTalk.h>

List of all members.

Public Member Functions

 Conv ()
void convolution (float *xleft_a, float *xleft_b, float *min_left, float *xright_a, float *xright_b, float *min_right, float *pTime)
float elec (float t, float vs)
void mkbins (float vs)
 ~Conv ()

Public Attributes

float conv [3][120]
float convd [3][120]
float conve [120]
float nconvd [3][120]


Detailed Description

Definition at line 5 of file CSCxTalk.h.


Constructor & Destructor Documentation

Conv::Conv (  )  [inline]

Definition at line 9 of file CSCxTalk.h.

00009 {}

Conv::~Conv (  )  [inline]

Definition at line 149 of file CSCxTalk.h.

00149 {}


Member Function Documentation

void Conv::convolution ( float *  xleft_a,
float *  xleft_b,
float *  min_left,
float *  xright_a,
float *  xright_b,
float *  min_right,
float *  pTime 
) [inline]

Definition at line 39 of file CSCxTalk.h.

References conv, convd, conve, i, j, k, edm::es::l(), and max.

Referenced by CSCCrossTalkAnalyzer::~CSCCrossTalkAnalyzer(), and CSCOldCrossTalkAnalyzer::~CSCOldCrossTalkAnalyzer().

00039                                                                                                                                      {
00040     //void(convolution){  
00041     
00042     float max, cross0,cross2,min_l,min_r,sum_x=0.0,sumx2=0.;
00043     float sum_y_left=0.0,sum_y_right=0.0,sum_xy_left=0.0,sum_xy_right=0.0;
00044     float a_left=0.0,a_right=0.0,b_left=0.0,b_right=0.0,chi2_left=0.0,chi2_right=0.0,chi_left=0.0,chi_right=0.0;
00045     float aleft=0.0,aright=0.0,bleft=0.0,bright=0.0;
00046     int i,j,k,l,imax=0;
00047     
00048     for(l=0;l<3;l++){
00049       for(i=0;i<119;i++)conv[l][i]=0.0;
00050       for(j=0;j<119;j++){
00051         for(k=0;k<119;k++){
00052           if(j+k<119)conv[l][j+k]=conv[l][j+k]+convd[l][j]*conve[k];
00053         }
00054       }
00055     }
00056     max=0;
00057     min_l=9999999999999999.0;
00058     min_r=9999999999999999.0;
00059     for(i=0;i<119;i++){
00060       if(conv[1][i]>max){ 
00061         max=conv[1][i];
00062         imax=i;
00063       }
00064     }
00065     
00066     //find the max peak time from 3 timebins when line intersects x axis a+b*x=0 -> x=-a/b 
00067     float time1=-999.0, time2=-999.0, time3=-999.0;
00068     float data1=-999.0, data2=-999.0, data3=-999.0;
00069     float peakTime=0.0;
00070     
00071     time1=imax-1;
00072     time2=imax;
00073     time3=imax+1;
00074     
00075     data1=conv[1][imax-1];
00076     data2=conv[1][imax];
00077     data3=conv[1][imax+1];
00078     
00079     peakTime=(0.5)*((time1*time1*(data3-data2)+time2*time2*(data1-data3)+time3*time3*(data2-data1))/(time1*(data3-data2)+time2*(data1-data3)+time3*(data2-data1)))*6.25;
00080     
00081     for(l=0;l<3;l++){
00082       for(i=0;i<119;i++)conv[l][i]=conv[l][i]/max;
00083     }
00084     
00085     int nobs = 0;
00086     for (int j=0; j<119; j++){
00087       if (conv[1][j]>0.6) nobs++;
00088     }
00089     
00090     for(i=0;i<119;i++){
00091       cross0=0.0;
00092       cross2=0.0;
00093       
00094       if(conv[1][i]>0.6){
00095         cross0=conv[0][i]/(conv[0][i]+conv[1][i]+conv[2][i]);
00096         cross2=conv[2][i]/(conv[0][i]+conv[1][i]+conv[2][i]);
00097         
00098         sum_x += i;
00099         sum_y_left += cross0;
00100         sum_y_right += cross2;
00101         sumx2 += i*i;
00102         sum_xy_left += i*cross0;
00103         sum_xy_right += i*cross2;
00104       }
00105     }  
00106     
00107     //LMS fitting straight line y=a+b*x
00108     
00109     bleft  = ((nobs*sum_xy_left) - (sum_x * sum_y_left))/((nobs*sumx2) - (sum_x*sum_x));
00110     bright = ((nobs*sum_xy_right) - (sum_x * sum_y_right))/((nobs*sumx2) - (sum_x*sum_x));
00111     
00112     aleft  = ((sum_y_left*sumx2)-(sum_x*sum_xy_left))/((nobs*sumx2)-(sum_x*sum_x));
00113     aright = ((sum_y_right*sumx2)-(sum_x*sum_xy_right))/((nobs*sumx2)-(sum_x*sum_x));
00114     
00115     for(i=0;i<119;i++ ){
00116       chi2_left  += (cross0 -(aleft+(bleft*i)))*(cross0 -(aleft+(bleft*i)));
00117       chi2_right += (cross2 -(aright+(bright*i)))*(cross2 -(aright+(bright*i)));
00118     }   
00119     
00120     if(chi_left<min_l){
00121       min_l=chi_left;
00122       bleft=bleft;
00123       aleft=aleft;
00124     }
00125     if(chi_right<min_r){
00126       min_r=chi_right;
00127       bright=bright;
00128       aright=aright;
00129     }
00130     
00131     
00132     //Now calculating parameters in ns to compensate for drift in peak time  
00133     b_left  = bleft/6.25;
00134     b_right = bright/6.25;
00135     
00136     a_left  = aleft  + (bleft*peakTime/6.25);
00137     a_right = aright + (bright*peakTime/6.25);
00138     
00139     *xleft_a   = a_left; 
00140     *xleft_b   = b_left;
00141     *min_left  = chi2_left;
00142     *xright_a  = a_right;
00143     *xright_b  = b_right;
00144     *min_right = chi2_right;
00145     *pTime     = peakTime;
00146     
00147   } //end CONVOLUTION  

float Conv::elec ( float  t,
float  vs 
) [inline]

Definition at line 12 of file CSCxTalk.h.

References f, and funct::log().

Referenced by mkbins().

00012                               {
00013     float f;
00014     if (t<=vs){
00015       f=log(t+2.5)-log(2.5);
00016     }
00017     else{
00018       f=log(t+2.5)-log(t-50+2.5);
00019     }
00020     return f;
00021   }//end elec

void Conv::mkbins ( float  vs  )  [inline]

Definition at line 25 of file CSCxTalk.h.

References conve, elec(), i, k, and t.

Referenced by CSCCrossTalkAnalyzer::~CSCCrossTalkAnalyzer(), and CSCOldCrossTalkAnalyzer::~CSCOldCrossTalkAnalyzer().

00025                        {
00026     int i,k;
00027     float t;
00028     for(i=0;i<120;i++) conve[i]=0.0;
00029     for(i=0;i<120;i++){
00030       for(k=0;k<16;k++){
00031         t=(6.25*i)+(k*0.625);
00032         conve[i]=conve[i]+elec(t,vs);
00033       }
00034     }
00035   } //end mkbins


Member Data Documentation

float Conv::conv[3][120]

Definition at line 155 of file CSCxTalk.h.

Referenced by convolution().

float Conv::convd[3][120]

Definition at line 152 of file CSCxTalk.h.

Referenced by convolution(), CSCCrossTalkAnalyzer::~CSCCrossTalkAnalyzer(), and CSCOldCrossTalkAnalyzer::~CSCOldCrossTalkAnalyzer().

float Conv::conve[120]

Definition at line 154 of file CSCxTalk.h.

Referenced by convolution(), and mkbins().

float Conv::nconvd[3][120]

Definition at line 153 of file CSCxTalk.h.

Referenced by CSCCrossTalkAnalyzer::~CSCCrossTalkAnalyzer(), and CSCOldCrossTalkAnalyzer::~CSCOldCrossTalkAnalyzer().


The documentation for this class was generated from the following file:
Generated on Tue Jun 9 18:16:47 2009 for CMSSW by  doxygen 1.5.4