00001 void getSimConstants() {
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 = 10;
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
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 ) {
00069 counter[i][j][k] = k+channelNum;
00070 }
00071 else {
00072 counter[i][j][k] = k-channelNum/2+48;
00073 }
00074 }
00075 else if( j==2 ) {
00076 counter[i][j][k] = k+channelNum/2+48;
00077 }
00078 }
00079 else if( i==1 ) {
00080 if( j==0 ) {
00081 counter[i][j][k] = k+channelNum+channelNum/2;
00082 }
00083 else if( j==1 ) {
00084 if( k<channelNum/2 ) {
00085 counter[i][j][k] = k+channelNum*2+channelNum/2;
00086 }
00087 else {
00088 counter[i][j][k] = k+channelNum+48;
00089 }
00090 }
00091 else if( j==2 ) {
00092 counter[i][j][k] = k+channelNum*2+48;
00093 }
00094 }
00095 }
00096 else {
00097 be[i][j][k] = 1;
00098 if( (k%2)==0 ) {
00099 end[i][j][k] = 0;
00100 }
00101 else {
00102 end[i][j][k] = 1;
00103 }
00104 if( i==0 ) {
00105 if( (k%4)<2 ) {
00106 counter[i][j][k] = (j-3)*channelNum/4+k/4;
00107 }
00108 else {
00109 counter[i][j][k] = (j-3)*channelNum/4+k/4+88;
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
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
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( "BEastSimRatio.txt" );
00207 inRatio2.open( "BWestSimRatio.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( "EndSimRatio.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 }