ATLAS Offline Software
Public Member Functions | Static Public Member Functions | Public Attributes | Private Types | Private Attributes | List of all members
TileOFCorrelation Class Reference

#include <TileOFCorrelation.h>

Collaboration diagram for TileOFCorrelation:

Public Member Functions

 TileOFCorrelation ()
 
 ~TileOFCorrelation ()
 
 TileOFCorrelation (const TileOFCorrelation &)=delete
 
TileOFCorrelationoperator= (const TileOFCorrelation &)=delete
 
void SetCorrelationZero (MsgStream &log, int dignum)
 
void SetCorrelationDelta (MsgStream &log, int dignum)
 
void Sum (std::vector< float > &digits, int ros, int drawer, int channel, int gain, MsgStream &log, bool debug, int &dignum, bool doRobustCov)
 
void RunningCorrelation (std::vector< float > &digits, int ros, int drawer, int channel, int gain, MsgStream &log, bool debug, int &dignum, int chthres)
 
void CalcCorrelation (MsgStream &log, int dignum, bool flag_7to9, bool doRobustCov)
 
void CalcRunningCorrelation (MsgStream &log, int dignum, int chthres, bool flag_7to9)
 
void GetCorrelation (int dignum, float tmpCorr[][9], int ros, int drawer, int chan, int gain)
 
void PrintCorrelation (int dignum)
 
void SaveCorrelationSumm (bool deltaCorrelation, const std::string &OptFilterFile_CorrelationSumm, const TileHWID *tileHWID, MsgStream &log, int dignum)
 
void SaveCorrelationMatrix (bool deltaCorrelation, const std::string &OptFilterFile_CorrelationMatrix, const TileHWID *tileHWID, MsgStream &log, int dignum)
 
void CalcWeights (bool of2, bool deltaCorrelation, const std::vector< double > &LshapeForm, const std::vector< double > &HshapeForm, const std::vector< double > &LdshapeForm, const std::vector< double > &HdshapeForm, MsgStream &log, int ros, int drawer, int channel, int gain, int dignum)
 
void WriteWeightsToFile (bool deltaCorrelation, int dignum, const std::string &m_OptFilterFile_ai_lo, const std::string &m_OptFilterFile_bi_lo, const std::string &m_OptFilterFile_ai_hi, const std::string &m_OptFilterFile_bi_hi, int ros, int drawer, int channel, int gain, const TileHWID *tileHWID, MsgStream &log)
 
void CloseWeightsFile (std::string OptFilterFile_ai_lo, std::string OptFilterFile_bi_lo, std::string OptFilterFile_ai_hi, std::string OptFilterFile_bi_hi, MsgStream &log)
 
float * getCorrelationSumm (bool deltaCorrelation, int ros, int drawer, int channel, int gain, int dignum)
 

Static Public Member Functions

static void BuildPulseShape (std::vector< double > &pulseShape, std::vector< double > &pulseShapeX, std::vector< double > &pulseShapeT, int dignum, MsgStream &log)
 
static void OpenWeightsFile (const std::string &OptFilterFile_ai_lo, const std::string &OptFilterFile_bi_lo, const std::string &OptFilterFile_ai_hi, const std::string &OptFilterFile_bi_hi, MsgStream &log)
 

Public Attributes

double w_a [201][9] ={}
 
double w_b [201][9] ={}
 
double w_c [201][9] ={}
 
double g [201][9] ={}
 

Private Types

using Tile = TileCalibUtils
 

Private Attributes

double(* m_SS )[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN][NDIG][NDIG]
 
double(* m_S )[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN][NDIG]
 
double(* m_R )[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN][NDIG][NDIG]
 
std::vector< std::vector< float > > m_DataVector [NPARTITIONS][Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN]
 
double m_corr2 [NDIG]
 
double(* m_corr_sum )[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN][NDIG]
 
double(* m_corr_sum_sq )[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN][NDIG]
 
double m_ncorr
 
float m_corr [8]
 
int(* m_N )[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN]
 
int m_jentry
 
int m_lag
 
int(* m_N_pairs )[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN][NDIG]
 
double m_N_d
 
double(* m_S1 )[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN][NDIG]
 
double(* m_S2 )[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN][NDIG]
 
double(* m_S11 )[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN][NDIG]
 
double(* m_S12 )[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN][NDIG]
 
double(* m_S22 )[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN][NDIG]
 

Detailed Description

Definition at line 31 of file TileOFCorrelation.h.

Member Typedef Documentation

◆ Tile

Definition at line 98 of file TileOFCorrelation.h.

Constructor & Destructor Documentation

◆ TileOFCorrelation() [1/2]

TileOFCorrelation::TileOFCorrelation ( )

◆ ~TileOFCorrelation()

TileOFCorrelation::~TileOFCorrelation ( )

Definition at line 60 of file TileOFCorrelation.cxx.

61 {
62  delete[] m_SS;
63  delete[] m_S;
64  delete[] m_R;
65  delete[] m_corr_sum;
66  delete[] m_corr_sum_sq;
67  delete[] m_N;
68  delete[] m_N_pairs;
69  delete[] m_S1;
70  delete[] m_S2;
71  delete[] m_S11;
72  delete[] m_S12;
73  delete[] m_S22;
74 }

◆ TileOFCorrelation() [2/2]

TileOFCorrelation::TileOFCorrelation ( const TileOFCorrelation )
delete

Member Function Documentation

◆ BuildPulseShape()

void TileOFCorrelation::BuildPulseShape ( std::vector< double > &  pulseShape,
std::vector< double > &  pulseShapeX,
std::vector< double > &  pulseShapeT,
int  dignum,
MsgStream &  log 
)
static

Definition at line 889 of file TileOFCorrelation.cxx.

