/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Tof/TofQElecSvc/TofQElecSvc-00-00-05/test/getConstants.cxx

Go to the documentation of this file.
00001 void getConstants() {
00002   gROOT->Reset();
00003   gROOT->SetStyle("Plain");
00004   gStyle->SetOptStat(00000);
00005 
00006   const unsigned int barScin = 176;
00007   const unsigned int endScin = 96;
00008   const unsigned int barEnd  = 2;
00009 
00010   const unsigned int crateNum = 2;
00011   const unsigned int crate[crateNum] = { 64, 65 };
00012   const unsigned int boardNum = 14;
00013   unsigned int board[boardNum];
00014   for( unsigned int i=0; i<boardNum; i++ ) {
00015     board[i] = i+1;
00016   }
00017   const unsigned int channelNum = 16;
00018   const unsigned int paramNum   = 8;
00019   double param[crateNum][boardNum][channelNum][paramNum];
00020 
00021   unsigned int ifee[crateNum][boardNum][channelNum];
00022   unsigned int icrate[crateNum][boardNum][channelNum];
00023   unsigned int iboard[crateNum][boardNum][channelNum];
00024   unsigned int ichannel[crateNum][boardNum][channelNum];
00025   ifstream inData[crateNum][boardNum];
00026   char inFile[crateNum][boardNum][1000];
00027 
00028   char kind[10]=".txt";
00029   //  char kind[100]="-Curve.txt";
00030 
00031   ofstream outData1, outData2, outData3;
00032   char outFile1[800], outFile2[800], outFile3[800];
00033   sprintf( outFile1, "ElecBarEast%s", kind );
00034   sprintf( outFile2, "ElecBarWest%s", kind );
00035   sprintf( outFile3, "ElecEndcap%s",  kind );
00036 
00037 
00038   for( unsigned int i=0; i<crateNum; i++ ) {
00039     for( unsigned int j=0; j<boardNum; j++ ) {
00040 
00041       sprintf( inFile[i][j], "/ihepbatch/besd09/sunss/Electronics/09summer/Data/Crate%i/Board%i/Crate%i-Board%i%s", crate[i], board[j], crate[i], board[j],kind );
00042       cout << inFile[i][j] << endl;
00043       inData[i][j].open( inFile[i][j] );
00044       for( unsigned int k=0; k<channelNum; k++ ) {
00045         inData[i][j] >> ifee[i][j][k] >> icrate[i][j][k] >> iboard[i][j][k] >> ichannel[i][j][k];
00046         for( unsigned int l=0; l<paramNum; l++ ) {
00047           inData[i][j] >> param[i][j][k][l];
00048         }
00049       }
00050       inData[i][j].close();
00051     }
00052   }
00053 
00054   int be[crateNum][boardNum][channelNum];
00055   int counter[crateNum][boardNum][channelNum];
00056   int end[crateNum][boardNum][channelNum];
00057   for( unsigned int i=0; i<crateNum; i++ ) {
00058     for( unsigned int j=0; j<boardNum; j++ ) {
00059       for( unsigned int k=0; k<channelNum; k++ ) {
00060         if( j<3 ) {
00061           be[i][j][k] = 0;
00062           end[i][j][k] = 0;
00063           if( i==0 ) {
00064             if( j==0 ) {
00065               counter[i][j][k] = k;
00066             }
00067             else if( j==1 ) {
00068               if( k<channelNum/2 ) { // 8
00069                 counter[i][j][k] = k+channelNum; // 16
00070               }
00071               else {
00072                 counter[i][j][k] = k-channelNum/2+48; // 8
00073               }
00074             }
00075             else if( j==2 ) {
00076               counter[i][j][k] = k+channelNum/2+48; // 8
00077             }
00078           }
00079           else if( i==1 ) {
00080             if( j==0 ) {
00081               counter[i][j][k] = k+channelNum+channelNum/2; // 24  
00082             }
00083             else if( j==1 ) {
00084               if( k<channelNum/2 ) { // 8
00085                 counter[i][j][k] = k+channelNum*2+channelNum/2; // 40
00086               }
00087               else {
00088                 counter[i][j][k] = k+channelNum+48; // 16
00089               }
00090             }
00091             else if( j==2 ) {
00092                 counter[i][j][k] = k+channelNum*2+48; // 32
00093             }
00094           }
00095         }
00096         else {
00097           be[i][j][k] = 1;
00098           if( (k%2)==0 ) {
00099             end[i][j][k] = 0; // east
00100           }
00101           else {
00102             end[i][j][k] = 1; // west
00103           }
00104           if( i==0 ) {
00105             if( (k%4)<2 ) {
00106               counter[i][j][k] = (j-3)*channelNum/4+k/4; // (j-3)*4+1/4
00107             }
00108             else {
00109               counter[i][j][k] = (j-3)*channelNum/4+k/4+88; // (j-3)*4+1/4
00110             }
00111           }
00112           else if( i==1 ) {
00113             if( (k%4)<2 ) {
00114               counter[i][j][k] = (boardNum-3+j-3)*channelNum/4+k/4;
00115             }
00116             else {
00117               counter[i][j][k] = (boardNum-3+j-3)*channelNum/4+k/4+88;
00118             }
00119           }
00120         }
00121         //      cout << i << " " << j << " " << k << " " << be[i][j][k] << " " << counter[i][j][k] << " " << end[i][j][k] << endl;
00122       }
00123     }
00124   }
00125 
00126   for( unsigned int i=0; i<crateNum; i++ ) {
00127     for( unsigned int j=0; j<boardNum; j++ ) {
00128       for( unsigned int k=0; k<channelNum; k++ ) {
00129         if( be[i][j][k] == 0 ) {
00130           counter[i][j][k] = counter[i][j][k] - 12;
00131           if( counter[i][j][k]<0 || ( counter[i][j][k]>=36 && counter[i][j][k]<48 ) ) {
00132             counter[i][j][k] = counter[i][j][k] + 48;
00133           }
00134         }
00135         else {
00136           counter[i][j][k] = counter[i][j][k] - 11;
00137           if( counter[i][j][k]<0 || ( counter[i][j][k]>=77 && counter[i][j][k]<88 ) ) {
00138             counter[i][j][k] = counter[i][j][k] + 88;
00139           }
00140         }
00141         //      cout << i << " " << j << " " << k << " " << be[i][j][k] << " " << counter[i][j][k] << " " << end[i][j][k] << endl;
00142       }     
00143     }
00144   }
00145 
00146 
00147   for( unsigned int i=0; i<crateNum; i++ ) {
00148     for( unsigned int j=0; j<boardNum; j++ ) {
00149       for( unsigned int k=0; k<channelNum; k++ ) {
00150         if( i==0 ) {
00151           icrate[i][j][k] = 64;
00152         }
00153         else {
00154           icrate[i][j][k] = 65;
00155         }
00156         iboard[i][j][k] = j+1;
00157         ichannel[i][j][k] = k+1;
00158       }
00159     }
00160   }
00161 
00162   unsigned int Fee[barScin][barEnd], ecFee[endScin];
00163   unsigned int Crate[barScin][barEnd], ecCrate[endScin];
00164   unsigned int Board[barScin][barEnd], ecBoard[endScin];
00165   unsigned int Channel[barScin][barEnd], ecChannel[endScin];
00166   double pbeast[barScin][paramNum], pbwest[barScin][paramNum];
00167   double pendcap[endScin][paramNum],;
00168   for( unsigned int i=0; i<crateNum; i++ ) {
00169     for( unsigned int j=0; j<boardNum; j++ ) {
00170       for( unsigned int k=0; k<channelNum; k++ ) {
00171         if( be[i][j][k]==1 ) {
00172           if( end[i][j][k]==0 ) {
00173             Fee[counter[i][j][k]][0]     = ifee[i][j][k];
00174             Crate[counter[i][j][k]][0]   = icrate[i][j][k];
00175             Board[counter[i][j][k]][0]   = iboard[i][j][k];
00176             Channel[counter[i][j][k]][0] = ichannel[i][j][k];
00177             for( unsigned int l=0; l<paramNum; l++ ) {
00178               pbeast[counter[i][j][k]][l] = param[i][j][k][l];
00179             }
00180           }
00181           else{
00182             Fee[counter[i][j][k]][1]     = ifee[i][j][k];
00183             Crate[counter[i][j][k]][1]   = icrate[i][j][k];
00184             Board[counter[i][j][k]][1]   = iboard[i][j][k];
00185             Channel[counter[i][j][k]][1] = ichannel[i][j][k];
00186             for( unsigned int l=0; l<paramNum; l++ ) {
00187               pbwest[counter[i][j][k]][l] = param[i][j][k][l];
00188             }
00189           }
00190         }
00191         else {
00192           ecFee[counter[i][j][k]]     = ifee[i][j][k];
00193           ecCrate[counter[i][j][k]]   = icrate[i][j][k];
00194           ecBoard[counter[i][j][k]]   = iboard[i][j][k];
00195           ecChannel[counter[i][j][k]] = ichannel[i][j][k];
00196           for( unsigned int l=0; l<paramNum; l++ ) {
00197             pendcap[counter[i][j][k]][l] = param[i][j][k][l];
00198           } 
00199         }
00200       }
00201     }
00202   }
00203 
00204   double bRatio[2][barScin], eRatio[endScin];
00205   ifstream inRatio1, inRatio2, inRatio3;
00206   inRatio1.open( "BEastRatio.txt" );
00207   inRatio2.open( "BWestRatio.txt" );
00208   for( unsigned int i=0; i<barScin; i++ ) {
00209     inRatio1 >> bRatio[0][i];
00210     inRatio2 >> bRatio[1][i];
00211   }
00212   inRatio1.close();
00213   inRatio2.close();
00214   inRatio3.open( "EndRatio.txt" );
00215   for( unsigned int i=0; i<endScin; i++ ) {
00216     inRatio3 >> eRatio[i];
00217   }
00218   inRatio3.close();
00219 
00220   outData1.open( outFile1 );
00221   outData2.open( outFile2 );
00222   for( unsigned int i=0; i<barScin; i++ ) {
00223     if( paramNum == 8 ) {
00224       outData1 << Fee[i][0] << " " << Crate[i][0] << " " << Board[i][0] << " " << Channel[i][0] << " ";
00225       outData2 << Fee[i][1] << " " << Crate[i][1] << " " << Board[i][1] << " " << Channel[i][1] << " ";
00226     }
00227     outData1 << bRatio[0][i];
00228     outData2 << bRatio[1][i];
00229     for( unsigned int l=0; l<paramNum; l++ ) {
00230       outData1 << " " << pbeast[i][l];
00231       outData2 << " " << pbwest[i][l];
00232     }
00233     outData1 << endl;
00234     outData2 << endl;
00235   }
00236   outData1.close();
00237   outData2.close();
00238 
00239   outData3.open( outFile3 );
00240   for( unsigned int i=0; i<endScin; i++ ) {
00241     if( paramNum == 8 ) {
00242       outData3 << ecFee[i] << " " << ecCrate[i] << " " << ecBoard[i] << " " << ecChannel[i] << " ";
00243     }
00244     outData3 << eRatio[i];
00245     for( unsigned int l=0; l<paramNum; l++ ) {
00246       outData3 << " " << pendcap[i][l];
00247     }
00248     outData3 << endl;
00249   }
00250   outData3.close();
00251 
00252   return;
00253 }

Generated on Tue Nov 29 23:14:39 2016 for BOSS_7.0.2 by  doxygen 1.4.7