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

# User Rev Content
1 yangyong 1.2
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