Changeset 342 in Sophya for trunk/Poubelle/archTOI.old/archeops.c
- Timestamp:
- Aug 2, 1999, 3:45:52 PM (26 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Poubelle/archTOI.old/archeops.c
r315 r342 1 //#include "manip.h" 2 #include <stdio.h> 3 #include "archeops.h" 4 5 6 /********** coefficients pour les mesures bolo ********************************/ 7 /* toutes les puissances en pW */ 8 /* -1- loi de reponse thermique des bolos avec R en ohms et T en Kelvin */ 9 /* */ 10 /* T = coef2 * ( ln ( R / coef1) ** ( -1 / coef0 ) */ 11 /* */ 12 /* -2- fuite thermique du bolo coef 3,4 */ 13 /* */ 14 /* Ptot = coef3 * ( (10*Tb) ** coef4 - (10*Tcryo) ** coef4 ) */ 15 /* */ 16 /* -3- calcul empirique de Pciel et de tau coef 5,6 */ 17 /* */ 18 /* Pciel = coef5 - Pelec coef5= I * Ai (tables xavier) */ 19 /* tau = - ln ( 1 + Pciel / coef6 ) coef6= I * Bi (tables xavier) */ 20 /* */ 21 /**************************************************************************************/ 22 23 24 /**************************************************************************************/ 25 /* */ 26 /* pour les MLPA : gain = 100 diviseur = 101 ou 330 */ 27 /* pour les bebodiff : gain = diviseur = 100Kohm / R preampli */ 28 /* pour les bebodiff : la capa est corrigee d'un facteur 0.868 */ 29 /* pour les cartes modifiees : mettre diviseur=0 */ 30 /* et capa = la resistance de chage en Megohm */ 31 /* */ 32 /**************************************************************************************/ 33 34 35 /* nom , on/off , 0 = MLPA , N° bolo , gain_pa , capa*1000 , diviseur , coef*10000 36 /* , 0 ou 1 , 2..8 = BEBO , hard , , 4700 , 333 , 37 /* 10 = Bediff , , , 38 39 /* pour les bediff (code 10) le n° de bolo est N° de bebo*8 + numero dans la bebo 40 /* soit : 1 2 3 4 5 6 .. 9 10 11 12 13 14 .. 17 18 19 20 21 22 .. etc 41 42 43 /*debut_param*/ 44 /*---------------------------------- fenetre : -----------------------------------*/ 45 46 param_bolo parametr={24,24,36,88,18, 47 48 { 49 { "v1-bedif1" , 1,10,1 , 200, 22000, 200, { 5000 , 123100 , 334200 } }, 50 { "v1-bedif2" , 1,10,2 , 200, 22000, 200, { 5000 , 12.31 , 33.42 } }, 51 { "v1-bedif3" , 1,10,3 , 200, 22000, 200, { 5000 , 50.0 , 14.0 } }, 52 { "v1-bedif4" , 1,10,4 , 200, 22000, 200, { 5000 , 12.31 , 33.42 } }, 53 { "v1-bedif5" , 1,10,5 , 1000, 4700, 1000, { 5000 , 12.31 , 33.42 } }, 54 { "v1-bedif6" , 1,10,6 , 1000, 4700, 1000, { 5000 , 12.31 , 33.42 } }, 55 56 { "v1-bedif7" , 1,10,9 , 1000, 4700, 1000, { 5000 , 12.31 , 33.42 } }, 57 { "v1-bedif8" , 1,10,10, 1000, 4700, 1000, { 5000 , 12.31 , 33.42 } }, 58 { "v1-bedif9" , 1,10,11, 1000, 4700, 1000, { 5000 , 12.31 , 33.42 } }, 59 { "v1-bedif10" , 1,10,12, 1000, 4700, 1000, { 5000 , 12.31 , 33.42 } }, 60 { "v1-bedif11" , 1,10,13, 1000, 4700, 1000, { 5000 , 12.31 , 33.42 } }, 61 { "v1-bedif12" , 1,10,14, 1000, 4700, 1000, { 5000 , 12.31 , 33.42 } }, 62 63 { "v1-bedif13" , 1,10,17, 1000, 4700, 1000, { 5000 , 12.31 , 33.42 } }, 64 { "v1-bedif14" , 1,10,18, 1000, 4700, 1000, { 5000 , 12.31 , 33.42 } }, 65 { "germanium" , 3,10,19, 1000, 22000 , 0, { 5000 , 12.31 , 33.42 } }, 66 { "therm_4k" , 3,10,20, 1000, 1000 , 0, { 5000 , 12.31 , 33.42 } }, 67 { "therm_1.6k" , 3,10,21, 1000, 1000 , 0, { 5000 , 12.31 , 33.42 } }, 68 { "therm_10k" , 3,10,22, 1000, 1000 , 0, { 5000 , 12.31 , 33.42 } }, 69 70 { "v1-bedif19" , 2,10,25 , 1000, 4700, 1000, { 5000 , 12.31 , 33.42 } }, 71 { "v1-bedif20" , 2,10,26, 1000, 4700, 1000, { 5000 , 12.31 , 33.42 } }, 72 { "v1-bedif21" , 2,10,27, 1000, 4700, 1000, { 5000 , 12.31 , 33.42 } }, 73 { "v1-bedif22" , 2,10,28, 1000, 4700, 1000, { 5000 , 12.31 , 33.42 } }, 74 { "v1-bedif23" , 2,10,29, 1000, 4700, 1000, { 5000 , 12.31 , 33.42 } }, 75 { "v1-bedif24" , 2,10,30, 1000, 4700, 1000, { 5000 , 12.31 , 33.42 } } 76 77 } 78 }; 79 /*fin_param*/ 80 81 82 83 /* bolos campagne 1998-1999 */ 84 /* 85 reg_NbSi.J, 1, 0, 1, 100, 4.7, 333, .5 ,519.6 , 8.286 86 v1-231...L, 1, 0, 2, 100, 4.7, 333, .5 , 1.7 , 32.41 , 0.333 , 10 , 20.30 , 11.41 87 v1-232...N, 1, 0, 3, 100, 4.7, 333, 88 v1-237...E, 1, 0, 4, 100, 4.7, 333, 89 90 reg_JamieO, 1, 0, 5, 100, 4.7, 101, 91 92 V2-NbSi..H, 1, 0, 6, 100, 4.7, 101, .5 ,433.8 , 9.25 93 V2-230...B, 1, 0, 7, 100, 4.7, 333, .5 , 8.26 , 26.61 , 5.10 , 7 , 9.354 , 1.026 94 V2-205...Q, 1, 0, 8, 100, 4.7, 333, .518 , 81 , 25.2 95 V2-208...P, 1, 0, 9, 100, 4.7, 333, .5 , 12.31 , 33.42 , 0.627 , 6.5 , 8.113 , 2.958 96 97 */ 98 /*bolos campagne 1997-1998 */ 99 /* 100 101 v1-208...J, 1, 0, 1, 100, 4.7, 333, .5 , 12.31 , 33.42 102 v1-232...L, 1, 0, 2, 100, 4.7, 333, 103 v1-205...N, 1, 0, 3, 100, 4.7, 333, .518 , 81 , 25.2 104 v1-NbSi..E, 1, 0, 4, 100, 4.7, 333, .5 ,519.6 , 8.286 105 Jamie....O, 1, 0, 5, 100, 4.7, 101, 106 V2-NbSi..H, 1, 0, 6, 100, 4.7, 101, .5 ,433.8 , 9.25 107 V2-224...B, 1, 0, 7, 100, 4.7, 333, .5 ,3.43 , 26.6 108 V2-230...Q, 1, 0, 8, 100, 4.7, 333, .5 , 8.26 , 26.61 109 V2-231...P, 1, 0, 9, 100, 4.7, 333, .5 , 1.7 , 32.41 110 111 */ 112 113 114 115 116 117 /*debut_nom_reglage*/ 118 /* 0->aa*/ 119 /* 1->bb*/ 120 /* 2->cc*/ 121 /* 3->reglage 3 */ 122 /* 4->reglage 4 */ 123 /* 5->reglage 5 */ 124 /* 6->reglage 6 */ 125 /* 7->reglage 7 */ 126 /*fin_nom_reglage*/ 127 128 129 130 131 132 133 134 reglage_bolo reglage_standard[8]={{ 135 136 137 /*debut reglage 0 */ 138 {30,76,9,1}, 139 {0 140 ,10 141 ,1 142 ,3 143 ,10 144 ,2 145 ,0 146 ,0 147 ,1 148 ,0 149 ,0 150 ,0 151 ,0 152 ,0 153 ,0 154 ,0 155 ,0 156 ,0 157 ,0 158 ,0 159 },{ 160 {22,100663296} 161 ,{-100646890,1} 162 ,{-100646890,1} 163 ,{22,0} 164 ,{-100638698,1} 165 ,{22,253952} 166 ,{-100646890,1} 167 ,{22,0} 168 ,{-100646890,1} 169 ,{-100646890,1} 170 ,{22,0} 171 ,{235388950,221185} 172 ,{20,0} 173 ,{20,0} 174 ,{16406,0} 175 ,{24598,0} 176 ,{22,0} 177 ,{24598,0} 178 },{ 179 {1,22,0,1} 180 ,{0,20,0,1} 181 ,{0,20,0,1} 182 ,{0,20,0,1} 183 ,{0,20,0,1} 184 ,{0,20,0,1} 185 },{ 186 {0,1,9,1,0,0,0} 187 ,{0,1,9,1,0,0,0} 188 ,{0,1,9,1,0,0,0} 189 ,{0,1,9,1,0,0,0} 190 },{0,0,0,0,0,0,0,0} 191 /*fin_reglage*/ 192 193 },{ 194 195 /*debut reglage 1 */ 196 {30,76,9,1}, 197 {0 198 ,10 199 ,1 200 ,3 201 ,10 202 ,2 203 ,0 204 ,0 205 ,1 206 ,0 207 ,0 208 ,0 209 ,0 210 ,0 211 ,0 212 ,0 213 ,0 214 ,0 215 ,0 216 ,0 217 },{ 218 {22,100663296} 219 ,{-100646890,1} 220 ,{-100646890,1} 221 ,{22,0} 222 ,{-100638698,1} 223 ,{22,253952} 224 ,{-100646890,1} 225 ,{22,0} 226 ,{-100646890,1} 227 ,{-100646890,1} 228 ,{22,0} 229 ,{235388950,221185} 230 ,{20,0} 231 ,{20,0} 232 ,{16406,0} 233 ,{24598,0} 234 ,{22,0} 235 ,{24598,0} 236 },{ 237 {1,22,0,1} 238 ,{0,20,0,1} 239 ,{0,20,0,1} 240 ,{0,20,0,1} 241 ,{0,20,0,1} 242 ,{0,20,0,1} 243 },{ 244 {0,1,9,1,0,0,0} 245 ,{0,1,9,1,0,0,0} 246 ,{0,1,9,1,0,0,0} 247 ,{0,1,9,1,0,0,0} 248 },{0,0,0,0,0,0,0,0} 249 /*fin_reglage*/ 250 251 },{ 252 253 /*debut reglage 2 */ 254 {31,76,9,0}, 255 {0 256 ,-14 257 ,-31 258 ,-63 259 ,-83 260 ,-103 261 ,-122 262 ,127 263 ,1 264 ,97 265 ,14 266 ,-32 267 ,-93 268 ,-87 269 ,-72 270 ,-80 271 ,-101 272 ,-112 273 ,-113 274 ,-121 275 },{ 276 {22,100663296} 277 ,{1040629782,204800} 278 ,{1040834582,221184} 279 ,{22,0} 280 ,{-100450282,2} 281 ,{22,253952} 282 ,{-100458474,2} 283 ,{22,0} 284 ,{-100442090,2} 285 ,{-100253674,253954} 286 ,{22,0} 287 ,{303013910,221184} 288 ,{20,0} 289 ,{20,0} 290 ,{9238,0} 291 ,{24598,301989888} 292 ,{22,0} 293 ,{24598,0} 294 ,{0,0} 295 ,{0,0} 296 ,{0,0} 297 ,{0,0} 298 ,{0,0} 299 ,{0,0} 300 },{ 301 {-15,-9,-13,-38} 302 ,{-83,-109,-90,-68} 303 ,{-99,-101,-67,-61} 304 ,{-64,-60,-38,-19} 305 ,{-28,-57,-77,-75} 306 ,{-66,-55,-51,-68} 307 },{ 308 {31,76,9,0,0,-35,-4643} 309 ,{-55,-77,-69,-55,-44,-43,-12336} 310 ,{-56,-85,-128,99,111,-116,-28030} 311 ,{105,107,101,101,106,111,31615} 312 },{-102,-88,-94,-113,-126,101,73,70} 313 /*fin_reglage*/ 314 315 },{ 316 317 /*debut reglage 3 */ 318 {31,76,9,0}, 319 {0 320 ,-14 321 ,-31 322 ,-63 323 ,-83 324 ,-103 325 ,-122 326 ,127 327 ,1 328 ,99 329 ,13 330 ,96 331 ,-93 332 ,-87 333 ,-72 334 ,-80 335 ,-101 336 ,-112 337 ,-113 338 ,-121 339 },{ 340 {22,100663296} 341 ,{1040629782,204800} 342 ,{1040834582,221184} 343 ,{22,0} 344 ,{-100450282,2} 345 ,{22,253952} 346 ,{-100458474,2} 347 ,{22,0} 348 ,{-100442090,2} 349 ,{-100253674,253954} 350 ,{22,0} 351 ,{303013910,221184} 352 ,{20,0} 353 ,{20,0} 354 ,{9238,0} 355 ,{24598,301989888} 356 ,{22,0} 357 ,{24598,0} 358 ,{0,0} 359 ,{0,0} 360 ,{0,0} 361 ,{0,0} 362 ,{0,0} 363 ,{0,0} 364 },{ 365 {-15,-9,-13,-38} 366 ,{-83,-109,-90,-68} 367 ,{-99,-101,-67,-61} 368 ,{-64,-60,-38,-19} 369 ,{-28,-57,-77,-75} 370 ,{-66,-55,-51,-68} 371 },{ 372 {31,76,9,0,0,-35,-4643} 373 ,{-55,-77,-69,-55,-44,-43,-12336} 374 ,{-56,-85,-128,99,111,-116,-28030} 375 ,{105,107,101,101,106,111,31615} 376 },{-102,-88,-94,-113,-126,101,73,70} 377 /*fin_reglage*/ 378 379 },{ 380 381 /*debut reglage 4 */ 382 {31,76,9,0}, 383 {0 384 ,-14 385 ,-31 386 ,-63 387 ,-83 388 ,-103 389 ,-122 390 ,127 391 ,1 392 ,99 393 ,13 394 ,112 395 ,-93 396 ,-87 397 ,-72 398 ,-80 399 ,-101 400 ,-112 401 ,-113 402 ,-121 403 },{ 404 {22,100663296} 405 ,{1040629782,204800} 406 ,{1040834582,221184} 407 ,{22,0} 408 ,{-100450282,2} 409 ,{22,253952} 410 ,{-100458474,2} 411 ,{22,0} 412 ,{-100442090,2} 413 ,{-100253674,253954} 414 ,{22,0} 415 ,{303013910,221184} 416 ,{20,0} 417 ,{20,0} 418 ,{9238,0} 419 ,{24598,301989888} 420 ,{22,0} 421 ,{24598,0} 422 ,{0,0} 423 ,{0,0} 424 ,{0,0} 425 ,{0,0} 426 ,{0,0} 427 ,{0,0} 428 },{ 429 {-15,-9,-13,-38} 430 ,{-83,-109,-90,-68} 431 ,{-99,-101,-67,-61} 432 ,{-64,-60,-38,-19} 433 ,{-28,-57,-77,-75} 434 ,{-66,-55,-51,-68} 435 },{ 436 {31,76,9,0,0,-35,-4643} 437 ,{-55,-77,-69,-55,-44,-43,-12336} 438 ,{-56,-85,-128,99,111,-116,-28030} 439 ,{105,107,101,101,106,111,31615} 440 },{-102,-88,-94,-113,-126,101,73,70} 441 /*fin_reglage*/ 442 443 },{ 444 445 /*debut reglage 5 */ 446 {31,76,9,0}, 447 {0 448 ,-14 449 ,-31 450 ,-63 451 ,-83 452 ,-103 453 ,-122 454 ,127 455 ,1 456 ,97 457 ,14 458 ,-80 459 ,-93 460 ,-87 461 ,-72 462 ,-80 463 ,-101 464 ,-112 465 ,-113 466 ,-121 467 },{ 468 {22,100663296} 469 ,{1040629782,204800} 470 ,{1040834582,221184} 471 ,{22,0} 472 ,{-100450282,2} 473 ,{22,253952} 474 ,{-100458474,2} 475 ,{22,0} 476 ,{-100442090,2} 477 ,{-100253674,253954} 478 ,{22,0} 479 ,{303013910,221184} 480 ,{20,0} 481 ,{20,0} 482 ,{9238,0} 483 ,{24598,301989888} 484 ,{22,0} 485 ,{24598,0} 486 ,{0,0} 487 ,{0,0} 488 ,{0,0} 489 ,{0,0} 490 ,{0,0} 491 ,{0,0} 492 },{ 493 {-15,-9,-13,-38} 494 ,{-83,-109,-90,-68} 495 ,{-99,-101,-67,-61} 496 ,{-64,-60,-38,-19} 497 ,{-28,-57,-77,-75} 498 ,{-66,-55,-51,-68} 499 },{ 500 {31,76,9,0,0,-35,-4643} 501 ,{-55,-77,-69,-55,-44,-43,-12336} 502 ,{-56,-85,-128,99,111,-116,-28030} 503 ,{105,107,101,101,106,111,31615} 504 },{-102,-88,-94,-113,-126,101,73,70} 505 /*fin_reglage*/ 506 507 },{0 508 509 /*debut reglage 6 */ 510 /*fin_reglage*/ 511 512 },{0 513 514 /*debut reglage 7 */ 515 /*fin_reglage*/ 516 517 } }; 518 519 /* ------------------------------------ corps des fonctions ------------------------------ */ 520 /* -------------------------------------------------------------------------------------------- */ 521 522 523 524 unsigned long val_long(char x) 525 { 526 unsigned long a,xl; 527 a=x-2; if(x<3) xl=x; else xl=((a&1) + 2)<<(a>>1); 528 return(xl); 529 } 530 531 532 double val_double(char x) 533 { 534 unsigned long a,xl; 535 if(x<0) x=-x; a=x; if(!a) xl=0; else xl=((a&1) + 2)<<(a>>1); 536 if(x>0) return(1e-4*(double)xl); else return(-1e-4*(double)xl); 537 } 538 539 int new_val_dac(int a,char code) 540 { 541 if(code&0x80) a=(code&0x7f) <<5 ; 542 else { 543 if(code&0x40) a+=code&0x3f; 544 else a-=code&0x3f; 545 } 546 return(a); 547 } 548 549 550 551 552 int calcul_somme_block(block_type_modele* blk,int longueur) 553 { 554 int i,so=0;; 555 for(i=0;i<(longueur/4-4);i++) so^=(int)blk->mot[i]; 556 /* somme sur tous les mots internes : on exclus le dbut, les codes et la fin */ 557 return((so^(so>>16))&0xffff); 558 } 559 560 561 562 563 void valide_block(block_type_modele* blk,int type,int block_num) 564 { 565 int somme,longueur; 566 def_long_block 567 longueur=long_block[type]; 568 /*printf("valide block adresse %x type %d numblock %d longueur=%d \n" */ 569 /* ,(unsigned)blk,type,block_num,longueur);*/ 570 blk->debut = debut_block_mesure; 571 blk->code2 = (((long)block_num) & 0xffffff ) | ( (((long)type)<<24)&0xff000000 ); 572 573 blk->mot[longueur/4-4] = fin_block_mesure; 574 somme=calcul_somme_block(blk,longueur); 575 blk->code1 = (((long)longueur)<<16) | somme; 576 } 577 578 579 /* Quand on est sur une machine swappee, on ne cherche pas a verifier */ 580 /* le checksum, puisqu'on a modifie les blocs, sans swapper par exemple */ 581 /* les chars des noms de bolometres et des chaines GPS... */ 582 #ifdef __alpha 583 #define SWAP 584 #endif 585 #if defined(Linux) || defined(linux) 586 #define SWAP 587 #endif 588 589 int verifie_block(block_type_modele* blk) 590 { 591 int type,lg,som; 592 def_long_block 593 if(blk->debut != debut_block_mesure) return(block_debut_erreur); 594 type=type_block(blk); if( (type<0) ||(type>=nb_type_blocks) ) return(block_type_inconnu); 595 lg=longueur_block(blk); if( lg != long_block[type] ) return(block_longueur_erreur); 596 if( blk->mot[(lg/4)-4] != fin_block_mesure) return(block_fin_erreur); 597 #ifndef SWAP 598 som=calcul_somme_block(blk,lg); if( som!= somme_block(blk)) return(block_somme_erreur); 599 #endif 600 return(block_correct); 601 } 602 603 604 int verifie_block_printf(block_type_modele* blk) 605 { 606 int type,lg,som; 607 def_long_block 608 def_nom_block 609 if(blk->debut != debut_block_mesure) 610 { 611 printf(" erreur dans le code debut de block \n"); 612 return(block_debut_erreur); 613 } 614 615 type=type_block(blk); 616 if( (type<0) || (type>nb_type_blocks) ) 617 { 618 printf(" block de type %d inconnu\n",type); 619 return(block_type_inconnu); 620 } 621 622 lg=longueur_block(blk); 623 if( lg!=long_block[type] ) 624 { 625 printf(" block type %s erreur de longueur (nominal=%d , dans le block=%d \n" 626 ,nom_block[type],long_block[type],lg); 627 return(block_longueur_erreur); 628 } 629 630 som=calcul_somme_block(blk,lg); 631 if( som!=somme_block(blk) ) 632 { 633 printf(" block type %s : erreur de somme (calculee=%d , dans le block=%d \n" 634 ,nom_block[type],som,somme_block(blk) ); 635 return(block_somme_erreur); 636 } 637 638 if(blk->mot[(lg/4)-4] != fin_block_mesure) 639 { 640 printf(" block type %s erreur de code fin de block : trouve %x au lieu de %x \n" 641 ,nom_block[type],(int)blk->mot[(lg/4)-4],fin_block_mesure); 642 return(block_fin_erreur); 643 } 644 645 return(block_correct); 646 } 647 648 649 650 651 652 653 1 #include "archeops_28.c"
Note:
See TracChangeset
for help on using the changeset viewer.