894 {
895  log<<MSG::DEBUG<<"TileCalorimeter::BuildPulseShape"<<endmsg;
896 
897  //1: set pulseShape
898  int shape_size=(dignum-1)*25+200;
899  pulseShape.resize(shape_size);
900  log<<MSG::DEBUG<<"Set dimension of pulseShape to shape_sie="<<shape_size<<endmsg;
901 
902  //2: scan pulseShapeT for: tmin, tmax, nt0 and size: pulseShapeX[nt0]=1.0;
903  int nt0=0, size;
904  double tmin=10000., tmax=-10000.;
905  int ntmin=0, ntmax=0;
906  size=pulseShapeT.size();
907  for (int i=0; i<size;i++){
908  if (pulseShapeT[i]<tmin) {
909  tmin=pulseShapeT[i];
910  ntmin=i;
911  }
912  if (pulseShapeT[i]>tmax){
913  tmax=pulseShapeT[i];
914  ntmax=i;
915  }
916  if (pulseShapeT[i]==0) nt0=i;
917  }
918  log<<MSG::DEBUG<<"pulseShapeX & pulseShapeT size ="<<size<<", tmin="<<tmin<<", tmax="<<tmax<<" nt0="<<nt0<<" pulseShapeT[nt0]="<<pulseShapeT[nt0]<<" pulseShapeX[nt0]="<<pulseShapeX[nt0]<<endmsg;
919 
920  //3: fill pulseShape
921  bool exact;
922  int nminn, nminp;
923  double minn, minp, tdist;
924  pulseShape[(shape_size)/2]=pulseShapeX[nt0];
925  // for (int i=1;i<(shape_size)/2+1;i++){
926  for (int i=1;i<(shape_size)/2;i++){
927  // negative times: 0->(shape_size-1)/2
928  // if (-i<tmin) pulseShape[(shape_size)/2-i]=0.;
929  if (-i<tmin) pulseShape[(shape_size)/2-i]=pulseShapeX[ntmin];
930  else{
931  exact=false;
932  minn=-10000.;
933  minp=10000.;
934  nminn=0;
935  nminp=size-1;
936  for (int j=0;j<nt0+1&&!exact;j++){
937  if (pulseShapeT[j]==double(-i)){
938  pulseShape[(shape_size)/2-i]=pulseShapeX[j];
939  exact=true;
940  }else{
941  tdist=pulseShapeT[j]-double(-i);
942  if (tdist < 0. && tdist>minn){
943  minn=tdist;
944  nminn=j;
945  }
946  if (tdist>0. && tdist<minp){
947  minp=tdist;
948  nminp=j;
949  }
950  }
951  }
952 
953  if (exact)
954  log<<MSG::VERBOSE<<"exact value found for time="<<-i<<" pulseShape="<<pulseShape[(shape_size)/2-i]<<endmsg;
955  else{
956  // if (exact)
957  log<<MSG::VERBOSE<<"exact value NOT found for time="<<-i
958  <<" nminn="<<nminn<<" pulseShapeT="<<pulseShapeT[nminn]<<" pulseShapeX="<<pulseShapeX[nminn]<<std::endl
959  <<" nminp="<<nminp<<" pulseShapeT="<<pulseShapeT[nminp]<<" pulseShapeX="<<pulseShapeX[nminp]<<endmsg;
960  pulseShape[(shape_size)/2-i]=pulseShapeX[nminn]+(pulseShapeX[nminp]-pulseShapeX[nminn])/(pulseShapeT[nminp]-pulseShapeT[nminn])*(-i-pulseShapeT[nminn]);
961  }
962 
963  }
964 
965  // positive times: (shape_size-1)/2->shape_size
966  // if (i>tmax) pulseShape[(shape_size)/2+i]=0.;
967  if (i>tmax) pulseShape[(shape_size)/2+i]=pulseShapeX[ntmax];
968  else{
969  exact=false;
970  minn=-10000.;
971  minp=10000.;
972  nminn=0;
973  nminp=size;
974  for (int j=nt0;j<size&&!exact;j++){
975  if (pulseShapeT[j]==double(i)){
976  pulseShape[(shape_size)/2+i]=pulseShapeX[j];
977  exact=true;
978  }else{
979  tdist=pulseShapeT[j]-double(i);
980  if (tdist<0)
981  if (tdist>minn)
982  {
983  minn=tdist;
984  nminn=j;
985  }
986  if (tdist>0)
987  if (tdist<minp){
988  minp=tdist;
989  nminp=j;
990  }
991  }
992  }
993  if (exact)
994  log<<MSG::VERBOSE<<"exact value found for time="<<i<<" pulseShape="<<pulseShape[(shape_size)/2+i]<<endmsg;
995  else{
996  // if (exact)
997  log<<MSG::VERBOSE<<"exact value NOT found for time="<<i
998  <<" nminn="<<nminn<<" pulseShapeT="<<pulseShapeT[nminn]<<" pulseShapeX="<<pulseShapeX[nminn]<<std::endl
999  <<" nminp="<<nminp<<" pulseShapeT="<<pulseShapeT[nminp]<<" pulseShapeX="<<pulseShapeX[nminp]<<endmsg;
1000 
1001  pulseShape[(shape_size)/2+i]=pulseShapeX[nminn]+(pulseShapeX[nminp]-pulseShapeX[nminn])/(pulseShapeT[nminp]-pulseShapeT[nminn])*(i-pulseShapeT[nminn]);
1002  }
1003  }
1004  }
1005 
1006 }

◆ CalcCorrelation()

void TileOFCorrelation::CalcCorrelation ( MsgStream &  log,
int  dignum,
bool  flag_7to9,
bool  doRobustCov 
)

Definition at line 176 of file TileOFCorrelation.cxx.

177 {
178  log<<MSG::DEBUG<<"TileOFCorrelation::CalcCorrelation"<<endmsg;
179 
180  double denominator=0.;
181 
182  TMatrixDSym TempMatrix(dignum);
183 
184  double *Row = new double[dignum];
185  for (int ros=0;ros<4;ros++)
186  for (int drawer=0;drawer<64;drawer++)
187  for (int channel=0;channel<48;channel++)
188  for (int gain=0;gain<2;gain++){
189  double N_d=double(m_N[ros][drawer][channel][gain]);
190  //if (N_d>0.) cout<<" TileOFCorrelation::CalcCorrelation, ros="<<ros<<" drawer="<<drawer<<" channel="<<channel<<" gain="<<gain<<" N_d="<<N_d<<endl;
191  if (doRobustCov){
192  if (N_d>10){
193  TRobustEstimator REstimator(m_N[ros][drawer][channel][gain],dignum);
194  for (int i=0;i<m_N[ros][drawer][channel][gain];i++){
195  for (int j=0; j<dignum;j++){
196  Row[j]=m_DataVector[ros][drawer][channel][gain].at(i).at(j);
197  }
198  REstimator.AddRow(Row);
199  }
200  REstimator.Evaluate();
201  REstimator.GetCovariance(TempMatrix);
202  for (int i=0;i<dignum;i++)
203  for (int j=0;j<dignum;j++)
204  m_R[ros][drawer][channel][gain][i][j]= TempMatrix(i,j);
205 
206  } else {
207  if(dignum==7 && flag_7to9)
208  for (int j=0;j<9;j++)
209  m_R[ros][drawer][channel][gain][j][j]=1.;
210 
211  for (int i=0;i<dignum;i++){
212  for (int j=0;j<dignum;j++){
213  if (N_d>0.){
215  (N_d*m_SS[ros][drawer][channel][gain][j][j]-m_S[ros][drawer][channel][gain][j]*m_S[ros][drawer][channel][gain][j]);
216  if(denominator!=0){
217  m_R[ros][drawer][channel][gain][i][j]=
218  (N_d*m_SS[ros][drawer][channel][gain][i][j]-m_S[ros][drawer][channel][gain][i]*m_S[ros][drawer][channel][gain][j])/sqrt(denominator);
219  }else{
220  m_R[ros][drawer][channel][gain][i][j]=0.;
221  }
222  }
223  else m_R[ros][drawer][channel][gain][i][j]=-1234.;
224  }
225  }
226  }
227  } else {
228  if(dignum==7 && flag_7to9)
229  for (int j=0;j<9;j++)
230  m_R[ros][drawer][channel][gain][j][j]=1.;
231 
232  for (int i=0;i<dignum;i++){
233  for (int j=0;j<dignum;j++){
234  if (N_d>0.){
236  (N_d*m_SS[ros][drawer][channel][gain][j][j]-m_S[ros][drawer][channel][gain][j]*m_S[ros][drawer][channel][gain][j]);
237  if(denominator!=0){
238  m_R[ros][drawer][channel][gain][i][j]=
239  (N_d*m_SS[ros][drawer][channel][gain][i][j]-m_S[ros][drawer][channel][gain][i]*m_S[ros][drawer][channel][gain][j])/sqrt(denominator);
240  }else{
241  m_R[ros][drawer][channel][gain][i][j]=0.;
242  }
243  }
244  else m_R[ros][drawer][channel][gain][i][j]=-1234.;
245  }
246  }
247  }
248  }
249  delete [] Row;
250  for (int ros=0;ros<4;ros++)
251  for (int drawer=0;drawer<64;drawer++)
252  for (int channel=0;channel<48;channel++)
253  for (int gain=0;gain<2;gain++){
254  vector < vector <float> > x;
255  m_DataVector[ros][drawer][channel][gain].swap(x);
256  }
257 }

◆ CalcRunningCorrelation()

