1 {
2 gROOT->Reset();
3 gROOT->SetStyle( "Plain" );
4 gStyle->SetOptStat( 00000 );
5
6 const unsigned int barScin = 176;
7 const unsigned int endScin = 96;
8 const unsigned int barEnd = 2;
9
10 const unsigned int crateNum = 2;
11 const unsigned int crate[crateNum] = { 64, 65 };
12 const unsigned int boardNum = 14;
13 unsigned int board[boardNum];
14 for ( unsigned int i = 0; i < boardNum; i++ ) { board[i] = i + 1; }
15 const unsigned int channelNum = 16;
16 const unsigned int paramNum = 10;
17 double param[crateNum][boardNum][channelNum][paramNum];
18
19 unsigned int ifee[crateNum][boardNum][channelNum];
20 unsigned int icrate[crateNum][boardNum][channelNum];
21 unsigned int iboard[crateNum][boardNum][channelNum];
22 unsigned int ichannel[crateNum][boardNum][channelNum];
24 char inFile[crateNum][boardNum][1000];
25
26
27 char kind[100] = "-Curve.txt";
28
29 ofstream outData1, outData2, outData3;
30 char outFile1[800], outFile2[800], outFile3[800];
31 sprintf( outFile1,
"ElecBarEast%s", kind );
32 sprintf( outFile2,
"ElecBarWest%s", kind );
33 sprintf( outFile3,
"ElecEndcap%s", kind );
34
35 for ( unsigned int i = 0; i < crateNum; i++ )
36 {
37 for ( unsigned int j = 0; j < boardNum; j++ )
38 {
39
41 "/ihepbatch/besd09/sunss/Electronics/09summer/Data/Crate%i/Board%i/"
42 "Crate%i-Board%i%s",
43 crate[i], board[j], crate[i], board[j], kind );
44 cout << inFile[i][j] << endl;
45 inData[i][j].open( inFile[i][j] );
46 for ( unsigned int k = 0; k < channelNum; k++ )
47 {
48 inData[i][j] >> ifee[i][j][k] >> icrate[i][j][k] >> iboard[i][j][k] >>
49 ichannel[i][j][k];
50 for ( unsigned int l = 0; l < paramNum; l++ ) { inData[i][j] >> param[i][j][k][l]; }
51 }
52 inData[i][j].close();
53 }
54 }
55
56 int be[crateNum][boardNum][channelNum];
57 int counter[crateNum][boardNum][channelNum];
58 int end[crateNum][boardNum][channelNum];
59 for ( unsigned int i = 0; i < crateNum; i++ )
60 {
61 for ( unsigned int j = 0; j < boardNum; j++ )
62 {
63 for ( unsigned int k = 0; k < channelNum; k++ )
64 {
65 if ( j < 3 )
66 {
67 be[i][j][k] = 0;
68 end[i][j][k] = 0;
69 if ( i == 0 )
70 {
71 if ( j == 0 ) { counter[i][j][k] = k; }
72 else if ( j == 1 )
73 {
74 if ( k < channelNum / 2 )
75 {
76 counter[i][j][k] = k + channelNum;
77 }
78 else
79 {
80 counter[i][j][k] = k - channelNum / 2 + 48;
81 }
82 }
83 else if ( j == 2 )
84 {
85 counter[i][j][k] = k + channelNum / 2 + 48;
86 }
87 }
88 else if ( i == 1 )
89 {
90 if ( j == 0 )
91 {
92 counter[i][j][k] = k + channelNum + channelNum / 2;
93 }
94 else if ( j == 1 )
95 {
96 if ( k < channelNum / 2 )
97 {
98 counter[i][j][k] = k + channelNum * 2 + channelNum / 2;
99 }
100 else
101 {
102 counter[i][j][k] = k + channelNum + 48;
103 }
104 }
105 else if ( j == 2 )
106 {
107 counter[i][j][k] = k + channelNum * 2 + 48;
108 }
109 }
110 }
111 else
112 {
113 be[i][j][k] = 1;
114 if ( ( k % 2 ) == 0 )
115 {
116 end[i][j][k] = 0;
117 }
118 else
119 {
120 end[i][j][k] = 1;
121 }
122 if ( i == 0 )
123 {
124 if ( ( k % 4 ) < 2 )
125 {
126 counter[i][j][k] = ( j - 3 ) * channelNum / 4 + k / 4;
127 }
128 else
129 {
130 counter[i][j][k] = ( j - 3 ) * channelNum / 4 + k / 4 + 88;
131 }
132 }
133 else if ( i == 1 )
134 {
135 if ( ( k % 4 ) < 2 )
136 { counter[i][j][k] = ( boardNum - 3 + j - 3 ) * channelNum / 4 + k / 4; }
137 else { counter[i][j][k] = ( boardNum - 3 + j - 3 ) * channelNum / 4 + k / 4 + 88; }
138 }
139 }
140
141
142 }
143 }
144 }
145
146 for ( unsigned int i = 0; i < crateNum; i++ )
147 {
148 for ( unsigned int j = 0; j < boardNum; j++ )
149 {
150 for ( unsigned int k = 0; k < channelNum; k++ )
151 {
152 if ( be[i][j][k] == 0 )
153 {
154 counter[i][j][k] = counter[i][j][k] - 12;
155 if ( counter[i][j][k] < 0 || ( counter[i][j][k] >= 36 && counter[i][j][k] < 48 ) )
156 { counter[i][j][k] = counter[i][j][k] + 48; }
157 }
158 else
159 {
160 counter[i][j][k] = counter[i][j][k] - 11;
161 if ( counter[i][j][k] < 0 || ( counter[i][j][k] >= 77 && counter[i][j][k] < 88 ) )
162 { counter[i][j][k] = counter[i][j][k] + 88; }
163 }
164
165
166 }
167 }
168 }
169
170 for ( unsigned int i = 0; i < crateNum; i++ )
171 {
172 for ( unsigned int j = 0; j < boardNum; j++ )
173 {
174 for ( unsigned int k = 0; k < channelNum; k++ )
175 {
176 if ( i == 0 ) { icrate[i][j][k] = 64; }
177 else { icrate[i][j][k] = 65; }
178 iboard[i][j][k] = j + 1;
179 ichannel[i][j][k] = k + 1;
180 }
181 }
182 }
183
184 unsigned int Fee[barScin][barEnd], ecFee[endScin];
185 unsigned int Crate[barScin][barEnd], ecCrate[endScin];
186 unsigned int Board[barScin][barEnd], ecBoard[endScin];
187 unsigned int Channel[barScin][barEnd], ecChannel[endScin];
188 double pbeast[barScin][paramNum], pbwest[barScin][paramNum];
189 double pendcap[endScin][paramNum], ;
190 for ( unsigned int i = 0; i < crateNum; i++ )
191 {
192 for ( unsigned int j = 0; j < boardNum; j++ )
193 {
194 for ( unsigned int k = 0; k < channelNum; k++ )
195 {
196 if ( be[i][j][k] == 1 )
197 {
198 if ( end[i][j][k] == 0 )
199 {
200 Fee[counter[i][j][k]][0] = ifee[i][j][k];
201 Crate[counter[i][j][k]][0] = icrate[i][j][k];
202 Board[counter[i][j][k]][0] = iboard[i][j][k];
203 Channel[counter[i][j][k]][0] = ichannel[i][j][k];
204 for ( unsigned int l = 0; l < paramNum; l++ )
205 { pbeast[counter[i][j][k]][l] = param[i][j][k][l]; }
206 }
207 else
208 {
209 Fee[counter[i][j][k]][1] = ifee[i][j][k];
210 Crate[counter[i][j][k]][1] = icrate[i][j][k];
211 Board[counter[i][j][k]][1] = iboard[i][j][k];
212 Channel[counter[i][j][k]][1] = ichannel[i][j][k];
213 for ( unsigned int l = 0; l < paramNum; l++ )
214 { pbwest[counter[i][j][k]][l] = param[i][j][k][l]; }
215 }
216 }
217 else
218 {
219 ecFee[counter[i][j][k]] = ifee[i][j][k];
220 ecCrate[counter[i][j][k]] = icrate[i][j][k];
221 ecBoard[counter[i][j][k]] = iboard[i][j][k];
222 ecChannel[counter[i][j][k]] = ichannel[i][j][k];
223 for ( unsigned int l = 0; l < paramNum; l++ )
224 { pendcap[counter[i][j][k]][l] = param[i][j][k][l]; }
225 }
226 }
227 }
228 }
229
230 double bRatio[2][barScin], eRatio[endScin];
231 ifstream inRatio1, inRatio2, inRatio3;
232 inRatio1.open( "BEastSimRatio.txt" );
233 inRatio2.open( "BWestSimRatio.txt" );
234 for ( unsigned int i = 0; i < barScin; i++ )
235 {
236 inRatio1 >> bRatio[0][i];
237 inRatio2 >> bRatio[1][i];
238 }
239 inRatio1.close();
240 inRatio2.close();
241 inRatio3.open( "EndSimRatio.txt" );
242 for ( unsigned int i = 0; i < endScin; i++ ) { inRatio3 >> eRatio[i]; }
243 inRatio3.close();
244
245 outData1.open( outFile1 );
246 outData2.open( outFile2 );
247 for ( unsigned int i = 0; i < barScin; i++ )
248 {
249 if ( paramNum == 8 )
250 {
251 outData1 << Fee[i][0] << " " << Crate[i][0] << " " << Board[i][0] << " " << Channel[i][0]
252 << " ";
253 outData2 << Fee[i][1] << " " << Crate[i][1] << " " << Board[i][1] << " " << Channel[i][1]
254 << " ";
255 }
256 outData1 << bRatio[0][i];
257 outData2 << bRatio[1][i];
258 for ( unsigned int l = 0; l < paramNum; l++ )
259 {
260 outData1 << " " << pbeast[i][l];
261 outData2 << " " << pbwest[i][l];
262 }
263 outData1 << endl;
264 outData2 << endl;
265 }
266 outData1.close();
267 outData2.close();
268
269 outData3.open( outFile3 );
270 for ( unsigned int i = 0; i < endScin; i++ )
271 {
272 if ( paramNum == 8 )
273 {
274 outData3 << ecFee[i] << " " << ecCrate[i] << " " << ecBoard[i] << " " << ecChannel[i]
275 << " ";
276 }
277 outData3 << eRatio[i];
278 for ( unsigned int l = 0; l < paramNum; l++ ) { outData3 << " " << pendcap[i][l]; }
279 outData3 << endl;
280 }
281 outData3.close();
282
283 return;
284}
sprintf(cut, "kal_costheta0_em>-0.93&&kal_costheta0_em<0.93&&kal_pxy0_em>=0.05+%d*0.1&&kal_" "pxy0_em<0.15+%d*0.1&&NGch>=2", j, j)