24 #include "TPaveText.h"
31 m_minSignalHeight(30),
32 m_timingRegime(
"Calib1"),
152 ATH_MSG_WARNING(
"[GetSignalShape] Did not find requested COOL ID, 0x" << std::hex << coolId.
id() << std::dec <<
", in signalShapes.");
184 (*m_signalShapes)[coolId.
id()] = temp;
188 ATH_MSG_WARNING(
"[GetMapIterator] Something strange going on. Did not find newly created signal shape for cool ID: 0x" <<
CoolIdToString(coolId));
201 return StatusCode::FAILURE;
203 return itr->second->Fill(ns_step,
adc);
211 return StatusCode::FAILURE;
213 return itr->second->Fill(timeSlice, rodHeaderStep,
adc);
221 return StatusCode::FAILURE;
223 return itr->second->Fill(rodHeaderStep,
adc);
235 if (m_runNumberStr.empty()) {
236 filename = (m_outputFileDirName +
'/' + m_outputFileName +
'.' + m_outputFileNamePostfix);
239 filename = (m_outputFileDirName +
'/' + m_outputFileName +
'_' + m_runNumberStr +
'.' + m_outputFileNamePostfix);
248 return StatusCode::FAILURE;
254 TTree*
tree =
new TTree(
"phos4signalShapes",
"phos4signalShapes");
256 tree->Branch(m_coolIdName.c_str(), &m_coolId, std::string(m_coolIdName +
"/i").c_str());
258 tree->Branch(m_isEnabledName.c_str(), &m_isEnabled, std::string(m_isEnabledName +
"/O").c_str());
259 tree->Branch(m_isValidName.c_str(), &m_isValid, std::string(m_isValidName +
"/O").c_str());
260 tree->Branch(m_isProcessedName.c_str(), &m_isProcessed, std::string(m_isProcessedName +
"/O").c_str());
262 tree->Branch(m_rawSignalShapeName.c_str(), &m_rawSignalShape);
263 tree->Branch(m_rawMaxPeakBinName.c_str(), &m_rawMaxPeakBin, std::string(m_rawMaxPeakBinName +
"/i").c_str());
264 tree->Branch(m_rawMaxPeakValueName.c_str(), &m_rawMaxPeakValue, std::string(m_rawMaxPeakValueName +
"/F").c_str());
265 tree->Branch(m_rawMaxFullDelayDataName.c_str(), &m_rawMaxFullDelayData, std::string(m_rawMaxFullDelayDataName +
"/i").c_str());
266 tree->Branch(m_rawFitPeakBinName.c_str(), &m_rawFitPeakBin, std::string(m_rawFitPeakBinName +
"/i").c_str());
267 tree->Branch(m_rawFitPeakValueName.c_str(), &m_rawFitPeakValue, std::string(m_rawFitPeakValueName +
"/F").c_str());
268 tree->Branch(m_rawFitFullDelayDataName.c_str(), &m_rawFitFullDelayData, std::string(m_rawFitFullDelayDataName +
"/i").c_str());
269 tree->Branch(m_rawFitPerformedName.c_str(), &m_rawFitPerformed, std::string(m_rawFitPerformedName +
"/O").c_str());
271 tree->Branch(m_rawFitName.c_str(), &m_rawFit);
273 tree->Branch(m_pedestalMeanName.c_str(), &m_pedestalMean, std::string(m_pedestalMeanName +
"/F").c_str());
274 tree->Branch(m_pedestalSigmaName.c_str(), &m_pedestalSigma, std::string(m_pedestalSigmaName +
"/F").c_str());
276 tree->Branch(m_processedSignalShapeName.c_str(), &m_processedSignalShape);
277 tree->Branch(m_processedMaxPeakBinName.c_str(), &m_processedMaxPeakBin, std::string(m_processedMaxPeakBinName +
"/i").c_str());
278 tree->Branch(m_processedMaxPeakValueName.c_str(), &m_processedMaxPeakValue, std::string(m_processedMaxPeakValueName +
"/F").c_str());
279 tree->Branch(m_processedMaxFullDelayDataName.c_str(), &m_processedMaxFullDelayData, std::string(m_processedMaxFullDelayDataName +
"/i").c_str());
280 tree->Branch(m_processedFitPeakBinName.c_str(), &m_processedFitPeakBin, std::string(m_processedFitPeakBinName +
"/i").c_str());
281 tree->Branch(m_processedFitPeakValueName.c_str(), &m_processedFitPeakValue, std::string(m_processedFitPeakValueName +
"/F").c_str());
282 tree->Branch(m_processedFitFullDelayDataName.c_str(), &m_processedFitFullDelayData, std::string(m_processedFitFullDelayDataName +
"/i").c_str());
283 tree->Branch(m_processedFitPerformedName.c_str(), &m_processedFitPerformed, std::string(m_processedFitPerformedName +
"/O").c_str());
285 tree->Branch(m_processedFitName.c_str(), &m_processedFit);
287 tree->Branch(m_risingSlopeMeanName.c_str(), &m_risingSlopeMean, std::string(m_risingSlopeMeanName +
"/F").c_str());
288 tree->Branch(m_risingSlopeSigmaName.c_str(), &m_risingSlopeSigma, std::string(m_risingSlopeSigmaName +
"/F").c_str());
290 tree->Branch(m_errorCodeName.c_str(), &m_errorCode, std::string(m_errorCodeName +
"/i").c_str());
292 tree->Branch(m_currentFullDelayDataName.c_str(), &m_currentFullDelayData, std::string(m_currentFullDelayDataName +
"/i").c_str());
294 ATH_MSG_INFO(
"[Finalize] Looping over shapes for processing.");
297 std::string dbFilename_rawMax;
298 std::string dbFilename_rawFit;
299 std::string dbFilename_processedMax;
300 std::string dbFilename_processedFit;
301 if (m_runNumberStr.empty()) {
302 dbFilename_rawMax = (m_outputFileDirName +
'/' + m_dbFileName_rawMax +
'.' + m_outDBFileNamePostfix);
303 dbFilename_rawFit = (m_outputFileDirName +
'/' + m_dbFileName_rawFit +
'.' + m_outDBFileNamePostfix);
304 dbFilename_processedMax = (m_outputFileDirName +
'/' + m_dbFileName_processedMax +
'.' + m_outDBFileNamePostfix);
305 dbFilename_processedFit = (m_outputFileDirName +
'/' + m_dbFileName_processedFit +
'.' + m_outDBFileNamePostfix);
308 dbFilename_rawMax = (m_outputFileDirName +
'/' + m_dbFileName_rawMax +
'_' + m_runNumberStr +
'.' + m_outDBFileNamePostfix);
309 dbFilename_rawFit = (m_outputFileDirName +
'/' + m_dbFileName_rawFit +
'_' + m_runNumberStr +
'.' + m_outDBFileNamePostfix);
310 dbFilename_processedMax = (m_outputFileDirName +
'/' + m_dbFileName_processedMax +
'_' + m_runNumberStr +
'.' + m_outDBFileNamePostfix);
311 dbFilename_processedFit = (m_outputFileDirName +
'/' + m_dbFileName_processedFit +
'_' + m_runNumberStr +
'.' + m_outDBFileNamePostfix);
313 std::ofstream dbFile_rawMax(dbFilename_rawMax.c_str());
314 if (!dbFile_rawMax.is_open()) {
315 ATH_MSG_ERROR(
"[Finalize]: Failed to open file for database output, " << dbFilename_rawMax);
317 std::ofstream dbFile_rawFit(dbFilename_rawFit.c_str());
318 if (!dbFile_rawFit.is_open()) {
319 ATH_MSG_ERROR(
"[Finalize]: Failed to open file for database output, " << dbFilename_rawFit);
321 std::ofstream dbFile_processedMax(dbFilename_processedMax.c_str());
322 if (!dbFile_processedMax.is_open()) {
323 ATH_MSG_ERROR(
"[Finalize]: Failed to open file for database output, " << dbFilename_processedMax);
325 std::ofstream dbFile_processedFit(dbFilename_processedFit.c_str());
326 if (!dbFile_processedFit.is_open()) {
327 ATH_MSG_ERROR(
"[Finalize]: Failed to open file for database output, " << dbFilename_processedFit);
337 TCanvas rawCanvas(
"rawCanvas",
"Raw Signal Shapes", 0, 0, 1024, 768);
338 rawCanvas.SetBatch(
true);
340 rawCanvas.SetMargin(0, 0, 0, 0);
342 rawCanvas.Divide(1, 2, 0, 0);
343 TVirtualPad *rawTitlePad = rawCanvas.cd(1);
344 TVirtualPad *rawPlotPad = rawCanvas.cd(2);
346 rawTitlePad->SetMargin(0, 0, 0, 0);
347 rawPlotPad->SetMargin(0, 0, 0, 0);
349 const float titleBottom = 0.97;
350 rawTitlePad->SetPad(0, titleBottom, 1, 1);
351 rawPlotPad->SetPad(0, 0, 1, titleBottom);
353 const unsigned short int maxPlotsPerPage = 64;
354 const unsigned short int maxPlotsPerPageX = 8;
355 const unsigned short int maxPlotsPerPageY = 8;
356 rawPlotPad->Divide(maxPlotsPerPageX, maxPlotsPerPageY, 0, 0);
358 TPaveText *rawPageTitle =
new TPaveText(0, 0, 1, 1);
359 rawPageTitle->SetFillColor(kWhite);
360 rawPageTitle->SetBorderSize(0);
362 TCanvas rawErrorCanvas(
"rawErrorCanvas",
"Raw Signal Shapes with Errors", 0, 0, 1024, 768);
363 rawErrorCanvas.SetBatch(
true);
365 rawErrorCanvas.SetMargin(0, 0, 0, 0);
367 rawErrorCanvas.Divide(1, 2, 0, 0);
368 TVirtualPad *rawErrorTitlePad = rawErrorCanvas.cd(1);
369 TVirtualPad *rawErrorPlotPad = rawErrorCanvas.cd(2);
371 rawErrorTitlePad->SetMargin(0, 0, 0, 0);
372 rawErrorPlotPad->SetMargin(0, 0, 0, 0);
374 rawErrorTitlePad->SetPad(0, titleBottom, 1, 1);
375 rawErrorPlotPad->SetPad(0, 0, 1, titleBottom);
377 const unsigned short int maxErrorPlotsPerPage = 16;
378 const unsigned short int maxErrorPlotsPerPageX = 4;
379 const unsigned short int maxErrorPlotsPerPageY = 4;
380 rawErrorPlotPad->Divide(maxErrorPlotsPerPageX, maxErrorPlotsPerPageY, 0, 0);
382 TPaveText *rawErrorPageTitle =
new TPaveText(0, 0, 1, 1);
383 rawErrorPageTitle->SetFillColor(kWhite);
384 rawErrorPageTitle->SetBorderSize(0);
389 unsigned short int nErrorPlots = 0;
390 unsigned short int nErrorPlotPages = 0;
392 TCanvas processedCanvas(
"processedCanvas",
"Processed Signal Shapes", 0, 0, 1024, 768);
394 processedCanvas.SetMargin(0, 0, 0, 0);
396 processedCanvas.Divide(1, 2, 0, 0);
397 TVirtualPad *processedTitlePad = processedCanvas.cd(1);
398 TVirtualPad *processedPlotPad = processedCanvas.cd(2);
400 processedTitlePad->SetMargin(0, 0, 0, 0);
401 processedPlotPad->SetMargin(0, 0, 0, 0);
403 processedTitlePad->SetPad(0, titleBottom, 1, 1);
404 processedPlotPad->SetPad(0, 0, 1, titleBottom);
406 processedPlotPad->Divide(maxPlotsPerPageX, maxPlotsPerPageY, 0, 0);
408 TPaveText *processedPageTitle =
new TPaveText(0, 0, 1, 1);
409 processedPageTitle->SetFillColor(kWhite);
410 processedPageTitle->SetBorderSize(0);
412 TCanvas processedErrorCanvas(
"processedErrorCanvas",
"Processed Signal Shapes with Errors", 0, 0, 1024, 768);
414 processedErrorCanvas.SetMargin(0, 0, 0, 0);
416 processedErrorCanvas.Divide(1, 2, 0, 0);
417 TVirtualPad *processedErrorTitlePad = processedErrorCanvas.cd(1);
418 TVirtualPad *processedErrorPlotPad = processedErrorCanvas.cd(2);
420 processedErrorTitlePad->SetMargin(0, 0, 0, 0);
421 processedErrorPlotPad->SetMargin(0, 0, 0, 0);
423 processedErrorTitlePad->SetPad(0, titleBottom, 1, 1);
424 processedErrorPlotPad->SetPad(0, 0, 1, titleBottom);
426 processedErrorPlotPad->Divide(maxErrorPlotsPerPageX, maxErrorPlotsPerPageY, 0, 0);
428 TPaveText *processedErrorPageTitle =
new TPaveText(0, 0, 1, 1);
429 processedErrorPageTitle->SetFillColor(kWhite);
430 processedErrorPageTitle->SetBorderSize(0);
433 std::string filenameRawShapes, filenameRawErrorShapes;
434 std::string filenameProcessedShapes, filenameProcessedErrorShapes;
435 if (m_runNumberStr.empty()) {
436 filenameRawShapes = (m_outputFileDirName +
'/' + m_outRawCanvasName +
'.' + m_outRawCanvasNamePostfix);
437 filenameRawErrorShapes = (m_outputFileDirName +
'/' + m_outRawCanvasName +
"Error." + m_outRawCanvasNamePostfix);
438 filenameProcessedShapes = (m_outputFileDirName +
'/' + m_outProcessedCanvasName +
'.' + m_outProcessedCanvasNamePostfix);
439 filenameProcessedErrorShapes = (m_outputFileDirName +
'/' + m_outProcessedCanvasName +
"Error." + m_outProcessedCanvasNamePostfix);
442 filenameRawShapes = (m_outputFileDirName +
'/' + m_outRawCanvasName +
'_' + m_runNumberStr +
'.' + m_outRawCanvasNamePostfix);
443 filenameRawErrorShapes = (m_outputFileDirName +
'/' + m_outRawCanvasName +
"Error_" + m_runNumberStr +
'.' + m_outRawCanvasNamePostfix);
444 filenameProcessedShapes = (m_outputFileDirName +
'/' + m_outProcessedCanvasName +
'_' + m_runNumberStr +
'.' + m_outProcessedCanvasNamePostfix);
445 filenameProcessedErrorShapes = (m_outputFileDirName +
'/' + m_outProcessedCanvasName +
"Error_" + m_runNumberStr +
'.' + m_outProcessedCanvasNamePostfix);
453 TH1I *h1f_diff_fullDelayData_rawMax =
new TH1I(
"h1f_diff_fullDelayData_rawMax",
"FullDelayData: RawMax - database;#Delta FullDelayData (ns)", 100, -50, 50);
454 TH1I *h1f_diff_fullDelayData_rawFit =
new TH1I(
"h1f_diff_fullDelayData_rawFit",
"FullDelayData: RawFit - database;#Delta FullDelayData (ns)", 100, -50, 50);
455 TH1I *h1f_diff_fullDelayData_processedMax =
new TH1I(
"h1f_diff_fullDelayData_processedMax",
"FullDelayData: ProcessedMax - database;#Delta FullDelayData (ns)", 100, -50, 50);
456 TH1I *h1f_diff_fullDelayData_processedFit =
new TH1I(
"h1f_diff_fullDelayData_processedFit",
"FullDelayData: ProcessedFit - database;#Delta FullDelayData (ns)", 100, -50, 50);
460 TH2F_LW *h2f_diff_fullDelayData_rawMax_em = (*m_histTool)->bookPPMEmEtaVsPhi(
"h2f_diff_fullDelayData_rawMax_em",
"EM FullDelayData: RawMax - database");
461 TH2F_LW *h2f_diff_fullDelayData_rawFit_em = (*m_histTool)->bookPPMEmEtaVsPhi(
"h2f_diff_fullDelayData_rawFit_em",
"EM FullDelayData: RawFit - database");
462 TH2F_LW *h2f_diff_fullDelayData_processedMax_em = (*m_histTool)->bookPPMEmEtaVsPhi(
"h2f_diff_fullDelayData_processedMax_em",
"EM FullDelayData: ProcessedMax - database");
463 TH2F_LW *h2f_diff_fullDelayData_processedFit_em = (*m_histTool)->bookPPMEmEtaVsPhi(
"h2f_diff_fullDelayData_processedFit_em",
"EM FullDelayData: ProcessedFit - database");
465 TH2F_LW *h2f_diff_fullDelayData_rawMax_had = (*m_histTool)->bookPPMHadEtaVsPhi(
"h2f_diff_fullDelayData_rawMax_had",
"HAD FullDelayData: RawMax - database");
466 TH2F_LW *h2f_diff_fullDelayData_rawFit_had = (*m_histTool)->bookPPMHadEtaVsPhi(
"h2f_diff_fullDelayData_rawFit_had",
"HAD FullDelayData: RawFit - database");
467 TH2F_LW *h2f_diff_fullDelayData_processedMax_had = (*m_histTool)->bookPPMHadEtaVsPhi(
"h2f_diff_fullDelayData_processedMax_had",
"HAD FullDelayData: ProcessedMax - database");
468 TH2F_LW *h2f_diff_fullDelayData_processedFit_had = (*m_histTool)->bookPPMHadEtaVsPhi(
"h2f_diff_fullDelayData_processedFit_had",
"HAD FullDelayData: ProcessedFit - database");
472 TH2F_LW *h2f_errorCode_dummy_em = (*m_histTool)->bookPPMEmEtaVsPhi(
"h2f_errorCode_dummy_em",
"EM Error Code Dummy");
474 TH2F_LW *h2f_errorCode_dummy_had = (*m_histTool)->bookPPMHadEtaVsPhi(
"h2f_errorCode_dummy_had",
"HAD Error Code Dummy");
477 TH2F_LW *h2f_errorCode_em = (*m_histTool)->bookPPMEmEtaVsPhi(
"h2f_errorCode_em",
"EM Error Code");
478 TH2F_LW *h2f_errorCode_had = (*m_histTool)->bookPPMHadEtaVsPhi(
"h2f_errorCode_had",
"HAD Error Code");
482 TH2F_LW *h2f_fullDelayData_rawMax_em = (*m_histTool)->bookPPMEmEtaVsPhi(
"h2f_fullDelayData_rawMax_em",
"EM FullDelayData: RawMax");
483 TH2F_LW *h2f_fullDelayData_rawFit_em = (*m_histTool)->bookPPMEmEtaVsPhi(
"h2f_fullDelayData_rawFit_em",
"EM FullDelayData: RawFit");
484 TH2F_LW *h2f_fullDelayData_processedMax_em = (*m_histTool)->bookPPMEmEtaVsPhi(
"h2f_fullDelayData_processedMax_em",
"EM FullDelayData: ProcessedMax");
485 TH2F_LW *h2f_fullDelayData_processedFit_em = (*m_histTool)->bookPPMEmEtaVsPhi(
"h2f_fullDelayData_processedFit_em",
"EM FullDelayData: ProcessedFit");
487 TH2F_LW *h2f_fullDelayData_rawMax_had = (*m_histTool)->bookPPMHadEtaVsPhi(
"h2f_fullDelayData_rawMax_had",
"HAD FullDelayData: RawMax");
488 TH2F_LW *h2f_fullDelayData_rawFit_had = (*m_histTool)->bookPPMHadEtaVsPhi(
"h2f_fullDelayData_rawFit_had",
"HAD FullDelayData: RawFit");
489 TH2F_LW *h2f_fullDelayData_processedMax_had = (*m_histTool)->bookPPMHadEtaVsPhi(
"h2f_fullDelayData_processedMax_had",
"HAD FullDelayData: ProcessedMax");
490 TH2F_LW *h2f_fullDelayData_processedFit_had = (*m_histTool)->bookPPMHadEtaVsPhi(
"h2f_fullDelayData_processedFit_had",
"HAD FullDelayData: ProcessedFit");
493 TH2F_LW *h2f_fullDelayData_em = (*m_histTool)->bookPPMEmEtaVsPhi(
"h2f_fullDelayData_em",
"EM FullDelayData from database");
494 TH2F_LW *h2f_fullDelayData_had = (*m_histTool)->bookPPMHadEtaVsPhi(
"h2f_fullDelayData_had",
"HAD FullDelayData from database");
498 ShapesMap_itr itr = this->
begin();
499 ShapesMap_itr itrEnd = this->
end();
502 for (; itr != itrEnd; ++itr) {
509 if (
sc.isFailure()) {
510 overallSc = StatusCode::FAILURE;
555 if (dbFile_rawMax.is_open()) {
556 dbFile_rawMax << m_timingRegime <<
".PprPhos4ScanResults,0x";
557 dbFile_rawMax.width(8);
558 dbFile_rawMax.fill(
'0');
559 dbFile_rawMax << std::hex << itr->first << std::dec <<
",";
560 dbFile_rawMax <<
"ModuleId:unsigned:0,";
561 dbFile_rawMax <<
"ErrorCode:unsigned:" << shape->
GetErrorCode() <<
",";
562 dbFile_rawMax <<
"Histograms:string:Not yet set,";
565 if (dbFile_rawFit.is_open()) {
566 dbFile_rawFit << m_timingRegime <<
".PprPhos4ScanResults,0x";
567 dbFile_rawFit.width(8);
568 dbFile_rawFit.fill(
'0');
569 dbFile_rawFit << std::hex << itr->first << std::dec <<
",";
570 dbFile_rawFit <<
"ModuleId:unsigned:0,";
571 dbFile_rawFit <<
"ErrorCode:unsigned:" << shape->
GetErrorCode() <<
",";
572 dbFile_rawFit <<
"Histograms:string:Not yet set,";
575 if (dbFile_processedMax.is_open()) {
576 dbFile_processedMax << m_timingRegime <<
".PprPhos4ScanResults,0x";
577 dbFile_processedMax.width(8);
578 dbFile_processedMax.fill(
'0');
579 dbFile_processedMax << std::hex << itr->first << std::dec <<
",";
580 dbFile_processedMax <<
"ModuleId:unsigned:0,";
581 dbFile_processedMax <<
"ErrorCode:unsigned:" << shape->
GetErrorCode() <<
",";
582 dbFile_processedMax <<
"Histograms:string:Not yet set,";
585 if (dbFile_processedFit.is_open()) {
586 dbFile_processedFit << m_timingRegime <<
".PprPhos4ScanResults,0x";
587 dbFile_processedFit.width(8);
588 dbFile_processedFit.fill(
'0');
589 dbFile_processedFit << std::hex << itr->first << std::dec <<
",";
590 dbFile_processedFit <<
"ModuleId:unsigned:0,";
591 dbFile_processedFit <<
"ErrorCode:unsigned:" << shape->
GetErrorCode() <<
",";
592 dbFile_processedFit <<
"Histograms:string:Not yet set,";
600 const unsigned int digiChanNum = ((m_coolId >> 8) & 0xf) * 4 + (m_coolId & 0xf);
602 TVirtualPad* rawPad = rawPlotPad->GetPad(digiChanNum + 1);
603 rawPad->SetRightMargin(0.);
604 rawPad->SetTopMargin(0.);
605 rawPad->SetBottomMargin(0.);
606 rawPad->SetLeftMargin(0.);
607 if (!(digiChanNum % 8))
608 rawPad->SetLeftMargin(0.1);
609 if (digiChanNum >= 56)
610 rawPad->SetBottomMargin(0.1);
612 m_rawSignalShape->SetMinimum(0);
613 m_rawSignalShape->SetMaximum(1030);
615 TVirtualPad* procPad = processedPlotPad->GetPad(digiChanNum + 1);
616 procPad->SetRightMargin(0.);
617 procPad->SetLeftMargin(0.);
618 procPad->SetBottomMargin(0.);
619 procPad->SetTopMargin(0.);
620 if (!(digiChanNum % 8))
621 procPad->SetLeftMargin(0.1);
622 if (digiChanNum >= 56)
623 procPad->SetBottomMargin(0.1);
625 m_processedSignalShape->SetMinimum(-30);
626 m_processedSignalShape->SetMaximum(1000);
628 rawPad->SetFillColor(kWhite);
629 procPad->SetFillColor(kWhite);
632 rawPad->SetFillColor(kCyan);
633 procPad->SetFillColor(kCyan);
637 rawPad->SetFillColor(kGreen);
638 procPad->SetFillColor(kGreen);
642 rawPad->SetFillColor(kRed);
643 procPad->SetFillColor(kRed);
648 m_rawSignalShape->SetMaximum(100);
649 m_rawSignalShape->SetMinimum(0);
650 m_processedSignalShape->SetMaximum(70);
651 m_processedSignalShape->SetMinimum(-30);
655 rawPlotPad->cd(digiChanNum + 1);
656 m_rawSignalShape->GetXaxis()->SetLabelSize(0.07);
657 m_rawSignalShape->GetXaxis()->SetLabelOffset(0.01);
658 m_rawSignalShape->Draw();
659 processedPlotPad->cd(digiChanNum + 1);
660 m_processedSignalShape->GetXaxis()->SetLabelSize(0.07);
661 m_processedSignalShape->GetXaxis()->SetLabelOffset(0.01);
662 m_processedSignalShape->Draw();
665 if (digiChanNum == maxPlotsPerPage - 1) {
666 ATH_MSG_INFO(
"[Finalize] Saving Channel Shapes to file. ");
668 std::string rawTitle = GetPadTitle(m_coolId) +
" (raw)";
669 std::string processedTitle = GetPadTitle(m_coolId) +
" (processed)";
673 rawPageTitle->Clear();
674 rawPageTitle->AddText(rawTitle.c_str());
675 rawPageTitle->Draw();
681 processedTitlePad->cd();
682 processedPageTitle->Clear();
683 processedPageTitle->AddText(processedTitle.c_str());
684 processedPageTitle->Draw();
686 processedCanvas.Update();
689 if ( ((m_coolId >> 24) & 0xf) == 0 && ((m_coolId >> 16) & 0xf) == 0) {
690 rawCanvas.SaveAs( std::string(filenameRawShapes +
"(").c_str() );
691 processedCanvas.SaveAs( std::string(filenameProcessedShapes +
"(").c_str() );
694 rawPlotPad->SetMargin(0, 0, 0, 0);
695 rawPlotPad->Divide(8, 8, 0, 0);
696 processedPlotPad->Clear();
697 processedPlotPad->SetMargin(0, 0, 0, 0);
698 processedPlotPad->Divide(8, 8, 0, 0);
702 else if (((m_coolId >> 24) & 0xf) == 7 && ((m_coolId >> 16) & 0xf) == 15) {
703 rawCanvas.SaveAs( std::string(filenameRawShapes +
")").c_str() );
704 processedCanvas.SaveAs( std::string(filenameProcessedShapes +
")").c_str() );
708 rawCanvas.SaveAs( filenameRawShapes.c_str() );
709 processedCanvas.SaveAs( filenameProcessedShapes.c_str() );
712 rawPlotPad->SetMargin(0, 0, 0, 0);
713 rawPlotPad->Divide(8, 8, 0, 0);
714 processedPlotPad->Clear();
715 processedPlotPad->SetMargin(0, 0, 0, 0);
716 processedPlotPad->Divide(8, 8, 0, 0);
725 if (m_errorCode != 0) {
733 if (m_isTileRun && !m_isLArRun && IsTileChannel(shape)) {
735 const unsigned short int padIndex = nErrorPlots + 1;
737 TVirtualPad *rawErrorPad = rawErrorPlotPad->cd(padIndex);
738 TVirtualPad *procErrorPad = processedErrorPlotPad->cd(padIndex);
739 rawErrorPad->SetFillColor(kWhite);
740 procErrorPad->SetFillColor(kWhite);
743 rawErrorPad->SetFillColor(kCyan);
744 procErrorPad->SetFillColor(kCyan);
748 rawErrorPad->SetFillColor(kGreen);
749 procErrorPad->SetFillColor(kGreen);
753 rawErrorPad->SetFillColor(kRed);
754 procErrorPad->SetFillColor(kRed);
758 m_rawSignalShape->Draw();
761 m_processedSignalShape->Draw();
766 else if ( m_isLArRun && !m_isTileRun && IsLArChannel(shape)) {
768 const unsigned short int padIndex = nErrorPlots + 1;
770 TVirtualPad *rawErrorPad = rawErrorPlotPad->cd(padIndex);
771 TVirtualPad *procErrorPad = processedErrorPlotPad->cd(padIndex);
772 rawErrorPad->SetFillColor(kWhite);
773 procErrorPad->SetFillColor(kWhite);
776 rawErrorPad->SetFillColor(kCyan);
777 procErrorPad->SetFillColor(kCyan);
781 rawErrorPad->SetFillColor(kGreen);
782 procErrorPad->SetFillColor(kGreen);
786 rawErrorPad->SetFillColor(kRed);
787 procErrorPad->SetFillColor(kRed);
791 m_rawSignalShape->Draw();
794 m_processedSignalShape->Draw();
803 if (nErrorPlots == maxErrorPlotsPerPage) {
805 ATH_MSG_INFO(
"[Finalize] Saving Error Shapes to file. ");
808 std::string rawTitle =
"Failed Channels (raw)";
809 std::string processedTitle =
"Failed Channels (processed)";
812 rawErrorTitlePad->cd();
813 rawErrorPageTitle->Clear();
814 rawErrorPageTitle->AddText(rawTitle.c_str());
815 rawErrorPageTitle->Draw();
818 rawErrorCanvas.Update();
821 processedErrorTitlePad->cd();
822 processedErrorPageTitle->Clear();
823 processedErrorPageTitle->AddText(processedTitle.c_str());
824 processedErrorPageTitle->Draw();
826 processedErrorCanvas.Update();
829 if ( nErrorPlotPages == 0 ) {
830 rawErrorCanvas.SaveAs( std::string(filenameRawErrorShapes +
"(").c_str() );
831 processedErrorCanvas.SaveAs( std::string(filenameProcessedErrorShapes +
"(").c_str() );
833 rawErrorPlotPad->Clear();
834 rawErrorPlotPad->SetMargin(0, 0, 0, 0);
835 rawErrorPlotPad->Divide(maxErrorPlotsPerPageX, maxErrorPlotsPerPageX, 0, 0);
836 processedErrorPlotPad->Clear();
837 processedErrorPlotPad->SetMargin(0, 0, 0, 0);
838 processedErrorPlotPad->Divide(maxErrorPlotsPerPageX, maxErrorPlotsPerPageX, 0, 0);
843 rawErrorCanvas.SaveAs( filenameRawErrorShapes.c_str() );
844 processedErrorCanvas.SaveAs( filenameProcessedErrorShapes.c_str() );
846 rawErrorPlotPad->Clear();
847 rawErrorPlotPad->SetMargin(0, 0, 0, 0);
848 rawErrorPlotPad->Divide(maxErrorPlotsPerPageX, maxErrorPlotsPerPageX, 0, 0);
849 processedErrorPlotPad->Clear();
850 processedErrorPlotPad->SetMargin(0, 0, 0, 0);
851 processedErrorPlotPad->Divide(maxErrorPlotsPerPageX, maxErrorPlotsPerPageX, 0, 0);
864 const int diffRawMax = (
int)m_rawMaxFullDelayData - (
int)m_currentFullDelayData;
865 const int diffRawFit = (
int)m_rawFitFullDelayData - (
int)m_currentFullDelayData;
866 const int diffProcessedMax = (
int)m_processedMaxFullDelayData - (
int)m_currentFullDelayData;
867 const int diffProcessedFit = (
int)m_processedFitFullDelayData - (
int)m_currentFullDelayData;
869 if (m_errorCode == 0) {
870 h1f_diff_fullDelayData_rawMax->Fill(diffRawMax);
871 h1f_diff_fullDelayData_rawFit->Fill(diffRawFit);
872 h1f_diff_fullDelayData_processedMax->Fill(diffProcessedMax);
873 h1f_diff_fullDelayData_processedFit->Fill(diffProcessedFit);
884 if (m_errorCode == 0x12)
886 else if (m_errorCode == 0x402)
888 else if (m_errorCode == 0x22)
891 (*m_histTool)->fillPPMEmEtaVsPhi(h2f_errorCode_em,
eta,
phi,
error);
896 (*m_histTool)->fillPPMEmEtaVsPhi(h2f_diff_fullDelayData_rawMax_em,
eta,
phi, diffRawMax);
897 (*m_histTool)->fillPPMEmEtaVsPhi(h2f_diff_fullDelayData_rawFit_em,
eta,
phi, diffRawFit);
898 (*m_histTool)->fillPPMEmEtaVsPhi(h2f_diff_fullDelayData_processedMax_em,
eta,
phi, diffProcessedMax);
899 (*m_histTool)->fillPPMEmEtaVsPhi(h2f_diff_fullDelayData_processedFit_em,
eta,
phi, diffProcessedFit);
902 (*m_histTool)->fillPPMEmEtaVsPhi(h2f_fullDelayData_rawMax_em,
eta,
phi, m_rawMaxFullDelayData);
903 (*m_histTool)->fillPPMEmEtaVsPhi(h2f_fullDelayData_rawFit_em,
eta,
phi, m_rawFitFullDelayData);
904 (*m_histTool)->fillPPMEmEtaVsPhi(h2f_fullDelayData_processedMax_em,
eta,
phi, m_processedMaxFullDelayData);
905 (*m_histTool)->fillPPMEmEtaVsPhi(h2f_fullDelayData_processedFit_em,
eta,
phi, m_processedFitFullDelayData);
908 (*m_histTool)->fillPPMEmEtaVsPhi(h2f_fullDelayData_em,
eta,
phi, m_currentFullDelayData);
913 int artificialDelay = -999;
915 (*m_histTool)->fillPPMEmEtaVsPhi(h2f_diff_fullDelayData_rawMax_em,
eta,
phi, artificialDelay);
916 (*m_histTool)->fillPPMEmEtaVsPhi(h2f_diff_fullDelayData_rawFit_em,
eta,
phi, artificialDelay);
917 (*m_histTool)->fillPPMEmEtaVsPhi(h2f_diff_fullDelayData_processedMax_em,
eta,
phi, artificialDelay);
918 (*m_histTool)->fillPPMEmEtaVsPhi(h2f_diff_fullDelayData_processedFit_em,
eta,
phi, artificialDelay);
921 int artificialError = 10;
922 (*m_histTool)->fillPPMEmEtaVsPhi(h2f_errorCode_dummy_em,
eta,
phi, artificialError);
929 if (m_errorCode == 0x12)
931 else if (m_errorCode == 0x402)
933 else if (m_errorCode == 0x22)
936 (*m_histTool)->fillPPMHadEtaVsPhi(h2f_errorCode_had,
eta,
phi,
error);
941 (*m_histTool)->fillPPMHadEtaVsPhi(h2f_diff_fullDelayData_rawMax_had,
eta,
phi, diffRawMax);
942 (*m_histTool)->fillPPMHadEtaVsPhi(h2f_diff_fullDelayData_rawFit_had,
eta,
phi, diffRawFit);
943 (*m_histTool)->fillPPMHadEtaVsPhi(h2f_diff_fullDelayData_processedMax_had,
eta,
phi, diffProcessedMax);
944 (*m_histTool)->fillPPMHadEtaVsPhi(h2f_diff_fullDelayData_processedFit_had,
eta,
phi, diffProcessedFit);
947 (*m_histTool)->fillPPMHadEtaVsPhi(h2f_fullDelayData_rawMax_had,
eta,
phi, m_rawMaxFullDelayData);
948 (*m_histTool)->fillPPMHadEtaVsPhi(h2f_fullDelayData_rawFit_had,
eta,
phi, m_rawFitFullDelayData);
949 (*m_histTool)->fillPPMHadEtaVsPhi(h2f_fullDelayData_processedMax_had,
eta,
phi, m_processedMaxFullDelayData);
950 (*m_histTool)->fillPPMHadEtaVsPhi(h2f_fullDelayData_processedFit_had,
eta,
phi, m_processedFitFullDelayData);
953 (*m_histTool)->fillPPMHadEtaVsPhi(h2f_fullDelayData_had,
eta,
phi, m_currentFullDelayData);
958 int artificialDelay = -999;
961 (*m_histTool)->fillPPMHadEtaVsPhi(h2f_diff_fullDelayData_rawMax_had,
eta,
phi, artificialDelay);
962 (*m_histTool)->fillPPMHadEtaVsPhi(h2f_diff_fullDelayData_rawFit_had,
eta,
phi, artificialDelay);
963 (*m_histTool)->fillPPMHadEtaVsPhi(h2f_diff_fullDelayData_processedMax_had,
eta,
phi, artificialDelay);
964 (*m_histTool)->fillPPMHadEtaVsPhi(h2f_diff_fullDelayData_processedFit_had,
eta,
phi, artificialDelay);
967 int artificialError = 10;
968 (*m_histTool)->fillPPMHadEtaVsPhi(h2f_errorCode_dummy_had,
eta,
phi, artificialError);
977 if (nErrorPlotPages > 0) {
979 ATH_MSG_INFO(
"[Finalize] Saving Last Error Shapes to file. ");
982 std::string rawTitle =
"Failed Channels (raw)";
983 std::string processedTitle =
"Failed Channels (processed)";
986 rawErrorTitlePad->cd();
987 rawErrorPageTitle->Clear();
988 rawErrorPageTitle->AddText(rawTitle.c_str());
989 rawErrorPageTitle->Draw();
992 rawErrorCanvas.Update();
995 processedErrorTitlePad->cd();
996 processedErrorPageTitle->Clear();
997 processedErrorPageTitle->AddText(processedTitle.c_str());
998 processedErrorPageTitle->Draw();
1000 processedErrorCanvas.Update();
1002 rawErrorCanvas.SaveAs( std::string(filenameRawErrorShapes +
")").c_str() );
1003 processedErrorCanvas.SaveAs( std::string(filenameProcessedErrorShapes +
")").c_str() );
1007 MergeErrorAndShapes(filenameRawErrorShapes, filenameRawShapes);
1008 MergeErrorAndShapes(filenameProcessedErrorShapes, filenameProcessedShapes);
1012 else if (nErrorPlots != 0 ) {
1014 ATH_MSG_INFO(
"[Finalize] Saving Single Page of Error Shapes to file. ");
1017 std::string rawTitle =
"Failed Channels (raw)";
1018 std::string processedTitle =
"Failed Channels (processed)";
1021 rawErrorTitlePad->cd();
1022 rawErrorPageTitle->Clear();
1023 rawErrorPageTitle->AddText(rawTitle.c_str());
1024 rawErrorPageTitle->Draw();
1027 rawErrorCanvas.Update();
1030 processedErrorTitlePad->cd();
1031 processedErrorPageTitle->Clear();
1032 processedErrorPageTitle->AddText(processedTitle.c_str());
1033 processedErrorPageTitle->Draw();
1035 processedErrorCanvas.Update();
1037 rawErrorCanvas.SaveAs( filenameRawErrorShapes.c_str() );
1038 processedErrorCanvas.SaveAs( filenameProcessedErrorShapes.c_str() );
1041 MergeErrorAndShapes(filenameRawErrorShapes, filenameRawShapes);
1042 MergeErrorAndShapes(filenameProcessedErrorShapes, filenameProcessedShapes);
1046 gzipFile(filenameRawShapes);
1047 gzipFile(filenameProcessedShapes);
1050 if (dbFile_rawMax.is_open()) dbFile_rawMax.close();
1051 if (dbFile_rawFit.is_open()) dbFile_rawFit.close();
1052 if (dbFile_processedMax.is_open()) dbFile_processedMax.close();
1053 if (dbFile_processedFit.is_open()) dbFile_processedFit.close();
1060 TTree* runTree =
new TTree(
"runInfo",
"runInfo");
1062 runTree->Branch(m_runNumberName.c_str(), &m_runNumber, std::string(m_runNumberName +
"/i").c_str());
1082 std::string summaryRootFile, summaryPsFile;
1083 if (m_runNumberStr.empty()) {
1084 summaryRootFile = (m_outputFileDirName +
'/' + m_outputSummaryPlotsFileName +
'.' + m_outputSummaryPlotsPostfix);
1085 summaryPsFile = (m_outputFileDirName +
'/' + m_outputSummaryPlotsFileName +
'.' + m_outputSummaryCanvasPostfix);
1088 summaryRootFile = (m_outputFileDirName +
'/' + m_outputSummaryPlotsFileName +
'_' + m_runNumberStr +
'.' + m_outputSummaryPlotsPostfix);
1089 summaryPsFile = (m_outputFileDirName +
'/' + m_outputSummaryPlotsFileName +
'_' + m_runNumberStr +
'.' + m_outputSummaryCanvasPostfix);
1093 TFile *
summaryFile =
new TFile(summaryRootFile.c_str(),
"RECREATE");
1097 gStyle->SetOptTitle(0);
1100 TCanvas *summaryCanvas =
new TCanvas(
"summaryCanvas",
"Summary Plots", 0, 0, 800, 600);
1101 summaryCanvas->SetBatch(
true);
1102 summaryCanvas->cd(1)->SetMargin(0, 0, 0, 0);
1104 summaryCanvas->Divide(1, 2, 0, 0);
1105 TVirtualPad *titlePad = summaryCanvas->cd(1);
1106 titlePad->SetPad(0, titleBottom, 1, 1);
1107 TVirtualPad *contentPad = summaryCanvas->cd(2);
1108 contentPad->SetPad(0, 0, 1, titleBottom);
1110 TPaveText *titlePave =
new TPaveText(0, 0, 1, 1);
1111 titlePave->SetFillColor(kWhite);
1112 titlePave->SetBorderSize(kWhite);
1118 contentPad->Clear();
1119 contentPad->Divide(1, 2, 0, 0);
1120 contentPad->cd(1)->SetMargin(0.1, 0., 0. , 0.);
1121 contentPad->cd(2)->SetMargin(0.1, 0., 0.1, 0.);
1124 SaveEtaPhiHisto(h2f_errorCode_em, 1, 4, 3)->Draw(
"col");
1126 SaveEtaPhiHisto(h2f_errorCode_had, 1, 4, 3)->Draw(
"col");
1129 titlePave->AddText(
"ErrorCode: EM(top) HAD(bottom) Color Code: no signal(blue), sat signal(green), bad signal(red) ");
1131 summaryCanvas->Update();
1132 summaryCanvas->SaveAs( std::string(summaryPsFile +
"(").c_str() );
1137 contentPad->Clear();
1138 contentPad->Divide(2, 2, 0, 0);
1139 contentPad->cd(1)->SetMargin(0.1, 0. , 0. , 0. );
1140 contentPad->cd(2)->SetMargin(0. , 0.1, 0. , 0. );
1141 contentPad->cd(3)->SetMargin(0.1, 0. , 0.1, 0. );
1142 contentPad->cd(4)->SetMargin(0. , 0.1, 0.1, 0. );
1145 SaveEtaPhiHisto(h2f_fullDelayData_rawMax_em, 0, 300, 60)->Draw(
"col");
1147 SaveEtaPhiHisto(h2f_fullDelayData_rawFit_em, 0, 300, 60)->Draw(
"colz");
1149 SaveEtaPhiHisto(h2f_fullDelayData_processedMax_em, 0, 300, 60)->Draw(
"col");
1151 SaveEtaPhiHisto(h2f_fullDelayData_processedFit_em, 0, 300, 60)->Draw(
"colz");
1154 titlePave->AddText(
"EM Derived FullDelayData: RawMax(top-left) RawFit(top-right) ProcessedMax(bottom-left) ProcessedFit(bottom-right)");
1156 summaryCanvas->Update();
1157 summaryCanvas->SaveAs( summaryPsFile.c_str() );
1160 contentPad->Clear();
1161 contentPad->Divide(2, 2, 0, 0);
1162 contentPad->cd(1)->SetMargin(0.1, 0. , 0. , 0. );
1163 contentPad->cd(2)->SetMargin(0. , 0.1, 0. , 0. );
1164 contentPad->cd(3)->SetMargin(0.1, 0. , 0.1, 0. );
1165 contentPad->cd(4)->SetMargin(0. , 0.1, 0.1, 0. );
1168 SaveEtaPhiHisto(h2f_fullDelayData_rawMax_had, 0, 300, 60)->Draw(
"col");
1170 SaveEtaPhiHisto(h2f_fullDelayData_rawFit_had, 0, 300, 60)->Draw(
"colz");
1172 SaveEtaPhiHisto(h2f_fullDelayData_processedMax_had, 0, 300, 60)->Draw(
"col");
1174 SaveEtaPhiHisto(h2f_fullDelayData_processedFit_had, 0, 300, 60)->Draw(
"colz");
1177 titlePave->AddText(
"HAD Derived FullDelayData: RawMax(top-left) RawFit(top-right) ProcessedMax(bottom-left) ProcessedFit(bottom-right)");
1179 summaryCanvas->Update();
1180 summaryCanvas->SaveAs( summaryPsFile.c_str() );
1183 contentPad->Clear();
1184 contentPad->Divide(1, 2, 0, 0);
1185 contentPad->cd(1)->SetMargin(0.1, 0.1, 0. , 0.);
1186 contentPad->cd(2)->SetMargin(0.1, 0.1, 0.1, 0.);
1189 SaveEtaPhiHisto(h2f_fullDelayData_em, 0, 300, 60)->Draw(
"colz");
1191 SaveEtaPhiHisto(h2f_fullDelayData_had, 0, 300, 60)->Draw(
"colz");
1194 titlePave->AddText(
"FullDelayData From Database: EM(top) HAD(bottom)");
1196 summaryCanvas->Update();
1197 summaryCanvas->SaveAs( summaryPsFile.c_str() );
1202 contentPad->Clear();
1203 contentPad->Divide(2, 2, 0, 0);
1204 contentPad->cd(1)->SetMargin(0.1, 0. , 0.01, 0. );
1205 contentPad->cd(2)->SetMargin(0. , 0.1, 0.01, 0. );
1206 contentPad->cd(3)->SetMargin(0.1, 0. , 0.1, 0. );
1207 contentPad->cd(4)->SetMargin(0. , 0.1, 0.1, 0. );
1210 SaveEtaPhiHisto(h2f_errorCode_dummy_em)->Draw(
"box");
1211 SaveEtaPhiHisto(h2f_diff_fullDelayData_rawMax_em)->Draw(
"col same");
1213 SaveEtaPhiHisto(h2f_errorCode_dummy_em)->Draw(
"box");
1214 SaveEtaPhiHisto(h2f_diff_fullDelayData_rawFit_em)->Draw(
"colz same");
1216 SaveEtaPhiHisto(h2f_errorCode_dummy_em)->Draw(
"box");
1217 SaveEtaPhiHisto(h2f_diff_fullDelayData_processedMax_em)->Draw(
"col same");
1219 SaveEtaPhiHisto(h2f_errorCode_dummy_em)->Draw(
"box");
1220 SaveEtaPhiHisto(h2f_diff_fullDelayData_processedFit_em)->Draw(
"colz same");
1223 titlePave->AddText(
"EM FullDelayData (derived-database): RawMax(top-left) RawFit(top-right) ProcessedMax(bottom-left) ProcessedFit(bottom-right)");
1225 summaryCanvas->Update();
1226 summaryCanvas->SaveAs( summaryPsFile.c_str() );
1229 contentPad->Clear();
1230 contentPad->Divide(2, 2, 0, 0);
1231 contentPad->cd(1)->SetMargin(0.1, 0. , 0.01, 0. );
1232 contentPad->cd(2)->SetMargin(0. , 0.1, 0.01, 0. );
1233 contentPad->cd(3)->SetMargin(0.1, 0. , 0.1, 0. );
1234 contentPad->cd(4)->SetMargin(0. , 0.1, 0.1, 0. );
1237 SaveEtaPhiHisto(h2f_errorCode_dummy_had)->Draw(
"box");
1238 SaveEtaPhiHisto(h2f_diff_fullDelayData_rawMax_had)->Draw(
"col same");
1240 SaveEtaPhiHisto(h2f_errorCode_dummy_had)->Draw(
"box");
1241 SaveEtaPhiHisto(h2f_diff_fullDelayData_rawFit_had)->Draw(
"colz same");
1243 SaveEtaPhiHisto(h2f_errorCode_dummy_had)->Draw(
"box");
1244 SaveEtaPhiHisto(h2f_diff_fullDelayData_processedMax_had)->Draw(
"col same");
1246 SaveEtaPhiHisto(h2f_errorCode_dummy_had)->Draw(
"box");
1247 SaveEtaPhiHisto(h2f_diff_fullDelayData_processedFit_had)->Draw(
"colz same");
1250 titlePave->AddText(
"HAD FullDelayData (derived-database): RawMax(top-left) RawFit(top-right) ProcessedMax(bottom-left) ProcessedFit(bottom-right)");
1252 summaryCanvas->Update();
1253 summaryCanvas->SaveAs( summaryPsFile.c_str() );
1256 contentPad->Clear();
1257 contentPad->Divide(2, 2, 0, 0);
1258 contentPad->cd(1)->SetMargin(0.1, 0. , 0. , 0. );
1259 contentPad->cd(2)->SetMargin(0.1, 0. , 0. , 0. );
1260 contentPad->cd(3)->SetMargin(0.1, 0. , 0.1, 0. );
1261 contentPad->cd(4)->SetMargin(0.1, 0. , 0.1, 0. );
1264 h1f_diff_fullDelayData_rawMax->Write();
1265 h1f_diff_fullDelayData_rawFit->Write();
1266 h1f_diff_fullDelayData_processedMax->Write();
1267 h1f_diff_fullDelayData_processedFit->Write();
1271 contentPad->cd(1)->SetLogy(1);
1272 h1f_diff_fullDelayData_rawMax->Draw();
1274 contentPad->cd(2)->SetLogy(1);
1275 h1f_diff_fullDelayData_rawFit->Draw();
1277 contentPad->cd(3)->SetLogy(1);
1278 h1f_diff_fullDelayData_processedMax->Draw();
1280 contentPad->cd(4)->SetLogy(1);
1281 h1f_diff_fullDelayData_processedFit->Draw();
1284 titlePave->AddText(
"FullDelayData (derived-database): RawMax(top-left) RawFit(top-right) ProcessedMax(bottom-left) ProcessedFit(bottom-right)");
1286 summaryCanvas->Update();
1287 summaryCanvas->SaveAs( std::string(summaryPsFile +
")").c_str() );
1294 ps2pdf(summaryPsFile);
1297 gzipFile(summaryPsFile);
1339 const float feta = fabs(
eta);
1354 const float feta = fabs(
eta);
1358 if ( feta > 1.5 && feta < 4.9)
1387 return StatusCode::FAILURE;
1390 itr->second->SetCurrentFullDelayData(
delay);
1392 return StatusCode::SUCCESS;
1400 return StatusCode::FAILURE;
1403 itr->second->SetPedValue(
value);
1405 return StatusCode::SUCCESS;
1412 return StatusCode::FAILURE;
1415 itr->second->SetL1aFadcSlice(
slice);
1417 return StatusCode::SUCCESS;
1424 return StatusCode::FAILURE;
1427 itr->second->SetValidChannel(validity);
1429 return StatusCode::SUCCESS;
1436 return StatusCode::FAILURE;
1439 itr->second->SetEnabled(enabled);
1441 return StatusCode::SUCCESS;
1453 else if (!(coolId.
crate() <= 7)) {
1458 else if (!(coolId.
module() <= 15)) {
1468 else if (!(coolId.
channel() <= 3)) {
1479 temp->SetMinimum(
min);
1480 temp->SetMaximum(
max);
1481 temp->SetContour(contourBins);
1482 temp->SetFillColor(kGray);
1483 temp->SetLineColor(kGray);
1490 std::stringstream temp;
1494 temp <<
"Crate " <<
id.crate() <<
" Ppm " <<
id.module();
1503 if (!gSystem->AccessPathName(
filename.c_str())) {
1506 gSystem->Exec(
command.c_str());
1513 if (!gSystem->AccessPathName(
filename.c_str())) {
1516 temp.replace(
index, 2,
"pdf");
1521 gSystem->Exec(
command.c_str());
1527 if (!gSystem->AccessPathName(file1.c_str())
1528 && !gSystem->AccessPathName(file2.c_str())
1533 gSystem->Exec(
command.c_str());
1539 if (!gSystem->AccessPathName(file1.c_str()) )
1541 std::string
command =
"mv " + file1 +
' ' + file2;
1543 gSystem->Exec(
command.c_str());
1549 if (!gSystem->AccessPathName(
file.c_str()) )
1553 gSystem->Exec(
command.c_str());
1561 std::string tempFilename =
"temp.ps";
1571 mv(tempFilename, shapes);
1578 sprintf(temp,
"%08x", coolId.
id());
1579 std::string tempStr = temp;