void TileOFCorrelation::CalcRunningCorrelation ( MsgStream &  log,
int  dignum,
int  chthres,
bool  flag_7to9 
)

Definition at line 334 of file TileOFCorrelation.cxx.

335 {
336  for (int ros=0;ros<4;ros++)
337  for (int drawer=0;drawer<64;drawer++)
338  for (int channel=0;channel<48;channel++)
339  for (int gain=0;gain<2;gain++){
341  m_ncorr=double(m_jentry-chthres);
342 
343  if (m_jentry>0){
344  if (flag_7to9 && dignum==7){
345  for (int i=0;i<9;i++)
346  m_R[ros][drawer][channel][gain][i][i]=1.;
347 
348  for (m_lag=1;m_lag<9;m_lag++)
349  for (int i=0;i<9-m_lag;i++){
350  if (m_lag<7){
353  }else{
354  m_R[ros][drawer][channel][gain][i][i+m_lag]=0.;
355  m_R[ros][drawer][channel][gain][i+m_lag][i]=0.;
356  }
357  if (-1.>m_R[ros][drawer][channel][gain][i][i+m_lag] || m_R[ros][drawer][channel][gain][i][i+m_lag]>1.)
358  m_R[ros][drawer][channel][gain][i][i+m_lag]=0.;
359 
360  if (-1.>m_R[ros][drawer][channel][gain][i+m_lag][i] || m_R[ros][drawer][channel][gain][i+m_lag][i]>1.)
361  m_R[ros][drawer][channel][gain][i+m_lag][i]=0.;
362 
363  }
364  }else{
365  for (int i=0;i<dignum;i++)
366  m_R[ros][drawer][channel][gain][i][i]=1.;
367 
368  for (m_lag=1;m_lag<dignum;m_lag++)
369  for (int i=0;i<dignum-m_lag;i++){
372 
373  if (-1.>m_R[ros][drawer][channel][gain][i][i+m_lag] || m_R[ros][drawer][channel][gain][i][i+m_lag]>1.)
374  m_R[ros][drawer][channel][gain][i][i+m_lag]=0.;
375  if (-1.>m_R[ros][drawer][channel][gain][i+m_lag][i] || m_R[ros][drawer][channel][gain][i+m_lag][i]>1.)
376  m_R[ros][drawer][channel][gain][i+m_lag][i]=0.;
377  }
378  }
379  }
380  }
381 }

◆ CalcWeights()

void TileOFCorrelation::CalcWeights ( bool  of2,
bool  deltaCorrelation,
const std::vector< double > &  LshapeForm,
const std::vector< double > &  HshapeForm,
const std::vector< double > &  LdshapeForm,
const std::vector< double > &  HdshapeForm,
MsgStream &  log,
int  ros,
int  drawer,
int  channel,
int  gain,
int  dignum 
)

Definition at line 592 of file TileOFCorrelation.cxx.

