Ignore:
Timestamp:
06/10/08 16:50:49 (16 years ago)
Author:
tbretz
Message:
*** empty log message ***
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Mars/mhist/MHWeather.cc

    r8907 r8934  
    1818!   Author(s): Thomas Bretz, 05/2005 <mailto:tbretz@astro.uni-wuerzburg.de>
    1919!
    20 !   Copyright: MAGIC Software Development, 2000-2005
     20!   Copyright: MAGIC Software Development, 2000-2008
    2121!
    2222!
     
    2727// MHWeather
    2828//
    29 // Display weather data and the corresponding event rate
     29// Display weather and pyrometer data and the corresponding event rate
     30//
     31// Class Version 2:
     32// ----------------
     33//  - fSolarRadiation
     34//  + fCloudiness
     35//  + fTempSky
     36//  + fTempAir
    3037//
    3138////////////////////////////////////////////////////////////////////////////
     
    4451#include "MTime.h"
    4552#include "MReportCC.h"
     53#include "MReportPyrometer.h"
    4654#include "MEventRate.h"
    4755
     
    7987//
    8088MHWeather::MHWeather(const char *name, const char *title)
     89: fReportCC(0), fReportPyro(0), fRate(0)
    8190{
    8291    fName  = name  ? name  : "MHWeather";
     
    8695
    8796    fHumidity.SetNameTitle("Humidity", "Humidity");
    88     fTemperature.SetNameTitle("Temperature", "Temperature");
    89     fSolarRadiation.SetNameTitle("SolarRadiation", "Solar Radiation");
     97    fTemperature.SetNameTitle("Temperature", "Temperature (red=weather station, black=pyrometer, blue=sky)");
    9098    fWindSpeed.SetNameTitle("WindSpeed", "Wind Speed");
     99
    91100    fEventRate.SetNameTitle("EventRate", "Event Rate at CC-REPORT time");
     101
     102    fCloudiness.SetNameTitle("Cloudiness", "Cloudiness / Humidity");
     103    fTempAir.SetNameTitle("TempAir", "Air temperature from Pyrometer");
     104    fTempSky.SetNameTitle("TempSky", "Sky temperature from Pyrometer");
    92105
    93106    InitGraph(fHumidity);
    94107    InitGraph(fTemperature);
    95     InitGraph(fSolarRadiation);
    96108    InitGraph(fWindSpeed);
     109
    97110    InitGraph(fEventRate);
     111
     112    InitGraph(fCloudiness);
     113    InitGraph(fTempAir);
     114    InitGraph(fTempSky);
    98115
    99116    fHumidity.SetMarkerColor(kBlue);
    100117    fTemperature.SetMarkerColor(kRed);
     118    fTempSky.SetMarkerColor(kBlue);
    101119}
    102120
     
    108126Bool_t MHWeather::SetupFill(const MParList *plist)
    109127{
    110     fReport = (MReportCC*)plist->FindObject("MReportCC");
    111     if (!fReport)
     128    // Remark: This is called twice in the star-eventloop!
     129    fReportCC = (MReportCC*)plist->FindObject("MReportCC");
     130    if (!fReportCC)
    112131    {
    113132        *fLog << warn << "MReportCC not found... abort." << endl;
     
    120139        return kFALSE;
    121140    }
     141
     142    fReportPyro = (MReportPyrometer*)plist->FindObject("MReportPyrometer");
     143    if (!fReportPyro)
     144        *fLog << warn << "MReportPyrometer not found..." << endl;
    122145
    123146    // Reset Graphs
    124147    ResetGraph(fHumidity);
    125148    ResetGraph(fTemperature);
    126     ResetGraph(fSolarRadiation);
    127149    ResetGraph(fWindSpeed);
    128150    ResetGraph(fEventRate);
     151    ResetGraph(fCloudiness);
     152    ResetGraph(fTempAir);
     153    ResetGraph(fTempSky);
    129154
    130155    return kTRUE;
     
    147172    const Double_t tm = t->GetAxisTime();
    148173
    149     AddPoint(fTemperature,    tm, fReport->GetTemperature());
    150     AddPoint(fHumidity,       tm, fReport->GetHumidity());
    151     AddPoint(fSolarRadiation, tm, fReport->GetSolarRadiation());
    152     AddPoint(fWindSpeed,      tm, fReport->GetWindSpeed());
    153     AddPoint(fEventRate,      tm, fRate->GetRate());
     174    AddPoint(fEventRate, tm, fRate->GetRate());
     175
     176    if (TString(t->GetName())=="MTimeCC")
     177    {
     178        AddPoint(fTemperature, tm, fReportCC->GetTemperature());
     179        AddPoint(fHumidity,    tm, fReportCC->GetHumidity());
     180        AddPoint(fWindSpeed,   tm, fReportCC->GetWindSpeed());
     181    }
     182
     183    if (TString(t->GetName())=="MTimePyrometer" && fReportPyro)
     184    {
     185        AddPoint(fCloudiness, tm, fReportPyro->GetCloudiness());
     186        AddPoint(fTempAir,    tm, fReportPyro->GetTempAir());
     187        AddPoint(fTempSky,    tm, fReportPyro->GetTempSky()-200);
     188    }
    154189
    155190    return kTRUE;
     
    204239// Draw an axis on the right side of the histogram
    205240//
    206 void MHWeather::DrawRightAxis(const char *title) const
     241void MHWeather::DrawRightAxis(const char *title, Int_t col) const
    207242{
    208243    TGaxis *axis = new TGaxis(gPad->GetUxmax(), gPad->GetUymin(),
    209244                              gPad->GetUxmax(), gPad->GetUymax(),
    210245                              0, 1, 510, "+L");
     246    axis->SetBit(TAxis::kRotateTitle);
    211247    axis->SetName("RightAxis");
    212248    axis->SetTitle(title);
    213     axis->SetTitleOffset(0.9);
    214     axis->SetTextColor(kRed);
     249    axis->SetTitleOffset(1.2);
     250    axis->SetTextColor(col);
    215251    axis->SetBit(kCanDelete);
    216252    axis->Draw();
     
    236272    gPad->SetGridx();
    237273    gPad->SetGridy();
    238     fHumidity.Draw("AP");
    239     fTemperature.Draw("P");
    240     DrawRightAxis("T [\\circ C]");
     274    fTemperature.Draw("AP");
     275    fTempAir.Draw("P");
     276    fTempSky.Draw("P");
     277    DrawRightAxis("T_{sky}-200 [K]", kBlue);
    241278
    242279    pad->cd(2);
     
    244281    gPad->SetGridx();
    245282    gPad->SetGridy();
    246     fSolarRadiation.Draw("AP");
     283    fHumidity.Draw("AP");
     284    fCloudiness.Draw("P");
     285    DrawRightAxis("Cloudiness [%]");
    247286
    248287    pad->cd(3);
     
    250289    gPad->SetGridx();
    251290    gPad->SetGridy();
    252     fEventRate.Draw("AP");
     291    fWindSpeed.Draw("AP");
    253292
    254293    pad->cd(4);
     
    256295    gPad->SetGridx();
    257296    gPad->SetGridy();
    258     fWindSpeed.Draw("AP");
     297    fEventRate.Draw("AP");
    259298}
    260299
     
    267306        fHumidity.SetMaximum(100);
    268307    }
     308    if (fCloudiness.GetN()>0)
     309    {
     310        fCloudiness.SetMinimum(0);
     311        fCloudiness.SetMaximum(100);
     312    }
     313
    269314    if (fTemperature.GetN()>0)
    270315    {
    271         fTemperature.SetMinimum(-25);
    272         fTemperature.SetMaximum(45);
     316        fTemperature.SetMinimum(-2.5);
     317        fTemperature.SetMaximum(27.5);
     318    }
     319    if (fTempSky.GetN()>0)
     320    {
     321        fTempSky.SetMinimum(-2.5);
     322        fTempSky.SetMaximum(27.5);
    273323    }
    274324    if (fWindSpeed.GetN()>0)
    275325        fWindSpeed.SetMinimum(0);
    276     if (fSolarRadiation.GetN()>0)
    277         fSolarRadiation.SetMinimum(0);
    278326    if (fEventRate.GetN()>0)
    279327        fEventRate.SetMinimum(0);
    280328
    281     DrawGraph(fHumidity,       "H [%]");
    282     DrawGraph(fSolarRadiation, "R [W/m^{2}]");
    283     DrawGraph(fTemperature,    "T [\\circ C]");
    284     DrawGraph(fWindSpeed,      "km/h");
    285     DrawGraph(fEventRate,      "f [Hz]");
    286 
    287     gPad->cd(1);
    288 
     329    DrawGraph(fHumidity,    "Humidity [%]");
     330    DrawGraph(fTemperature, "T [\\circ C]");
     331    DrawGraph(fWindSpeed,   "km/h");
     332    DrawGraph(fEventRate,   "f [Hz]");
     333    DrawGraph(fCloudiness,  "Cloudiness [%]");
     334    DrawGraph(fTempAir,     "T [\\circ C]");
     335    DrawGraph(fTempSky,     "T_{sky}-200 [K]");
     336
     337    TVirtualPad *p = gPad;
     338
     339    p->cd(1);
    289340    if (gPad)
    290341    {
     342        fTemperature.GetHistogram()->GetYaxis()->SetTitleColor(kRed);
     343        //fTempSky.GetHistogram()->GetYaxis()->SetTitleColor(kBlue);
     344        UpdateRightAxis(fTemperature); // Primary axis
     345    }
     346
     347    p->cd(2);
     348    if (gPad)
     349    {
    291350        fHumidity.GetHistogram()->GetYaxis()->SetTitleColor(kBlue);
    292         UpdateRightAxis(fTemperature);
    293     }
    294 }
     351        fHumidity.GetHistogram()->GetYaxis()->SetTitleOffset(1.2);
     352        UpdateRightAxis(fHumidity);    // Primary axis
     353    }
     354}
Note: See TracChangeset for help on using the changeset viewer.