#include "MStargHistograms.h" #include #include #include #include #include #include #include #include #include #include "MTime.h" #include "MPointing.h" #include "Led.h" #include "Leds.h" #include "Ring.h" #include "Rings.h" #include "FilterLed.h" #include "MStarList.h" using namespace std; void MStargHistograms::OpenFile() { int i=0; char name[100]; while (1) { sprintf(name, "data/starg%03d.root", i++); if (gSystem->AccessPathName(name, kFileExists)) break; } if (fFile) delete fFile; fFile = new TFile(name, "RECREATE"); if (!fFile->IsOpen()) { delete fFile; fFile = NULL; cout << "Error: Cannot open file '" << name << "'" << endl; } TTree *tree = new TTree("Data", "Real Starg Data"); fEvtTime = 0; // Tracking Position Zd, Az in deg tree->Branch("PosZd.", &fZenithDist, "fZenithDist/D"); tree->Branch("PosAz.", &fAzimuth, "fAzimuth/D"); // Event time, arbitrary start tree->Branch("EvtTime.", &fEvtTime, "fEvtTime/D"); // Pointing Position Zd, Az in deg tree->Branch("SaoZd.", &fNomZd, "fNomZd/D"); tree->Branch("SaoAz.", &fNomAz, "fNomAz/D"); // Misspointing from Starguider Zd, Az in deg tree->Branch("MisZd.", &fdZd, "fdZd/D"); tree->Branch("MisAz.", &fdAz, "fdAz/D"); // LED Offset from StargLEDFinder, obsolete tree->Branch("LEDOffsetX.", &fOffsetX, "fOffsX/D"); tree->Branch("LEDOffsetY.", &fOffsetY, "fOffsY/D"); // Center of Camera, offset from arb coords, in pix tree->Branch("CenterX.", &fCenterX, "fCenterX/D"); tree->Branch("CenterY.", &fCenterY, "fCenterY/D"); // Center of Camera, offset from arb coords, in Zd, Az, deg // tree->Branch("CenterZd.", &fCenterZd, "fCenterZd/D"); // tree->Branch("CenterAz.", &fCenterAz, "fCenterAz/D"); // Position of Star in Camera in Zd, Az tree->Branch("StarZd.", &fStarZd, "fStarZd/D"); tree->Branch("StarAz.", &fStarAz, "fStarAz/D"); // number of spots found tree->Branch("Spots.", &fSpots, "fSpots/D"); // number of stars expected tree->Branch("Stars.", &fStars, "fStars/D"); tree->Branch("Bright.", &fBright, "fBright/D"); cout << "Root file '" << name << "' open." << endl; } void MStargHistograms::CloseFile() { if (!fFile) return; const TString name = fFile->GetName(); const Double_t n = ((TTree*)fFile->Get("Data"))->GetEntries(); fFile->Write(); delete fFile; fFile = NULL; cout << "Root file closed (n=" << n << ")" << endl; if (n<1) { gSystem->Unlink(name); cout << "Root file deleted - no entries." << endl; } } void MStargHistograms::InitHistograms() { } void MStargHistograms::DeleteHistograms() { } void MStargHistograms::ShowHistograms() { } void MStargHistograms::ResetHistograms() { } void MStargHistograms::Fill(Leds &spots, MStarList &stars, ZdAz &d, ZdAz sao, Ring ¢er, ZdAz &star, Double_t bright, const ZdAz &pos, const MTime &t) { // FIXME! static const MTime t0(t); fEvtTime = t-t0; // cout << "@ evttime " << fEvtTime << endl; if (fFile && spots.GetEntries()>0) { fZenithDist = pos.Zd(); //fCosy ? fCosy->GetPointingPos().Zd() : 0 fAzimuth = pos.Az(); //fCosy ? fCosy->GetPointingPos().Az() : 0; fNomZd = sao.Zd(); fNomAz = sao.Az(); fdZd = d.Zd(); fdAz = d.Az(); fCenterX = center.GetX(); fCenterY = center.GetY(); //fCenterZd = centerzdaz.Zd(); //fCenterAz = centerzdaz.Az(); fStarZd = star.Zd(); fStarAz = star.Az(); fStars = stars.GetRealEntries(); fSpots = spots.GetEntries(); fBright = bright; // cout << " Evttime=" << fEvtTime // << " ZD=" << fZenithDist // << " Az=" << fAzimuth // << " NomZd=" << fNomZd // << " NomAz=" << fNomAz // << " dZd=" << fdZd // << " dAz=" << fdAz // << " OffsX=" << fOffsetX // << " OffsY=" << fOffsetY // <Get("Data"); t->Fill(); } }