604 {
605  log<<MSG::DEBUG<<" TileOFCorrelation::CalcWeights"<<endmsg;
606 
607  HepMatrix Correlation(dignum,dignum,0), Inverse(dignum,dignum,0), Zero(dignum,dignum,0);
608  HepMatrix PulseShape(dignum,1,0), DPulseShape(dignum,1,0);
609  HepMatrix a(dignum,1,0), b(dignum,1,0), WeightZero(dignum,1,0);
610 
611  int ierr=0;
612 
613  if(of2)
614  log<<MSG::INFO<<" Calculating OF2 weights ";
615  else
616  log<<MSG::INFO<<" Calculating OF1 weights ";
617  if (deltaCorrelation)
618  log<<MSG::INFO<<"with Delta correlation matrix "<<endmsg;
619  else
620  log<<MSG::INFO<<"with correlation matrix obtained from data "<<endmsg;
621  log<<MSG::INFO<<"for ros="<<ros<<" drawer="<<drawer<<" channel="<<channel<<
622  " gain="<<gain<<endmsg;
623 
624 
625 
626  if (deltaCorrelation){
627 
628  for (int i=0;i<dignum;i++)
629  for (int j=0;j<dignum;j++)
630  Correlation[i][j]=m_R[0][0][0][0][i][j];
631 
632  Inverse=Correlation.inverse(ierr);
633 
634  for (int pha=-100;pha<101;pha++){
635 
636  if (ierr==0){
637  for (int i=0;i<dignum;i++){
638  if (gain==0){
639  PulseShape[i][0]=LshapeForm[i*25+100+pha];
640  DPulseShape[i][0]=LdshapeForm[i*25+100+pha];
641  }else{
642  PulseShape[i][0]=HshapeForm[i*25+100+pha];
643  DPulseShape[i][0]=HdshapeForm[i*25+100+pha];
644  }
645  g[pha+100][i]=PulseShape[i][0];
646  }
647 
648  // Build System Matrix with Correlations and pulse function points
649 
650  if(!of2){ // OF1
651  HepMatrix SystemMatrix(dignum+2,dignum+2,0);
652  HepVector Result(dignum + 2,0);
653  HepVector IndependTermsAmp(dignum+2,0);
654  HepVector IndependTermsTime(dignum+2,0);
655  for (int i=0; i<dignum; i++){
656 
657  for (int j=0; j<dignum; j++){
658  SystemMatrix[i][j]=Correlation[i][j];
659  }
660  SystemMatrix[dignum][i] = PulseShape[i][0];
661  SystemMatrix[i][dignum] = PulseShape[i][0];
662 
663  SystemMatrix[dignum + 1][i] = DPulseShape[i][0];
664  SystemMatrix[i][dignum + 1] = DPulseShape[i][0];
665 
666  }
667 
668  IndependTermsAmp[dignum] = 1.;
669  IndependTermsTime[dignum+1] = -1.;
670 
671  Result = solve(SystemMatrix,IndependTermsAmp);
672 
673  for (int ismp=0; ismp<dignum; ismp++) {
674  w_a[pha+100][ismp] = (double)Result[ismp];
675  }
676 
677  Result = solve(SystemMatrix,IndependTermsTime);
678 
679  for (int ismp=0; ismp<dignum; ismp++){
680  w_b[pha+100][ismp] = (double)Result[ismp];
681  }
682 
683  }else{ // OF2
684  HepMatrix SystemMatrix(dignum+3,dignum+3,0);
685  HepVector Result(dignum+3,0);
686  HepVector IndependTermsAmp(dignum+3,0);
687  HepVector IndependTermsTime(dignum+3,0);
688  HepVector IndependTermsPed(dignum+3,0);
689 
690  for (int i=0; i<dignum; i++){
691  for (int j=0; j<dignum; j++){
692  SystemMatrix[i][j]=Correlation[i][j];
693  }
694  SystemMatrix[dignum][i] = PulseShape[i][0];
695  SystemMatrix[i][dignum] = PulseShape[i][0];
696 
697  SystemMatrix[dignum + 1][i] = DPulseShape[i][0];
698  SystemMatrix[i][dignum + 1] = DPulseShape[i][0];
699 
700 
701  SystemMatrix[dignum + 2][i] = 1.;
702  SystemMatrix[i][dignum + 2] = 1.;
703  }
704 
705  IndependTermsAmp[dignum] = 1.;
706  IndependTermsTime[dignum+1] = -1.;
707  IndependTermsPed[dignum+2] = 1.;
708 
709  Result = solve(SystemMatrix,IndependTermsAmp);
710 
711  for (int ismp=0; ismp<dignum; ismp++) {
712  w_a[pha+100][ismp] = (double)Result[ismp];
713  }
714 
715  Result = solve(SystemMatrix,IndependTermsTime);
716 
717  for (int ismp=0; ismp<dignum; ismp++){
718  w_b[pha+100][ismp] = (double)Result[ismp];
719  }
720 
721  Result = solve(SystemMatrix,IndependTermsPed);
722 
723  for (int ismp=0; ismp<dignum; ismp++){
724  w_c[pha+100][ismp] = (double)Result[ismp];
725  }
726 
727  }
728  }else{
729  for (int ismp=0; ismp<dignum; ismp++){
730  w_a[pha+100][ismp] = 0.;
731  w_b[pha+100][ismp] = 0.;
732  w_c[pha+100][ismp] = 0.;
733  }
734  }
735  }// Pha
736  }else{
737  printf("ros=%d drawer=%d channel=%d gain=%d N=%d \n",
739  if (m_N[ros][drawer][channel][gain]>0){
740 
741  for (int i=0;i<dignum;i++)
742  for (int j=0;j<dignum;j++)
743  Correlation[i][j]=m_R[ros][drawer][channel][gain][i][j];
744 
745  Inverse=Correlation.inverse(ierr);
746 
747  if(ierr!=0){
748  log<<MSG::WARNING<<" Correlation matrix cannot be inverted for ros="<<ros<<" drawer="<<drawer
749  <<" channel="<<channel<<" gain="<<gain<<endmsg;
750  log<<MSG::WARNING<<" Weights set to zero for this channel..."<<endmsg;
751  for (int i=0; i<dignum; i++){
752  for (int j=0; j<dignum; j++){
753  printf("%4.4f ",m_R[ros][drawer][channel][gain][i][j]);
754  }
755  printf("\n");
756  }
757  }
758 
759  for (int pha=-100;pha<101;pha++){
760 
761  if (ierr==0){
762  for (int i=0;i<dignum;i++){
763  if (gain==0){
764  PulseShape[i][0]=LshapeForm[i*25+100+pha];
765  DPulseShape[i][0]=LdshapeForm[i*25+100+pha];
766  }else{
767  PulseShape[i][0]=HshapeForm[i*25+100+pha];
768  DPulseShape[i][0]=HdshapeForm[i*25+100+pha];
769  }
770  g[pha+100][i]=PulseShape[i][0];
771  }
772 
773  // Build System Matrix with Correlations and pulse function points
774  if(!of2){ // OF1
775  HepMatrix SystemMatrix(dignum+2,dignum+2,0);
776  HepVector Result(dignum + 2,0);
777  HepVector IndependTermsAmp(dignum+2,0);
778  HepVector IndependTermsTime(dignum+2,0);
779 
780  for (int i=0; i<dignum; i++){
781  for (int j=0; j<dignum; j++){
782  SystemMatrix[i][j]=Correlation[i][j];
783  }
784  SystemMatrix[dignum][i] = PulseShape[i][0];
785  SystemMatrix[i][dignum] = PulseShape[i][0];
786 
787  SystemMatrix[dignum + 1][i] = DPulseShape[i][0];
788  SystemMatrix[i][dignum + 1] = DPulseShape[i][0];
789  }
790 
791  IndependTermsAmp[dignum] = 1.;
792  IndependTermsTime[dignum+1] = -1.;
793 
794  Result = solve(SystemMatrix,IndependTermsAmp);
795 
796  for (int ismp=0; ismp<dignum; ismp++) {
797  w_a[pha+100][ismp] = (double)Result[ismp];
798  }
799 
800  Result = solve(SystemMatrix,IndependTermsTime);
801 
802  for (int ismp=0; ismp<dignum; ismp++){
803  w_b[pha+100][ismp] = (double)Result[ismp];
804  }
805  }else{ // OF2
806 
807  HepMatrix SystemMatrix(dignum+3,dignum+3,0);
808  HepVector Result(dignum + 3,0);
809  HepVector IndependTermsAmp(dignum+3,0);
810  HepVector IndependTermsTime(dignum+3,0);
811  HepVector IndependTermsPed(dignum+3,0);
812 
813  for (int i=0; i<dignum; i++){
814  for (int j=0; j<dignum; j++){
815  SystemMatrix[i][j]=Correlation[i][j];
816  }
817  SystemMatrix[dignum][i] = PulseShape[i][0];
818  SystemMatrix[i][dignum] = PulseShape[i][0];
819 
820  SystemMatrix[dignum + 1][i] = DPulseShape[i][0];
821  SystemMatrix[i][dignum + 1] = DPulseShape[i][0];
822 
823  SystemMatrix[dignum + 2][i] = 1.;
824  SystemMatrix[i][dignum + 2] = 1.;
825  }
826 
827  IndependTermsAmp[dignum] = 1.;
828  IndependTermsTime[dignum+1] = -1.;
829  IndependTermsPed[dignum+2] = 1.;
830 
831  Result = solve(SystemMatrix,IndependTermsAmp);
832 
833  for (int ismp=0; ismp<dignum; ismp++) {
834  w_a[pha+100][ismp] = (double)Result[ismp];
835  }
836 
837  Result = solve(SystemMatrix,IndependTermsTime);
838 
839  for (int ismp=0; ismp<dignum; ismp++){
840  w_b[pha+100][ismp] = (double)Result[ismp];
841  }
842 
843  Result = solve(SystemMatrix,IndependTermsPed);
844 
845  for (int ismp=0; ismp<dignum; ismp++){
846  w_c[pha+100][ismp] = (double)Result[ismp];
847  }
848 
849  if(ros==1 && drawer==52 && channel==43 && gain==1){
850  printf("PHASE: %d deter=%f\n",pha,SystemMatrix.determinant());
851  for (int i=0; i<dignum+2; i++){
852  for (int j=0; j<dignum+2; j++){
853  printf("%4.4f ",SystemMatrix[i][j]);
854  }
855  printf("\n");
856  }
857  for (int i=0; i<dignum; i++){
858  for (int j=0; j<dignum; j++){
859  printf("%4.4f ",m_R[ros][drawer][channel][gain][i][j]);
860  }
861  printf("\n");
862  }
863  for (int ismp=0; ismp<dignum; ismp++)
864  printf("samp: %d ->w_a: %f w_b:%f\n",
865  ismp,w_a[pha+100][ismp],w_b[pha+100][ismp]);
866  }
867  }
868 
869  }else{
870  for (int ismp=0; ismp<dignum; ismp++){
871  w_a[pha+100][ismp] = 0.;
872  w_b[pha+100][ismp] = 0.;
873  w_c[pha+100][ismp] = 0.;
874  }
875  }
876  }// END pha
877  }// END ch + gain + if m_N>0
878 
879  }// IF delta
880 
881  log<<MSG::VERBOSE<<"...weights calculated"<<endmsg;
882 
883 }

◆ CloseWeightsFile()

void TileOFCorrelation::CloseWeightsFile ( std::string  OptFilterFile_ai_lo,
std::string  OptFilterFile_bi_lo,
std::string  OptFilterFile_ai_hi,
std::string  OptFilterFile_bi_hi,
MsgStream &  log 
)

◆ GetCorrelation()

void TileOFCorrelation::GetCorrelation ( int  dignum,
float  tmpCorr[][9],
int  ros,
int  drawer,
int  chan,
int  gain 
)

Definition at line 385 of file TileOFCorrelation.cxx.

386 {
387 
388  for(int i=0;i<dignum;i++)
389  {
390  for(int j=0;j<dignum;j++)
391  {
392  tmpCorr[i][j] = m_R[ros][drawer][chan][gain][i][j];
393  }
394  }
395 }

◆ getCorrelationSumm()

float * TileOFCorrelation::getCorrelationSumm ( bool  deltaCorrelation,
int  ros,
int  drawer,
int  channel,
int  gain,
int  dignum 
)

Definition at line 497 of file TileOFCorrelation.cxx.

503 {
504 
505  if(!deltaCorrelation){
506 
507  if (m_N[ros][drawer][channel][gain]>0){
508  for (int i=1;i<dignum;i++){
509  if (m_R[ros][drawer][channel][gain][0][i]>-100000.
510  && m_R[ros][drawer][channel][gain][0][i]<100000.)
511  m_corr[i-1]=m_R[ros][drawer][channel][gain][0][i];
512  else
513  m_corr[i-1]=0.0;
514  }
515  }
516 
517  }
518 
519  return m_corr;
520 
521 }

◆ OpenWeightsFile()

void TileOFCorrelation::OpenWeightsFile ( const std::string &  OptFilterFile_ai_lo,
const std::string &  OptFilterFile_bi_lo,
const std::string &  OptFilterFile_ai_hi,
const std::string &  OptFilterFile_bi_hi,
MsgStream &  log 
)
static

Definition at line 1105 of file TileOFCorrelation.cxx.

1110 {
1111  log<<MSG::DEBUG<<" TileOFCorrelation::OpenWeightsFile"<<endmsg;
1112  fstream *f_ai_lo = new fstream(OptFilterFile_ai_lo.c_str(), fstream::trunc|fstream::out);
1113  fstream *f_bi_lo = new fstream(OptFilterFile_bi_lo.c_str(), fstream::trunc|fstream::out);
1114  fstream *f_ai_hi = new fstream(OptFilterFile_ai_hi.c_str(), fstream::trunc|fstream::out);
1115  fstream *f_bi_hi = new fstream(OptFilterFile_bi_hi.c_str(), fstream::trunc|fstream::out);
1116 
1117  f_ai_lo->open(OptFilterFile_ai_hi.c_str(), fstream::trunc|fstream::out);
1118  f_bi_lo->open(OptFilterFile_ai_hi.c_str(), fstream::trunc|fstream::out);
1119  f_ai_hi->open(OptFilterFile_ai_hi.c_str(), fstream::trunc|fstream::out);
1120  f_bi_hi->open(OptFilterFile_ai_hi.c_str(), fstream::trunc|fstream::out);
1121 }

◆ operator=()

TileOFCorrelation& TileOFCorrelation::operator= ( const TileOFCorrelation )
delete

◆ PrintCorrelation()

void TileOFCorrelation::PrintCorrelation ( int  dignum)

Definition at line 398 of file TileOFCorrelation.cxx.

399 {
400 
401  cout<<" TileOFCorrelation::PrintCorrelation()..."<<endl;
402  for (int ros=3;ros<4;ros++){
403  cout<<" ros="<<ros<<endl;
404  for (int drawer=0;drawer<64;drawer++){
405  cout<<" drawer="<<drawer<<endl;
406  for (int channel=0;channel<48;channel++){
407  cout<<" channel="<<channel<<endl;
408  for (int gain=0;gain<2;gain++){
409  cout<<" gain="<<gain<<endl;
410  for (int i=0;i<dignum;i++){
411  for (int j=0;j<dignum;j++){
412  cout<<" "<<m_R[ros][drawer][channel][gain][i][j];
413  }
414  cout<<endl;
415  }
416  cout<<endl;
417  }
418  }
419  }
420  }
421 
422 }

◆ RunningCorrelation()

void TileOFCorrelation::RunningCorrelation ( std::vector< float > &  digits,
int  ros,
int  drawer,
int  channel,
int  gain,
MsgStream &  log,
bool  debug,
int &  dignum,
int  chthres 
)

Definition at line 262 of file TileOFCorrelation.cxx.

263 {
264  log<<MSG::VERBOSE<<"TileOFCorrelation::RunningCorrelation"<<endmsg;
265  dignum=digits.size();
266 
267  double denominator=0.;
268 
269  //chthres=10;
270  //update sums
271  m_N[ros][drawer][channel][gain]++;
274 
275  if (ros==1 && drawer==1 && channel==0 && gain==1)
276  log<<MSG::VERBOSE<<"Computing RunningCorrelation for jentry="<<m_jentry<<endmsg;
277 
278  for (m_lag=1;m_lag<dignum;m_lag++){
279  for (int i=0; i<dignum-m_lag; i++){
280  m_S1[ros][drawer][channel][gain][m_lag-1]+=digits[i];
281  m_S2[ros][drawer][channel][gain][m_lag-1]+=digits[i+m_lag];
282  m_S12[ros][drawer][channel][gain][m_lag-1]+=digits[i]*digits[i+m_lag];
283  m_S11[ros][drawer][channel][gain][m_lag-1]+=digits[i]*digits[i];
284  m_S22[ros][drawer][channel][gain][m_lag-1]+=digits[i+m_lag]*digits[i+m_lag];
285  m_N_pairs[ros][drawer][channel][gain][m_lag-1]++;
286  }
287  if (m_lag==1 && ros==1 && drawer==1 && channel==0 && gain==1)
288  log<<MSG::VERBOSE<<" jentry="<<m_jentry<<" m_N="<<m_N_pairs[ros][drawer][channel][gain][m_lag-1]<<" S1="<<m_S1[ros][drawer][channel][gain][m_lag-1]<<endmsg;
289 
290 
291  if (m_jentry>chthres){
293 
298 
299  if(denominator!=0){
300  m_corr2[m_lag-1]=
303  }else{
304  m_corr2[m_lag-1]=0.;
305  }
306 
307  if (m_lag==1 && ros==1 && drawer==1 && channel==0 && gain==1)
308  log<<MSG::DEBUG
309  <<" m_corr2="<<m_corr2[m_lag-1]
310  <<" m_corr_sum="<<m_corr_sum[ros][drawer][channel][gain][m_lag-1]
311  <<" m_corr_sum_sq="<<m_corr_sum_sq[ros][drawer][channel][gain][m_lag-1]
312  <<endmsg;
313 
316 
317  if (m_lag==1 && ros==1 && drawer==1 && channel==0 && gain==1)
318  log<<MSG::DEBUG
319  <<" jentry="<<m_jentry<<" jentry-chthres="<<m_jentry-chthres<<" m_lag=1, ros=1, drawer=1, channel=0, gain=1"
320  <<" m_corr2="<<m_corr2[m_lag-1]
321  <<" sum corr_mean="<<m_corr_sum[ros][drawer][channel][gain][m_lag-1]
322  <<" corr_mean="<<m_corr_sum[ros][drawer][channel][gain][m_lag-1]/(m_jentry-chthres)
323  <<" sum RMS="<<m_corr_sum_sq[ros][drawer][channel][gain][m_lag-1]
324  <<" RMS="<<sqrt(m_corr_sum_sq[ros][drawer][channel][gain][m_lag-1]*(m_jentry-chthres)
326  <<endmsg;
327  }
328  }
329 }

◆ SaveCorrelationMatrix()

void TileOFCorrelation::SaveCorrelationMatrix ( bool  deltaCorrelation,
const std::string &  OptFilterFile_CorrelationMatrix,
const TileHWID tileHWID,
MsgStream &  log,
int  dignum 
)

Definition at line 524 of file TileOFCorrelation.cxx.

529 {
530  log<<MSG::DEBUG<<" TileOFCorrelation::SaveCorrelationMatrix"<<endmsg;
531 
532  HepMatrix M_correlation(dignum,dignum,0);
533 
534  fstream *f_correlation = new fstream(OptFilterFile_CorrelationMatrix.c_str(),fstream::out);
535  if (f_correlation->is_open()) log<<MSG::INFO<<OptFilterFile_CorrelationMatrix<<" file open"<<endmsg;
536 
537  if (deltaCorrelation){
538  for (int i=0;i<dignum;i++)
539  for (int j=0;j<dignum;j++){
540  if (m_R[0][0][0][0][i][j]>-100000. && m_R[0][0][0][0][i][j]<100000.)
541  M_correlation[i][j]=m_R[0][0][0][0][i][j];
542  else
543  M_correlation[i][j]=0.0;
544  }
545 
546 
547  *f_correlation<<M_correlation<<endl;
548  }else{
549  for (int ros=0;ros<4;ros++)
550  for (int drawer=0;drawer<64;drawer++){
551  int frag= tileHWID->frag(ros+1,drawer);
552  for (int channel=0;channel<48;channel++)
553  for (int gain=0;gain<2;gain++){
555  <<"ros "<<ros
556  <<" drawer "<<drawer<<MSG::hex
557  <<" frag0x "<<frag<<MSG::dec
558  <<" channel "<<channel
559  <<" gain "<<gain
560  <<" m_N "<<m_N[ros][drawer][channel][gain]
561  <<endmsg;
562 
563  if (m_N[ros][drawer][channel][gain]>0){
564  for (int i=0;i<dignum;i++)
565  for (int j=0;j<dignum;j++){
566  if (m_R[ros][drawer][channel][gain][i][j]>-100000.
567  && m_R[ros][drawer][channel][gain][i][j]<100000.)
568  M_correlation[i][j]=m_R[ros][drawer][channel][gain][i][j];
569  else
570  M_correlation[i][j]=0.0;
571  }
572 
573 
574 
575  *f_correlation<<"ros "<<ros
576  <<" drawer "<<drawer<<std::hex
577  <<" frag0x "<<frag<<std::dec
578  <<" channel "<<channel
579  <<" gain "<<gain
580  <<" m_N "<<m_N[ros][drawer][channel][gain]
581  <<M_correlation<<endl;
582  }
583  }
584  }
585  }
586  f_correlation->close();
587 }

◆ SaveCorrelationSumm()

void TileOFCorrelation::SaveCorrelationSumm ( bool  deltaCorrelation,
const std::string &  OptFilterFile_CorrelationSumm,
const TileHWID tileHWID,
MsgStream &  log,
int  dignum 
)

Definition at line 428 of file TileOFCorrelation.cxx.

433 {
434  log<<MSG::DEBUG<<" TileOFCorrelation::SaveCorrelationSumm"<<endmsg;
435 
436  HepMatrix M_correlation(dignum,1,0);
437 
438  fstream *f_correlation = new fstream(OptFilterFile_CorrelationSumm.c_str(),fstream::out);
439  if (f_correlation->is_open()) log<<MSG::INFO<<OptFilterFile_CorrelationSumm<<" file open"<<endmsg;
440 
441  if (deltaCorrelation){
442  // for (int i=0;i<dignum;i++)
443  for (int j=0;j<dignum;j++){
444  int i=0;
445  if (m_R[0][0][0][0][i][j]>-100000. && m_R[0][0][0][0][i][j]<100000.)
446  M_correlation[i][j]=m_R[0][0][0][0][i][j];
447  else
448  M_correlation[i][j]=0.0;
449  }
450 
451 
452  *f_correlation<<M_correlation.T()<<endl;
453  }else{
454  for (int ros=0;ros<4;ros++)
455  for (int drawer=0;drawer<64;drawer++){
456  int frag= tileHWID->frag(ros+1,drawer);
457  for (int channel=0;channel<48;channel++)
458  for (int gain=0;gain<2;gain++){
460  <<"ros "<<ros
461  <<" drawer "<<drawer<<MSG::hex
462  <<" frag0x "<<frag<<MSG::dec
463  <<" channel "<<channel
464  <<" gain "<<gain
465  <<" m_N "<<m_N[ros][drawer][channel][gain]
466  <<endmsg;
467 
468  if (m_N[ros][drawer][channel][gain]>0){
469  //for (int i=0;i<dignum;i++)
470  for (int j=0;j<dignum;j++){
471  int i=0;
472  if (m_R[ros][drawer][channel][gain][i][j]>-100000.
473  && m_R[ros][drawer][channel][gain][i][j]<100000.)
474  M_correlation[i][j]=m_R[ros][drawer][channel][gain][i][j];
475  else
476  M_correlation[i][j]=0.0;
477  }
478 
479 
480 
481  *f_correlation<<"ros "<<ros
482  <<" drawer "<<drawer<<std::hex
483  <<" frag0x "<<frag<<std::dec
484  <<" channel "<<channel
485  <<" gain "<<gain
486  <<" m_N "<<m_N[ros][drawer][channel][gain]
487  <<M_correlation.T();
488 
489  }
490  }
491  }
492  }
493  f_correlation->close();
494 }

◆ SetCorrelationDelta()

void TileOFCorrelation::SetCorrelationDelta ( MsgStream &  log,
int  dignum 
)

Definition at line 118 of file TileOFCorrelation.cxx.

119 {
120  log<<MSG::DEBUG<<"TileOFCorrelation::SetCorrelationDelta(log)"<<endmsg;
121 
122  for (int ros=0;ros<4;ros++)
123  for (int drawer=0;drawer<64;drawer++)
124  for (int channel=0;channel<48;channel++)
125  for (int gain=0;gain<2;gain++){
126  m_N[ros][drawer][channel][gain]=1;
127  for (int i=0;i<dignum;i++)
128  for (int j=0;j<dignum;j++)
129  if (i==j) m_R[ros][drawer][channel][gain][i][j]=1.;
130  else m_R[ros][drawer][channel][gain][i][j]=0.;
131  }
132 }

◆ SetCorrelationZero()

void TileOFCorrelation::SetCorrelationZero ( MsgStream &  log,
int  dignum 
)

Definition at line 78 of file TileOFCorrelation.cxx.

79 {
80 
81  log<<MSG::DEBUG<<"TileOFCorrelation::SetCorrelationZero(log)"<<endmsg;
82  for (int ros=0;ros<4;ros++)
83  for (int drawer=0;drawer<64;drawer++)
84  for (int channel=0;channel<48;channel++)
85  for (int gain=0;gain<2;gain++){
86  m_N[ros][drawer][channel][gain]=0;
87  //m_N[ros][drawer][channel][gain]=0;
88  for (int i=0;i<dignum;i++){
89  m_S[ros][drawer][channel][gain][i]=0.;
90  for (int j=0;j<dignum;j++){
91  m_SS[ros][drawer][channel][gain][i][j]=0.;
92  m_R[ros][drawer][channel][gain][i][j]=0.;
93  }
94  }
95 
96  for (m_lag=0;m_lag<9;m_lag++){
97  m_S1[ros][drawer][channel][gain][m_lag]=0.;
98  m_S2[ros][drawer][channel][gain][m_lag]=0.;
99  m_S11[ros][drawer][channel][gain][m_lag]=0.;
100  m_S12[ros][drawer][channel][gain][m_lag]=0.;
101  m_S22[ros][drawer][channel][gain][m_lag]=0.;
105  }
106  }
107 
108  for (m_lag=0;m_lag<9;m_lag++){
109  m_corr2[m_lag]=0.;
110  if(m_lag<8)
111  m_corr[m_lag]=0;
112  }
113 
114 }

◆ Sum()

void TileOFCorrelation::Sum ( std::vector< float > &  digits,
int  ros,
int  drawer,
int  channel,
int  gain,
MsgStream &  log,
bool  debug,
int &  dignum,
bool  doRobustCov 
)

Definition at line 137 of file TileOFCorrelation.cxx.

138 {
139 
140  double N_d=0.;
141  dignum=digits.size();
142 
143  if (doRobustCov){
144  m_DataVector[ros][drawer][channel][gain].push_back(digits);
145  }
146 
147  m_N[ros][drawer][channel][gain]++;
148  N_d=double(m_N[ros][drawer][channel][gain]);
149  for (int i=0;i<dignum;i++){
150  m_S[ros][drawer][channel][gain][i]+=digits[i];
151  for (int j=0;j<dignum;j++) m_SS[ros][drawer][channel][gain][i][j]+=digits[i]*digits[j];
152  }
153 
154  if (debug){
155  cout
156  <<" TileOFCorrelation::Sum, ros="<<ros
157  <<" drawer="<<drawer
158  <<" channel="<<channel
159  <<" gain="<<gain
160  <<" N="<<m_N[ros][drawer][channel][gain]
161  <<" Sum[1]="<<m_S[ros][drawer][channel][gain][1]
162  <<" Sum[2]="<<m_S[ros][drawer][channel][gain][2]
163  <<" Sum[1][2]="<<m_SS[ros][drawer][channel][gain][1][2]
164  <<" Sum[1][1]="<<m_SS[ros][drawer][channel][gain][1][1]
165  <<" Sum[2][2]="<<m_SS[ros][drawer][channel][gain][2][2]
166  <<" B[1][2]="<<m_SS[ros][drawer][channel][gain][1][2]/N_d-m_S[ros][drawer][channel][gain][1]/N_d*m_S[ros][drawer][channel][gain][2]/N_d
167  <<" Correlation[1][2]="<<(N_d*m_SS[ros][drawer][channel][gain][1][2]-m_S[ros][drawer][channel][gain][1]*m_S[ros][drawer][channel][gain][2])/sqrt((N_d*m_SS[ros][drawer][channel][gain][1][1]-m_S[ros][drawer][channel][gain][1]*m_S[ros][drawer][channel][gain][1])*(N_d*m_SS[ros][drawer][channel][gain][2][2]-m_S[ros][drawer][channel][gain][2]*m_S[ros][drawer][channel][gain][2]))
168  <<endl;
169  }
170 
171 }

◆ WriteWeightsToFile()

void TileOFCorrelation::WriteWeightsToFile ( bool  deltaCorrelation,
int  dignum,
const std::string &  m_OptFilterFile_ai_lo,
const std::string &  m_OptFilterFile_bi_lo,
const std::string &  m_OptFilterFile_ai_hi,
const std::string &  m_OptFilterFile_bi_hi,
int  ros,
int  drawer,
int  channel,
int  gain,
const TileHWID tileHWID,
MsgStream &  log 
)

Definition at line 1009 of file TileOFCorrelation.cxx.

1021 {
1022  log<<MSG::DEBUG<<" TileOFCorrelation::WriteWeightsToFile"<<endmsg;
1023  fstream *f_ai_lo = new fstream(OptFilterFile_ai_lo.c_str(), fstream::app| fstream::out);
1024  fstream *f_bi_lo = new fstream(OptFilterFile_bi_lo.c_str(), fstream::app|fstream::out);
1025  fstream *f_ai_hi = new fstream(OptFilterFile_ai_hi.c_str(), fstream::app|fstream::out);
1026  fstream *f_bi_hi = new fstream(OptFilterFile_bi_hi.c_str(), fstream::app|fstream::out);
1027 
1028  //Open Weights files
1029  if (f_ai_lo->is_open()&&f_ai_lo->is_open()&&f_ai_lo->is_open()&&f_ai_lo->is_open()) log<<MSG::INFO<<" Weights files open"<<endmsg;
1030  else log<<MSG::INFO<<" Weights files didn't open succesfully"<<endmsg;
1031 
1032  if(!deltaCorrelation && m_N[ros][drawer][channel][gain]>0){
1033  int frag= tileHWID->frag(ros+1,drawer);
1034  if (gain==0){
1035  std::cout<<"ros "<<ros
1036  <<" drawer "<<drawer<<std::hex
1037  <<" frag0x "<<frag<<std::dec
1038  <<" channel "<<channel
1039  <<" N "<<m_N[ros][drawer][channel][0]
1040  <<std::endl;
1041  *f_ai_lo<<"ros "<<ros
1042  <<" drawer "<<drawer<<std::hex
1043  <<" frag0x "<<frag<<std::dec
1044  <<" channel "<<channel
1045  <<" N "<<m_N[ros][drawer][channel][0]
1046  <<endl;
1047 
1048  *f_bi_lo<<"ros "<<ros
1049  <<" drawer "<<drawer<<std::hex
1050  <<" frag0x "<<frag<<std::dec
1051  <<" channel "<<channel
1052  <<" N "<<m_N[ros][drawer][channel][0]
1053  <<endl;
1054  }
1055  if (gain==1){
1056  *f_ai_hi<<"ros "<<ros
1057  <<" drawer "<<drawer<<std::hex
1058  <<" frag0x "<<frag<<std::dec
1059  <<" channel "<<channel
1060  <<" N "<<m_N[ros][drawer][channel][1]
1061  <<endl;
1062 
1063  *f_bi_hi<<"ros "<<ros
1064  <<" drawer "<<drawer<<std::hex
1065  <<" frag0x "<<frag<<std::dec
1066  <<" channel "<<channel
1067  <<" N "<<m_N[ros][drawer][channel][1]
1068  <<endl;
1069  }
1070 
1071  }
1072 
1073  if(deltaCorrelation || m_N[ros][drawer][channel][gain]>0){
1074  for (int pha=-100;pha<101;pha++){
1075  if (gain==0){
1076  *f_ai_lo<<std::setw(6)<<pha;
1077  for (int i=0;i<dignum;i++) *f_ai_lo<<std::setw(18)<<std::setprecision(10)<<w_a[pha+100][i];
1078  *f_ai_lo<<endl;
1079 
1080  *f_bi_lo<<std::setw(6)<<pha;
1081  for (int i=0;i<dignum;i++) *f_bi_lo<<std::setw(18)<<std::setprecision(10)<<w_b[pha+100][i];
1082  *f_bi_lo<<endl;
1083  }else{
1084  *f_ai_hi<<std::setw(6)<<pha;
1085  for (int i=0;i<dignum;i++) *f_ai_hi<<std::setw(18)<<std::setprecision(10)<<w_a[pha+100][i];
1086  *f_ai_hi<<endl;
1087 
1088  *f_bi_hi<<std::setw(6)<<pha;
1089  for (int i=0;i<dignum;i++) *f_bi_hi<<std::setw(18)<<std::setprecision(10)<<w_b[pha+100][i];
1090  *f_bi_hi<<endl;
1091  }
1092  }
1093 
1094  }
1095 
1096  f_ai_lo->close();
1097  f_bi_lo->close();
1098  f_ai_hi->close();
1099  f_bi_hi->close();
1100 
1101 }

Member Data Documentation

◆ g

double TileOFCorrelation::g[201][9] ={}

Definition at line 93 of file TileOFCorrelation.h.

◆ m_corr

float TileOFCorrelation::m_corr[8]
private

Definition at line 110 of file TileOFCorrelation.h.

◆ m_corr2

double TileOFCorrelation::m_corr2[NDIG]
private

Definition at line 106 of file TileOFCorrelation.h.

◆ m_corr_sum

double(* TileOFCorrelation::m_corr_sum)[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN][NDIG]
private

Definition at line 107 of file TileOFCorrelation.h.

◆ m_corr_sum_sq

double(* TileOFCorrelation::m_corr_sum_sq)[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN][NDIG]
private

Definition at line 108 of file TileOFCorrelation.h.

◆ m_DataVector

std::vector< std::vector <float> > TileOFCorrelation::m_DataVector[NPARTITIONS][Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN]
private

Definition at line 104 of file TileOFCorrelation.h.

◆ m_jentry

int TileOFCorrelation::m_jentry
private

Definition at line 112 of file TileOFCorrelation.h.

◆ m_lag

int TileOFCorrelation::m_lag
private

Definition at line 112 of file TileOFCorrelation.h.

◆ m_N

int(* TileOFCorrelation::m_N)[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN]
private

Definition at line 111 of file TileOFCorrelation.h.

◆ m_N_d

double TileOFCorrelation::m_N_d
private

Definition at line 114 of file TileOFCorrelation.h.

◆ m_N_pairs

int(* TileOFCorrelation::m_N_pairs)[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN][NDIG]
private

Definition at line 113 of file TileOFCorrelation.h.

◆ m_ncorr

double TileOFCorrelation::m_ncorr
private

Definition at line 109 of file TileOFCorrelation.h.

◆ m_R

double(* TileOFCorrelation::m_R)[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN][NDIG][NDIG]
private

Definition at line 102 of file TileOFCorrelation.h.

◆ m_S

double(* TileOFCorrelation::m_S)[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN][NDIG]
private

Definition at line 101 of file TileOFCorrelation.h.

◆ m_S1

double(* TileOFCorrelation::m_S1)[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN][NDIG]
private

Definition at line 115 of file TileOFCorrelation.h.

◆ m_S11

double(* TileOFCorrelation::m_S11)[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN][NDIG]
private

Definition at line 117 of file TileOFCorrelation.h.

◆ m_S12

double(* TileOFCorrelation::m_S12)[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN][NDIG]
private

Definition at line 118 of file TileOFCorrelation.h.

◆ m_S2

double(* TileOFCorrelation::m_S2)[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN][NDIG]
private

Definition at line 116 of file TileOFCorrelation.h.

◆ m_S22

double(* TileOFCorrelation::m_S22)[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN][NDIG]
private

Definition at line 119 of file TileOFCorrelation.h.

◆ m_SS

double(* TileOFCorrelation::m_SS)[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN][NDIG][NDIG]
private

Definition at line 100 of file TileOFCorrelation.h.

◆ w_a

double TileOFCorrelation::w_a[201][9] ={}

Definition at line 90 of file TileOFCorrelation.h.

◆ w_b

double TileOFCorrelation::w_b[201][9] ={}

Definition at line 91 of file TileOFCorrelation.h.

◆ w_c

double TileOFCorrelation::w_c[201][9] ={}

Definition at line 92 of file TileOFCorrelation.h.


The documentation for this class was generated from the following files:
TileOFCorrelation::m_corr2
double m_corr2[NDIG]
Definition: TileOFCorrelation.h:106
TileOFCorrelation::m_S1
double(* m_S1)[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN][NDIG]
Definition: TileOFCorrelation.h:115
TileOFCorrelation::w_c
double w_c[201][9]
Definition: TileOFCorrelation.h:92
TileOFCorrelation::m_jentry
int m_jentry
Definition: TileOFCorrelation.h:112
plotting.yearwise_efficiency.channel
channel
Definition: yearwise_efficiency.py:28
TileOFCorrelation::m_S2
double(* m_S2)[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN][NDIG]
Definition: TileOFCorrelation.h:116
TileOFCorrelation::m_S
double(* m_S)[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN][NDIG]
Definition: TileOFCorrelation.h:101
TileOFCorrelation::m_S22
double(* m_S22)[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN][NDIG]
Definition: TileOFCorrelation.h:119
CaloCondBlobAlgs_fillNoiseFromASCII.gain
gain
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:110
python.AthDsoLogger.out
out
Definition: AthDsoLogger.py:71
TileOFCorrelation::m_corr_sum
double(* m_corr_sum)[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN][NDIG]
Definition: TileOFCorrelation.h:107
TileHWID::frag
int frag(const HWIdentifier &id) const
extract frag field from HW identifier
Definition: TileHWID.h:181
TileOFCorrelation::m_R
double(* m_R)[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN][NDIG][NDIG]
Definition: TileOFCorrelation.h:102
TileOFCorrelation::m_SS
double(* m_SS)[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN][NDIG][NDIG]
Definition: TileOFCorrelation.h:100
x
#define x
TileOFCorrelation::m_S11
double(* m_S11)[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN][NDIG]
Definition: TileOFCorrelation.h:117
Example_ReadSampleNoise.drawer
drawer
Definition: Example_ReadSampleNoise.py:39
TileOFCorrelation::g
double g[201][9]
Definition: TileOFCorrelation.h:93
TileCalibUtils::MAX_DRAWER
static const unsigned int MAX_DRAWER
Number of drawers in ROS 1-4.
Definition: TileCalibUtils.h:139
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
NPARTITIONS
#define NPARTITIONS
Definition: TileLaserDefaultCalibTool.h:35
TileOFCorrelation::m_N_d
double m_N_d
Definition: TileOFCorrelation.h:114
TileOFCorrelation::m_corr
float m_corr[8]
Definition: TileOFCorrelation.h:110
NDIG
#define NDIG
Definition: TileOFCorrelation.h:27
TileOFCorrelation::w_a
double w_a[201][9]
Definition: TileOFCorrelation.h:90
lumiFormat.i
int i
Definition: lumiFormat.py:92
ReadCellNoiseFromCool.chan
chan
Definition: ReadCellNoiseFromCool.py:52
Result
ICscStripFitter::Result Result
Definition: CalibCscStripFitter.cxx:13
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
TileOFCorrelation::m_N
int(* m_N)[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN]
Definition: TileOFCorrelation.h:111
xAOD::double
double
Definition: CompositeParticle_v1.cxx:159
maskDeadModules.ros
ros
Definition: maskDeadModules.py:35
ReadTripsProbsFromCool.denominator
denominator
Definition: ReadTripsProbsFromCool.py:96
TileOFCorrelation::m_ncorr
double m_ncorr
Definition: TileOFCorrelation.h:109
Result
Definition: fbtTestBasics.cxx:47
debug
const bool debug
Definition: MakeUncertaintyPlots.cxx:53
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
TileOFCorrelation::m_S12
double(* m_S12)[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN][NDIG]
Definition: TileOFCorrelation.h:118
a
TList * a
Definition: liststreamerinfos.cxx:10
DEBUG
#define DEBUG
Definition: page_access.h:11
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
TileOFCorrelation::m_N_pairs
int(* m_N_pairs)[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN][NDIG]
Definition: TileOFCorrelation.h:113
TileOFCorrelation::w_b
double w_b[201][9]
Definition: TileOFCorrelation.h:91
LB_AnalMapSplitter.of2
of2
Definition: LB_AnalMapSplitter.py:50
python.Constants.VERBOSE
int VERBOSE
Definition: Control/AthenaCommon/python/Constants.py:14
TileCalibUtils::MAX_CHAN
static const unsigned int MAX_CHAN
Number of channels in drawer.
Definition: TileCalibUtils.h:141
TileOFCorrelation::m_corr_sum_sq
double(* m_corr_sum_sq)[Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN][NDIG]
Definition: TileOFCorrelation.h:108
TileOFCorrelation::m_DataVector
std::vector< std::vector< float > > m_DataVector[NPARTITIONS][Tile::MAX_DRAWER][Tile::MAX_CHAN][Tile::MAX_GAIN]
Definition: TileOFCorrelation.h:104
TileOFCorrelation::m_lag
int m_lag
Definition: TileOFCorrelation.h:112
generate::Zero
void Zero(TH1D *hin)
Definition: generate.cxx:32
TileCalibUtils::MAX_GAIN
static const unsigned int MAX_GAIN
Number of gains per channel
Definition: TileCalibUtils.h:142