ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/yangyong/combineICEB/getCalibConstants.cc
Revision: 1.3
Committed: Mon Aug 27 21:37:39 2012 UTC (12 years, 8 months ago) by yangyong
Content type: text/plain
Branch: MAIN
CVS Tags: V2012combv2c, HEAD
Changes since 1.2: +0 -719 lines
Log Message:
*** empty log message ***

File Contents

# Content
1
2
3 void scaleMeanToUnit(float C[170][360]){
4
5
6 double mean = 0;
7 int n = 0;
8 for(int j=0; j< 170; j++){
9 for(int k=0; k< 360; k++){
10
11 if( C[j][k] >0){
12 mean += C[j][k];
13 n ++;
14 }
15 }
16 }
17 mean /= n;
18 cout<<"mean " << mean<<" "<<n<<endl;
19
20 for(int j=0; j< 170; j++){
21 for(int k=0; k< 360; k++){
22 if(C[j][k] >0){
23 C[j][k] /= mean;
24 }
25 }
26 }
27
28 }
29
30
31
32
33
34
35
36 void NormIetaToUnitTestBeamSMOnly(float C[170][360]){
37
38 float mean_ieta[170] = {0};
39 int nmean_ieta[170] = {0};
40
41 float mean_ietaTT[170] = {0};
42 int nmean_ietaTT[170] = {0};
43
44
45 for(int j=0; j< 170; j++){
46
47 int ieta = j-85;
48 if( ieta >=0) ieta += 1;
49
50 for(int k=0; k< 360; k++){
51
52 int iphi = k;
53 if( k==0) iphi = 360;
54
55 int iSM = (iphi-1)/20+1;
56 if( ieta<0) iSM += 18;
57 int smTB = isTestBeamSM(iSM);
58 if( smTB ==0) continue;
59
60 //if( C[j][k] >0 ){
61 if( C[j][k] >0.5 && C[j][k] < 1.5 ){
62 mean_ieta[j] += C[j][k];
63 nmean_ieta[j] ++;
64
65 mean_ietaTT[j/5] += C[j][k];
66 nmean_ietaTT[j/5] ++;
67
68 }
69
70 }
71 }
72
73
74 for(int j=0; j< 170; j++){
75 mean_ieta[j] /= nmean_ieta[j];
76 //cout<<" mean_ieta[" << j<<"] "<< mean_ieta[j] <<endl;
77 }
78
79 // for(int j=0; j< 34; j++){
80 // mean_ietaTT[j] /= nmean_ietaTT[j];
81 // cout<<" mean_ietaTT[" << j<<"] "<< mean_ietaTT[j] <<endl;
82 // }
83
84 for(int j=0; j< 170; j++){
85 for(int k=0; k< 360; k++){
86
87 if( C[j][k] >0 ){
88 C[j][k] /= mean_ieta[j] ;
89 }
90 }
91 }
92
93 }
94
95
96
97 void NormIetaAbsToUnitTestBeamSMOnly(float C[170][360]){
98
99
100 float mean_ieta[170] = {0};
101 int nmean_ieta[170] = {0};
102
103 float mean_ietaTT[170] = {0};
104 int nmean_ietaTT[170] = {0};
105
106
107 for(int j=0; j< 170; j++){
108
109 int ieta = j-85;
110 if( ieta >=0) ieta += 1;
111
112 for(int k=0; k< 360; k++){
113
114 int iphi = k;
115 if( k==0) iphi = 360;
116
117 int iSM = (iphi-1)/20+1;
118 if( ieta<0) iSM += 18;
119 int smTB = isTestBeamSM(iSM);
120 if( smTB ==0) continue;
121
122 int ietaAbs = abs(ieta);
123
124 //if( C[j][k] >0 ){
125 if( C[j][k] >0.5 && C[j][k] < 1.5 ){
126 mean_ieta[ietaAbs-1] += C[j][k];
127 nmean_ieta[ietaAbs-1] ++;
128
129 mean_ietaTT[j/5] += C[j][k];
130 nmean_ietaTT[j/5] ++;
131
132 }
133 }
134 }
135
136
137 for(int j=0; j< 85; j++){
138 mean_ieta[j] /= nmean_ieta[j];
139 //cout<<" mean_ietaAbs[" << j<<"] "<< mean_ieta[j] <<endl;
140 }
141
142 // for(int j=0; j< 34; j++){
143 // mean_ietaTT[j] /= nmean_ietaTT[j];
144 // cout<<" mean_ietaTT[" << j<<"] "<< mean_ietaTT[j] <<endl;
145 // }
146
147 for(int j=0; j< 170; j++){
148
149 int ieta = j-85;
150 if( ieta >=0) ieta += 1;
151
152 for(int k=0; k< 360; k++){
153
154 int ietaAbs = abs(ieta);
155
156 if( C[j][k] >0 ){
157
158 C[j][k] /= mean_ieta[ietaAbs-1] ;
159
160 }
161 }
162 }
163
164 }
165
166
167
168 void NormCrystalDeadFlag_v1(float C[170][360], int ndeadflagietaiphi[170][360]){
169
170 float mean_deadflag[20] = {0};
171 float nmean_deadflag[20] = {0};
172
173 int ndeadCrystals = 0;
174 for(int j=0; j< 170; j++){
175 for(int k=0; k< 360; k++){
176 if( C[j][k] <0){
177 ndeadCrystals++;
178 continue;
179 }
180 int ndeadflag = ndeadflagietaiphi[j][k];
181 if( ndeadflag >=0){
182 mean_deadflag[ndeadflag] += C[j][k];
183 nmean_deadflag[ndeadflag] ++;
184 }
185 }
186 }
187 cout<<" NormCrystalDeadFlag ndeadCrystals: " << ndeadCrystals <<endl;
188 for(int j=0; j<20; j++){
189 if( nmean_deadflag[j] >0){
190 mean_deadflag[j] /= nmean_deadflag[j];
191 cout<<" mean_deadflag "<<j<<" "<< mean_deadflag[j]<< " "<< nmean_deadflag[j] <<endl;
192 }
193 }
194 for(int j=0; j< 170; j++){
195 for(int k=0; k< 360; k++){
196 if( C[j][k] <0) continue;
197 int ndeadflag = ndeadflagietaiphi[j][k];
198 if( ndeadflag >=0){
199 C[j][k] /= mean_deadflag[ndeadflag];
200 }
201 }
202 }
203
204 }
205
206 void NormCrystalDeadFlag(float C[170][360]){
207
208 float mean_deadflag[20] = {0};
209 float nmean_deadflag[20] = {0};
210
211 int ndeadCrystals = 0;
212 for(int j=0; j< 170; j++){
213 for(int k=0; k< 360; k++){
214 if( C[j][k] <0){
215 ndeadCrystals++;
216 continue;
217 }
218 int ndeadflag = ndeadflag_ietaiphi[j][k];
219 if( ndeadflag >=0){
220 mean_deadflag[ndeadflag] += C[j][k];
221 nmean_deadflag[ndeadflag] ++;
222 }
223 }
224 }
225 cout<<" NormCrystalDeadFlag ndeadCrystals: " << ndeadCrystals <<endl;
226 for(int j=0; j<20; j++){
227 if( nmean_deadflag[j] >0){
228 mean_deadflag[j] /= nmean_deadflag[j];
229 cout<<" mean_deadflag "<<j<<" "<< mean_deadflag[j]<< " "<< nmean_deadflag[j] <<endl;
230 }
231 }
232 for(int j=0; j< 170; j++){
233 for(int k=0; k< 360; k++){
234 if( C[j][k] <0) continue;
235 int ndeadflag = ndeadflag_ietaiphi[j][k];
236 if( ndeadflag >=0){
237 C[j][k] /= mean_deadflag[ndeadflag];
238 }
239 }
240 }
241
242 }
243
244
245
246 void SetSMScale(float C[170][360],TH1F *hhtmp){
247 float mean_ism[36] = {0};
248 float nmean_ism[36]= {0};
249
250 for(int j=0; j< 170; j++){
251 for(int k=0; k< 360; k++){
252
253 int ieta = j-85;
254 if( j >=0) ieta += 1;
255 int iphi = k;
256 if( k==0) iphi = 360;
257 int iSM = (iphi-1)/20+1;
258 if( ieta<0) iSM += 18;
259
260 if( C[j][k] >0 ){
261 mean_ism[iSM-1 ] += C[j][k];
262 nmean_ism[iSM-1] ++;
263 }
264 }
265 }
266
267 for(int j=0; j<36; j++){
268 mean_ism[j] /= nmean_ism[j];
269 /// cout<<"sm mean: " << j+1 <<" "<< mean_ism[j] <<" "<< nmean_ism[j]<<endl;
270 }
271
272
273 for(int j=0; j< 170; j++){
274 for(int k=0; k< 360; k++){
275
276 int ieta = j-85;
277 if( j >=0) ieta += 1;
278 int iphi = k;
279 if( k==0) iphi = 360;
280 int iSM = (iphi-1)/20+1;
281 if( ieta<0) iSM += 18;
282
283 if( C[j][k] >0 ){
284 C[j][k] *= hhtmp->GetBinContent(iSM);
285 }
286 }
287 }
288
289
290 }
291
292
293
294
295
296
297
298 void NormSMScaleToUnit(float C[170][360]){
299 float mean_ism[36] = {0};
300 float nmean_ism[36]= {0};
301
302 for(int j=0; j< 170; j++){
303 for(int k=0; k< 360; k++){
304
305 int ieta = j-85;
306 if( j >=0) ieta += 1;
307 int iphi = k;
308 if( k==0) iphi = 360;
309 int iSM = (iphi-1)/20+1;
310 if( ieta<0) iSM += 18;
311
312
313 if( C[j][k] >0 ){
314 mean_ism[iSM-1 ] += C[j][k];
315 nmean_ism[iSM-1] ++;
316 }
317 }
318 }
319
320 for(int j=0; j<36; j++){
321 mean_ism[j] /= nmean_ism[j];
322 //cout<<"sm mean: " << j+1 <<" "<< mean_ism[j] <<" "<< nmean_ism[j]<<endl;
323 }
324
325 for(int j=0; j< 170; j++){
326 for(int k=0; k< 360; k++){
327
328 int ieta = j-85;
329 if( j >=0) ieta += 1;
330 int iphi = k;
331 if( k==0) iphi = 360;
332 int iSM = (iphi-1)/20+1;
333 if( ieta<0) iSM += 18;
334
335 if( C[j][k] >0 ){
336 C[j][k] /= mean_ism[iSM-1];
337 }
338
339 }
340 }
341
342 }
343
344
345
346 void readInterCalibConstEBSimple(const char *input,float C[170][360]){
347
348 ifstream txtin1(input,ios::in);
349 if (txtin1.fail()){
350 cout<<"error open file barrel.. " << input<<endl;
351 exit(1);
352 }
353
354
355 int eta;
356 int phi;
357
358 float cc;
359
360 int n =0;
361 while(txtin1.good()){
362
363
364 txtin1 >> eta >> phi >> cc;
365 convxtalid(phi,eta);
366 eta += 85;
367 C[eta][phi] = cc;
368
369 n++;
370 if( n>= 61200) break;
371
372 }
373
374 }
375
376
377
378
379
380 void readInterCalibConstEBSimplev1(const char *input,float C[170][360]){
381
382 ifstream txtin1(input,ios::in);
383 if (txtin1.fail()){
384 cout<<"error open file barrel.. " << input<<endl;
385 exit(1);
386 }
387
388
389 int eta;
390 int phi;
391
392 float cc;
393 double mean = 0;
394 int ngood = 0;
395 int n =0;
396 while(txtin1.good()){
397
398 txtin1 >> eta >> phi >> cc;
399
400 if( !(eta>=0 && eta <= 169 && phi >=0 && phi<=359)) {
401 cout<<"wrong eta/phi " << eta<<" "<<phi <<endl;
402 exit(1);
403 }
404
405 C[eta][phi] = cc;
406 if( cc >0){
407 mean += cc;
408 ngood ++;
409 }
410 n++;
411 if( n>= 61200) break;
412 }
413 mean /= ngood;
414 cout<<"read ngood "<< ngood <<" mean: "<< mean<<endl;
415
416 for(int j=0; j<170; j++){
417 for(int k=0; k<360;k++){
418 if(C[j][k] >0) {
419 C[j][k] /= mean;
420 }
421 }
422 }
423
424 }
425
426
427
428