Changeset 4865 for trunk/MagicSoft/Cosy/main
- Timestamp:
- 09/05/04 18:56:47 (21 years ago)
- Location:
- trunk/MagicSoft/Cosy/main
- Files:
-
- 2 added
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/MagicSoft/Cosy/main/MCaos.cc
r4105 r4865 116 116 117 117 Rings r; 118 r.SetMinNumberLeds(fMinNumberLeds); 118 119 r.CalcRings(fPositions); 119 120 … … 159 160 fHistw[i] = new TH1F; 160 161 fHistw[i]->SetNameTitle(name, title); 161 fHistw[i]->SetBins( 721, -180.5, 180.5);162 fHistw[i]->SetXTitle("\\Phi [ deg]");162 fHistw[i]->SetBins(101, -50.5, 50.5); 163 fHistw[i]->SetXTitle("\\Phi [arcmin]"); 163 164 fHistw[i]->SetYTitle("counts"); 164 165 } … … 259 260 c2->Update(); 260 261 262 /* 261 263 c = new TCanvas("ctime", "Timedevelopement of Center", 800, 800); 262 264 c->Divide(1,3); … … 266 268 h->SetYTitle("x [pix]"); 267 269 h->DrawCopy(); 268 ((TPad*)gPad)->SetSelected(NULL);270 c->SetSelectedPad(NULL); 269 271 fGraphprx->DrawClone("ALP*")->SetBit(kCanDelete); 272 gPad->Modified(); 273 gPad->Update(); 270 274 c->cd(2); 271 275 h = fGraphpry->GetHistogram(); … … 273 277 h->SetYTitle("y [pix]"); 274 278 h->DrawCopy(); 275 ((TPad*)gPad)->SetSelected(NULL);276 fGraphpry->DrawClone("ALP*")->SetBit(kCanDelete);279 //((TPad*)gPad)->SetSelectedPad(NULL); 280 //fGraphpry->DrawClone("ALP*")->SetBit(kCanDelete); 277 281 c->cd(3); 278 282 h = fGraphr->GetHistogram(); … … 280 284 h->SetYTitle("r [pix]"); 281 285 h->DrawCopy(); 282 ((TPad*)gPad)->SetSelected(NULL);283 fGraphr->DrawClone("ALP*")->SetBit(kCanDelete);286 //((TPad*)gPad)->SetSelectedPad(NULL); 287 //fGraphr->DrawClone("ALP*")->SetBit(kCanDelete); 284 288 c->Modified(); 285 289 c->Update(); 290 */ 286 291 287 292 c = new TCanvas("crot", "rotation angle", 800, 600); … … 291 296 fHistallw->SetYTitle("counts"); 292 297 fHistallw->DrawCopy(); 298 /* 293 299 c->cd(2); 294 300 h = fGraphw->GetHistogram(); … … 298 304 ((TPad*)gPad)->SetSelected(NULL); 299 305 fGraphw->DrawClone("ALP*")->SetBit(kCanDelete); 300 306 */ 301 307 302 308 /* -------------------------------------------------------- … … 325 331 } 326 332 327 Ring MCaos::Run(byte *img, bool printl, bool printr, const ZdAz &pos, const MTime &t )333 Ring MCaos::Run(byte *img, bool printl, bool printr, const ZdAz &pos, const MTime &t, Double_t box, Double_t cut) 328 334 { 329 335 Leds &leds = *fLeds; … … 331 337 332 338 // img width height radius sigma 333 FilterLed f(img, 768, 576, 50, 3.0);339 FilterLed f(img, 768, 576, box, cut); 334 340 335 341 Int_t first=0; … … 365 371 366 372 Rings rings; 367 rings.CalcRings(leds, 265, 268); 373 rings.SetMinNumberLeds(fMinNumberLeds); 374 // rings.CalcRings(leds, 265, 268); 375 // rwagner 376 // rings.CalcRings(leds, 158, 164); 377 rings.CalcRings(leds, fMinRadius, fMaxRadius); 368 378 369 379 const Ring ¢er = rings.GetCenter(); 380 381 center.Print(); 370 382 371 383 // FIXME! … … 393 405 { 394 406 0, 395 396 397 398 399 407 0, 408 0, 409 0, 410 0, 411 0 400 412 }; 401 413 -
trunk/MagicSoft/Cosy/main/MCaos.h
r4105 r4865 45 45 TGraph *fGraphr; 46 46 47 Short_t fMinNumberLeds; 48 Double_t fMinRadius; 49 Double_t fMaxRadius; 50 47 51 public: 48 MCaos() : fFile(NULL), fHistpr(NULL) 52 MCaos() : fFile(NULL), fHistpr(NULL), fMinNumberLeds(5), fMinRadius(265), fMaxRadius(268) 49 53 { 50 54 fLeds = new Leds; 51 55 } 56 52 57 ~MCaos() 53 58 { … … 66 71 void OpenFile(); 67 72 void CloseFile(); 73 74 void SetMinNumberRings(Short_t n) 75 { 76 fMinNumberLeds = n; 77 } 78 79 void SetRadii(Double_t min, Double_t max) 80 { 81 fMinRadius=min; 82 fMaxRadius=max; 83 } 68 84 69 85 void InitHistograms(); … … 72 88 void ResetHistograms(); 73 89 74 Ring Run(byte *img, bool printl, bool printr, const ZdAz &pos, const MTime &t); 90 Ring Run(byte *img, bool printl, bool printr, const ZdAz &pos, 91 const MTime &t, Double_t box, Double_t cut); 75 92 }; 76 93 -
trunk/MagicSoft/Cosy/main/MCosy.h
r4255 r4865 203 203 MLog *GetOutRep() { return fOutRep; } 204 204 205 //rwagner 206 MDriveCom *GetDriveCom() { return fCom; } 207 205 208 // static ZdAz CorrectTarget(const ZdAz &src, const ZdAz &dst); 206 209 // static ZdAz RaDec2ZdAz(const double mjd, const RaDec &pos, const RaDec &pm=RaDec(0,0)); -
trunk/MagicSoft/Cosy/main/MStarguider.cc
r4549 r4865 1 #define EXPERT 2 1 3 #include "MStarguider.h" 2 4 … … 9 11 #include <TTimer.h> 10 12 #include <TSystem.h> 13 #include <TFile.h> // temp writeout of histos 14 #include "MAstro.h" 15 #include "MString.h" 11 16 12 17 #include <TGMenu.h> … … 15 20 #include <TGSplitter.h> // TGHorizontal3DLine 16 21 #include <TGTextEntry.h> 17 22 #include <TGLayout.h> 18 23 #include "MString.h" 19 24 20 25 #include "MCosy.h" 21 26 #include "MCaos.h" 27 // #include "MStargLeds.h" 28 #include "MStargHistograms.h" 29 #include "MDriveCom.h" 30 31 #include "MGStarg.h" 32 #include "TGFrame.h" 22 33 23 34 #include "MGImage.h" … … 91 102 IDM_kCaosWriteStart, 92 103 IDM_kCaosWriteStop, 93 IDM_kResetHistograms 104 IDM_kResetHistograms, 105 IDM_kStargHistograms, 106 IDM_kStargAnalysis, 107 IDM_kStargCaosFilter, 108 IDM_kStargLEDFilter, 109 IDM_kStargFindStar 110 94 111 }; 95 112 … … 105 122 fCosy->GetWin()->GetImage()->DoRedraw(); 106 123 124 fGStarg->Update(fPos, fD); 125 107 126 return kTRUE; 108 127 } … … 122 141 123 142 fChannel = new MGPopupMenu(p); 124 fChannel->AddEntry(" Channel #1", IDM_kChannel1);125 fChannel->AddEntry(" Channel #2", IDM_kChannel2);143 fChannel->AddEntry("Starfield Camera", IDM_kChannel1); 144 fChannel->AddEntry("TPoint Camera", IDM_kChannel2); 126 145 fChannel->CheckEntry(channel==0?IDM_kChannel1:IDM_kChannel2); 127 146 fChannel->Associate(this); … … 134 153 fDisplay->AddEntry("&Filter", IDM_kFilter); 135 154 fDisplay->AddEntry("Find &Star", IDM_kFindStar); 136 fDisplay->AddEntry("C&aosFilter", IDM_kCaosFilter); 137 fDisplay->AddEntry("Sao &Catalog", IDM_kCatalog); 155 fDisplay->AddEntry("C&aos Filter", IDM_kCaosFilter); 156 fDisplay->AddEntry("SAO &Catalog", IDM_kCatalog); 157 fDisplay->AddEntry("Stretch", IDM_kStretch); 158 fDisplay->AddSeparator(); 138 159 fDisplay->AddEntry("Starguider", IDM_kStarguider); 139 fDisplay->AddEntry("Stretch", IDM_kStretch); 160 fDisplay->AddEntry("Starguider LED Filter", IDM_kStargCaosFilter); 161 fDisplay->AddEntry("Starguider Find Star", IDM_kStargFindStar); 162 fDisplay->AddEntry("Starguider Analysis", IDM_kStargAnalysis); 163 fDisplay->AddSeparator(); 140 164 if (channel>=0) 141 165 fDisplay->AddPopup("&Input", fChannel); 142 fDisplay->DisableEntry(IDM_kStarguider); 166 fDisplay->DisableEntry(IDM_kStargAnalysis); 167 fDisplay->DisableEntry(IDM_kStargFindStar); 143 168 fDisplay->CheckEntry(IDM_kStretch); 144 169 fDisplay->Associate(this); … … 218 243 { 219 244 fInterpol->CheckEntry(IDM_kInterpol5); 220 fIntRate = 5 ;245 fIntRate = 50; 221 246 } 222 247 else … … 247 272 248 273 fCaosAnalyse = new MGPopupMenu(p); 249 fCaosAnalyse->AddEntry("S&tart Analys e", IDM_kCaosAnalStart);250 fCaosAnalyse->AddEntry("St&op p Analyse", IDM_kCaosAnalStop);274 fCaosAnalyse->AddEntry("S&tart Analysis", IDM_kCaosAnalStart); 275 fCaosAnalyse->AddEntry("St&op Analysis", IDM_kCaosAnalStop); 251 276 fCaosAnalyse->DisableEntry(IDM_kCaosAnalStop); 252 277 // fCaosAnalyse->AddEntry("&Reset Histograms", IDM_kResetHistograms); … … 272 297 fList->Add(fCaOs); 273 298 299 TGLayoutHints *hints2a = 300 new TGLayoutHints(kLHintsCenterX|kLHintsCenterY| 301 kLHintsExpandX|kLHintsExpandY,1,1); 302 fList->Add(hints2a); 303 304 fGStarg = new MGStarg(this, 235); 305 fGStarg->Move(530,596+5); 306 fList->Add(fGStarg); 307 274 308 fCRaDec = new MGCoordinates(this, kETypeRaDec); 275 309 fCRaDec->Move(4, fMenu->GetDefaultHeight()+584); … … 278 312 279 313 fCZdAz = new MGCoordinates(this, kETypeZdAz, kFALSE); 280 fCZdAz->Move(240+12+ 10, fMenu->GetDefaultHeight()+584);314 fCZdAz->Move(240+12+28, fMenu->GetDefaultHeight()+581+12); 281 315 AddFrame(fCZdAz); 282 316 fList->Add(fCZdAz); 283 317 284 318 fPZdAz = new MGCoordinates(this, kETypeZdAz, kFALSE); 285 fPZdAz->Move(240+12+ 10, fMenu->GetDefaultHeight()+630);319 fPZdAz->Move(240+12+28, fMenu->GetDefaultHeight()+627+2*12); 286 320 AddFrame(fPZdAz); 287 321 fList->Add(fPZdAz); 288 322 323 fDZdAz = new MGCoordinates(this, kETypeZdAz, kFALSE); 324 fDZdAz->Move(240+12+28, fMenu->GetDefaultHeight()+673+3*12); 325 AddFrame(fDZdAz); 326 fList->Add(fDZdAz); 327 328 fSZdAz = new MGCoordinates(this, kETypeZdAz, kFALSE); 329 fSZdAz->Move(240+12+28, fMenu->GetDefaultHeight()+719+4*12); 330 AddFrame(fSZdAz); 331 fList->Add(fSZdAz); 332 289 333 fTPoint = new TGTextButton(this, "TPoint"); 290 fTPoint->Move(4, fMenu->GetDefaultHeight()+ 665);334 fTPoint->Move(4, fMenu->GetDefaultHeight()+722+3*12+25); 291 335 fTPoint->AllowStayDown(kTRUE); 292 336 AddFrame(fTPoint); … … 295 339 fFps = new TGLabel(this, "---fps"); 296 340 fFps->SetTextJustify(kTextRight); 297 fFps->Move(6 33, fMenu->GetDefaultHeight()+578);341 fFps->Move(650-440, fMenu->GetDefaultHeight()+619+13+60+20); 298 342 AddFrame(fFps); 299 343 fList->Add(fFps); … … 301 345 fPosZoom = new TGLabel(this, "----.--d/----.--d (----, ----)"); 302 346 fPosZoom->SetTextJustify(kTextRight); 303 fPosZoom->Move( 620, fMenu->GetDefaultHeight()+678);347 fPosZoom->Move(4, fMenu->GetDefaultHeight()+765); 304 348 AddFrame(fPosZoom); 305 349 fList->Add(fPosZoom); 306 350 307 TGLabel *l = new TGLabel(this, "Arb.-Sky Pos"); 351 fSkyBright = new TGLabel(this, "Sky Brightness: --- "); 352 fSkyBright->SetTextJustify(kTextLeft); 353 fSkyBright->Move(4, fMenu->GetDefaultHeight()+785); 354 AddFrame(fSkyBright); 355 fList->Add(fSkyBright); 356 357 TGLabel *l = new TGLabel(this, "arcsec/pix"); 308 358 l->SetTextJustify(kTextLeft); 309 l->Move( 480+32, fMenu->GetDefaultHeight()+590);359 l->Move(605-400, fMenu->GetDefaultHeight()+619+13+60); 310 360 AddFrame(l); 311 361 fList->Add(l); 312 362 313 l = new TGLabel(this, " arcsec/pix");363 l = new TGLabel(this, "deg"); 314 364 l->SetTextJustify(kTextLeft); 315 l->Move(605 , fMenu->GetDefaultHeight()+619+13);365 l->Move(605-410, fMenu->GetDefaultHeight()+619-10+60); 316 366 AddFrame(l); 317 367 fList->Add(l); 318 368 319 l = new TGLabel(this, " deg");369 l = new TGLabel(this, "Telescope pointing at"); 320 370 l->SetTextJustify(kTextLeft); 321 l->Move( 605, fMenu->GetDefaultHeight()+619-10);371 l->Move(240+12+20, fMenu->GetDefaultHeight()+584-5); 322 372 AddFrame(l); 323 373 fList->Add(l); 324 374 325 l = new TGLabel(this, " Pointing Pos");375 l = new TGLabel(this, "Starguider position"); 326 376 l->SetTextJustify(kTextLeft); 327 l->Move( 480+32, fMenu->GetDefaultHeight()+655);377 l->Move(240+12+20, fMenu->GetDefaultHeight()+630+12-5); 328 378 AddFrame(l); 329 379 fList->Add(l); 330 380 331 const Double_t pixsize = 23.4; 381 l = new TGLabel(this, "Misspointing"); 382 l->SetTextJustify(kTextLeft); 383 l->Move(240+12+20, fMenu->GetDefaultHeight()+676+2*12-5); 384 AddFrame(l); 385 fList->Add(l); 386 387 #ifdef EXPERT 388 l = new TGLabel(this, "Misspointing/FindStar (Experts Only!)"); 389 l->SetTextJustify(kTextLeft); 390 l->Move(240+12+20, fMenu->GetDefaultHeight()+722+3*12-5); 391 AddFrame(l); 392 fList->Add(l); 393 #endif 394 395 const Double_t pixsize = 48.8; // used to be 23.4 332 396 333 397 fSao->SetPixSize(pixsize); … … 339 403 fPixSize = new TGTextEntry(this, txt, IDM_kPixSize); 340 404 fPixSize->SetAlignment(kTextCenterX); 341 fPixSize->Move(547 , fMenu->GetDefaultHeight()+617+13);405 fPixSize->Move(547-410, fMenu->GetDefaultHeight()+617+13+60); 342 406 AddFrame(fPixSize); 343 407 fList->Add(fPixSize); … … 345 409 fAngle = new TGTextEntry(this, " 0", IDM_kAngle); 346 410 fAngle->SetAlignment(kTextCenterX); 347 fAngle->Move(547 , fMenu->GetDefaultHeight()+617-10);411 fAngle->Move(547-410, fMenu->GetDefaultHeight()+617-10+60); 348 412 AddFrame(fAngle); 349 413 fList->Add(fAngle); … … 357 421 // 358 422 fZoomImage = new MGImage(this, kZOOM, kZOOM); 359 fZoomImage->Move(768-kZOOM-2, 700-kZOOM-2); 423 // fZoomImage->Move(768-kZOOM-2, 700-kZOOM-2); 424 fZoomImage->Move(4, 700-kZOOM-2+85); 360 425 AddFrame(fZoomImage); 361 426 fList->Add(fZoomImage); … … 374 439 MapSubwindows(); 375 440 fTPoint->UnmapWindow(); 441 fGStarg->UnmapWindow(); 442 fPZdAz->UnmapWindow(); 443 fDZdAz->UnmapWindow(); 444 fSZdAz->UnmapWindow(); 445 fSkyBright->UnmapWindow(); 376 446 MapWindow(); 377 447 378 IconifyWindow(); 448 449 //IconifyWindow(); 379 450 380 451 //------------------------------------------------------------ … … 386 457 387 458 MStarguider::MStarguider(MObservatory::LocationName_t obs, Int_t channel) 388 : TGMainFrame(gClient->GetRoot(), 768, 740), fCosy(NULL), fOutTp(0), fDx((768-kZOOM)/2), fDy((512-kZOOM)/2) 389 { 459 : TGMainFrame(gClient->GetRoot(), 768, 840), fCosy(NULL), fOutTp(0), fDx((768-kZOOM)/2), fDy((512-kZOOM)/2), fStatus(MDriveCom::kStandby) 460 { 461 390 462 cout << " #### FIXME: Make MCaos Thread safe!" << endl; 391 463 … … 393 465 fRaDec = new RaDec(180, 40); 394 466 467 // fStargLeds = new MStargLeds; 468 // fStargLeds->ReadResources(); 469 395 470 fCaos = new MCaos; 396 471 fCaos->ReadResources(); 472 473 fStargCaos = new MCaos; 474 fStargCaos->ReadResources("stargleds.txt"); 475 fStargCaos->SetMinNumberRings(2); 476 fStargCaos->SetRadii(158,164); 477 478 fStargHistograms = new MStargHistograms(); 397 479 398 480 InitGui(channel); … … 427 509 428 510 delete fCaos; 511 delete fStargCaos; 512 // delete fStargLeds; 513 delete fStargHistograms; 429 514 delete fSao; 430 delete fRaDec; 515 delete fRaDec; 431 516 432 517 if (fOutTp) … … 491 576 case IDM_kCatalog: 492 577 Toggle(fDisplay, IDM_kCatalog); 493 if (fDisplay->IsEntryChecked(IDM_kCatalog)) 494 fDisplay->EnableEntry(IDM_kStarguider); 495 else 496 { 497 fDisplay->UnCheckEntry(IDM_kStarguider); 498 fDisplay->DisableEntry(IDM_kStarguider); 499 } 578 // if (!fDisplay->IsEntryChecked(IDM_kCatalog)) 579 // { 580 // fDisplay->UnCheckEntry(IDM_kStarguider); 581 // fDisplay->DisableEntry(IDM_kStarguider); 582 // } else { 583 // fDisplay->EnableEntry(IDM_kStarguider); 584 // } 585 return kTRUE; 586 587 case IDM_kStargFindStar: 588 Toggle(fDisplay, IDM_kStargFindStar); 589 if (fDisplay->IsEntryChecked(IDM_kStargFindStar)) { 590 fSZdAz->MapWindow(); 591 } else { 592 fSZdAz->UnmapWindow(); 593 } 500 594 return kTRUE; 501 595 502 596 case IDM_kStarguider: 503 597 Toggle(fDisplay, IDM_kStarguider); 598 599 if (fDisplay->IsEntryChecked(IDM_kStarguider)) { 600 601 fLastBright = 0xff; 602 603 fDisplay->DisableEntry(IDM_kFindStar); 604 fDisplay->EnableEntry(IDM_kStargAnalysis); 605 606 fPZdAz->MapWindow(); 607 fDZdAz->MapWindow(); 608 fSkyBright->MapWindow(); 609 610 fSao->SetLimitMag(8.3); 611 fIntRate = 125; 612 613 fDisplay->CheckEntry(IDM_kCatalog); 614 fGStarg->MapWindow(); 615 616 const Int_t ch0 = 617 fChannel->IsEntryChecked(IDM_kChannel1) ? 0 : 1; 618 const Int_t ch1 = 0; 619 620 if (ch0!=ch1) 621 { 622 623 delete fGetter; 624 usleep(150000); // FIX: Device or resource busy. 625 fGetter = new Camera(*this, ch1); 626 ((Camera*)fGetter)->Loop(0); 627 } 628 629 fChannel->CheckEntry(IDM_kChannel1); 630 fChannel->UnCheckEntry(IDM_kChannel2); 631 fChannel->DisableEntry(IDM_kChannel2); 632 633 } else { 634 635 fStatus = MDriveCom::kStandby; 636 637 fPZdAz->UnmapWindow(); 638 fDZdAz->UnmapWindow(); 639 fSkyBright->UnmapWindow(); 640 fGStarg->UnmapWindow(); 641 fChannel->EnableEntry(IDM_kChannel2); 642 fDisplay->EnableEntry(IDM_kFindStar); 643 fDisplay->DisableEntry(IDM_kStargAnalysis); 644 } 645 504 646 gSystem->Unlink("tracking_error.txt"); 647 648 return kTRUE; 649 650 case IDM_kStargAnalysis: 651 Toggle(fDisplay, IDM_kStargAnalysis); 652 if (fDisplay->IsEntryChecked(IDM_kStargAnalysis)) { 653 fStargHistograms->OpenFile(); 654 } else { 655 fStargHistograms->CloseFile(); 656 } 657 658 return kTRUE; 659 660 661 case IDM_kStargHistograms: 662 Toggle(fDisplay, IDM_kStargHistograms); 663 return kTRUE; 664 665 case IDM_kStargLEDFilter: 666 Toggle(fDisplay, IDM_kStargLEDFilter); 505 667 return kTRUE; 506 668 507 669 case IDM_kFilter: 508 Toggle(fDisplay, IDM_kFilter); 509 if (fDisplay->IsEntryChecked(IDM_kFilter)) 510 fDisplay->EnableEntry(IDM_kStarguider); 511 else 512 { 513 fDisplay->UnCheckEntry(IDM_kStarguider); 514 fDisplay->DisableEntry(IDM_kStarguider); 515 } 516 return kTRUE; 670 Toggle(fDisplay, IDM_kFilter); 671 return kTRUE; 672 673 // case IDM_kFilterStarg: 674 // Toggle(fDisplay, IDM_kFilterStarg); 675 // if (fDisplay->IsEntryChecked(IDM_kFilterStarg)) 676 // fDisplay->EnableEntry(IDM_kStarguider); 677 // else 678 // { 679 // fDisplay->UnCheckEntry(IDM_kStarguider); 680 // fDisplay->DisableEntry(IDM_kStarguider); 681 // } 682 // return kTRUE; 517 683 518 684 case IDM_kFindStar: … … 535 701 // fCaos->OpenFile(); 536 702 Toggle(fDisplay, IDM_kCaosFilter); 537 if (fDisplay->IsEntryChecked(IDM_kCaosFilter)) 703 if (fDisplay->IsEntryChecked(IDM_kCaosFilter)) { 538 704 fMenu->AddPopup("&CaOs", fCaOs, NULL); 705 } 539 706 else 540 707 { … … 558 725 } 559 726 fMenu->Resize(fMenu->GetDefaultSize()); 560 MapSubwindows(); 727 MapSubwindows(); // maps everything, but we don't want that 728 fTPoint->UnmapWindow(); 729 fGStarg->UnmapWindow(); 730 fPZdAz->UnmapWindow(); 731 fDZdAz->UnmapWindow(); 732 fSZdAz->UnmapWindow(); 733 fSkyBright->UnmapWindow(); 561 734 MapWindow(); 562 735 return kTRUE; 736 737 case IDM_kStargCaosFilter: 738 Toggle(fDisplay, IDM_kStargCaosFilter); 739 if (fDisplay->IsEntryEnabled(IDM_kStargCaosFilter)) { 740 fDisplay->EnableEntry(IDM_kStargFindStar); 741 } else { 742 fDisplay->DisableEntry(IDM_kStargFindStar); 743 } 744 return kTRUE; 563 745 564 746 case IDM_kCaosPrintLeds: … … 665 847 const Int_t ch0 = fChannel->IsEntryChecked(IDM_kChannel1) ? 0 : 1; 666 848 const Int_t ch1 = mp1==IDM_kChannel1 ? 0 : 1; 667 if (ch0==ch1) 849 850 if (ch0==ch1) 668 851 return kTRUE; 669 852 … … 754 937 // Viewable area (FIXME: AZ) 755 938 // 756 TH2F h("Hist", "dX/dY", 77, -768/2-.5, 768/2+.5, 58, -576/2-.5, 576/2+.5); // 3 757 758 /* 939 // TH2F h("Hist", "dX/dY", 77, -768/2-.5, 768/2+.5, 58, -576/2-.5, 576/2+.5); // 3 940 // chose a bit coarser binning to enhance excess 941 // important: chose binning symmetrical around (0|0)! 942 TH2F h("Hist", "dX/dY", 49, -768/2-8, 768/2+8, 37, -576/2-8, 576/2+8); // 3 943 759 944 TH1F hmag("HistMag", "Mag", 19, 0, 100); 760 945 for (int i=0; i<mag.GetSize(); i++) 761 946 hmag.Fill(mag[i]); 762 */ 763 947 764 948 // 765 949 // Search for matching Magnitudes … … 772 956 773 957 // 774 // Se rach for an excess in the histogram958 // Search for an excess in the histogram 775 959 // 776 960 Int_t mx, my, dummy; … … 783 967 const double dy = h.GetYaxis()->GetBinWidth(my); 784 968 969 #ifdef EXPERT 785 970 cout << setprecision(3); 786 971 cout << "Cut-XY: " << xmax << " +- " << dx << " / " << ymax << " +- " << dy << endl; 972 #endif 787 973 788 974 TGraph g; … … 790 976 { 791 977 if (!(x[i]>xmax-dx && x[i]<xmax+dx && 792 y[i]>ymax-dy && y[i]<ymax+dy &&793 mag[i]>48-15 && mag[i]<48+15))978 y[i]>ymax-dy && y[i]<ymax+dy /*&& 979 mag[i]>48-15 && mag[i]<48+15*/)) 794 980 continue; 795 981 796 g.SetPoint(g.GetN(), x[i], y[i]); 797 } 798 982 g.SetPoint(g.GetN(), x[i], y[i]); 983 } 984 985 #ifdef EXPERT 799 986 cout << "Offset-XY: " << g.GetMean(1) << " +- " << g.GetRMS(1) << " / "; 800 987 cout << g.GetMean(2) << " +- " << g.GetRMS(2) << endl; 988 #endif 801 989 802 990 AltAz pos0 = fSao->CalcAltAzFromPix(768/2, 576/2)*kRad2Deg; … … 817 1005 fout2 << -pos1.Alt() << " " << pos1.Az() << endl; 818 1006 1007 // if (g.GetMean(1)>9 || g.GetMean(2)>9) { 1008 // TFile f1("sguider-highoffset.root","UPDATE"); 1009 // h.Write(); 1010 // hmag.Write(); 1011 // g.Write(); 1012 // f1.Close(); 1013 // } else { 1014 // TFile f1("sguider-niceoffset.root","UPDATE"); 1015 // h.Write(); 1016 // hmag.Write(); 1017 // g.Write(); 1018 // f1.Close(); 1019 1020 1021 // } 1022 819 1023 return ZdAz(-pos1.Alt(), pos1.Az()); 820 1024 } 821 1025 822 void MStarguider::CalcTrackingError(Leds &leds, MStarList &stars)1026 bool MStarguider::CalcTrackingError(Leds &leds, MStarList &stars, ZdAz &d, MTime &t) 823 1027 { 824 1028 const Int_t max = leds.GetEntries(); 825 826 if (stars.GetRealEntries() < 3) 827 { 828 cout << "Sorry, less than 3 stars in FOV!" << endl; 829 return; 830 } 831 832 if (max < 1) 833 { 834 cout << "Sorry, less than 1 detected spot in FOV!" << endl; 835 return; 836 } 1029 if (stars.GetRealEntries() < 3) 1030 { 1031 cout << "Sorry, less than 3 stars in FOV!" << endl; 1032 return kFALSE; 1033 } 1034 if (max < 3) //was 1 1035 { 1036 cout << "Sorry, less than 3 detected spot in FOV!" << endl; 1037 return kFALSE; 1038 } 837 1039 838 1040 stars.Sort(); // Sort by magnitude 839 1041 840 1042 TString str = "data/tracking_"; 841 str += fSao->GetMjd() -52000;1043 str += fSao->GetMjd(); 842 1044 str += ".txt"; 843 1045 … … 848 1050 Int_t num = 0; 849 1051 850 // FIXME: Is pred ifined value 3 a good idea?1052 // FIXME: Is predefined value 3 a good idea? 851 1053 852 1054 MStar *star; 853 1055 MStarListIter NextStar(&stars); 854 while ((star=NextStar()) && num++<max+3) 1056 while ((star=NextStar()) && num++<max+3) 855 1057 { 856 1058 TIter NextSp(&leds); 857 1059 Led *spot=NULL; 858 while ((spot=(Led*)NextSp())) 859 860 const XY dpos(spot->GetX()- star->GetX(), spot->GetY()-star->GetY());861 1060 while ((spot=(Led*)NextSp())) 1061 { 1062 const XY dpos(spot->GetX()-(768-star->GetX()), spot->GetY()-star->GetY()); 1063 862 1064 const Int_t idx = x.GetSize(); 863 1065 864 1066 x.Set(idx+1); 865 1067 y.Set(idx+1); 866 1068 mag.Set(idx+1); 867 1069 868 1070 x.AddAt(dpos.X(), idx); 869 1071 y.AddAt(dpos.Y(), idx); 870 1072 mag.AddAt(spot->GetMag()/star->GetMag(), idx); 871 1073 872 if (fout) 1074 if (fout) { 1075 fout << spot->GetX() << " " 1076 << spot->GetY() << " " 1077 << spot->GetMag() << " " 1078 << star->GetX() << " " 1079 << star->GetY() << " " 1080 << star->GetMag() << " "; 873 1081 fout << x[idx] << " " << y[idx] << " " << mag[idx] << endl; 1082 } 874 1083 } 875 } 876 877 ZdAz d = TrackingError(x, y, mag); 878 1084 } 1085 1086 d = TrackingError(x, y, mag); 1087 fDZdAz->SetCoordinates(d); 1088 879 1089 // 880 1090 // Calculated offsets 881 1091 // 882 1092 1093 #ifdef EXPERT 883 1094 // round= floor(x+.5) 884 1095 cout << "Offset-ZdAz: " << d.Zd()*60 << "' / " << d.Az()*60 << "'" << endl; 885 1096 cout << "Offset-ZdAz: " << d.Zd()/360*16384 << " / " << d.Az()/360*16384 << " (SE) " << endl; 1097 #endif 886 1098 887 1099 // … … 890 1102 ZdAz cpos = fSao->GetZdAz()-d; 891 1103 fPZdAz->SetCoordinates(cpos); 892 } 893 894 void MStarguider::FindStar(FilterLed &f, FilterLed &f2, Ring ¢er, MTime &t) 1104 1105 return kTRUE; 1106 1107 } 1108 1109 ZdAz MStarguider::FindStar(FilterLed &f, FilterLed &f2, Ring ¢er, MTime &t, Double_t cut, Double_t box, Double_t scalefactor = 1.0) 895 1110 { 896 1111 // Set search Paremeters (FIXME: Get them from user input!) 897 f.SetCut( 3.5);898 f.SetBox( 70);1112 f.SetCut(cut); // 3.5 1113 f.SetBox(box); // 70 899 1114 900 1115 // Try to find Led in this area … … 902 1117 f.FindStar(leds, (Int_t)center.GetX(), (Int_t)center.GetY()); 903 1118 904 // Check whet er star found1119 // Check whether star found 905 1120 Led *star = (Led*)leds.At(0); 906 1121 if (!star || leds.GetEntries()<1) 907 return ;1122 return ZdAz(.0,.0); 908 1123 909 1124 cout << "Found star @ " << flush; … … 932 1147 933 1148 // Convert from Pixel to millimeter (1pix=2.9mm) 934 x *= 2.58427;935 y *= 2.58427;1149 x *= (2.58427 * scalefactor); 1150 y *= (2.58427 * scalefactor); 936 1151 937 1152 // Correct for abberation. … … 945 1160 cout << "STAR-Offset: " << MTime(-1) << " dZd=" << dzd << "d dAz=" << daz << "d" << endl; 946 1161 1162 ZdAz zdaz(dzd,daz); 1163 947 1164 // Check TPoint data set request 948 1165 if (!fTPoint->IsDown()) 949 return ;1166 return zdaz; 950 1167 fTPoint->SetDown(kFALSE); 951 1168 … … 1011 1228 outrep.UnLock("MStarguider::FindStar"); 1012 1229 } 1230 1231 return zdaz; 1013 1232 } 1014 1233 … … 1042 1261 } 1043 1262 1044 void MStarguider::ProcessFrame(const unsigned long n, byte *img, struct timeval *tm) 1263 void MStarguider::ProcessFrame(const unsigned long n, byte *img, 1264 struct timeval *tm) 1045 1265 { 1046 1266 static unsigned long n0 = n; … … 1066 1286 FilterLed f(img, 768, 576, 2.5); // 2.5 1067 1287 FilterLed f2(cimg, 768, 576); // former color 0xb0 1068 1288 1069 1289 if (fDisplay->IsEntryChecked(IDM_kStretch)) 1070 1290 f.Stretch(); 1071 1291 1072 1292 if (!fWritePictures->IsEntryEnabled(IDM_kStart) && 1073 1293 (!(n%fWrtRate) || fWriteType->IsEntryChecked(IDM_kOnce))) … … 1075 1295 if (fFileType->IsEntryChecked(IDM_kPNG)) 1076 1296 Writer::Png("pix/file", img, tm); 1077 1297 1078 1298 if (fFileType->IsEntryChecked(IDM_kPPM)) 1079 1299 Writer::Ppm("pix/file", img, tm); 1080 1300 1081 1301 if (fWriteType->IsEntryChecked(IDM_kOnce)) 1082 1302 ProcessMessage(MK_MSG(kC_COMMAND, kCM_MENU), IDM_kStop, 0); 1083 1303 } 1084 1085 MStarList spots;1304 1305 // Visual Filter, whole FOV 1086 1306 if (fDisplay->IsEntryChecked(IDM_kFilter)) 1087 1307 f.Execute(); 1088 1308 1309 /* ---------------------------------- 1310 // Visual StarFilter for Starguider 1311 if (fDisplay->IsEntryChecked(IDM_kFilterStarg) && !fDisplay->IsEntryChecked(IDM_kStarguider)) { 1312 f.SetBox(230); 1313 f.AddIgnoreRegion(295,112,384,204); 1314 f.Execute(530, 292); 1315 } 1316 ------------------------------------- */ 1317 1318 // Find Center of Camera for Caos and Tpoints 1089 1319 Ring center(768/2, 576/2); 1090 1320 if (fDisplay->IsEntryChecked(IDM_kCaosFilter)) … … 1095 1325 if (fCosy) 1096 1326 pos = fCosy->GetPointingPos(); 1097 1098 center = fCaos->Run(img, printl, printr, pos, t);1099 } 1100 1327 center = fCaos->Run(img, printl, printr, pos, t, 50, 3.0); 1328 } 1329 1330 // Find Star at Center---for Tpoint Procedure 1101 1331 if (fDisplay->IsEntryChecked(IDM_kFindStar)) 1102 FindStar(f, f2, center, t);1332 ZdAz zdaz = FindStar(f, f2, center, t, 3.5, 70); 1103 1333 1104 1334 byte zimg[kZOOM*kZOOM]; … … 1111 1341 if (fCosy) 1112 1342 { 1113 byte simg[(768/2-1)*(576/2-1)]; 1114 for (int y=0; y<576/2-1; y++) 1115 for (int x=0; x<768/2-1; x++) 1116 simg[x+y*(768/2-1)] = ((unsigned int)img[2*x+2*y*768]+img[2*x+2*y*768+1]+img[2*x+2*(y+1)*768]+img[2*x+2*(y+1)*768+1])/4; 1117 1118 fCosy->GetWin()->GetImage()->DrawImg(simg); 1119 } 1120 1343 byte simg[(768/2-1)*(576/2-1)]; 1344 for (int y=0; y<576/2-1; y++) 1345 for (int x=0; x<768/2-1; x++) 1346 simg[x+y*(768/2-1)] = ((unsigned int)img[2*x+2*y*768]+img[2*x+2*y*768+1]+img[2*x+2*(y+1)*768]+img[2*x+2*(y+1)*768+1])/4; 1347 1348 fCosy->GetWin()->GetImage()->DrawImg(simg); 1349 } 1350 1351 // Find Center of Camera in Starfield Camera picture 1352 1353 Ring sgcenter(53.2, 293.6); // Center of camera in SG picture [px] 1354 ZdAz sgcenterzdaz(0, 0); // Center of camera in SG picture [deg] 1355 // (0,0)_deg is at (53.2, 293.6)_px 1356 ZdAz star(0, 0); // Star on curtain in [deg] 1357 1358 if (fDisplay->IsEntryChecked(IDM_kStargCaosFilter)) 1359 { 1360 ZdAz pos; 1361 if (fCosy) 1362 pos = fCosy->GetPointingPos(); 1363 sgcenter = 1364 fStargCaos->Run(img, kFALSE, kFALSE, pos, t, 30, 3.0); // [px] 1365 const Float_t pixsize = atof(fPixSize->GetText()); // [arcsec/px] 1366 sgcenterzdaz.Zd((sgcenter.GetY()-293.6) * pixsize /3600 ); 1367 sgcenterzdaz.Az((sgcenter.GetX()-53.2) * pixsize /3600 ); 1368 #ifdef EXPERT 1369 cout << "- LEDs imply offset of Zd=" 1370 << sgcenter.GetX()-53.2 << "pix Az=" 1371 << sgcenter.GetY()-293.6<< "pix" << endl; 1372 #endif 1373 if (fDisplay->IsEntryChecked(IDM_kStargFindStar)) { 1374 star = FindStar(f, f2, sgcenter, t, 4.5, 30, 267/161.9); // [deg] 1375 #ifdef EXPERT 1376 cout << "- Star is found to be off Zd=" << star.Zd()*60 << "' Az=" 1377 << star.Az()*60 << "'" << endl; 1378 #endif 1379 fSZdAz->SetCoordinates(star); // Misspointing found from Camera 1380 } 1381 } 1382 1383 // we calculate the offset given by the three ETH Leds visible to 1384 // the guide camera 1385 // This is an (inferior, obsolete) alternative to the StarCaosFilter 1386 // Led offset; 1387 // if (fDisplay->IsEntryChecked(IDM_kStargLEDFilter)) 1388 // fStargLeds->Run(img,offset); 1389 1390 // Position corresponding to the camera center (53.2, 293.6) 1391 Ring skycenter(392, 318); 1392 // MStarList spots; 1393 1394 // we obtain a list of stars in the FOV from the SAO catalog 1121 1395 if (fDisplay->IsEntryChecked(IDM_kCatalog)) 1122 1396 { 1123 MTime time(*tm); 1124 1125 XY xy = fCRaDec->GetCoordinates(); 1126 fRaDec->Set(xy.X()*360/24, xy.Y()); 1127 1128 UpdatePosZoom(); 1129 1130 /* 1131 if (fDisplay->IsEntryChecked(IDM_kStarguider)) 1132 { 1133 Leds leds; 1134 f.Execute(leds); 1135 1136 cout << "Found: " << leds.GetEntries() << " stars." << endl; 1137 1138 CalcTrackingError(leds, stars); 1139 } 1140 */ 1141 1142 // Always call SetMjd first! 1143 fSao->SetPointing(time.GetMjd(), *fRaDec); 1144 fCZdAz->SetCoordinates(fSao->GetZdAz()); 1145 1146 MStarList stars; 1147 fSao->CalcStars(stars); 1148 fSao->DrawStars(stars, cimg); 1149 } 1150 1397 MTime time(*tm); 1398 1399 XY xy = fCRaDec->GetCoordinates(); 1400 fRaDec->Set(xy.X()*360/24, xy.Y()); 1401 1402 UpdatePosZoom(); 1403 1404 // Always call SetMjd first! 1405 fSao->SetPointing(time.GetMjd(), *fRaDec); 1406 fCZdAz->SetCoordinates(fSao->GetZdAz()); 1407 1408 MStarList stars; 1409 fSao->SetBox(230); // Region of interest around center 1410 1411 // very careful: If center of camera cannot be determined 1412 // sgcenter jumps to (0,0) 1413 double sgcenteroffsetX = 0.0; 1414 double sgcenteroffsetY = 0.0; 1415 if ((double)sgcenter.GetX() > 0.0 && (double)sgcenter.GetY() > 0.0) { 1416 sgcenteroffsetX = sgcenter.GetX()-53.2; 1417 sgcenteroffsetY = sgcenter.GetY()-293.6; 1418 } 1419 1420 // we obtain stars in the effective star FOV and draw them. 1421 // coordinates are video frame coords. 1422 // We determine the ideal starfield using camera sagging info 1423 // from the LEDs 1424 1425 //cout << sgcenteroffsetX << " " << sgcenteroffsetY << endl; 1426 1427 fSao->CalcStars(stars, 530, 292, 1428 -8+2-3+sgcenteroffsetX, //x: star<spot =>subs 1429 31.5-3+sgcenteroffsetY); //y: star<spot =>subs? 1430 1431 fSao->DrawStars(stars, cimg); 1432 1433 // There are two corrections to the misspointing 1434 // - Sagging of the camera as measured with the LEDs 1435 // - Star not ideally centered on MAGIC Camera 1436 1437 // Next we evaluate the offset given by the LEDs. This we obtain 1438 // in Zd/Az and add it to the tracking error. 1439 1440 if (fDisplay->IsEntryChecked(IDM_kStarguider)) 1441 { 1442 Leds spots; 1443 f.SetBox(230); 1444 double bright; 1445 f.ExecuteAndMark(spots, 530, 292, bright); 1446 MString txt; 1447 txt.Print("Sky Brightness: %.1f", bright); 1448 fSkyBright->SetText(txt); 1449 1450 ULong_t color; 1451 gClient->GetColorByName("Green", color); 1452 if (bright> 60) gClient->GetColorByName("Yellow", color); 1453 if (bright> 85) gClient->GetColorByName("Orange", color); 1454 if (bright> 95) gClient->GetColorByName("Red", color); 1455 fSkyBright->SetBackgroundColor(color); 1456 1457 bool rc = CalcTrackingError(spots, stars, fD, t); 1458 1459 if (rc && (bright <= 1.75* fLastBright) && (bright < 110)) { 1460 fStatus = MDriveCom::kMonitoring; 1461 } else { 1462 fStatus = MDriveCom::kError; 1463 } 1464 1465 if (fCosy) 1466 fPos = fCosy->GetPointingPos(); 1467 1468 if (fDisplay->IsEntryChecked(IDM_kStargAnalysis)) 1469 fStargHistograms->Fill(spots, stars, fD, 1470 fSao->GetZdAz(), sgcenter, sgcenterzdaz, 1471 star, bright, fPos, t); 1472 1473 fLastBright = bright; 1474 1475 } //kStarguider 1476 1477 f2.DrawCircle(skycenter, 2.0, 0x0a); 1478 1479 f2.DrawCircle(skycenter, 7.4, 0x0a); //0.1deg 1480 1481 f2.DrawCircle(skycenter, 2.06*.5*74.0, 0x0a); 1482 f2.DrawCircle(skycenter, 2.32*.5*74.0, 0x0a); 1483 f2.DrawCircle(skycenter, 3.50*.5*74.0, 0x0a); 1484 f2.DrawCircle(skycenter, 3.84*.5*74.0, 0x0a); 1485 1486 } //CalcStars 1487 1488 if (fCosy) { 1489 MDriveCom &com = *fCosy->GetDriveCom(); 1490 com.SendStargReport(fStatus, fD); // Report 1491 } 1492 1493 // Draw Circles around center of Camera 1151 1494 if (fDisplay->IsEntryChecked(IDM_kCaosFilter)) 1152 1495 { 1153 1496 f2.DrawCircle(center, 0x0a); 1154 f2.DrawCircle(center, 5.0, fDisplay->IsEntryChecked(IDM_kFindStar)?3:0xb0); 1497 f2.DrawCircle(center, 5.0, 1498 fDisplay->IsEntryChecked(IDM_kFindStar)?3:0xb0); 1155 1499 f2.DrawCircle(center, 115.0, 0x0a); 1156 1500 f2.DrawCircle(center, 230.0, 0x0a); … … 1158 1502 } 1159 1503 1160 if (fDisplay->IsEntryChecked(IDM_kCatalog)) 1161 { 1162 fSao->PaintImg(cimg, 768, 576); 1163 1164 const float r = 60*60/fSao->GetPixSize(); 1165 1166 f2.DrawCircle(0.5*r, 0x0a); 1167 f2.DrawCircle(1.0*r, 0x0a); 1168 f2.DrawCircle(1.5*r, 0x0a); 1169 } 1504 if (fDisplay->IsEntryChecked(IDM_kStargCaosFilter)) 1505 { 1506 f2.DrawCircle(sgcenter, 0x0a); 1507 f2.DrawCircle(sgcenter, 5.0, 1508 fDisplay->IsEntryChecked(IDM_kFindStar)?3:0xb0); 1509 } 1510 1511 // if (fDisplay->IsEntryChecked(IDM_kCatalog)) 1512 // { 1513 // fSao->PaintImg(cimg, 768, 576); 1514 // const float r = 60*60/fSao->GetPixSize(); 1515 // f2.DrawCircle(0.5*r, 0x0a); 1516 // f2.DrawCircle(1.0*r, 0x0a); 1517 // f2.DrawCircle(1.5*r, 0x0a); 1518 // } 1170 1519 1171 1520 if (fDisplay->IsEntryChecked(IDM_kCaosFilter) || … … 1183 1532 { 1184 1533 // FIXME: Necessary? 1185 1534 fSao->Now(); 1186 1535 AltAz aa = fSao->CalcAltAzFromPix(fDx, fDy)*kRad2Deg; 1187 1188 1536 if (aa.Az()<0) 1189 1537 aa.Az(aa.Az()+360); 1190 1191 1538 txt.Print("%.1fd/%.1fd (%d, %d)", -aa.Alt(), aa.Az()-180, fDx, fDy); 1192 1539 } 1193 1540 else 1194 1541 txt.Print("(%d, %d)", fDx, fDy); 1195 1196 1542 fPosZoom->SetText(txt); 1197 1543 } … … 1221 1567 return kTRUE; 1222 1568 } 1569 1570 void MStarguider::Print(TString &str, Double_t deg) const 1571 { 1572 Char_t sgn; 1573 UShort_t d, m, s; 1574 1575 MAstro::Deg2Dms(deg, sgn, d, m, s); 1576 1577 MString txt; 1578 str += txt.Print("%c %03d %02d %03d ", sgn, d, m, s); 1579 } -
trunk/MagicSoft/Cosy/main/MStarguider.h
r4105 r4865 1 1 #ifndef COSY_MStarguider 2 2 #define COSY_MStarguider 3 4 #ifndef ROOT_TGFrame5 #include <TGFrame.h>6 #endif7 3 8 4 #include "PixClient.h" … … 23 19 class TGLabel; 24 20 class TGButton; 21 class TString; 25 22 26 23 class TTimer; … … 39 36 class MCosy; 40 37 class MCaos; 38 // class MStargLeds; 39 class MStargHistograms; 40 class MGStarg; 41 41 class FilterLed; 42 42 class Ring; … … 54 54 MGImage *fImage; 55 55 MGImage *fZoomImage; 56 57 MGStarg *fGStarg; 56 58 57 59 MGPopupMenu *fDisplay; … … 74 76 75 77 MGCoordinates *fPZdAz; 78 MGCoordinates *fDZdAz; 79 MGCoordinates *fSZdAz; 76 80 77 81 TGTextEntry *fPixSize; … … 80 84 TGLabel *fFps; 81 85 TGLabel *fPosZoom; 86 TGLabel *fSkyBright; 82 87 83 88 TGButton *fTPoint; 84 89 90 ZdAz fPos; 91 ZdAz fD; 92 85 93 StarCatalog *fSao; 86 94 MCosy *fCosy; 87 95 MCaos *fCaos; 88 96 MCaos *fStargCaos; 97 // MStargLeds *fStargLeds; 98 MStargHistograms *fStargHistograms; 99 89 100 RaDec *fRaDec; 90 101 … … 100 111 int fWrtRate; 101 112 113 UInt_t fStatus; 114 Double_t fLastBright; 115 102 116 void SetPixSize(const double pixsize); 103 117 void Toggle(MGPopupMenu *p, UInt_t id); 104 118 //void GetCoordinates(); 105 void CalcTrackingError(Leds &, MStarList &); 119 bool CalcTrackingError(Leds &, MStarList &, ZdAz &, MTime &); 120 //void CalcTrackingError(Leds &, MStarList &); 106 121 ZdAz TrackingError(TArrayF &alt, TArrayF &az, TArrayF &mag) const; 107 122 bool Interpolate(const unsigned long n, byte *img) const; 108 void FindStar(FilterLed &f, FilterLed &f2, Ring ¢er, MTime &t); 123 ZdAz FindStar(FilterLed &f, FilterLed &f2, Ring ¢er, MTime &t, 124 Double_t cut, Double_t box, Double_t scalefactor); 109 125 110 126 //void InitHists(); … … 145 161 void ProcessFrame(const unsigned long n, byte *img, struct timeval *tm); 146 162 163 void Print(TString &str, Double_t deg) const; 164 147 165 ClassDef(MStarguider, 0) 148 166 }; 149 167 150 168 #endif 169 170 -
trunk/MagicSoft/Cosy/main/MainLinkDef.h
r4105 r4865 7 7 #pragma link C++ class MCosy; 8 8 #pragma link C++ class MStarguider+; 9 #pragma link C++ class MStargHistograms+; 9 10 10 11 #pragma link C++ class MBending; -
trunk/MagicSoft/Cosy/main/Makefile
r4105 r4865 34 34 SRCFILES = MBending.cc \ 35 35 MStarguider.cc \ 36 MStargHistograms.cc \ 36 37 MPointing.cc \ 37 38 MTracking.cc \
Note:
See TracChangeset
for help on using the changeset viewer.