File indexing completed on 2025-08-05 08:20:29
0001 #include "SepdMonDraw.h"
0002
0003 #include <onlmon/OnlMonClient.h>
0004
0005 #include <TAxis.h> // for TAxis
0006 #include <TCanvas.h>
0007 #include <TFrame.h>
0008 #include <TGraphErrors.h>
0009 #include <TH1.h>
0010 #include <TLegend.h>
0011 #include <TLine.h>
0012 #include <TPad.h>
0013 #include <TProfile.h>
0014 #include <TROOT.h>
0015 #include <TSystem.h>
0016 #include <TText.h>
0017
0018 #include <cstring> // for memset
0019 #include <ctime>
0020 #include <fstream>
0021 #include <iostream> // for operator<<, basic_ostream, basic_os...
0022 #include <sstream>
0023 #include <vector> // for vector
0024
0025 SepdMonDraw::SepdMonDraw(const std::string &name)
0026 : OnlMonDraw(name)
0027 {
0028 return;
0029 }
0030
0031 int SepdMonDraw::Init()
0032 {
0033 return 0;
0034 }
0035
0036 int SepdMonDraw::MakeCanvas(const std::string &name)
0037 {
0038 OnlMonClient *cl = OnlMonClient::instance();
0039 int xsize = cl->GetDisplaySizeX();
0040 int ysize = cl->GetDisplaySizeY();
0041 if (name == "SepdMon0")
0042 {
0043 int canvasindex = 0;
0044
0045
0046
0047
0048 TC[canvasindex] = new TCanvas(name.c_str(), "sEPD Monitor 1 - Hits/Event vs Tile", -1, 0, 1200, 600);
0049
0050
0051
0052
0053 gSystem->ProcessEvents();
0054 Pad[0] = new TPad("sepdpad0", "Left", 0., 0., 0.5, 1);
0055 Pad[1] = new TPad("sepdpad1", "Right", 0.5, 0., 1, 1);
0056 Pad[0]->Draw();
0057 Pad[1]->Draw();
0058
0059 transparent[canvasindex] = new TPad("transparent0", "this does not show", 0, 0, 1, 1);
0060 transparent[canvasindex]->SetFillStyle(4000);
0061 transparent[canvasindex]->Draw();
0062 TC[canvasindex]->SetEditable(false);
0063 }
0064 else if (name == "SepdMon1")
0065 {
0066 int canvasindex = 1;
0067
0068
0069 TC[canvasindex] = new TCanvas(name.c_str(), "sEPD Monitor 2 - EXPERT - ADC Distributions", -1, 0, 1600, 800);
0070 gSystem->ProcessEvents();
0071 for ( int i = 0; i < 32; ++i )
0072 {
0073
0074
0075 double xlo = (i%4)*0.125 + (i/16)*0.5;
0076 double xhi = xlo + 0.125;
0077 double ylo = 0.75 - (i/4)*0.25 + (i/16);
0078 double yhi = ylo + 0.25;
0079
0080 adc_dist_pad[i] = new TPad(Form("adc_dist_pad_%d",i),"",xlo,ylo,xhi,yhi);
0081 adc_dist_pad[i]->Draw();
0082 adc_dist_pad[i]->SetTopMargin(0.2);
0083 adc_dist_pad[i]->SetLeftMargin(0.2);
0084 }
0085
0086 transparent[canvasindex] = new TPad("transparent1", "this does not show", 0, 0, 1, 1);
0087 transparent[canvasindex]->SetFillStyle(4000);
0088 transparent[canvasindex]->Draw();
0089 TC[canvasindex]->SetEditable(false);
0090 }
0091 else if (name == "SepdMon2")
0092 {
0093 int canvasindex = 2;
0094
0095 TC[canvasindex] = new TCanvas(name.c_str(), "sEPD Monitor 3 - EXPERT - North vs South Correlations", -1, 0, 1200, 600);
0096 gSystem->ProcessEvents();
0097 Pad[4] = new TPad("sepdpad4", "Left", 0., 0., 0.5, 1);
0098 Pad[5] = new TPad("sepdpad5", "Right", 0.5, 0., 1, 1);
0099 Pad[4]->Draw();
0100 Pad[5]->Draw();
0101
0102 transparent[canvasindex] = new TPad("transparent1", "this does not show", 0, 0, 1, 1);
0103 transparent[canvasindex]->SetFillStyle(4000);
0104 transparent[canvasindex]->Draw();
0105 TC[canvasindex]->SetEditable(false);
0106 }
0107 else if (name == "SepdMon3")
0108 {
0109 int canvasindex = 3;
0110
0111 TC[canvasindex] = new TCanvas(name.c_str(), "sEPD Monitor 4 - Waveform Info", -1, 0, 650, 850);
0112 gSystem->ProcessEvents();
0113 Pad[6] = new TPad("sepdpad6", "ADC vs sample #", 0.0, 0.6, 1.0, 0.95, 0);
0114 Pad[7] = new TPad("sepdpad7", "counts vs sample #", 0.0, 0.3, 1.0, 0.6, 0);
0115 Pad[8] = new TPad("sepdpad8", "pedestals", 0.0, 0.0, 1.0, 0.3, 0);
0116 Pad[6]->Draw();
0117 Pad[7]->Draw();
0118 Pad[8]->Draw();
0119
0120 transparent[canvasindex] = new TPad("transparent3", "this does not show", 0, 0, 1, 1);
0121 transparent[canvasindex]->SetFillStyle(4000);
0122 transparent[canvasindex]->Draw();
0123 TC[canvasindex]->SetEditable(0);
0124 }
0125 else if (name == "SepdMon4")
0126 {
0127 int canvasindex = 4;
0128
0129
0130
0131 TC[canvasindex] = new TCanvas(name.c_str(), "sEPD Monitor 5 - EXPERT - Packet Information", -1, 0, 1200, 850);
0132 gSystem->ProcessEvents();
0133 Pad[10] = new TPad("sepdpad10", "packet event check", 0.0, 0.6, 1.0 / 2, 0.95, 0);
0134 Pad[11] = new TPad("sepdpad11", "packet size", 0.0, 0.3, 1.0 / 2, 0.6, 0);
0135 Pad[12] = new TPad("sepdpad12", "packet channels", 0.0, 0.0, 1.0 / 2, 0.3, 0);
0136 Pad[13] = new TPad("sepdpad13", "event number offset", 0.5, 0.6, 1.0, 0.95, 0);
0137
0138 Pad[10]->Draw();
0139 Pad[11]->Draw();
0140 Pad[12]->Draw();
0141 Pad[13]->Draw();
0142
0143 transparent[canvasindex] = new TPad("transparent1", "this does not show", 0, 0, 1., 1);
0144 transparent[canvasindex]->SetFillStyle(4000);
0145 transparent[canvasindex]->Draw();
0146
0147
0148
0149 warning[1] = new TPad("warning1", "sEPD Packet Warnings", 0.5, 0, 1, 0.65);
0150 warning[1]->SetFillStyle(4000);
0151 warning[1]->Draw();
0152 TC[canvasindex]->SetEditable(0);
0153 }
0154 else if (name == "SepdMon5")
0155 {
0156 int canvasindex = 5;
0157 TC[canvasindex] = new TCanvas(name.c_str(), "sEPD Monitor 6 - Noise RMS", -1, 0, 1200, 600);
0158 gSystem->ProcessEvents();
0159 Pad[14] = new TPad("sepdpad14", "Left", 0., 0., 0.5, 1);
0160 Pad[15] = new TPad("sepdpad15", "Right", 0.5, 0., 1, 1);
0161 Pad[14]->Draw();
0162 Pad[15]->Draw();
0163
0164 transparent[canvasindex] = new TPad("transparent0", "this does not show", 0, 0, 1, 1);
0165 transparent[canvasindex]->SetFillStyle(4000);
0166 transparent[canvasindex]->Draw();
0167 TC[canvasindex]->SetEditable(false);
0168 }
0169 else if (name == "SepdServerStats")
0170 {
0171 int canvasindex = 6;
0172 TC[canvasindex] = new TCanvas(name.c_str(), "SepdMon Server Stats", -1, 0, xsize, ysize);
0173 gSystem->ProcessEvents();
0174
0175 transparent[canvasindex] = new TPad("transparent5", "this does not show", 0, 0, 1, 1);
0176 transparent[canvasindex]->Draw();
0177 transparent[canvasindex]->SetFillColor(kGray);
0178 TC[canvasindex]->SetEditable(false);
0179 }
0180
0181 return 0;
0182 }
0183
0184 int SepdMonDraw::Draw(const std::string &what)
0185 {
0186 int iret = 0;
0187 int idraw = 0;
0188 if (what == "ALL" || what == "FIRST")
0189 {
0190 iret += DrawFirst(what);
0191 idraw++;
0192 }
0193 if (what == "ALL" || what == "SECOND")
0194 {
0195 iret += DrawSecond(what);
0196 idraw++;
0197 }
0198 if (what == "ALL" || what == "THIRD")
0199 {
0200 iret += DrawThird(what);
0201 idraw++;
0202 }
0203 if (what == "ALL" || what == "FOURTH")
0204 {
0205 iret += DrawFourth(what);
0206 idraw++;
0207 }
0208 if (what == "ALL" || what == "FIFTH")
0209 {
0210 iret += DrawFifth(what);
0211 idraw++;
0212 }
0213 if (what == "ALL" || what == "SIXTH")
0214 {
0215 iret += DrawSixth(what);
0216 idraw++;
0217 }
0218 if (what == "ALL" || what == "SERVERSTATS")
0219 {
0220 iret += DrawServerStats();
0221 idraw++;
0222 }
0223
0224
0225
0226
0227
0228
0229
0230
0231 if (!idraw)
0232 {
0233 std::cout << __PRETTY_FUNCTION__ << " Unimplemented Drawing option: " << what << std::endl;
0234 iret = -1;
0235 }
0236 return iret;
0237 }
0238
0239
0240
0241 int SepdMonDraw::DrawFirst(const std::string & )
0242 {
0243 int canvasindex = 0;
0244 if (!gROOT->FindObject("SepdMon0"))
0245 {
0246 MakeCanvas("SepdMon0");
0247 }
0248 OnlMonClient *cl = OnlMonClient::instance();
0249
0250 TH1 *h_hits_all_channel = cl->getHisto("SEPDMON_0", "h_hits_all_channel");
0251 TH1 *h_event = cl->getHisto("SEPDMON_0", "h_event");
0252 std::pair<time_t, int> evttime = cl->EventTime("CURRENT");
0253 TC[canvasindex]->SetEditable(true);
0254 TC[canvasindex]->Clear("D");
0255
0256
0257 if (!h_hits_all_channel)
0258 {
0259 DrawDeadServer(transparent[canvasindex]);
0260 TC[canvasindex]->SetEditable(false);
0261 return -1;
0262 }
0263
0264
0265
0266
0267
0268 TH2* polar_histS = new TH2F("polar_histS","polar_hist",
0269 24, 0, 2*M_PI,
0270 16, 0.15, 3.5);
0271 TH2* polar_histN = new TH2F("polar_histN","polar_hist",
0272 24, 0, 2*M_PI,
0273 16, 0.15, 3.5);
0274
0275
0276 TH2* polar_histS01 = new TH2F("polar_histS01","polar_hist",
0277 12, 0, 2*M_PI,
0278 16, 0.15, 3.5);
0279 TH2* polar_histN01 = new TH2F("polar_histN01","polar_hist",
0280 12, 0, 2*M_PI,
0281 16, 0.15, 3.5);
0282
0283
0284
0285 int nevt = h_event->GetEntries();
0286
0287 h_hits_all_channel->Scale(1.0/nevt);
0288 for ( int i = 0; i < 768; ++i )
0289 {
0290 int adc_channel = i;
0291 float adc_signal = h_hits_all_channel->GetBinContent(i+1);
0292 if ( adc_signal <= 0.0001 ) adc_signal = 0.0001;
0293 int tile = returnTile(i);
0294 int odd = (tile+1)%2;
0295
0296 int sector = returnSector(adc_channel);
0297 int arm = returnArm(adc_channel);
0298 if ( arm == 0 )
0299 {
0300 if ( tile == 0 ) polar_histS01->SetBinContent(sector+1,1,adc_signal);
0301 else polar_histS->SetBinContent(sector*2+1+odd,(tile+1)/2+1,adc_signal);
0302 }
0303 if ( arm == 1 )
0304 {
0305 if ( tile == 0 ) polar_histN01->SetBinContent(sector+1,1,adc_signal);
0306 else polar_histN->SetBinContent(sector*2+1+odd,(tile+1)/2+1,adc_signal);
0307 }
0308 }
0309
0310
0311
0312
0313
0314
0315 double zmin = 0.0;
0316
0317 double zmax = 1.0;
0318
0319
0320
0321 TText tarm;
0322 tarm.SetNDC();
0323 tarm.SetTextFont(42);
0324 tarm.SetTextSize(0.05);
0325
0326 gStyle->SetOptStat(0);
0327
0328 Pad[0]->cd();
0329 polar_histS->GetZaxis()->SetRangeUser(zmin,zmax);
0330 polar_histS01->GetZaxis()->SetRangeUser(zmin,zmax);
0331
0332
0333 gPad->SetTicks(1,1);
0334 gPad->DrawFrame(-3.8, -3.8,3.8, 3.8);
0335 polar_histS->Draw("same col pol AH");
0336 polar_histS01->Draw("same col pol AH");
0337 tarm.DrawText(0.45,0.91,"South");
0338 gStyle->SetPalette(57);
0339
0340 Pad[1]->cd();
0341 polar_histN->GetZaxis()->SetRangeUser(zmin,zmax);
0342 polar_histN01->GetZaxis()->SetRangeUser(zmin,zmax);
0343 gPad->SetLeftMargin(0.05);
0344 gPad->SetRightMargin(0.15);
0345 gPad->SetTicks(1,1);
0346 gPad->DrawFrame(-3.8, -3.8,3.8, 3.8);
0347 polar_histN->Draw("same colz pol AH");
0348 polar_histN01->Draw("same col pol AH");
0349 tarm.DrawText(0.40,0.91,"North");
0350 gStyle->SetPalette(57);
0351
0352 TText PrintRun;
0353 PrintRun.SetTextFont(62);
0354 PrintRun.SetTextSize(0.04);
0355 PrintRun.SetNDC();
0356 PrintRun.SetTextAlign(23);
0357 std::ostringstream runnostream;
0358 std::string runstring;
0359
0360 runnostream << ThisName << "_1 Run " << cl->RunNumber()
0361 << ", Time: " << ctime(&evttime.first);
0362 runstring = runnostream.str();
0363 transparent[canvasindex]->cd();
0364 PrintRun.SetTextColor(evttime.second);
0365 PrintRun.DrawText(0.5, 1., runstring.c_str());
0366 TC[canvasindex]->Update();
0367 TC[canvasindex]->Show();
0368 TC[canvasindex]->SetEditable(false);
0369 return 0;
0370 }
0371
0372
0373
0374 int SepdMonDraw::DrawSecond(const std::string & )
0375 {
0376 int canvasindex = 1;
0377 if (!gROOT->FindObject("SepdMon1"))
0378 {
0379 MakeCanvas("SepdMon1");
0380 }
0381
0382 OnlMonClient *cl = OnlMonClient::instance();
0383
0384 TH1 *h_ADC_channel[768];
0385 for ( int i = 0; i < 768; ++i )
0386 {
0387 h_ADC_channel[i] = cl->getHisto("SEPDMON_0",Form("h_ADC_channel_%d",i));
0388 }
0389
0390 TH1 *h_event = cl->getHisto("SEPDMON_0", "h_event");
0391 int nevt = h_event->GetEntries();
0392 std::pair<time_t,int> evttime = cl->EventTime("CURRENT");
0393
0394 TC[canvasindex]->SetEditable(true);
0395 TC[canvasindex]->Clear("D");
0396
0397 gStyle->SetPalette(kRainBow);
0398 TText tring;
0399 tring.SetNDC();
0400 tring.SetTextFont(42);
0401 tring.SetTextSize(0.1);
0402 TText tside;
0403 tside.SetNDC();
0404 tside.SetTextFont(42);
0405 tside.SetTextSize(0.1);
0406 for ( int i = 0; i < 768; ++i )
0407 {
0408 h_ADC_channel[i] = cl->getHisto("SEPDMON_0",Form("h_ADC_channel_%d",i));
0409 int tile = returnTile(i);
0410 if ( tile < 0 || tile > 31 ) continue;
0411 int odd = (tile+1)%2;
0412 int sector = returnSector(i);
0413 if ( sector < 0 || sector > 11 ) continue;
0414 int ring = returnRing(i);
0415 if ( ring < 0 || ring > 15 ) continue;
0416 int arm = returnArm(i);
0417 if ( arm < 0 || arm > 1 ) continue;
0418 int pad_index = ring + arm*16;
0419 if ( pad_index < 0 || pad_index > 31 ) continue;
0420 if ( adc_dist_pad[pad_index] ) adc_dist_pad[pad_index]->cd();
0421
0422
0423 int color_index = sector;
0424 int skip = 255/12;
0425 if ( ring > 0 )
0426 {
0427 color_index = sector*2+odd;
0428 skip = 255/24;
0429 }
0430 int color = gStyle->GetColorPalette(color_index*skip);
0431
0432 if ( h_ADC_channel[i] )
0433 {
0434 h_ADC_channel[i]->Scale(1.0/nevt);
0435 h_ADC_channel[i]->GetXaxis()->SetNdivisions(505);
0436 h_ADC_channel[i]->GetXaxis()->SetRangeUser(0,500);
0437 h_ADC_channel[i]->SetMinimum(0.0);
0438 h_ADC_channel[i]->SetMaximum(0.003);
0439 h_ADC_channel[i]->SetLineColor(color);
0440
0441 h_ADC_channel[i]->Draw("same hist");
0442 }
0443 else std::cout << "Missing histogram for ADC channel " << i << std::endl;
0444 tring.DrawText(0.55,0.7,Form("Ring %d",ring));
0445 if ( arm == 0 ) tring.DrawText(0.55,0.6,"South");
0446 if ( arm == 1 ) tring.DrawText(0.55,0.6,"North");
0447 gPad->SetTicky();
0448 gPad->SetTickx();
0449 }
0450
0451
0452 TText PrintRun;
0453 PrintRun.SetTextFont(62);
0454 PrintRun.SetTextSize(0.04);
0455 PrintRun.SetNDC();
0456 PrintRun.SetTextAlign(23);
0457 std::ostringstream runnostream;
0458 std::string runstring;
0459
0460 runnostream << "EXPERT ONLY " << ThisName << "_2 Run " << cl->RunNumber()
0461 << ", Time: " << ctime(&evttime.first);
0462 runstring = runnostream.str();
0463 transparent[canvasindex]->cd();
0464 PrintRun.SetTextColor(evttime.second);
0465 PrintRun.DrawText(0.5, 1., runstring.c_str());
0466 TC[canvasindex]->Update();
0467 TC[canvasindex]->Show();
0468 TC[canvasindex]->SetEditable(false);
0469
0470 return 0;
0471
0472 }
0473
0474
0475
0476 int SepdMonDraw::DrawThird(const std::string & )
0477 {
0478 int canvasindex = 2;
0479 if (!gROOT->FindObject("SepdMon2"))
0480 {
0481 MakeCanvas("SepdMon2");
0482 }
0483 OnlMonClient *cl = OnlMonClient::instance();
0484
0485 TH2 *h_ADC_corr = (TH2 *) cl->getHisto("SEPDMON_0", "h_ADC_corr");
0486 TH2 *h_hits_corr = (TH2 *) cl->getHisto("SEPDMON_0", "h_hits_corr");
0487 std::pair<time_t,int> evttime = cl->EventTime("CURRENT");
0488 if (!h_ADC_corr)
0489 {
0490 DrawDeadServer(transparent[canvasindex]);
0491 TC[canvasindex]->SetEditable(false);
0492 return -1;
0493 }
0494
0495
0496
0497
0498 TC[canvasindex]->SetEditable(true);
0499 TC[canvasindex]->Clear("D");
0500 Pad[4]->cd();
0501 h_ADC_corr->GetYaxis()->SetNdivisions(505);
0502 h_ADC_corr->GetXaxis()->SetNdivisions(505);
0503 h_ADC_corr->GetYaxis()->SetRangeUser(0,1.5e6);
0504 h_ADC_corr->GetXaxis()->SetRangeUser(0,1.5e6);
0505 h_ADC_corr->Draw("COLZ");
0506
0507 gPad->SetLogz();
0508 gPad->SetBottomMargin(0.16);
0509 gPad->SetRightMargin(0.05);
0510 gPad->SetLeftMargin(0.2);
0511 gStyle->SetOptStat(0);
0512 gStyle->SetPalette(57);
0513 gPad->SetTicky();
0514 gPad->SetTickx();
0515
0516 Pad[5]->cd();
0517 h_hits_corr->GetYaxis()->SetNdivisions(505);
0518 h_hits_corr->GetXaxis()->SetNdivisions(505);
0519 h_hits_corr->GetYaxis()->SetRangeUser(0,380);
0520 h_hits_corr->GetXaxis()->SetRangeUser(0,380);
0521 h_hits_corr->Draw("COLZ");
0522
0523 gPad->SetLogz();
0524 gPad->SetBottomMargin(0.16);
0525 gPad->SetRightMargin(0.05);
0526 gPad->SetLeftMargin(0.2);
0527 gStyle->SetOptStat(0);
0528 gStyle->SetPalette(57);
0529 gPad->SetTicky();
0530 gPad->SetTickx();
0531
0532 TText PrintRun;
0533 PrintRun.SetTextFont(62);
0534 PrintRun.SetTextSize(0.04);
0535 PrintRun.SetNDC();
0536 PrintRun.SetTextAlign(23);
0537 std::ostringstream runnostream;
0538 std::string runstring;
0539
0540 runnostream << "EXPERT ONLY " << ThisName << "_3 Run " << cl->RunNumber()
0541 << ", Time: " << ctime(&evttime.first);
0542 runstring = runnostream.str();
0543 transparent[canvasindex]->cd();
0544 PrintRun.SetTextColor(evttime.second);
0545 PrintRun.DrawText(0.5, 1., runstring.c_str());
0546 TC[canvasindex]->Update();
0547 TC[canvasindex]->Show();
0548 TC[canvasindex]->SetEditable(false);
0549 return 0;
0550 }
0551
0552 int SepdMonDraw::DrawFourth(const std::string & )
0553 {
0554 int canvasindex = 3;
0555 if (!gROOT->FindObject("SepdMon3"))
0556 {
0557 MakeCanvas("SepdMon3");
0558 }
0559
0560 OnlMonClient *cl = OnlMonClient::instance();
0561
0562 TH1 *h_waveform_time = cl->getHisto("SEPDMON_0", "h1_waveform_time");
0563 TH1 *h_waveform_pedestal = cl->getHisto("SEPDMON_0", "h1_waveform_pedestal");
0564 TH2 *h2_sepd_waveform = (TH2 *) cl->getHisto("SEPDMON_0", "h2_sepd_waveform");
0565
0566
0567
0568
0569
0570 TC[canvasindex]->SetEditable(1);
0571 TC[canvasindex]->Clear("D");
0572 Pad[6]->cd();
0573 if (!h2_sepd_waveform || !h_waveform_time || !h_waveform_pedestal)
0574 {
0575
0576 if (!h2_sepd_waveform) std::cout << "h2_sepd_waveform not found" << std::endl;
0577 if (!h_waveform_time) std::cout << "h_waveform_time not found" << std::endl;
0578 if (!h_waveform_pedestal) std::cout << "h_waveform_pedestal not found" << std::endl;
0579 DrawDeadServer(transparent[canvasindex]);
0580 TC[canvasindex]->SetEditable(0);
0581 return -1;
0582 }
0583
0584 Pad[6]->cd();
0585 gStyle->SetTitleFontSize(0.03);
0586 float ymaxp = h2_sepd_waveform->ProfileX()->GetMaximum();
0587 float ymaxdraw = ymaxp * 10;
0588 h2_sepd_waveform->GetYaxis()->SetRangeUser(0,ymaxdraw);
0589 h2_sepd_waveform->GetXaxis()->SetRangeUser(0, 11);
0590 h2_sepd_waveform->Draw("colz");
0591
0592 TProfile* tp1f_sepd_waveform = h2_sepd_waveform->ProfileX();
0593 tp1f_sepd_waveform->SetLineColor(kBlack);
0594 tp1f_sepd_waveform->SetLineWidth(2);
0595 tp1f_sepd_waveform->Draw("same");
0596
0597
0598 TLine* lineleft = new TLine(4.5,0,4.5,ymaxdraw);
0599 TLine* lineright = new TLine(7.5,0,7.5,ymaxdraw);
0600 lineleft->SetLineColor(kBlack);
0601 lineleft->SetLineWidth(2);
0602 lineleft->SetLineStyle(2);
0603 lineleft->Draw();
0604 lineright->SetLineColor(kBlack);
0605 lineright->SetLineWidth(2);
0606 lineright->SetLineStyle(2);
0607 lineright->Draw();
0608
0609 float tsize = 0.09;
0610
0611 h2_sepd_waveform->GetXaxis()->SetNdivisions(12);
0612 h2_sepd_waveform->GetXaxis()->SetTitle("Sample #");
0613 h2_sepd_waveform->GetYaxis()->SetTitle("Waveform [ADC]");
0614 h2_sepd_waveform->GetXaxis()->SetLabelSize(tsize/1.15);
0615 h2_sepd_waveform->GetYaxis()->SetLabelSize(tsize/1.15);
0616 h2_sepd_waveform->GetXaxis()->SetTitleSize(tsize/1.15);
0617 h2_sepd_waveform->GetYaxis()->SetTitleSize(tsize/1.15);
0618 h2_sepd_waveform->GetXaxis()->SetTitleOffset(1.0);
0619 h2_sepd_waveform->GetYaxis()->SetTitleOffset(1.3);
0620 gPad->SetLogz();
0621 gPad->SetBottomMargin(0.16);
0622 gPad->SetRightMargin(0.05);
0623 gPad->SetLeftMargin(0.2);
0624 gStyle->SetOptStat(0);
0625 gStyle->SetPalette(57);
0626 gPad->SetTicky();
0627 gPad->SetTickx();
0628
0629 TText PrintRun;
0630 PrintRun.SetTextFont(62);
0631 PrintRun.SetTextSize(0.03);
0632 PrintRun.SetNDC();
0633 PrintRun.SetTextAlign(23);
0634 std::ostringstream runnostream;
0635 std::string runstring;
0636 std::pair<time_t,int> evttime = cl->EventTime("CURRENT");
0637
0638 runnostream << ThisName << ": Pulse fitting, Run " << cl->RunNumber()
0639 << ", Time: " << ctime(&evttime.first);
0640 runstring = runnostream.str();
0641 transparent[canvasindex]->cd();
0642 PrintRun.SetTextColor(evttime.second);
0643 PrintRun.DrawText(0.5, 0.99, runstring.c_str());
0644
0645 Pad[7]->cd();
0646
0647 gStyle->SetTitleFontSize(0.06);
0648
0649 h_waveform_time->GetXaxis()->SetRangeUser(0,11);
0650
0651 h_waveform_time->Draw("hist");
0652
0653
0654 h_waveform_time->GetXaxis()->SetNdivisions(12);
0655 h_waveform_time->GetXaxis()->SetTitle("Sample #");
0656 h_waveform_time->GetYaxis()->SetTitle("Normalized Counts");
0657 h_waveform_time->GetXaxis()->SetLabelSize(tsize);
0658 h_waveform_time->GetYaxis()->SetLabelSize(tsize);
0659 h_waveform_time->GetXaxis()->SetTitleSize(tsize);
0660 h_waveform_time->GetYaxis()->SetTitleSize(tsize);
0661 h_waveform_time->GetXaxis()->SetTitleOffset(1.0);
0662 h_waveform_time->GetYaxis()->SetTitleOffset(1.25);
0663 h_waveform_time->SetFillColorAlpha(kBlue, 0.1);
0664 if ( h_waveform_time->GetEntries() )
0665 {
0666 h_waveform_time->Scale(1.0/h_waveform_time->GetEntries());
0667 }
0668 gPad->Update();
0669
0670 TLine line3(4.5, 0, 4.5, gPad->GetFrame()->GetY2());
0671 line3.SetLineColor(1);
0672 line3.SetLineWidth(3);
0673 line3.SetLineStyle(1);
0674 line3.DrawLine(4.5, 0, 4.5, gPad->GetFrame()->GetY2());
0675
0676 TLine line4(7.5, 0, 7.5, gPad->GetFrame()->GetY2());
0677 line4.SetLineColor(1);
0678 line4.SetLineWidth(3);
0679 line4.SetLineStyle(1);
0680 line4.DrawLine(7.5, 0, 7.5, gPad->GetFrame()->GetY2());
0681
0682 TLine line5(h_waveform_time->GetMean(), 0, h_waveform_time->GetMean(), gPad->GetFrame()->GetY2());
0683 line5.SetLineColor(2);
0684 line5.SetLineWidth(3);
0685 line5.SetLineStyle(1);
0686 line5.DrawLine(h_waveform_time->GetMean(), 0, h_waveform_time->GetMean(), gPad->GetFrame()->GetY2());
0687
0688 gPad->SetTopMargin(0.06);
0689 gPad->SetBottomMargin(0.18);
0690 gPad->SetRightMargin(0.05);
0691 gPad->SetLeftMargin(0.2);
0692 gStyle->SetOptStat(0);
0693 gPad->SetTicky();
0694 gPad->SetTickx();
0695
0696 Pad[8]->cd();
0697
0698 gStyle->SetTitleFontSize(0.06);
0699
0700
0701
0702 h_waveform_pedestal->Draw("hist");
0703 h_waveform_pedestal->GetXaxis()->SetNdivisions(505);
0704 h_waveform_pedestal->GetXaxis()->SetTitle("ADC Pedestal");
0705 h_waveform_pedestal->GetYaxis()->SetTitle("Normalized Counts");
0706 h_waveform_pedestal->GetXaxis()->SetLabelSize(tsize);
0707 h_waveform_pedestal->GetYaxis()->SetLabelSize(tsize);
0708 h_waveform_pedestal->GetXaxis()->SetTitleSize(tsize);
0709 h_waveform_pedestal->GetYaxis()->SetTitleSize(tsize);
0710 h_waveform_pedestal->GetXaxis()->SetTitleOffset(0.9);
0711 h_waveform_pedestal->GetYaxis()->SetTitleOffset(1.25);
0712 h_waveform_pedestal->SetFillColorAlpha(kBlue, 0.1);
0713 if ( h_waveform_pedestal->GetEntries() )
0714 {
0715 h_waveform_pedestal->Scale(1.0/h_waveform_pedestal->GetEntries());
0716 }
0717 gPad->Update();
0718 TLine line6(1000, 0, 1000, gPad->GetFrame()->GetY2());
0719 line6.SetLineColor(1);
0720 line6.SetLineWidth(3);
0721 line6.SetLineStyle(1);
0722 line6.DrawLine(1000, 0, 1000, gPad->GetFrame()->GetY2());
0723 TLine line7(2000, 0, 2000, gPad->GetFrame()->GetY2());
0724 line7.SetLineColor(1);
0725 line7.SetLineWidth(3);
0726 line7.SetLineStyle(1);
0727 line7.DrawLine(2000, 0, 2000, gPad->GetFrame()->GetY2());
0728 gPad->SetTopMargin(0.06);
0729 gPad->SetBottomMargin(0.18);
0730 gPad->SetRightMargin(0.05);
0731 gPad->SetLeftMargin(0.2);
0732 gPad->SetLogy();
0733 gStyle->SetOptStat(0);
0734 gPad->SetTicky();
0735 gPad->SetTickx();
0736
0737 TC[canvasindex]->Update();
0738 TC[canvasindex]->Show();
0739 TC[canvasindex]->SetEditable(0);
0740
0741 return 0;
0742 }
0743
0744
0745
0746 int SepdMonDraw::DrawFifth(const std::string & )
0747 {
0748 int canvasindex = 4;
0749 if (!gROOT->FindObject("SepdMon4"))
0750 {
0751 MakeCanvas("SepdMon4");
0752 }
0753 OnlMonClient *cl = OnlMonClient::instance();
0754
0755 TH1 *h1_packet_number = cl->getHisto("SEPDMON_0", "h1_packet_number");
0756 TH1 *h1_packet_length = cl->getHisto("SEPDMON_0", "h1_packet_length");
0757 TH1 *h1_packet_chans = cl->getHisto("SEPDMON_0", "h1_packet_chans");
0758 TH1 *h1_packet_event = cl->getHisto("SEPDMON_0", "h1_packet_event");
0759
0760 TC[canvasindex]->SetEditable(1);
0761 TC[canvasindex]->Clear("D");
0762
0763 if (!h1_packet_number || !h1_packet_length || !h1_packet_chans || !h1_packet_event)
0764 {
0765
0766 if (!h1_packet_number) std::cout << "h1_packet_number not found" << std::endl;
0767 if (!h1_packet_length) std::cout << "h1_packet_length not found" << std::endl;
0768 if (!h1_packet_chans) std::cout << "h1_packet_chans not found" << std::endl;
0769 if (!h1_packet_event) std::cout << "h1_packet_event not found" << std::endl;
0770
0771 DrawDeadServer(transparent[canvasindex]);
0772 TC[canvasindex]->SetEditable(0);
0773 return -1;
0774 }
0775
0776
0777
0778
0779 double xmin = h1_packet_number->GetXaxis()->GetXmin();
0780 double xmax = h1_packet_number->GetXaxis()->GetXmax();
0781
0782 TLine *one = new TLine(xmin, 1, xmax, 1);
0783 one->SetLineStyle(7);
0784
0785
0786 int PACKET_SIZE = 1047;
0787 TLine *goodSize = new TLine(xmin, PACKET_SIZE, xmax, PACKET_SIZE);
0788 goodSize->SetLineStyle(7);
0789
0790
0791 int N_CHANNELS = 128;
0792 TLine *goodChans = new TLine(xmin, N_CHANNELS, xmax, N_CHANNELS);
0793 goodChans->SetLineStyle(7);
0794
0795 float param = 0.95;
0796
0797 float tsize = 0.08;
0798 TLegend *leg = new TLegend(0.3, 0.16, 0.95, 0.4);
0799 leg->SetTextFont(42);
0800 leg->SetTextSize(tsize);
0801 leg->SetFillStyle(0);
0802 leg->SetBorderSize(0);
0803
0804 TLine *warnLineOne = new TLine(xmin, param * 1, xmax, param * 1);
0805 warnLineOne->SetLineStyle(7);
0806 warnLineOne->SetLineColor(2);
0807 leg->AddEntry(warnLineOne, "95% Threshold", "l");
0808
0809
0810 TLine *warnLineSize = new TLine(xmin, param * PACKET_SIZE, xmax, param * PACKET_SIZE);
0811 warnLineSize->SetLineStyle(7);
0812 warnLineSize->SetLineColor(2);
0813
0814
0815 TLine *warnLineChans = new TLine(xmin, param * N_CHANNELS, xmax, param * N_CHANNELS);
0816 warnLineChans->SetLineStyle(7);
0817 warnLineChans->SetLineColor(2);
0818
0819
0820
0821 Pad[10]->cd();
0822
0823 h1_packet_number->GetYaxis()->SetRangeUser(0.0, 1.3);
0824 h1_packet_number->Draw("hist");
0825 one->Draw("same");
0826 warnLineOne->Draw("same");
0827 leg->Draw("same");
0828 h1_packet_number->GetXaxis()->SetNdivisions(6);
0829 h1_packet_number->GetXaxis()->SetTitle("Packet #");
0830 h1_packet_number->GetYaxis()->SetTitle("% Of Events Present");
0831
0832 h1_packet_number->GetXaxis()->SetLabelSize(tsize/1.15);
0833 h1_packet_number->GetYaxis()->SetLabelSize(tsize/1.15);
0834 h1_packet_number->GetXaxis()->SetTitleSize(tsize/1.15);
0835 h1_packet_number->GetYaxis()->SetTitleSize(tsize/1.15);
0836 h1_packet_number->GetXaxis()->SetTitleOffset(1);
0837 gPad->SetBottomMargin(0.16);
0838 gPad->SetRightMargin(0.05);
0839 gPad->SetLeftMargin(0.15);
0840 gStyle->SetOptStat(0);
0841 gPad->SetTicky();
0842 gPad->SetTickx();
0843
0844
0845 Pad[11]->cd();
0846 h1_packet_length->Draw("hist");
0847 h1_packet_length->GetYaxis()->SetRangeUser(0, 1200);
0848 goodSize->Draw("same");
0849 warnLineSize->Draw("same");
0850 h1_packet_length->GetXaxis()->SetNdivisions(6);
0851 h1_packet_length->GetXaxis()->SetTitle("Packet #");
0852 h1_packet_length->GetYaxis()->SetTitle("Average Packet Size");
0853 h1_packet_length->GetXaxis()->SetLabelSize(tsize);
0854 h1_packet_length->GetYaxis()->SetLabelSize(tsize);
0855 h1_packet_length->GetXaxis()->SetTitleSize(tsize);
0856 h1_packet_length->GetYaxis()->SetTitleSize(tsize);
0857 h1_packet_length->GetXaxis()->SetTitleOffset(1);
0858 h1_packet_length->GetYaxis()->SetTitleOffset(0.8);
0859 gPad->SetBottomMargin(0.16);
0860 gPad->SetRightMargin(0.05);
0861 gPad->SetLeftMargin(0.15);
0862 gStyle->SetOptStat(0);
0863 gPad->SetTicky();
0864 gPad->SetTickx();
0865
0866
0867 Pad[12]->cd();
0868 h1_packet_chans->Draw("hist");
0869 h1_packet_chans->GetYaxis()->SetRangeUser(0, 150);
0870 goodChans->Draw("same");
0871 warnLineChans->Draw("same");
0872 h1_packet_chans->GetXaxis()->SetNdivisions(6);
0873 h1_packet_chans->GetXaxis()->SetTitle("Packet #");
0874 h1_packet_chans->GetYaxis()->SetTitle("Average # of Channels");
0875 h1_packet_chans->GetXaxis()->SetLabelSize(tsize);
0876 h1_packet_chans->GetYaxis()->SetLabelSize(tsize);
0877 h1_packet_chans->GetXaxis()->SetTitleSize(tsize);
0878 h1_packet_chans->GetYaxis()->SetTitleSize(tsize);
0879 h1_packet_chans->GetXaxis()->SetTitleOffset(0.8);
0880 h1_packet_chans->GetYaxis()->SetTitleOffset(0.8);
0881 gPad->SetBottomMargin(0.16);
0882 gPad->SetRightMargin(0.05);
0883 gPad->SetLeftMargin(0.15);
0884 gStyle->SetOptStat(0);
0885 gPad->SetTicky();
0886 gPad->SetTickx();
0887
0888 Pad[13]->cd();
0889 h1_packet_event->Draw("hist");
0890
0891
0892 double ymax = h1_packet_event->GetMaximum();
0893 double ymin = h1_packet_event->GetMinimum();
0894
0895
0896 h1_packet_event->GetXaxis()->SetNdivisions(6);
0897 h1_packet_event->GetYaxis()->SetRangeUser(ymin - 0.3 * (ymax - ymin + 30), ymax + 0.3 * (ymax - ymin + 30));
0898 h1_packet_event->GetXaxis()->SetTitle("Packet #");
0899 h1_packet_event->GetYaxis()->SetTitle("Clock offset");
0900 h1_packet_event->GetXaxis()->SetLabelSize(tsize/1.15);
0901 h1_packet_event->GetYaxis()->SetLabelSize(tsize/1.15);
0902 h1_packet_event->GetXaxis()->SetTitleSize(tsize/1.15);
0903 h1_packet_event->GetYaxis()->SetTitleSize(tsize/1.15);
0904 h1_packet_event->GetXaxis()->SetTitleOffset(0.8);
0905 h1_packet_event->GetYaxis()->SetTitleOffset(0.8);
0906 gPad->SetBottomMargin(0.16);
0907 gPad->SetRightMargin(0.05);
0908 gPad->SetLeftMargin(0.15);
0909 gStyle->SetOptStat(0);
0910 gPad->SetTicky();
0911 gPad->SetTickx();
0912
0913
0914
0915
0916 warning[1]->cd();
0917
0918
0919 std::vector<int> badPackets;
0920 std::string list_of_bad_packets;
0921 bool packet_is_bad[7];
0922 for (int i = 1; i <= 6; i++)
0923 {
0924 packet_is_bad[i] = false;
0925 bool missing = false;
0926 bool badnumber = false;
0927
0928 bool badchans = false;
0929 if (h1_packet_number->GetBinContent(i) == 0)
0930 {
0931 missing = true;
0932 }
0933 if (h1_packet_number->GetBinContent(i) < param)
0934 {
0935 badnumber = true;
0936 }
0937
0938
0939
0940
0941
0942 if (h1_packet_chans->GetBinContent(i) < param * N_CHANNELS)
0943 {
0944 badchans = true;
0945 }
0946
0947 if (badnumber || badchans || missing)
0948 {
0949 int the_bad_packet = (int)h1_packet_number->GetBinCenter(i);
0950 packet_is_bad[i] = true;
0951 badPackets.push_back(the_bad_packet);
0952 list_of_bad_packets += std::to_string(the_bad_packet);
0953 list_of_bad_packets += ", ";
0954 }
0955 }
0956
0957 if (! list_of_bad_packets.empty())
0958 {
0959 list_of_bad_packets.resize(list_of_bad_packets.size() - 2);
0960 }
0961
0962 TText PacketWarn;
0963 PacketWarn.SetTextFont(42);
0964
0965 PacketWarn.SetTextSize(0.05);
0966 PacketWarn.SetTextColor(kBlack);
0967 PacketWarn.SetNDC();
0968
0969 PacketWarn.DrawText(0.01, 0.75, "Packet Status:");
0970 for (int i = 1; i <= 6; i++)
0971 {
0972 if ( packet_is_bad[i] ) PacketWarn.SetTextColor(kRed);
0973
0974
0975
0976
0977
0978 PacketWarn.DrawText(0.01, 0.7 - 0.05 * i, Form("%d: %d%% events, %d size, %d channels", i+9000,
0979 int(100*h1_packet_number->GetBinContent(i)+0.5),
0980 (int)h1_packet_length->GetBinContent(i),
0981 (int)h1_packet_chans->GetBinContent(i)) );
0982 PacketWarn.SetTextColor(kBlack);
0983 }
0984 if ( badPackets.size() == 0 )
0985 {
0986 PacketWarn.DrawText(0.01, 0.30, Form("No bad packets, everything okay"));
0987 }
0988 if ( badPackets.size() == 1 )
0989 {
0990 PacketWarn.SetTextColor(kRed);
0991 PacketWarn.DrawText(0.01, 0.30, Form("%d bad packet: %s",(int)badPackets.size(),list_of_bad_packets.c_str()));
0992 }
0993 if ( badPackets.size() > 1 )
0994 {
0995 PacketWarn.SetTextColor(kRed);
0996 PacketWarn.DrawText(0.01, 0.30, Form("%d bad packets: %s",(int)badPackets.size(),list_of_bad_packets.c_str()));
0997 }
0998
0999
1000 TText PrintRun;
1001 PrintRun.SetTextFont(62);
1002 PrintRun.SetTextSize(0.02);
1003 PrintRun.SetNDC();
1004 PrintRun.SetTextAlign(23);
1005 std::ostringstream runnostream;
1006 std::string runstring;
1007 std::ostringstream runnostream2;
1008 std::pair<time_t,int> evttime = cl->EventTime("CURRENT");
1009
1010
1011
1012
1013
1014
1015 runnostream << "EXPERT ONLY Packet Information";
1016 runnostream2 << " Run " << cl->RunNumber() << ", Time: " << ctime(&evttime.first);
1017 transparent[canvasindex]->cd();
1018
1019 runstring = runnostream.str();
1020 PrintRun.SetTextColor(evttime.second);
1021 PrintRun.DrawText(0.5, .99, runstring.c_str());
1022
1023 runstring = runnostream2.str();
1024 PrintRun.DrawText(0.5, .966, runstring.c_str());
1025 TC[canvasindex]->Update();
1026 TC[canvasindex]->Show();
1027 TC[canvasindex]->SetEditable(0);
1028
1029 return 0;
1030 }
1031
1032 int SepdMonDraw::DrawSixth(const std::string & )
1033 {
1034 int canvasindex = 5;
1035 if (!gROOT->FindObject("SepdMon5"))
1036 {
1037 MakeCanvas("SepdMon5");
1038 }
1039 OnlMonClient *cl = OnlMonClient::instance();
1040 TProfile *profile_rms = (TProfile*) cl->getHisto("SEPDMON_0", "p_noiserms_all_channel");
1041 TC[canvasindex]->SetEditable(true);
1042 TC[canvasindex]->Clear("D");
1043 if (!profile_rms)
1044 {
1045 std::cout << "p_noiserms_all_channel not found" << std::endl;
1046 DrawDeadServer(transparent[canvasindex]);
1047 TC[canvasindex]->SetEditable(false);
1048 return -1;
1049 }
1050
1051 std::pair<time_t, int> evttime = cl->EventTime("CURRENT");
1052
1053 TH2* polar_histS_rms = new TH2F("polar_histS_rms","polar_hist_rms",
1054 24, 0, 2*M_PI,
1055 16, 0.15, 3.5);
1056 TH2* polar_histN_rms = new TH2F("polar_histN_rms","polar_hist_rms",
1057 24, 0, 2*M_PI,
1058 16, 0.15, 3.5);
1059
1060 TH2* polar_histS01_rms = new TH2F("polar_histS01_rms","polar_hist_rms",
1061 12, 0, 2*M_PI,
1062 16, 0.15, 3.5);
1063 TH2* polar_histN01_rms = new TH2F("polar_histN01_rms","polar_hist_rms",
1064 12, 0, 2*M_PI,
1065 16, 0.15, 3.5);
1066
1067
1068 for ( int i = 0; i < 768; ++i )
1069 {
1070 int adc_channel = i;
1071 float noiserms = profile_rms->GetBinError(i+1);
1072 int tile = returnTile(i);
1073 int odd = (tile+1)%2;
1074
1075 int sector = returnSector(adc_channel);
1076 int arm = returnArm(adc_channel);
1077 if ( arm == 0 )
1078 {
1079 if ( tile == 0 ) polar_histS01_rms->SetBinContent(sector+1,1,noiserms);
1080 else polar_histS_rms->SetBinContent(sector*2+1+odd,(tile+1)/2+1,noiserms);
1081 }
1082 if ( arm == 1 )
1083 {
1084 if ( tile == 0 ) polar_histN01_rms->SetBinContent(sector+1,1,noiserms);
1085 else polar_histN_rms->SetBinContent(sector*2+1+odd,(tile+1)/2+1,noiserms);
1086 }
1087 }
1088
1089
1090
1091
1092
1093
1094 double zmin = 0.0;
1095
1096 double zmax = 100.0;
1097
1098
1099
1100 TText tarm;
1101 tarm.SetNDC();
1102 tarm.SetTextFont(42);
1103 tarm.SetTextSize(0.05);
1104
1105 gStyle->SetOptStat(0);
1106
1107 Pad[14]->cd();
1108 polar_histS_rms->GetZaxis()->SetRangeUser(zmin,zmax);
1109 polar_histS01_rms->GetZaxis()->SetRangeUser(zmin,zmax);
1110
1111
1112 gPad->SetTicks(1,1);
1113 gPad->DrawFrame(-3.8, -3.8,3.8, 3.8);
1114 polar_histS_rms->Draw("same col pol AH");
1115 polar_histS01_rms->Draw("same col pol AH");
1116 tarm.DrawText(0.45,0.91,"South");
1117 gStyle->SetPalette(57);
1118
1119 Pad[15]->cd();
1120 polar_histN_rms->GetZaxis()->SetRangeUser(zmin,zmax);
1121 polar_histN01_rms->GetZaxis()->SetRangeUser(zmin,zmax);
1122 gPad->SetLeftMargin(0.05);
1123 gPad->SetRightMargin(0.15);
1124 gPad->SetTicks(1,1);
1125 gPad->DrawFrame(-3.8, -3.8,3.8, 3.8);
1126 polar_histN_rms->Draw("same colz pol AH");
1127 polar_histN01_rms->Draw("same col pol AH");
1128 tarm.DrawText(0.40,0.91,"North");
1129 gStyle->SetPalette(57);
1130
1131 TText PrintRun;
1132 PrintRun.SetTextFont(62);
1133 PrintRun.SetTextSize(0.04);
1134 PrintRun.SetNDC();
1135 PrintRun.SetTextAlign(23);
1136 std::ostringstream runnostream;
1137 std::string runstring;
1138
1139 runnostream << ThisName << "_6 Run " << cl->RunNumber()
1140 << ", Time: " << ctime(&evttime.first);
1141 runstring = runnostream.str();
1142 transparent[canvasindex]->cd();
1143 PrintRun.SetTextColor(evttime.second);
1144 PrintRun.DrawText(0.5, 1., runstring.c_str());
1145 TC[canvasindex]->Update();
1146 TC[canvasindex]->Show();
1147 TC[canvasindex]->SetEditable(false);
1148 return 0;
1149 }
1150
1151
1152
1153
1154 int SepdMonDraw::SavePlot(const std::string &what, const std::string &type)
1155 {
1156 OnlMonClient *cl = OnlMonClient::instance();
1157 int iret = Draw(what);
1158 if (iret)
1159 {
1160 return iret;
1161 }
1162 int icnt = 0;
1163 for (TCanvas *canvas : TC)
1164 {
1165 if (canvas == nullptr)
1166 {
1167 continue;
1168 }
1169 icnt++;
1170 std::string filename = ThisName + "_" + std::to_string(icnt) + "_" +
1171 std::to_string(cl->RunNumber()) + "." + type;
1172 cl->CanvasToPng(canvas, filename);
1173 }
1174 return 0;
1175 }
1176
1177
1178
1179 int SepdMonDraw::MakeHtml(const std::string &what)
1180 {
1181 int iret = Draw(what);
1182 if (iret)
1183 {
1184 return iret;
1185 }
1186
1187 OnlMonClient *cl = OnlMonClient::instance();
1188 int icnt = 0;
1189 for (TCanvas *canvas : TC)
1190 {
1191 if (canvas == nullptr)
1192 {
1193 continue;
1194 }
1195 icnt++;
1196
1197 std::string pngfile = cl->htmlRegisterPage(*this, canvas->GetTitle(), std::to_string(icnt), "png");
1198 cl->CanvasToPng(canvas, pngfile);
1199 }
1200
1201 return 0;
1202 }
1203
1204 int SepdMonDraw::returnRing(int ch)
1205 {
1206
1207
1208
1209
1210
1211 int tile = returnTile(ch);
1212 int ring = (tile+1)/2;
1213 return ring;
1214 }
1215
1216 int SepdMonDraw::returnArm(int ch)
1217 {
1218
1219 if ( ch >= 384 && ch <= 767 ) return 0;
1220 else if ( ch <= 383 && ch >= 0 ) return 1;
1221 else return -1;
1222 }
1223
1224 int SepdMonDraw::returnSector(int ch){
1225 int sEPD_adctosector[768];
1226 sEPD_adctosector[0] = 7;
1227 sEPD_adctosector[1] = 7;
1228 sEPD_adctosector[2] = 7;
1229 sEPD_adctosector[3] = 7;
1230 sEPD_adctosector[4] = 7;
1231 sEPD_adctosector[5] = 7;
1232 sEPD_adctosector[6] = 7;
1233 sEPD_adctosector[7] = 7;
1234 sEPD_adctosector[8] = 7;
1235 sEPD_adctosector[9] = 7;
1236 sEPD_adctosector[10] = 7;
1237 sEPD_adctosector[11] = 7;
1238 sEPD_adctosector[12] = 7;
1239 sEPD_adctosector[13] = 7;
1240 sEPD_adctosector[14] = 7;
1241 sEPD_adctosector[15] = 7;
1242 sEPD_adctosector[16] = 7;
1243 sEPD_adctosector[17] = 7;
1244 sEPD_adctosector[18] = 7;
1245 sEPD_adctosector[19] = 7;
1246 sEPD_adctosector[20] = 7;
1247 sEPD_adctosector[21] = 7;
1248 sEPD_adctosector[22] = 7;
1249 sEPD_adctosector[23] = 7;
1250 sEPD_adctosector[24] = 7;
1251 sEPD_adctosector[25] = 7;
1252 sEPD_adctosector[26] = 7;
1253 sEPD_adctosector[27] = 7;
1254 sEPD_adctosector[28] = 7;
1255 sEPD_adctosector[29] = 7;
1256 sEPD_adctosector[30] = 7;
1257 sEPD_adctosector[31] = 7;
1258 sEPD_adctosector[32] = 6;
1259 sEPD_adctosector[33] = 6;
1260 sEPD_adctosector[34] = 6;
1261 sEPD_adctosector[35] = 6;
1262 sEPD_adctosector[36] = 6;
1263 sEPD_adctosector[37] = 6;
1264 sEPD_adctosector[38] = 6;
1265 sEPD_adctosector[39] = 6;
1266 sEPD_adctosector[40] = 6;
1267 sEPD_adctosector[41] = 6;
1268 sEPD_adctosector[42] = 6;
1269 sEPD_adctosector[43] = 6;
1270 sEPD_adctosector[44] = 6;
1271 sEPD_adctosector[45] = 6;
1272 sEPD_adctosector[46] = 6;
1273 sEPD_adctosector[47] = 6;
1274 sEPD_adctosector[48] = 6;
1275 sEPD_adctosector[49] = 6;
1276 sEPD_adctosector[50] = 6;
1277 sEPD_adctosector[51] = 6;
1278 sEPD_adctosector[52] = 6;
1279 sEPD_adctosector[53] = 6;
1280 sEPD_adctosector[54] = 6;
1281 sEPD_adctosector[55] = 6;
1282 sEPD_adctosector[56] = 6;
1283 sEPD_adctosector[57] = 6;
1284 sEPD_adctosector[58] = 6;
1285 sEPD_adctosector[59] = 6;
1286 sEPD_adctosector[60] = 6;
1287 sEPD_adctosector[61] = 6;
1288 sEPD_adctosector[62] = 6;
1289 sEPD_adctosector[63] = 6;
1290 sEPD_adctosector[64] = 8;
1291 sEPD_adctosector[65] = 8;
1292 sEPD_adctosector[66] = 8;
1293 sEPD_adctosector[67] = 8;
1294 sEPD_adctosector[68] = 8;
1295 sEPD_adctosector[69] = 8;
1296 sEPD_adctosector[70] = 8;
1297 sEPD_adctosector[71] = 8;
1298 sEPD_adctosector[72] = 8;
1299 sEPD_adctosector[73] = 8;
1300 sEPD_adctosector[74] = 8;
1301 sEPD_adctosector[75] = 8;
1302 sEPD_adctosector[76] = 8;
1303 sEPD_adctosector[77] = 8;
1304 sEPD_adctosector[78] = 8;
1305 sEPD_adctosector[79] = 8;
1306 sEPD_adctosector[80] = 8;
1307 sEPD_adctosector[81] = 8;
1308 sEPD_adctosector[82] = 8;
1309 sEPD_adctosector[83] = 8;
1310 sEPD_adctosector[84] = 8;
1311 sEPD_adctosector[85] = 8;
1312 sEPD_adctosector[86] = 8;
1313 sEPD_adctosector[87] = 8;
1314 sEPD_adctosector[88] = 8;
1315 sEPD_adctosector[89] = 8;
1316 sEPD_adctosector[90] = 8;
1317 sEPD_adctosector[91] = 8;
1318 sEPD_adctosector[92] = 8;
1319 sEPD_adctosector[93] = 8;
1320 sEPD_adctosector[94] = 8;
1321 sEPD_adctosector[95] = 8;
1322 sEPD_adctosector[96] = 5;
1323 sEPD_adctosector[97] = 5;
1324 sEPD_adctosector[98] = 5;
1325 sEPD_adctosector[99] = 5;
1326 sEPD_adctosector[100] = 5;
1327 sEPD_adctosector[101] = 5;
1328 sEPD_adctosector[102] = 5;
1329 sEPD_adctosector[103] = 5;
1330 sEPD_adctosector[104] = 5;
1331 sEPD_adctosector[105] = 5;
1332 sEPD_adctosector[106] = 5;
1333 sEPD_adctosector[107] = 5;
1334 sEPD_adctosector[108] = 5;
1335 sEPD_adctosector[109] = 5;
1336 sEPD_adctosector[110] = 5;
1337 sEPD_adctosector[111] = 5;
1338 sEPD_adctosector[112] = 5;
1339 sEPD_adctosector[113] = 5;
1340 sEPD_adctosector[114] = 5;
1341 sEPD_adctosector[115] = 5;
1342 sEPD_adctosector[116] = 5;
1343 sEPD_adctosector[117] = 5;
1344 sEPD_adctosector[118] = 5;
1345 sEPD_adctosector[119] = 5;
1346 sEPD_adctosector[120] = 5;
1347 sEPD_adctosector[121] = 5;
1348 sEPD_adctosector[122] = 5;
1349 sEPD_adctosector[123] = 5;
1350 sEPD_adctosector[124] = 5;
1351 sEPD_adctosector[125] = 5;
1352 sEPD_adctosector[126] = 5;
1353 sEPD_adctosector[127] = 5;
1354 sEPD_adctosector[128] = 9;
1355 sEPD_adctosector[129] = 9;
1356 sEPD_adctosector[130] = 9;
1357 sEPD_adctosector[131] = 9;
1358 sEPD_adctosector[132] = 9;
1359 sEPD_adctosector[133] = 9;
1360 sEPD_adctosector[134] = 9;
1361 sEPD_adctosector[135] = 9;
1362 sEPD_adctosector[136] = 9;
1363 sEPD_adctosector[137] = 9;
1364 sEPD_adctosector[138] = 9;
1365 sEPD_adctosector[139] = 9;
1366 sEPD_adctosector[140] = 9;
1367 sEPD_adctosector[141] = 9;
1368 sEPD_adctosector[142] = 9;
1369 sEPD_adctosector[143] = 9;
1370 sEPD_adctosector[144] = 9;
1371 sEPD_adctosector[145] = 9;
1372 sEPD_adctosector[146] = 9;
1373 sEPD_adctosector[147] = 9;
1374 sEPD_adctosector[148] = 9;
1375 sEPD_adctosector[149] = 9;
1376 sEPD_adctosector[150] = 9;
1377 sEPD_adctosector[151] = 9;
1378 sEPD_adctosector[152] = 9;
1379 sEPD_adctosector[153] = 9;
1380 sEPD_adctosector[154] = 9;
1381 sEPD_adctosector[155] = 9;
1382 sEPD_adctosector[156] = 9;
1383 sEPD_adctosector[157] = 9;
1384 sEPD_adctosector[158] = 9;
1385 sEPD_adctosector[159] = 9;
1386 sEPD_adctosector[160] = 10;
1387 sEPD_adctosector[161] = 10;
1388 sEPD_adctosector[162] = 10;
1389 sEPD_adctosector[163] = 10;
1390 sEPD_adctosector[164] = 10;
1391 sEPD_adctosector[165] = 10;
1392 sEPD_adctosector[166] = 10;
1393 sEPD_adctosector[167] = 10;
1394 sEPD_adctosector[168] = 10;
1395 sEPD_adctosector[169] = 10;
1396 sEPD_adctosector[170] = 10;
1397 sEPD_adctosector[171] = 10;
1398 sEPD_adctosector[172] = 10;
1399 sEPD_adctosector[173] = 10;
1400 sEPD_adctosector[174] = 10;
1401 sEPD_adctosector[175] = 10;
1402 sEPD_adctosector[176] = 10;
1403 sEPD_adctosector[177] = 10;
1404 sEPD_adctosector[178] = 10;
1405 sEPD_adctosector[179] = 10;
1406 sEPD_adctosector[180] = 10;
1407 sEPD_adctosector[181] = 10;
1408 sEPD_adctosector[182] = 10;
1409 sEPD_adctosector[183] = 10;
1410 sEPD_adctosector[184] = 10;
1411 sEPD_adctosector[185] = 10;
1412 sEPD_adctosector[186] = 10;
1413 sEPD_adctosector[187] = 10;
1414 sEPD_adctosector[188] = 10;
1415 sEPD_adctosector[189] = 10;
1416 sEPD_adctosector[190] = 10;
1417 sEPD_adctosector[191] = 10;
1418 sEPD_adctosector[192] = 4;
1419 sEPD_adctosector[193] = 4;
1420 sEPD_adctosector[194] = 4;
1421 sEPD_adctosector[195] = 4;
1422 sEPD_adctosector[196] = 4;
1423 sEPD_adctosector[197] = 4;
1424 sEPD_adctosector[198] = 4;
1425 sEPD_adctosector[199] = 4;
1426 sEPD_adctosector[200] = 4;
1427 sEPD_adctosector[201] = 4;
1428 sEPD_adctosector[202] = 4;
1429 sEPD_adctosector[203] = 4;
1430 sEPD_adctosector[204] = 4;
1431 sEPD_adctosector[205] = 4;
1432 sEPD_adctosector[206] = 4;
1433 sEPD_adctosector[207] = 4;
1434 sEPD_adctosector[208] = 4;
1435 sEPD_adctosector[209] = 4;
1436 sEPD_adctosector[210] = 4;
1437 sEPD_adctosector[211] = 4;
1438 sEPD_adctosector[212] = 4;
1439 sEPD_adctosector[213] = 4;
1440 sEPD_adctosector[214] = 4;
1441 sEPD_adctosector[215] = 4;
1442 sEPD_adctosector[216] = 4;
1443 sEPD_adctosector[217] = 4;
1444 sEPD_adctosector[218] = 4;
1445 sEPD_adctosector[219] = 4;
1446 sEPD_adctosector[220] = 4;
1447 sEPD_adctosector[221] = 4;
1448 sEPD_adctosector[222] = 4;
1449 sEPD_adctosector[223] = 4;
1450 sEPD_adctosector[224] = 3;
1451 sEPD_adctosector[225] = 3;
1452 sEPD_adctosector[226] = 3;
1453 sEPD_adctosector[227] = 3;
1454 sEPD_adctosector[228] = 3;
1455 sEPD_adctosector[229] = 3;
1456 sEPD_adctosector[230] = 3;
1457 sEPD_adctosector[231] = 3;
1458 sEPD_adctosector[232] = 3;
1459 sEPD_adctosector[233] = 3;
1460 sEPD_adctosector[234] = 3;
1461 sEPD_adctosector[235] = 3;
1462 sEPD_adctosector[236] = 3;
1463 sEPD_adctosector[237] = 3;
1464 sEPD_adctosector[238] = 3;
1465 sEPD_adctosector[239] = 3;
1466 sEPD_adctosector[240] = 3;
1467 sEPD_adctosector[241] = 3;
1468 sEPD_adctosector[242] = 3;
1469 sEPD_adctosector[243] = 3;
1470 sEPD_adctosector[244] = 3;
1471 sEPD_adctosector[245] = 3;
1472 sEPD_adctosector[246] = 3;
1473 sEPD_adctosector[247] = 3;
1474 sEPD_adctosector[248] = 3;
1475 sEPD_adctosector[249] = 3;
1476 sEPD_adctosector[250] = 3;
1477 sEPD_adctosector[251] = 3;
1478 sEPD_adctosector[252] = 3;
1479 sEPD_adctosector[253] = 3;
1480 sEPD_adctosector[254] = 3;
1481 sEPD_adctosector[255] = 3;
1482 sEPD_adctosector[256] = 0;
1483 sEPD_adctosector[257] = 0;
1484 sEPD_adctosector[258] = 0;
1485 sEPD_adctosector[259] = 0;
1486 sEPD_adctosector[260] = 0;
1487 sEPD_adctosector[261] = 0;
1488 sEPD_adctosector[262] = 0;
1489 sEPD_adctosector[263] = 0;
1490 sEPD_adctosector[264] = 0;
1491 sEPD_adctosector[265] = 0;
1492 sEPD_adctosector[266] = 0;
1493 sEPD_adctosector[267] = 0;
1494 sEPD_adctosector[268] = 0;
1495 sEPD_adctosector[269] = 0;
1496 sEPD_adctosector[270] = 0;
1497 sEPD_adctosector[271] = 0;
1498 sEPD_adctosector[272] = 0;
1499 sEPD_adctosector[273] = 0;
1500 sEPD_adctosector[274] = 0;
1501 sEPD_adctosector[275] = 0;
1502 sEPD_adctosector[276] = 0;
1503 sEPD_adctosector[277] = 0;
1504 sEPD_adctosector[278] = 0;
1505 sEPD_adctosector[279] = 0;
1506 sEPD_adctosector[280] = 0;
1507 sEPD_adctosector[281] = 0;
1508 sEPD_adctosector[282] = 0;
1509 sEPD_adctosector[283] = 0;
1510 sEPD_adctosector[284] = 0;
1511 sEPD_adctosector[285] = 0;
1512 sEPD_adctosector[286] = 0;
1513 sEPD_adctosector[287] = 0;
1514 sEPD_adctosector[288] = 11;
1515 sEPD_adctosector[289] = 11;
1516 sEPD_adctosector[290] = 11;
1517 sEPD_adctosector[291] = 11;
1518 sEPD_adctosector[292] = 11;
1519 sEPD_adctosector[293] = 11;
1520 sEPD_adctosector[294] = 11;
1521 sEPD_adctosector[295] = 11;
1522 sEPD_adctosector[296] = 11;
1523 sEPD_adctosector[297] = 11;
1524 sEPD_adctosector[298] = 11;
1525 sEPD_adctosector[299] = 11;
1526 sEPD_adctosector[300] = 11;
1527 sEPD_adctosector[301] = 11;
1528 sEPD_adctosector[302] = 11;
1529 sEPD_adctosector[303] = 11;
1530 sEPD_adctosector[304] = 11;
1531 sEPD_adctosector[305] = 11;
1532 sEPD_adctosector[306] = 11;
1533 sEPD_adctosector[307] = 11;
1534 sEPD_adctosector[308] = 11;
1535 sEPD_adctosector[309] = 11;
1536 sEPD_adctosector[310] = 11;
1537 sEPD_adctosector[311] = 11;
1538 sEPD_adctosector[312] = 11;
1539 sEPD_adctosector[313] = 11;
1540 sEPD_adctosector[314] = 11;
1541 sEPD_adctosector[315] = 11;
1542 sEPD_adctosector[316] = 11;
1543 sEPD_adctosector[317] = 11;
1544 sEPD_adctosector[318] = 11;
1545 sEPD_adctosector[319] = 11;
1546 sEPD_adctosector[320] = 2;
1547 sEPD_adctosector[321] = 2;
1548 sEPD_adctosector[322] = 2;
1549 sEPD_adctosector[323] = 2;
1550 sEPD_adctosector[324] = 2;
1551 sEPD_adctosector[325] = 2;
1552 sEPD_adctosector[326] = 2;
1553 sEPD_adctosector[327] = 2;
1554 sEPD_adctosector[328] = 2;
1555 sEPD_adctosector[329] = 2;
1556 sEPD_adctosector[330] = 2;
1557 sEPD_adctosector[331] = 2;
1558 sEPD_adctosector[332] = 2;
1559 sEPD_adctosector[333] = 2;
1560 sEPD_adctosector[334] = 2;
1561 sEPD_adctosector[335] = 2;
1562 sEPD_adctosector[336] = 2;
1563 sEPD_adctosector[337] = 2;
1564 sEPD_adctosector[338] = 2;
1565 sEPD_adctosector[339] = 2;
1566 sEPD_adctosector[340] = 2;
1567 sEPD_adctosector[341] = 2;
1568 sEPD_adctosector[342] = 2;
1569 sEPD_adctosector[343] = 2;
1570 sEPD_adctosector[344] = 2;
1571 sEPD_adctosector[345] = 2;
1572 sEPD_adctosector[346] = 2;
1573 sEPD_adctosector[347] = 2;
1574 sEPD_adctosector[348] = 2;
1575 sEPD_adctosector[349] = 2;
1576 sEPD_adctosector[350] = 2;
1577 sEPD_adctosector[351] = 2;
1578 sEPD_adctosector[352] = 1;
1579 sEPD_adctosector[353] = 1;
1580 sEPD_adctosector[354] = 1;
1581 sEPD_adctosector[355] = 1;
1582 sEPD_adctosector[356] = 1;
1583 sEPD_adctosector[357] = 1;
1584 sEPD_adctosector[358] = 1;
1585 sEPD_adctosector[359] = 1;
1586 sEPD_adctosector[360] = 1;
1587 sEPD_adctosector[361] = 1;
1588 sEPD_adctosector[362] = 1;
1589 sEPD_adctosector[363] = 1;
1590 sEPD_adctosector[364] = 1;
1591 sEPD_adctosector[365] = 1;
1592 sEPD_adctosector[366] = 1;
1593 sEPD_adctosector[367] = 1;
1594 sEPD_adctosector[368] = 1;
1595 sEPD_adctosector[369] = 1;
1596 sEPD_adctosector[370] = 1;
1597 sEPD_adctosector[371] = 1;
1598 sEPD_adctosector[372] = 1;
1599 sEPD_adctosector[373] = 1;
1600 sEPD_adctosector[374] = 1;
1601 sEPD_adctosector[375] = 1;
1602 sEPD_adctosector[376] = 1;
1603 sEPD_adctosector[377] = 1;
1604 sEPD_adctosector[378] = 1;
1605 sEPD_adctosector[379] = 1;
1606 sEPD_adctosector[380] = 1;
1607 sEPD_adctosector[381] = 1;
1608 sEPD_adctosector[382] = 1;
1609 sEPD_adctosector[383] = 1;
1610 sEPD_adctosector[384] = 2;
1611 sEPD_adctosector[385] = 2;
1612 sEPD_adctosector[386] = 2;
1613 sEPD_adctosector[387] = 2;
1614 sEPD_adctosector[388] = 2;
1615 sEPD_adctosector[389] = 2;
1616 sEPD_adctosector[390] = 2;
1617 sEPD_adctosector[391] = 2;
1618 sEPD_adctosector[392] = 2;
1619 sEPD_adctosector[393] = 2;
1620 sEPD_adctosector[394] = 2;
1621 sEPD_adctosector[395] = 2;
1622 sEPD_adctosector[396] = 2;
1623 sEPD_adctosector[397] = 2;
1624 sEPD_adctosector[398] = 2;
1625 sEPD_adctosector[399] = 2;
1626 sEPD_adctosector[400] = 2;
1627 sEPD_adctosector[401] = 2;
1628 sEPD_adctosector[402] = 2;
1629 sEPD_adctosector[403] = 2;
1630 sEPD_adctosector[404] = 2;
1631 sEPD_adctosector[405] = 2;
1632 sEPD_adctosector[406] = 2;
1633 sEPD_adctosector[407] = 2;
1634 sEPD_adctosector[408] = 2;
1635 sEPD_adctosector[409] = 2;
1636 sEPD_adctosector[410] = 2;
1637 sEPD_adctosector[411] = 2;
1638 sEPD_adctosector[412] = 2;
1639 sEPD_adctosector[413] = 2;
1640 sEPD_adctosector[414] = 2;
1641 sEPD_adctosector[415] = 2;
1642 sEPD_adctosector[416] = 1;
1643 sEPD_adctosector[417] = 1;
1644 sEPD_adctosector[418] = 1;
1645 sEPD_adctosector[419] = 1;
1646 sEPD_adctosector[420] = 1;
1647 sEPD_adctosector[421] = 1;
1648 sEPD_adctosector[422] = 1;
1649 sEPD_adctosector[423] = 1;
1650 sEPD_adctosector[424] = 1;
1651 sEPD_adctosector[425] = 1;
1652 sEPD_adctosector[426] = 1;
1653 sEPD_adctosector[427] = 1;
1654 sEPD_adctosector[428] = 1;
1655 sEPD_adctosector[429] = 1;
1656 sEPD_adctosector[430] = 1;
1657 sEPD_adctosector[431] = 1;
1658 sEPD_adctosector[432] = 1;
1659 sEPD_adctosector[433] = 1;
1660 sEPD_adctosector[434] = 1;
1661 sEPD_adctosector[435] = 1;
1662 sEPD_adctosector[436] = 1;
1663 sEPD_adctosector[437] = 1;
1664 sEPD_adctosector[438] = 1;
1665 sEPD_adctosector[439] = 1;
1666 sEPD_adctosector[440] = 1;
1667 sEPD_adctosector[441] = 1;
1668 sEPD_adctosector[442] = 1;
1669 sEPD_adctosector[443] = 1;
1670 sEPD_adctosector[444] = 1;
1671 sEPD_adctosector[445] = 1;
1672 sEPD_adctosector[446] = 1;
1673 sEPD_adctosector[447] = 1;
1674 sEPD_adctosector[448] = 6;
1675 sEPD_adctosector[449] = 6;
1676 sEPD_adctosector[450] = 6;
1677 sEPD_adctosector[451] = 6;
1678 sEPD_adctosector[452] = 6;
1679 sEPD_adctosector[453] = 6;
1680 sEPD_adctosector[454] = 6;
1681 sEPD_adctosector[455] = 6;
1682 sEPD_adctosector[456] = 6;
1683 sEPD_adctosector[457] = 6;
1684 sEPD_adctosector[458] = 6;
1685 sEPD_adctosector[459] = 6;
1686 sEPD_adctosector[460] = 6;
1687 sEPD_adctosector[461] = 6;
1688 sEPD_adctosector[462] = 6;
1689 sEPD_adctosector[463] = 6;
1690 sEPD_adctosector[464] = 6;
1691 sEPD_adctosector[465] = 6;
1692 sEPD_adctosector[466] = 6;
1693 sEPD_adctosector[467] = 6;
1694 sEPD_adctosector[468] = 6;
1695 sEPD_adctosector[469] = 6;
1696 sEPD_adctosector[470] = 6;
1697 sEPD_adctosector[471] = 6;
1698 sEPD_adctosector[472] = 6;
1699 sEPD_adctosector[473] = 6;
1700 sEPD_adctosector[474] = 6;
1701 sEPD_adctosector[475] = 6;
1702 sEPD_adctosector[476] = 6;
1703 sEPD_adctosector[477] = 6;
1704 sEPD_adctosector[478] = 6;
1705 sEPD_adctosector[479] = 6;
1706 sEPD_adctosector[480] = 7;
1707 sEPD_adctosector[481] = 7;
1708 sEPD_adctosector[482] = 7;
1709 sEPD_adctosector[483] = 7;
1710 sEPD_adctosector[484] = 7;
1711 sEPD_adctosector[485] = 7;
1712 sEPD_adctosector[486] = 7;
1713 sEPD_adctosector[487] = 7;
1714 sEPD_adctosector[488] = 7;
1715 sEPD_adctosector[489] = 7;
1716 sEPD_adctosector[490] = 7;
1717 sEPD_adctosector[491] = 7;
1718 sEPD_adctosector[492] = 7;
1719 sEPD_adctosector[493] = 7;
1720 sEPD_adctosector[494] = 7;
1721 sEPD_adctosector[495] = 7;
1722 sEPD_adctosector[496] = 7;
1723 sEPD_adctosector[497] = 7;
1724 sEPD_adctosector[498] = 7;
1725 sEPD_adctosector[499] = 7;
1726 sEPD_adctosector[500] = 7;
1727 sEPD_adctosector[501] = 7;
1728 sEPD_adctosector[502] = 7;
1729 sEPD_adctosector[503] = 7;
1730 sEPD_adctosector[504] = 7;
1731 sEPD_adctosector[505] = 7;
1732 sEPD_adctosector[506] = 7;
1733 sEPD_adctosector[507] = 7;
1734 sEPD_adctosector[508] = 7;
1735 sEPD_adctosector[509] = 7;
1736 sEPD_adctosector[510] = 7;
1737 sEPD_adctosector[511] = 7;
1738 sEPD_adctosector[512] = 4;
1739 sEPD_adctosector[513] = 4;
1740 sEPD_adctosector[514] = 4;
1741 sEPD_adctosector[515] = 4;
1742 sEPD_adctosector[516] = 4;
1743 sEPD_adctosector[517] = 4;
1744 sEPD_adctosector[518] = 4;
1745 sEPD_adctosector[519] = 4;
1746 sEPD_adctosector[520] = 4;
1747 sEPD_adctosector[521] = 4;
1748 sEPD_adctosector[522] = 4;
1749 sEPD_adctosector[523] = 4;
1750 sEPD_adctosector[524] = 4;
1751 sEPD_adctosector[525] = 4;
1752 sEPD_adctosector[526] = 4;
1753 sEPD_adctosector[527] = 4;
1754 sEPD_adctosector[528] = 4;
1755 sEPD_adctosector[529] = 4;
1756 sEPD_adctosector[530] = 4;
1757 sEPD_adctosector[531] = 4;
1758 sEPD_adctosector[532] = 4;
1759 sEPD_adctosector[533] = 4;
1760 sEPD_adctosector[534] = 4;
1761 sEPD_adctosector[535] = 4;
1762 sEPD_adctosector[536] = 4;
1763 sEPD_adctosector[537] = 4;
1764 sEPD_adctosector[538] = 4;
1765 sEPD_adctosector[539] = 4;
1766 sEPD_adctosector[540] = 4;
1767 sEPD_adctosector[541] = 4;
1768 sEPD_adctosector[542] = 4;
1769 sEPD_adctosector[543] = 4;
1770 sEPD_adctosector[544] = 3;
1771 sEPD_adctosector[545] = 3;
1772 sEPD_adctosector[546] = 3;
1773 sEPD_adctosector[547] = 3;
1774 sEPD_adctosector[548] = 3;
1775 sEPD_adctosector[549] = 3;
1776 sEPD_adctosector[550] = 3;
1777 sEPD_adctosector[551] = 3;
1778 sEPD_adctosector[552] = 3;
1779 sEPD_adctosector[553] = 3;
1780 sEPD_adctosector[554] = 3;
1781 sEPD_adctosector[555] = 3;
1782 sEPD_adctosector[556] = 3;
1783 sEPD_adctosector[557] = 3;
1784 sEPD_adctosector[558] = 3;
1785 sEPD_adctosector[559] = 3;
1786 sEPD_adctosector[560] = 3;
1787 sEPD_adctosector[561] = 3;
1788 sEPD_adctosector[562] = 3;
1789 sEPD_adctosector[563] = 3;
1790 sEPD_adctosector[564] = 3;
1791 sEPD_adctosector[565] = 3;
1792 sEPD_adctosector[566] = 3;
1793 sEPD_adctosector[567] = 3;
1794 sEPD_adctosector[568] = 3;
1795 sEPD_adctosector[569] = 3;
1796 sEPD_adctosector[570] = 3;
1797 sEPD_adctosector[571] = 3;
1798 sEPD_adctosector[572] = 3;
1799 sEPD_adctosector[573] = 3;
1800 sEPD_adctosector[574] = 3;
1801 sEPD_adctosector[575] = 3;
1802 sEPD_adctosector[576] = 11;
1803 sEPD_adctosector[577] = 11;
1804 sEPD_adctosector[578] = 11;
1805 sEPD_adctosector[579] = 11;
1806 sEPD_adctosector[580] = 11;
1807 sEPD_adctosector[581] = 11;
1808 sEPD_adctosector[582] = 11;
1809 sEPD_adctosector[583] = 11;
1810 sEPD_adctosector[584] = 11;
1811 sEPD_adctosector[585] = 11;
1812 sEPD_adctosector[586] = 11;
1813 sEPD_adctosector[587] = 11;
1814 sEPD_adctosector[588] = 11;
1815 sEPD_adctosector[589] = 11;
1816 sEPD_adctosector[590] = 11;
1817 sEPD_adctosector[591] = 11;
1818 sEPD_adctosector[592] = 11;
1819 sEPD_adctosector[593] = 11;
1820 sEPD_adctosector[594] = 11;
1821 sEPD_adctosector[595] = 11;
1822 sEPD_adctosector[596] = 11;
1823 sEPD_adctosector[597] = 11;
1824 sEPD_adctosector[598] = 11;
1825 sEPD_adctosector[599] = 11;
1826 sEPD_adctosector[600] = 11;
1827 sEPD_adctosector[601] = 11;
1828 sEPD_adctosector[602] = 11;
1829 sEPD_adctosector[603] = 11;
1830 sEPD_adctosector[604] = 11;
1831 sEPD_adctosector[605] = 11;
1832 sEPD_adctosector[606] = 11;
1833 sEPD_adctosector[607] = 11;
1834 sEPD_adctosector[608] = 0;
1835 sEPD_adctosector[609] = 0;
1836 sEPD_adctosector[610] = 0;
1837 sEPD_adctosector[611] = 0;
1838 sEPD_adctosector[612] = 0;
1839 sEPD_adctosector[613] = 0;
1840 sEPD_adctosector[614] = 0;
1841 sEPD_adctosector[615] = 0;
1842 sEPD_adctosector[616] = 0;
1843 sEPD_adctosector[617] = 0;
1844 sEPD_adctosector[618] = 0;
1845 sEPD_adctosector[619] = 0;
1846 sEPD_adctosector[620] = 0;
1847 sEPD_adctosector[621] = 0;
1848 sEPD_adctosector[622] = 0;
1849 sEPD_adctosector[623] = 0;
1850 sEPD_adctosector[624] = 0;
1851 sEPD_adctosector[625] = 0;
1852 sEPD_adctosector[626] = 0;
1853 sEPD_adctosector[627] = 0;
1854 sEPD_adctosector[628] = 0;
1855 sEPD_adctosector[629] = 0;
1856 sEPD_adctosector[630] = 0;
1857 sEPD_adctosector[631] = 0;
1858 sEPD_adctosector[632] = 0;
1859 sEPD_adctosector[633] = 0;
1860 sEPD_adctosector[634] = 0;
1861 sEPD_adctosector[635] = 0;
1862 sEPD_adctosector[636] = 0;
1863 sEPD_adctosector[637] = 0;
1864 sEPD_adctosector[638] = 0;
1865 sEPD_adctosector[639] = 0;
1866 sEPD_adctosector[640] = 8;
1867 sEPD_adctosector[641] = 8;
1868 sEPD_adctosector[642] = 8;
1869 sEPD_adctosector[643] = 8;
1870 sEPD_adctosector[644] = 8;
1871 sEPD_adctosector[645] = 8;
1872 sEPD_adctosector[646] = 8;
1873 sEPD_adctosector[647] = 8;
1874 sEPD_adctosector[648] = 8;
1875 sEPD_adctosector[649] = 8;
1876 sEPD_adctosector[650] = 8;
1877 sEPD_adctosector[651] = 8;
1878 sEPD_adctosector[652] = 8;
1879 sEPD_adctosector[653] = 8;
1880 sEPD_adctosector[654] = 8;
1881 sEPD_adctosector[655] = 8;
1882 sEPD_adctosector[656] = 8;
1883 sEPD_adctosector[657] = 8;
1884 sEPD_adctosector[658] = 8;
1885 sEPD_adctosector[659] = 8;
1886 sEPD_adctosector[660] = 8;
1887 sEPD_adctosector[661] = 8;
1888 sEPD_adctosector[662] = 8;
1889 sEPD_adctosector[663] = 8;
1890 sEPD_adctosector[664] = 8;
1891 sEPD_adctosector[665] = 8;
1892 sEPD_adctosector[666] = 8;
1893 sEPD_adctosector[667] = 8;
1894 sEPD_adctosector[668] = 8;
1895 sEPD_adctosector[669] = 8;
1896 sEPD_adctosector[670] = 8;
1897 sEPD_adctosector[671] = 8;
1898 sEPD_adctosector[672] = 9;
1899 sEPD_adctosector[673] = 9;
1900 sEPD_adctosector[674] = 9;
1901 sEPD_adctosector[675] = 9;
1902 sEPD_adctosector[676] = 9;
1903 sEPD_adctosector[677] = 9;
1904 sEPD_adctosector[678] = 9;
1905 sEPD_adctosector[679] = 9;
1906 sEPD_adctosector[680] = 9;
1907 sEPD_adctosector[681] = 9;
1908 sEPD_adctosector[682] = 9;
1909 sEPD_adctosector[683] = 9;
1910 sEPD_adctosector[684] = 9;
1911 sEPD_adctosector[685] = 9;
1912 sEPD_adctosector[686] = 9;
1913 sEPD_adctosector[687] = 9;
1914 sEPD_adctosector[688] = 9;
1915 sEPD_adctosector[689] = 9;
1916 sEPD_adctosector[690] = 9;
1917 sEPD_adctosector[691] = 9;
1918 sEPD_adctosector[692] = 9;
1919 sEPD_adctosector[693] = 9;
1920 sEPD_adctosector[694] = 9;
1921 sEPD_adctosector[695] = 9;
1922 sEPD_adctosector[696] = 9;
1923 sEPD_adctosector[697] = 9;
1924 sEPD_adctosector[698] = 9;
1925 sEPD_adctosector[699] = 9;
1926 sEPD_adctosector[700] = 9;
1927 sEPD_adctosector[701] = 9;
1928 sEPD_adctosector[702] = 9;
1929 sEPD_adctosector[703] = 9;
1930 sEPD_adctosector[704] = 5;
1931 sEPD_adctosector[705] = 5;
1932 sEPD_adctosector[706] = 5;
1933 sEPD_adctosector[707] = 5;
1934 sEPD_adctosector[708] = 5;
1935 sEPD_adctosector[709] = 5;
1936 sEPD_adctosector[710] = 5;
1937 sEPD_adctosector[711] = 5;
1938 sEPD_adctosector[712] = 5;
1939 sEPD_adctosector[713] = 5;
1940 sEPD_adctosector[714] = 5;
1941 sEPD_adctosector[715] = 5;
1942 sEPD_adctosector[716] = 5;
1943 sEPD_adctosector[717] = 5;
1944 sEPD_adctosector[718] = 5;
1945 sEPD_adctosector[719] = 5;
1946 sEPD_adctosector[720] = 5;
1947 sEPD_adctosector[721] = 5;
1948 sEPD_adctosector[722] = 5;
1949 sEPD_adctosector[723] = 5;
1950 sEPD_adctosector[724] = 5;
1951 sEPD_adctosector[725] = 5;
1952 sEPD_adctosector[726] = 5;
1953 sEPD_adctosector[727] = 5;
1954 sEPD_adctosector[728] = 5;
1955 sEPD_adctosector[729] = 5;
1956 sEPD_adctosector[730] = 5;
1957 sEPD_adctosector[731] = 5;
1958 sEPD_adctosector[732] = 5;
1959 sEPD_adctosector[733] = 5;
1960 sEPD_adctosector[734] = 5;
1961 sEPD_adctosector[735] = 5;
1962 sEPD_adctosector[736] = 10;
1963 sEPD_adctosector[737] = 10;
1964 sEPD_adctosector[738] = 10;
1965 sEPD_adctosector[739] = 10;
1966 sEPD_adctosector[740] = 10;
1967 sEPD_adctosector[741] = 10;
1968 sEPD_adctosector[742] = 10;
1969 sEPD_adctosector[743] = 10;
1970 sEPD_adctosector[744] = 10;
1971 sEPD_adctosector[745] = 10;
1972 sEPD_adctosector[746] = 10;
1973 sEPD_adctosector[747] = 10;
1974 sEPD_adctosector[748] = 10;
1975 sEPD_adctosector[749] = 10;
1976 sEPD_adctosector[750] = 10;
1977 sEPD_adctosector[751] = 10;
1978 sEPD_adctosector[752] = 10;
1979 sEPD_adctosector[753] = 10;
1980 sEPD_adctosector[754] = 10;
1981 sEPD_adctosector[755] = 10;
1982 sEPD_adctosector[756] = 10;
1983 sEPD_adctosector[757] = 10;
1984 sEPD_adctosector[758] = 10;
1985 sEPD_adctosector[759] = 10;
1986 sEPD_adctosector[760] = 10;
1987 sEPD_adctosector[761] = 10;
1988 sEPD_adctosector[762] = 10;
1989 sEPD_adctosector[763] = 10;
1990 sEPD_adctosector[764] = 10;
1991 sEPD_adctosector[765] = 10;
1992 sEPD_adctosector[766] = 10;
1993 sEPD_adctosector[767] = 10;
1994 return sEPD_adctosector[ch];
1995 }
1996
1997 int SepdMonDraw::returnTile(int ch){
1998 int sEPD_adctotile[768];
1999 sEPD_adctotile[0] = 1;
2000 sEPD_adctotile[1] = 31;
2001 sEPD_adctotile[2] = 27;
2002 sEPD_adctotile[3] = 29;
2003 sEPD_adctotile[4] = 23;
2004 sEPD_adctotile[5] = 25;
2005 sEPD_adctotile[6] = 19;
2006 sEPD_adctotile[7] = 21;
2007 sEPD_adctotile[8] = 15;
2008 sEPD_adctotile[9] = 17;
2009 sEPD_adctotile[10] = 11;
2010 sEPD_adctotile[11] = 13;
2011 sEPD_adctotile[12] = 7;
2012 sEPD_adctotile[13] = 9;
2013 sEPD_adctotile[14] = 3;
2014 sEPD_adctotile[15] = 5;
2015 sEPD_adctotile[16] = 28;
2016 sEPD_adctotile[17] = 30;
2017 sEPD_adctotile[18] = 24;
2018 sEPD_adctotile[19] = 26;
2019 sEPD_adctotile[20] = 20;
2020 sEPD_adctotile[21] = 22;
2021 sEPD_adctotile[22] = 16;
2022 sEPD_adctotile[23] = 18;
2023 sEPD_adctotile[24] = 12;
2024 sEPD_adctotile[25] = 14;
2025 sEPD_adctotile[26] = 8;
2026 sEPD_adctotile[27] = 10;
2027 sEPD_adctotile[28] = 4;
2028 sEPD_adctotile[29] = 6;
2029 sEPD_adctotile[30] = 0;
2030 sEPD_adctotile[31] = 2;
2031 sEPD_adctotile[32] = 27;
2032 sEPD_adctotile[33] = 29;
2033 sEPD_adctotile[34] = 23;
2034 sEPD_adctotile[35] = 25;
2035 sEPD_adctotile[36] = 19;
2036 sEPD_adctotile[37] = 21;
2037 sEPD_adctotile[38] = 15;
2038 sEPD_adctotile[39] = 17;
2039 sEPD_adctotile[40] = 11;
2040 sEPD_adctotile[41] = 13;
2041 sEPD_adctotile[42] = 7;
2042 sEPD_adctotile[43] = 9;
2043 sEPD_adctotile[44] = 3;
2044 sEPD_adctotile[45] = 5;
2045 sEPD_adctotile[46] = 31;
2046 sEPD_adctotile[47] = 1;
2047 sEPD_adctotile[48] = 28;
2048 sEPD_adctotile[49] = 30;
2049 sEPD_adctotile[50] = 24;
2050 sEPD_adctotile[51] = 26;
2051 sEPD_adctotile[52] = 20;
2052 sEPD_adctotile[53] = 22;
2053 sEPD_adctotile[54] = 16;
2054 sEPD_adctotile[55] = 18;
2055 sEPD_adctotile[56] = 12;
2056 sEPD_adctotile[57] = 14;
2057 sEPD_adctotile[58] = 8;
2058 sEPD_adctotile[59] = 10;
2059 sEPD_adctotile[60] = 4;
2060 sEPD_adctotile[61] = 6;
2061 sEPD_adctotile[62] = 0;
2062 sEPD_adctotile[63] = 2;
2063 sEPD_adctotile[64] = 27;
2064 sEPD_adctotile[65] = 29;
2065 sEPD_adctotile[66] = 23;
2066 sEPD_adctotile[67] = 25;
2067 sEPD_adctotile[68] = 19;
2068 sEPD_adctotile[69] = 21;
2069 sEPD_adctotile[70] = 15;
2070 sEPD_adctotile[71] = 17;
2071 sEPD_adctotile[72] = 11;
2072 sEPD_adctotile[73] = 13;
2073 sEPD_adctotile[74] = 7;
2074 sEPD_adctotile[75] = 9;
2075 sEPD_adctotile[76] = 3;
2076 sEPD_adctotile[77] = 5;
2077 sEPD_adctotile[78] = 31;
2078 sEPD_adctotile[79] = 1;
2079 sEPD_adctotile[80] = 28;
2080 sEPD_adctotile[81] = 30;
2081 sEPD_adctotile[82] = 24;
2082 sEPD_adctotile[83] = 26;
2083 sEPD_adctotile[84] = 20;
2084 sEPD_adctotile[85] = 22;
2085 sEPD_adctotile[86] = 16;
2086 sEPD_adctotile[87] = 18;
2087 sEPD_adctotile[88] = 12;
2088 sEPD_adctotile[89] = 14;
2089 sEPD_adctotile[90] = 8;
2090 sEPD_adctotile[91] = 10;
2091 sEPD_adctotile[92] = 4;
2092 sEPD_adctotile[93] = 6;
2093 sEPD_adctotile[94] = 0;
2094 sEPD_adctotile[95] = 2;
2095 sEPD_adctotile[96] = 27;
2096 sEPD_adctotile[97] = 29;
2097 sEPD_adctotile[98] = 23;
2098 sEPD_adctotile[99] = 25;
2099 sEPD_adctotile[100] = 19;
2100 sEPD_adctotile[101] = 21;
2101 sEPD_adctotile[102] = 15;
2102 sEPD_adctotile[103] = 17;
2103 sEPD_adctotile[104] = 11;
2104 sEPD_adctotile[105] = 13;
2105 sEPD_adctotile[106] = 7;
2106 sEPD_adctotile[107] = 9;
2107 sEPD_adctotile[108] = 3;
2108 sEPD_adctotile[109] = 5;
2109 sEPD_adctotile[110] = 31;
2110 sEPD_adctotile[111] = 1;
2111 sEPD_adctotile[112] = 28;
2112 sEPD_adctotile[113] = 30;
2113 sEPD_adctotile[114] = 24;
2114 sEPD_adctotile[115] = 26;
2115 sEPD_adctotile[116] = 20;
2116 sEPD_adctotile[117] = 22;
2117 sEPD_adctotile[118] = 16;
2118 sEPD_adctotile[119] = 18;
2119 sEPD_adctotile[120] = 12;
2120 sEPD_adctotile[121] = 14;
2121 sEPD_adctotile[122] = 8;
2122 sEPD_adctotile[123] = 10;
2123 sEPD_adctotile[124] = 4;
2124 sEPD_adctotile[125] = 6;
2125 sEPD_adctotile[126] = 0;
2126 sEPD_adctotile[127] = 2;
2127 sEPD_adctotile[128] = 27;
2128 sEPD_adctotile[129] = 29;
2129 sEPD_adctotile[130] = 23;
2130 sEPD_adctotile[131] = 25;
2131 sEPD_adctotile[132] = 19;
2132 sEPD_adctotile[133] = 21;
2133 sEPD_adctotile[134] = 15;
2134 sEPD_adctotile[135] = 17;
2135 sEPD_adctotile[136] = 11;
2136 sEPD_adctotile[137] = 13;
2137 sEPD_adctotile[138] = 7;
2138 sEPD_adctotile[139] = 9;
2139 sEPD_adctotile[140] = 3;
2140 sEPD_adctotile[141] = 5;
2141 sEPD_adctotile[142] = 31;
2142 sEPD_adctotile[143] = 1;
2143 sEPD_adctotile[144] = 28;
2144 sEPD_adctotile[145] = 30;
2145 sEPD_adctotile[146] = 24;
2146 sEPD_adctotile[147] = 26;
2147 sEPD_adctotile[148] = 20;
2148 sEPD_adctotile[149] = 22;
2149 sEPD_adctotile[150] = 16;
2150 sEPD_adctotile[151] = 18;
2151 sEPD_adctotile[152] = 12;
2152 sEPD_adctotile[153] = 14;
2153 sEPD_adctotile[154] = 8;
2154 sEPD_adctotile[155] = 10;
2155 sEPD_adctotile[156] = 4;
2156 sEPD_adctotile[157] = 6;
2157 sEPD_adctotile[158] = 0;
2158 sEPD_adctotile[159] = 2;
2159 sEPD_adctotile[160] = 27;
2160 sEPD_adctotile[161] = 29;
2161 sEPD_adctotile[162] = 23;
2162 sEPD_adctotile[163] = 25;
2163 sEPD_adctotile[164] = 19;
2164 sEPD_adctotile[165] = 21;
2165 sEPD_adctotile[166] = 15;
2166 sEPD_adctotile[167] = 17;
2167 sEPD_adctotile[168] = 11;
2168 sEPD_adctotile[169] = 13;
2169 sEPD_adctotile[170] = 7;
2170 sEPD_adctotile[171] = 9;
2171 sEPD_adctotile[172] = 3;
2172 sEPD_adctotile[173] = 5;
2173 sEPD_adctotile[174] = 31;
2174 sEPD_adctotile[175] = 1;
2175 sEPD_adctotile[176] = 28;
2176 sEPD_adctotile[177] = 30;
2177 sEPD_adctotile[178] = 24;
2178 sEPD_adctotile[179] = 26;
2179 sEPD_adctotile[180] = 20;
2180 sEPD_adctotile[181] = 22;
2181 sEPD_adctotile[182] = 16;
2182 sEPD_adctotile[183] = 18;
2183 sEPD_adctotile[184] = 12;
2184 sEPD_adctotile[185] = 14;
2185 sEPD_adctotile[186] = 8;
2186 sEPD_adctotile[187] = 10;
2187 sEPD_adctotile[188] = 4;
2188 sEPD_adctotile[189] = 6;
2189 sEPD_adctotile[190] = 0;
2190 sEPD_adctotile[191] = 2;
2191 sEPD_adctotile[192] = 27;
2192 sEPD_adctotile[193] = 29;
2193 sEPD_adctotile[194] = 23;
2194 sEPD_adctotile[195] = 25;
2195 sEPD_adctotile[196] = 19;
2196 sEPD_adctotile[197] = 21;
2197 sEPD_adctotile[198] = 15;
2198 sEPD_adctotile[199] = 17;
2199 sEPD_adctotile[200] = 11;
2200 sEPD_adctotile[201] = 13;
2201 sEPD_adctotile[202] = 7;
2202 sEPD_adctotile[203] = 9;
2203 sEPD_adctotile[204] = 3;
2204 sEPD_adctotile[205] = 5;
2205 sEPD_adctotile[206] = 31;
2206 sEPD_adctotile[207] = 1;
2207 sEPD_adctotile[208] = 28;
2208 sEPD_adctotile[209] = 30;
2209 sEPD_adctotile[210] = 24;
2210 sEPD_adctotile[211] = 26;
2211 sEPD_adctotile[212] = 20;
2212 sEPD_adctotile[213] = 22;
2213 sEPD_adctotile[214] = 16;
2214 sEPD_adctotile[215] = 18;
2215 sEPD_adctotile[216] = 12;
2216 sEPD_adctotile[217] = 14;
2217 sEPD_adctotile[218] = 8;
2218 sEPD_adctotile[219] = 10;
2219 sEPD_adctotile[220] = 4;
2220 sEPD_adctotile[221] = 6;
2221 sEPD_adctotile[222] = 0;
2222 sEPD_adctotile[223] = 2;
2223 sEPD_adctotile[224] = 27;
2224 sEPD_adctotile[225] = 29;
2225 sEPD_adctotile[226] = 23;
2226 sEPD_adctotile[227] = 25;
2227 sEPD_adctotile[228] = 19;
2228 sEPD_adctotile[229] = 21;
2229 sEPD_adctotile[230] = 15;
2230 sEPD_adctotile[231] = 17;
2231 sEPD_adctotile[232] = 11;
2232 sEPD_adctotile[233] = 13;
2233 sEPD_adctotile[234] = 7;
2234 sEPD_adctotile[235] = 9;
2235 sEPD_adctotile[236] = 3;
2236 sEPD_adctotile[237] = 5;
2237 sEPD_adctotile[238] = 31;
2238 sEPD_adctotile[239] = 1;
2239 sEPD_adctotile[240] = 28;
2240 sEPD_adctotile[241] = 30;
2241 sEPD_adctotile[242] = 24;
2242 sEPD_adctotile[243] = 26;
2243 sEPD_adctotile[244] = 20;
2244 sEPD_adctotile[245] = 22;
2245 sEPD_adctotile[246] = 16;
2246 sEPD_adctotile[247] = 18;
2247 sEPD_adctotile[248] = 12;
2248 sEPD_adctotile[249] = 14;
2249 sEPD_adctotile[250] = 8;
2250 sEPD_adctotile[251] = 10;
2251 sEPD_adctotile[252] = 4;
2252 sEPD_adctotile[253] = 6;
2253 sEPD_adctotile[254] = 0;
2254 sEPD_adctotile[255] = 2;
2255 sEPD_adctotile[256] = 27;
2256 sEPD_adctotile[257] = 29;
2257 sEPD_adctotile[258] = 23;
2258 sEPD_adctotile[259] = 25;
2259 sEPD_adctotile[260] = 19;
2260 sEPD_adctotile[261] = 21;
2261 sEPD_adctotile[262] = 15;
2262 sEPD_adctotile[263] = 17;
2263 sEPD_adctotile[264] = 11;
2264 sEPD_adctotile[265] = 13;
2265 sEPD_adctotile[266] = 7;
2266 sEPD_adctotile[267] = 9;
2267 sEPD_adctotile[268] = 3;
2268 sEPD_adctotile[269] = 5;
2269 sEPD_adctotile[270] = 31;
2270 sEPD_adctotile[271] = 1;
2271 sEPD_adctotile[272] = 28;
2272 sEPD_adctotile[273] = 30;
2273 sEPD_adctotile[274] = 24;
2274 sEPD_adctotile[275] = 26;
2275 sEPD_adctotile[276] = 20;
2276 sEPD_adctotile[277] = 22;
2277 sEPD_adctotile[278] = 16;
2278 sEPD_adctotile[279] = 18;
2279 sEPD_adctotile[280] = 12;
2280 sEPD_adctotile[281] = 14;
2281 sEPD_adctotile[282] = 8;
2282 sEPD_adctotile[283] = 10;
2283 sEPD_adctotile[284] = 4;
2284 sEPD_adctotile[285] = 6;
2285 sEPD_adctotile[286] = 0;
2286 sEPD_adctotile[287] = 2;
2287 sEPD_adctotile[288] = 27;
2288 sEPD_adctotile[289] = 29;
2289 sEPD_adctotile[290] = 23;
2290 sEPD_adctotile[291] = 25;
2291 sEPD_adctotile[292] = 19;
2292 sEPD_adctotile[293] = 21;
2293 sEPD_adctotile[294] = 15;
2294 sEPD_adctotile[295] = 17;
2295 sEPD_adctotile[296] = 11;
2296 sEPD_adctotile[297] = 13;
2297 sEPD_adctotile[298] = 7;
2298 sEPD_adctotile[299] = 9;
2299 sEPD_adctotile[300] = 3;
2300 sEPD_adctotile[301] = 5;
2301 sEPD_adctotile[302] = 31;
2302 sEPD_adctotile[303] = 1;
2303 sEPD_adctotile[304] = 28;
2304 sEPD_adctotile[305] = 30;
2305 sEPD_adctotile[306] = 24;
2306 sEPD_adctotile[307] = 26;
2307 sEPD_adctotile[308] = 20;
2308 sEPD_adctotile[309] = 22;
2309 sEPD_adctotile[310] = 16;
2310 sEPD_adctotile[311] = 18;
2311 sEPD_adctotile[312] = 12;
2312 sEPD_adctotile[313] = 14;
2313 sEPD_adctotile[314] = 8;
2314 sEPD_adctotile[315] = 10;
2315 sEPD_adctotile[316] = 4;
2316 sEPD_adctotile[317] = 6;
2317 sEPD_adctotile[318] = 0;
2318 sEPD_adctotile[319] = 2;
2319 sEPD_adctotile[320] = 27;
2320 sEPD_adctotile[321] = 29;
2321 sEPD_adctotile[322] = 23;
2322 sEPD_adctotile[323] = 25;
2323 sEPD_adctotile[324] = 19;
2324 sEPD_adctotile[325] = 21;
2325 sEPD_adctotile[326] = 15;
2326 sEPD_adctotile[327] = 17;
2327 sEPD_adctotile[328] = 11;
2328 sEPD_adctotile[329] = 13;
2329 sEPD_adctotile[330] = 7;
2330 sEPD_adctotile[331] = 9;
2331 sEPD_adctotile[332] = 3;
2332 sEPD_adctotile[333] = 5;
2333 sEPD_adctotile[334] = 31;
2334 sEPD_adctotile[335] = 1;
2335 sEPD_adctotile[336] = 28;
2336 sEPD_adctotile[337] = 30;
2337 sEPD_adctotile[338] = 24;
2338 sEPD_adctotile[339] = 26;
2339 sEPD_adctotile[340] = 20;
2340 sEPD_adctotile[341] = 22;
2341 sEPD_adctotile[342] = 16;
2342 sEPD_adctotile[343] = 18;
2343 sEPD_adctotile[344] = 12;
2344 sEPD_adctotile[345] = 14;
2345 sEPD_adctotile[346] = 8;
2346 sEPD_adctotile[347] = 10;
2347 sEPD_adctotile[348] = 4;
2348 sEPD_adctotile[349] = 6;
2349 sEPD_adctotile[350] = 0;
2350 sEPD_adctotile[351] = 2;
2351 sEPD_adctotile[352] = 27;
2352 sEPD_adctotile[353] = 29;
2353 sEPD_adctotile[354] = 23;
2354 sEPD_adctotile[355] = 25;
2355 sEPD_adctotile[356] = 19;
2356 sEPD_adctotile[357] = 21;
2357 sEPD_adctotile[358] = 15;
2358 sEPD_adctotile[359] = 17;
2359 sEPD_adctotile[360] = 11;
2360 sEPD_adctotile[361] = 13;
2361 sEPD_adctotile[362] = 7;
2362 sEPD_adctotile[363] = 9;
2363 sEPD_adctotile[364] = 3;
2364 sEPD_adctotile[365] = 5;
2365 sEPD_adctotile[366] = 31;
2366 sEPD_adctotile[367] = 1;
2367 sEPD_adctotile[368] = 28;
2368 sEPD_adctotile[369] = 30;
2369 sEPD_adctotile[370] = 24;
2370 sEPD_adctotile[371] = 26;
2371 sEPD_adctotile[372] = 20;
2372 sEPD_adctotile[373] = 22;
2373 sEPD_adctotile[374] = 16;
2374 sEPD_adctotile[375] = 18;
2375 sEPD_adctotile[376] = 12;
2376 sEPD_adctotile[377] = 14;
2377 sEPD_adctotile[378] = 8;
2378 sEPD_adctotile[379] = 10;
2379 sEPD_adctotile[380] = 4;
2380 sEPD_adctotile[381] = 6;
2381 sEPD_adctotile[382] = 0;
2382 sEPD_adctotile[383] = 2;
2383 sEPD_adctotile[384] = 27;
2384 sEPD_adctotile[385] = 29;
2385 sEPD_adctotile[386] = 23;
2386 sEPD_adctotile[387] = 25;
2387 sEPD_adctotile[388] = 19;
2388 sEPD_adctotile[389] = 21;
2389 sEPD_adctotile[390] = 15;
2390 sEPD_adctotile[391] = 17;
2391 sEPD_adctotile[392] = 11;
2392 sEPD_adctotile[393] = 13;
2393 sEPD_adctotile[394] = 7;
2394 sEPD_adctotile[395] = 9;
2395 sEPD_adctotile[396] = 3;
2396 sEPD_adctotile[397] = 5;
2397 sEPD_adctotile[398] = 31;
2398 sEPD_adctotile[399] = 1;
2399 sEPD_adctotile[400] = 28;
2400 sEPD_adctotile[401] = 30;
2401 sEPD_adctotile[402] = 24;
2402 sEPD_adctotile[403] = 26;
2403 sEPD_adctotile[404] = 20;
2404 sEPD_adctotile[405] = 22;
2405 sEPD_adctotile[406] = 16;
2406 sEPD_adctotile[407] = 18;
2407 sEPD_adctotile[408] = 12;
2408 sEPD_adctotile[409] = 14;
2409 sEPD_adctotile[410] = 8;
2410 sEPD_adctotile[411] = 10;
2411 sEPD_adctotile[412] = 4;
2412 sEPD_adctotile[413] = 6;
2413 sEPD_adctotile[414] = 0;
2414 sEPD_adctotile[415] = 2;
2415 sEPD_adctotile[416] = 27;
2416 sEPD_adctotile[417] = 29;
2417 sEPD_adctotile[418] = 23;
2418 sEPD_adctotile[419] = 25;
2419 sEPD_adctotile[420] = 19;
2420 sEPD_adctotile[421] = 21;
2421 sEPD_adctotile[422] = 15;
2422 sEPD_adctotile[423] = 17;
2423 sEPD_adctotile[424] = 11;
2424 sEPD_adctotile[425] = 13;
2425 sEPD_adctotile[426] = 7;
2426 sEPD_adctotile[427] = 9;
2427 sEPD_adctotile[428] = 3;
2428 sEPD_adctotile[429] = 5;
2429 sEPD_adctotile[430] = 31;
2430 sEPD_adctotile[431] = 1;
2431 sEPD_adctotile[432] = 28;
2432 sEPD_adctotile[433] = 30;
2433 sEPD_adctotile[434] = 24;
2434 sEPD_adctotile[435] = 26;
2435 sEPD_adctotile[436] = 20;
2436 sEPD_adctotile[437] = 22;
2437 sEPD_adctotile[438] = 16;
2438 sEPD_adctotile[439] = 18;
2439 sEPD_adctotile[440] = 12;
2440 sEPD_adctotile[441] = 14;
2441 sEPD_adctotile[442] = 8;
2442 sEPD_adctotile[443] = 10;
2443 sEPD_adctotile[444] = 4;
2444 sEPD_adctotile[445] = 6;
2445 sEPD_adctotile[446] = 0;
2446 sEPD_adctotile[447] = 2;
2447 sEPD_adctotile[448] = 27;
2448 sEPD_adctotile[449] = 29;
2449 sEPD_adctotile[450] = 23;
2450 sEPD_adctotile[451] = 25;
2451 sEPD_adctotile[452] = 19;
2452 sEPD_adctotile[453] = 21;
2453 sEPD_adctotile[454] = 15;
2454 sEPD_adctotile[455] = 17;
2455 sEPD_adctotile[456] = 11;
2456 sEPD_adctotile[457] = 13;
2457 sEPD_adctotile[458] = 7;
2458 sEPD_adctotile[459] = 9;
2459 sEPD_adctotile[460] = 3;
2460 sEPD_adctotile[461] = 5;
2461 sEPD_adctotile[462] = 31;
2462 sEPD_adctotile[463] = 1;
2463 sEPD_adctotile[464] = 28;
2464 sEPD_adctotile[465] = 30;
2465 sEPD_adctotile[466] = 24;
2466 sEPD_adctotile[467] = 26;
2467 sEPD_adctotile[468] = 20;
2468 sEPD_adctotile[469] = 22;
2469 sEPD_adctotile[470] = 16;
2470 sEPD_adctotile[471] = 18;
2471 sEPD_adctotile[472] = 12;
2472 sEPD_adctotile[473] = 14;
2473 sEPD_adctotile[474] = 8;
2474 sEPD_adctotile[475] = 10;
2475 sEPD_adctotile[476] = 4;
2476 sEPD_adctotile[477] = 6;
2477 sEPD_adctotile[478] = 0;
2478 sEPD_adctotile[479] = 2;
2479 sEPD_adctotile[480] = 27;
2480 sEPD_adctotile[481] = 29;
2481 sEPD_adctotile[482] = 23;
2482 sEPD_adctotile[483] = 25;
2483 sEPD_adctotile[484] = 19;
2484 sEPD_adctotile[485] = 21;
2485 sEPD_adctotile[486] = 15;
2486 sEPD_adctotile[487] = 17;
2487 sEPD_adctotile[488] = 11;
2488 sEPD_adctotile[489] = 13;
2489 sEPD_adctotile[490] = 7;
2490 sEPD_adctotile[491] = 9;
2491 sEPD_adctotile[492] = 3;
2492 sEPD_adctotile[493] = 5;
2493 sEPD_adctotile[494] = 31;
2494 sEPD_adctotile[495] = 1;
2495 sEPD_adctotile[496] = 28;
2496 sEPD_adctotile[497] = 30;
2497 sEPD_adctotile[498] = 24;
2498 sEPD_adctotile[499] = 26;
2499 sEPD_adctotile[500] = 20;
2500 sEPD_adctotile[501] = 22;
2501 sEPD_adctotile[502] = 16;
2502 sEPD_adctotile[503] = 18;
2503 sEPD_adctotile[504] = 12;
2504 sEPD_adctotile[505] = 14;
2505 sEPD_adctotile[506] = 8;
2506 sEPD_adctotile[507] = 10;
2507 sEPD_adctotile[508] = 4;
2508 sEPD_adctotile[509] = 6;
2509 sEPD_adctotile[510] = 0;
2510 sEPD_adctotile[511] = 2;
2511 sEPD_adctotile[512] = 27;
2512 sEPD_adctotile[513] = 29;
2513 sEPD_adctotile[514] = 23;
2514 sEPD_adctotile[515] = 25;
2515 sEPD_adctotile[516] = 19;
2516 sEPD_adctotile[517] = 21;
2517 sEPD_adctotile[518] = 15;
2518 sEPD_adctotile[519] = 17;
2519 sEPD_adctotile[520] = 11;
2520 sEPD_adctotile[521] = 13;
2521 sEPD_adctotile[522] = 7;
2522 sEPD_adctotile[523] = 9;
2523 sEPD_adctotile[524] = 3;
2524 sEPD_adctotile[525] = 5;
2525 sEPD_adctotile[526] = 31;
2526 sEPD_adctotile[527] = 1;
2527 sEPD_adctotile[528] = 28;
2528 sEPD_adctotile[529] = 30;
2529 sEPD_adctotile[530] = 24;
2530 sEPD_adctotile[531] = 26;
2531 sEPD_adctotile[532] = 20;
2532 sEPD_adctotile[533] = 22;
2533 sEPD_adctotile[534] = 16;
2534 sEPD_adctotile[535] = 18;
2535 sEPD_adctotile[536] = 12;
2536 sEPD_adctotile[537] = 14;
2537 sEPD_adctotile[538] = 8;
2538 sEPD_adctotile[539] = 10;
2539 sEPD_adctotile[540] = 4;
2540 sEPD_adctotile[541] = 6;
2541 sEPD_adctotile[542] = 0;
2542 sEPD_adctotile[543] = 2;
2543 sEPD_adctotile[544] = 27;
2544 sEPD_adctotile[545] = 29;
2545 sEPD_adctotile[546] = 23;
2546 sEPD_adctotile[547] = 25;
2547 sEPD_adctotile[548] = 19;
2548 sEPD_adctotile[549] = 21;
2549 sEPD_adctotile[550] = 15;
2550 sEPD_adctotile[551] = 17;
2551 sEPD_adctotile[552] = 11;
2552 sEPD_adctotile[553] = 13;
2553 sEPD_adctotile[554] = 7;
2554 sEPD_adctotile[555] = 9;
2555 sEPD_adctotile[556] = 3;
2556 sEPD_adctotile[557] = 5;
2557 sEPD_adctotile[558] = 31;
2558 sEPD_adctotile[559] = 1;
2559 sEPD_adctotile[560] = 28;
2560 sEPD_adctotile[561] = 30;
2561 sEPD_adctotile[562] = 24;
2562 sEPD_adctotile[563] = 26;
2563 sEPD_adctotile[564] = 20;
2564 sEPD_adctotile[565] = 22;
2565 sEPD_adctotile[566] = 16;
2566 sEPD_adctotile[567] = 18;
2567 sEPD_adctotile[568] = 12;
2568 sEPD_adctotile[569] = 14;
2569 sEPD_adctotile[570] = 8;
2570 sEPD_adctotile[571] = 10;
2571 sEPD_adctotile[572] = 4;
2572 sEPD_adctotile[573] = 6;
2573 sEPD_adctotile[574] = 0;
2574 sEPD_adctotile[575] = 2;
2575 sEPD_adctotile[576] = 27;
2576 sEPD_adctotile[577] = 29;
2577 sEPD_adctotile[578] = 23;
2578 sEPD_adctotile[579] = 25;
2579 sEPD_adctotile[580] = 19;
2580 sEPD_adctotile[581] = 21;
2581 sEPD_adctotile[582] = 15;
2582 sEPD_adctotile[583] = 17;
2583 sEPD_adctotile[584] = 11;
2584 sEPD_adctotile[585] = 13;
2585 sEPD_adctotile[586] = 7;
2586 sEPD_adctotile[587] = 9;
2587 sEPD_adctotile[588] = 3;
2588 sEPD_adctotile[589] = 5;
2589 sEPD_adctotile[590] = 31;
2590 sEPD_adctotile[591] = 1;
2591 sEPD_adctotile[592] = 28;
2592 sEPD_adctotile[593] = 30;
2593 sEPD_adctotile[594] = 24;
2594 sEPD_adctotile[595] = 26;
2595 sEPD_adctotile[596] = 20;
2596 sEPD_adctotile[597] = 22;
2597 sEPD_adctotile[598] = 16;
2598 sEPD_adctotile[599] = 18;
2599 sEPD_adctotile[600] = 12;
2600 sEPD_adctotile[601] = 14;
2601 sEPD_adctotile[602] = 8;
2602 sEPD_adctotile[603] = 10;
2603 sEPD_adctotile[604] = 4;
2604 sEPD_adctotile[605] = 6;
2605 sEPD_adctotile[606] = 0;
2606 sEPD_adctotile[607] = 2;
2607 sEPD_adctotile[608] = 27;
2608 sEPD_adctotile[609] = 29;
2609 sEPD_adctotile[610] = 23;
2610 sEPD_adctotile[611] = 25;
2611 sEPD_adctotile[612] = 19;
2612 sEPD_adctotile[613] = 21;
2613 sEPD_adctotile[614] = 15;
2614 sEPD_adctotile[615] = 17;
2615 sEPD_adctotile[616] = 11;
2616 sEPD_adctotile[617] = 13;
2617 sEPD_adctotile[618] = 7;
2618 sEPD_adctotile[619] = 9;
2619 sEPD_adctotile[620] = 3;
2620 sEPD_adctotile[621] = 5;
2621 sEPD_adctotile[622] = 31;
2622 sEPD_adctotile[623] = 1;
2623 sEPD_adctotile[624] = 28;
2624 sEPD_adctotile[625] = 30;
2625 sEPD_adctotile[626] = 24;
2626 sEPD_adctotile[627] = 26;
2627 sEPD_adctotile[628] = 20;
2628 sEPD_adctotile[629] = 22;
2629 sEPD_adctotile[630] = 16;
2630 sEPD_adctotile[631] = 18;
2631 sEPD_adctotile[632] = 12;
2632 sEPD_adctotile[633] = 14;
2633 sEPD_adctotile[634] = 8;
2634 sEPD_adctotile[635] = 10;
2635 sEPD_adctotile[636] = 4;
2636 sEPD_adctotile[637] = 6;
2637 sEPD_adctotile[638] = 0;
2638 sEPD_adctotile[639] = 2;
2639 sEPD_adctotile[640] = 27;
2640 sEPD_adctotile[641] = 29;
2641 sEPD_adctotile[642] = 23;
2642 sEPD_adctotile[643] = 25;
2643 sEPD_adctotile[644] = 19;
2644 sEPD_adctotile[645] = 21;
2645 sEPD_adctotile[646] = 15;
2646 sEPD_adctotile[647] = 17;
2647 sEPD_adctotile[648] = 11;
2648 sEPD_adctotile[649] = 13;
2649 sEPD_adctotile[650] = 7;
2650 sEPD_adctotile[651] = 9;
2651 sEPD_adctotile[652] = 3;
2652 sEPD_adctotile[653] = 5;
2653 sEPD_adctotile[654] = 31;
2654 sEPD_adctotile[655] = 1;
2655 sEPD_adctotile[656] = 28;
2656 sEPD_adctotile[657] = 30;
2657 sEPD_adctotile[658] = 24;
2658 sEPD_adctotile[659] = 26;
2659 sEPD_adctotile[660] = 20;
2660 sEPD_adctotile[661] = 22;
2661 sEPD_adctotile[662] = 16;
2662 sEPD_adctotile[663] = 18;
2663 sEPD_adctotile[664] = 12;
2664 sEPD_adctotile[665] = 14;
2665 sEPD_adctotile[666] = 8;
2666 sEPD_adctotile[667] = 10;
2667 sEPD_adctotile[668] = 4;
2668 sEPD_adctotile[669] = 6;
2669 sEPD_adctotile[670] = 0;
2670 sEPD_adctotile[671] = 2;
2671 sEPD_adctotile[672] = 27;
2672 sEPD_adctotile[673] = 29;
2673 sEPD_adctotile[674] = 23;
2674 sEPD_adctotile[675] = 25;
2675 sEPD_adctotile[676] = 19;
2676 sEPD_adctotile[677] = 21;
2677 sEPD_adctotile[678] = 15;
2678 sEPD_adctotile[679] = 17;
2679 sEPD_adctotile[680] = 11;
2680 sEPD_adctotile[681] = 13;
2681 sEPD_adctotile[682] = 7;
2682 sEPD_adctotile[683] = 9;
2683 sEPD_adctotile[684] = 3;
2684 sEPD_adctotile[685] = 5;
2685 sEPD_adctotile[686] = 31;
2686 sEPD_adctotile[687] = 1;
2687 sEPD_adctotile[688] = 28;
2688 sEPD_adctotile[689] = 30;
2689 sEPD_adctotile[690] = 24;
2690 sEPD_adctotile[691] = 26;
2691 sEPD_adctotile[692] = 20;
2692 sEPD_adctotile[693] = 22;
2693 sEPD_adctotile[694] = 16;
2694 sEPD_adctotile[695] = 18;
2695 sEPD_adctotile[696] = 12;
2696 sEPD_adctotile[697] = 14;
2697 sEPD_adctotile[698] = 8;
2698 sEPD_adctotile[699] = 10;
2699 sEPD_adctotile[700] = 4;
2700 sEPD_adctotile[701] = 6;
2701 sEPD_adctotile[702] = 0;
2702 sEPD_adctotile[703] = 2;
2703 sEPD_adctotile[704] = 27;
2704 sEPD_adctotile[705] = 29;
2705 sEPD_adctotile[706] = 23;
2706 sEPD_adctotile[707] = 25;
2707 sEPD_adctotile[708] = 19;
2708 sEPD_adctotile[709] = 21;
2709 sEPD_adctotile[710] = 15;
2710 sEPD_adctotile[711] = 17;
2711 sEPD_adctotile[712] = 11;
2712 sEPD_adctotile[713] = 13;
2713 sEPD_adctotile[714] = 7;
2714 sEPD_adctotile[715] = 9;
2715 sEPD_adctotile[716] = 3;
2716 sEPD_adctotile[717] = 5;
2717 sEPD_adctotile[718] = 31;
2718 sEPD_adctotile[719] = 1;
2719 sEPD_adctotile[720] = 28;
2720 sEPD_adctotile[721] = 30;
2721 sEPD_adctotile[722] = 24;
2722 sEPD_adctotile[723] = 26;
2723 sEPD_adctotile[724] = 20;
2724 sEPD_adctotile[725] = 22;
2725 sEPD_adctotile[726] = 16;
2726 sEPD_adctotile[727] = 18;
2727 sEPD_adctotile[728] = 12;
2728 sEPD_adctotile[729] = 14;
2729 sEPD_adctotile[730] = 8;
2730 sEPD_adctotile[731] = 10;
2731 sEPD_adctotile[732] = 4;
2732 sEPD_adctotile[733] = 6;
2733 sEPD_adctotile[734] = 0;
2734 sEPD_adctotile[735] = 2;
2735 sEPD_adctotile[736] = 27;
2736 sEPD_adctotile[737] = 29;
2737 sEPD_adctotile[738] = 23;
2738 sEPD_adctotile[739] = 25;
2739 sEPD_adctotile[740] = 19;
2740 sEPD_adctotile[741] = 21;
2741 sEPD_adctotile[742] = 15;
2742 sEPD_adctotile[743] = 17;
2743 sEPD_adctotile[744] = 11;
2744 sEPD_adctotile[745] = 13;
2745 sEPD_adctotile[746] = 7;
2746 sEPD_adctotile[747] = 9;
2747 sEPD_adctotile[748] = 3;
2748 sEPD_adctotile[749] = 5;
2749 sEPD_adctotile[750] = 31;
2750 sEPD_adctotile[751] = 1;
2751 sEPD_adctotile[752] = 28;
2752 sEPD_adctotile[753] = 30;
2753 sEPD_adctotile[754] = 24;
2754 sEPD_adctotile[755] = 26;
2755 sEPD_adctotile[756] = 20;
2756 sEPD_adctotile[757] = 22;
2757 sEPD_adctotile[758] = 16;
2758 sEPD_adctotile[759] = 18;
2759 sEPD_adctotile[760] = 12;
2760 sEPD_adctotile[761] = 14;
2761 sEPD_adctotile[762] = 8;
2762 sEPD_adctotile[763] = 10;
2763 sEPD_adctotile[764] = 4;
2764 sEPD_adctotile[765] = 6;
2765 sEPD_adctotile[766] = 0;
2766 sEPD_adctotile[767] = 2;
2767 return sEPD_adctotile[ch];
2768 }
2769
2770 int SepdMonDraw::DrawServerStats()
2771 {
2772 int canvasindex=6;
2773 OnlMonClient* cl = OnlMonClient::instance();
2774 if (!gROOT->FindObject("SepdServerStats"))
2775 {
2776 MakeCanvas("SepdServerStats");
2777 }
2778 TC[canvasindex]->Clear("D");
2779 TC[canvasindex]->SetEditable(true);
2780 transparent[canvasindex]->cd();
2781 TText PrintRun;
2782 PrintRun.SetTextFont(62);
2783 PrintRun.SetNDC();
2784 PrintRun.SetTextAlign(23);
2785 PrintRun.SetTextSize(0.04);
2786 PrintRun.SetTextColor(1);
2787 PrintRun.DrawText(0.5, 0.99, "Server Statistics");
2788
2789 PrintRun.SetTextSize(0.02);
2790 double vdist = 0.05;
2791 double vpos = 0.9;
2792 time_t clienttime = time(nullptr);
2793 for (const auto& server : m_ServerSet)
2794 {
2795 std::ostringstream txt;
2796 auto servermapiter = cl->GetServerMap(server);
2797 if (servermapiter == cl->GetServerMapEnd())
2798 {
2799 txt << "Server " << server
2800 << " is dead ";
2801 PrintRun.SetTextColor(kRed);
2802 }
2803 else
2804 {
2805 int gl1counts = std::get<4>(servermapiter->second);
2806 time_t currtime = std::get<3>(servermapiter->second);
2807 txt << "Server " << server
2808 << ", run number: " << std::get<1>(servermapiter->second)
2809 << ", event count: " << std::get<2>(servermapiter->second);
2810 if (gl1counts >= 0)
2811 {
2812 txt << ", gl1 count: " << gl1counts;
2813 }
2814 txt << ", current Event time: " << ctime(&currtime);
2815 if (isHtml())
2816 {
2817 clienttime = currtime;
2818 }
2819 else
2820 {
2821 txt << ", minutes since last evt: " << (clienttime - currtime)/60;
2822 }
2823 if (std::get<0>(servermapiter->second) && ((clienttime - currtime)/60) < 10)
2824 {
2825 PrintRun.SetTextColor(kGray + 2);
2826 }
2827 else
2828 {
2829 PrintRun.SetTextColor(kRed);
2830 }
2831 }
2832 PrintRun.DrawText(0.5, vpos, txt.str().c_str());
2833 vpos -= vdist;
2834 }
2835 TC[canvasindex]->Update();
2836 TC[canvasindex]->Show();
2837 TC[canvasindex]->SetEditable(false);
2838
2839 return 0;
2840 }