From 0d29852eca2c42af1704b82e016445576c650f29 Mon Sep 17 00:00:00 2001 From: Andreas Mussgiller Date: Wed, 9 Aug 2017 15:38:42 +0200 Subject: [PATCH 01/11] new and improved analysis code --- pumpstation/analysis/Analyser.cc | 110 ++++++++++++++++++-- pumpstation/analysis/Analyser.h | 30 ++++++ pumpstation/analysis/PumpStationAnalysis.cc | 8 +- 3 files changed, 136 insertions(+), 12 deletions(-) diff --git a/pumpstation/analysis/Analyser.cc b/pumpstation/analysis/Analyser.cc index 9058becde..8f1c7d561 100644 --- a/pumpstation/analysis/Analyser.cc +++ b/pumpstation/analysis/Analyser.cc @@ -15,11 +15,40 @@ #include #include #include +#include #include #include "Analyser.h" +DataFileDate::DataFileDate() + : date_(QDate()), + n_(0) +{ + +} + +DataFileDate::DataFileDate(const DataFileDate& other) + : date_(other.getDate().year(), other.getDate().month(), other.getDate().day()), + n_(other.getNumber()) +{ + +} + +DataFileDate::DataFileDate(const QDate& date, int n) + : date_(date), + n_(n) +{ + +} + +DataFileDate::DataFileDate(int y, int m, int d, int n) + : date_(y, m, d), + n_(n) +{ + +} + Analyser::Analyser(QStringList& arguments) : arguments_(arguments), measurementValid_(false) @@ -31,17 +60,77 @@ Analyser::Analyser(QStringList& arguments) void Analyser::analyse() { - if (arguments_.size()<2) { - std::cout << "usage: PumpStationAnalysis ..." << std::endl; + bool hasStartDate = false; + QDate startDate; + if (arguments_.size()>=3) { + QStringList list = arguments_[2].split('-', QString::SkipEmptyParts); + if (list.size()!=3) { + std::cout << "cannot parse start date " << arguments_[2].toStdString() << std::endl; + QCoreApplication::quit(); + return; + } - QCoreApplication::quit(); + int y = list[0].toInt(); + int m = list[1].toInt(); + int d = list[2].toInt(); - return; + startDate = QDate(y, m, d); + + hasStartDate = true; } - QStringList::const_iterator constIterator = arguments_.constBegin(); + bool hasEndDate = false; + QDate endDate; + if (arguments_.size()==4) { + QStringList list = arguments_[3].split('-', QString::SkipEmptyParts); + if (list.size()!=3) { + std::cout << "cannot parse end date " << arguments_[3].toStdString() << std::endl; + QCoreApplication::quit(); + return; + } + + int y = list[0].toInt(); + int m = list[1].toInt(); + int d = list[2].toInt(); + + endDate = QDate(y, m, d); + + hasEndDate = true; + } + + QDirIterator it(arguments_[1], QDirIterator::NoIteratorFlags); + while (it.hasNext()) { + QString filename = it.next(); + + if (!filename.endsWith(".xml")) continue; + if (!filename.contains("pumpstation_")) continue; + + QString dateStamp = filename; + + dateStamp.remove(".xml"); + dateStamp.remove(0, dateStamp.indexOf("pumpstation_")); + dateStamp.remove("pumpstation_"); + + dateStamp.insert(6, "_"); + dateStamp.insert(4, "_"); + + QStringList list = dateStamp.split('_', QString::SkipEmptyParts); + if (list.size()!=4) continue; + + int y = list[0].toInt(); + int m = list[1].toInt(); + int d = list[2].toInt(); + int n = list[3].toInt(); + + QDate date(y, m, d); + + if (hasStartDate && dateendDate) continue; + + fileMap_[DataFileDate(date, n)] = filename; + } - QString filename = *constIterator; + QString filename = arguments_[0]; if (!filename.endsWith(".root")) filename += ".root"; std::string rootname = filename.toStdString(); @@ -74,11 +163,10 @@ void Analyser::analyse() otree_->Branch(dummy1, &measurement_.pressure[i], dummy2); } - ++constIterator; - for (; - constIterator != arguments_.constEnd(); - ++constIterator) { - processFile(*constIterator); + for (std::map::iterator it = fileMap_.begin(); + it!=fileMap_.end(); + ++it) { + processFile(it->second); } ofile_->Write(); diff --git a/pumpstation/analysis/Analyser.h b/pumpstation/analysis/Analyser.h index 090d7c152..8d9b5eede 100644 --- a/pumpstation/analysis/Analyser.h +++ b/pumpstation/analysis/Analyser.h @@ -14,10 +14,14 @@ #define ANALYSER_H #include +#include +#include #include #include #include +#include +#include #include #include @@ -31,6 +35,29 @@ typedef struct { double pressure[3]; } Measurement_t; +class DataFileDate +{ +public: + + DataFileDate(); + DataFileDate(const DataFileDate& other); + DataFileDate(const QDate& date, int n); + DataFileDate(int y, int m, int d, int n); + + const QDate& getDate() const { return date_; } + int getNumber() const { return n_; } + + bool operator<(const DataFileDate& other) const { + if (date_==other.date_) return (n_ fileMap_; + QDateTime utime_; bool dataValid_; std::array switchState_; diff --git a/pumpstation/analysis/PumpStationAnalysis.cc b/pumpstation/analysis/PumpStationAnalysis.cc index f9466bc7b..539953e97 100644 --- a/pumpstation/analysis/PumpStationAnalysis.cc +++ b/pumpstation/analysis/PumpStationAnalysis.cc @@ -25,7 +25,13 @@ int main(int argc, char *argv[]) { - QCoreApplication app(argc, argv); + if (argc<3 || argc>5) { + std::cout << "usage:" << std::endl; + std::cout << argv[0] << " Output Directory [Start Date YYYY-MM-DD] [End Date YYYY-MM-DD]" << std::endl; + exit(0); + } + + QCoreApplication app(argc, argv); QStringList arguments = QCoreApplication::arguments(); arguments.removeAt(0); From 58cf615d2ef6a9eb30667d8359ca0e1bd94d239c Mon Sep 17 00:00:00 2001 From: Andreas Mussgiller Date: Tue, 22 May 2018 10:34:37 +0200 Subject: [PATCH 02/11] added tools for analysis of pump station data --- .pydevproject | 4 +-- licence.h | 12 +++++++ pumpstation/tools/plot.C | 73 ++++++++++++++++++++++++++++++++++++++++ pumpstation/tools/test.C | 72 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 159 insertions(+), 2 deletions(-) create mode 100644 licence.h create mode 100644 pumpstation/tools/plot.C create mode 100644 pumpstation/tools/test.C diff --git a/.pydevproject b/.pydevproject index 40e9f40a0..7624e7089 100644 --- a/.pydevproject +++ b/.pydevproject @@ -1,5 +1,5 @@ -Default -python 2.7 +python 3.6.2 +python 3.6 diff --git a/licence.h b/licence.h new file mode 100644 index 000000000..19d643b6b --- /dev/null +++ b/licence.h @@ -0,0 +1,12 @@ +///////////////////////////////////////////////////////////////////////////////// +// // +// Copyright (C) 2011-2017 - The DESY CMS Group // +// All rights reserved // +// // +// The CMStkModLab source code is licensed under the GNU GPL v3.0. // +// You have the right to modify and/or redistribute this source code // +// under the terms specified in the license, which may be found online // +// at http://www.gnu.org/licenses or at License.txt. // +// // +///////////////////////////////////////////////////////////////////////////////// + diff --git a/pumpstation/tools/plot.C b/pumpstation/tools/plot.C new file mode 100644 index 000000000..7b1e79636 --- /dev/null +++ b/pumpstation/tools/plot.C @@ -0,0 +1,73 @@ +///////////////////////////////////////////////////////////////////////////////// +// // +// Copyright (C) 2011-2017 - The DESY CMS Group // +// All rights reserved // +// // +// The CMStkModLab source code is licensed under the GNU GPL v3.0. // +// You have the right to modify and/or redistribute this source code // +// under the terms specified in the license, which may be found online // +// at http://www.gnu.org/licenses or at License.txt. // +// // +///////////////////////////////////////////////////////////////////////////////// + +void plot(const char * filename) +{ + gROOT->Reset(); + + TFile *file = (TFile*)gROOT->GetListOfFiles()->FindObject(filename); + if (!file) { + file = new TFile(filename); + } + + TTree *tree; + file->GetObject("pumpstation", tree); + + tree->Print(); + + UInt_t uTimeOffset; + UInt_t uTime; + Int_t switchState0; + Int_t switchState1; + Int_t switchState2; + Int_t switchState3; + Int_t switchState4; + Int_t gaugeState0; + Double_t pressure0; + Int_t gaugeState1; + Double_t pressure1; + Int_t gaugeState2; + Double_t pressure2; + + // Set branch addresses. + tree->SetBranchAddress("uTime",&uTime); + tree->SetBranchAddress("switchState0",&switchState0); + tree->SetBranchAddress("switchState1",&switchState1); + tree->SetBranchAddress("switchState2",&switchState2); + tree->SetBranchAddress("switchState3",&switchState3); + tree->SetBranchAddress("switchState4",&switchState4); + tree->SetBranchAddress("gaugeState0",&gaugeState0); + tree->SetBranchAddress("pressure0",&pressure0); + tree->SetBranchAddress("gaugeState1",&gaugeState1); + tree->SetBranchAddress("pressure1",&pressure1); + tree->SetBranchAddress("gaugeState2",&gaugeState2); + tree->SetBranchAddress("pressure2",&pressure2); + + Long64_t nentries = tree->GetEntries(); + + tree->GetEntry(0); + uTimeOffset = uTime; + + TGraph * grPressure0 = new TGraph(); + int nPoints = 0; + + Long64_t nbytes = 0; + for (Long64_t i=0; iGetEntry(i); + + grPressure0->SetPoint(nPoints, uTime - uTimeOffset, pressure0); + + nPoints++; + } + + grPressure0->Draw("AL"); +} diff --git a/pumpstation/tools/test.C b/pumpstation/tools/test.C new file mode 100644 index 000000000..716130989 --- /dev/null +++ b/pumpstation/tools/test.C @@ -0,0 +1,72 @@ +///////////////////////////////////////////////////////////////////////////////// +// // +// Copyright (C) 2011-2017 - The DESY CMS Group // +// All rights reserved // +// // +// The CMStkModLab source code is licensed under the GNU GPL v3.0. // +// You have the right to modify and/or redistribute this source code // +// under the terms specified in the license, which may be found online // +// at http://www.gnu.org/licenses or at License.txt. // +// // +///////////////////////////////////////////////////////////////////////////////// + +{ +////////////////////////////////////////////////////////// +// This file has been automatically generated +// (Mon Jul 17 14:57:51 2017 by ROOT version6.10/02) +// from TTree pumpstation/pumpstation +// found on file: ../SavingValve_1.0.root +////////////////////////////////////////////////////////// + + +//Reset ROOT and connect tree file + gROOT->Reset(); + TFile *f = (TFile*)gROOT->GetListOfFiles()->FindObject("../SavingValve_1.0.root"); + if (!f) { + f = new TFile("../SavingValve_1.0.root"); + } + f->GetObject("pumpstation",tree); + +//Declaration of leaves types + UInt_t uTime; + UInt_t fDatime; + Int_t switchState0; + Int_t switchState1; + Int_t switchState2; + Int_t switchState3; + Int_t switchState4; + Int_t gaugeState0; + Double_t pressure0; + Int_t gaugeState1; + Double_t pressure1; + Int_t gaugeState2; + Double_t pressure2; + + // Set branch addresses. + pumpstation->SetBranchAddress("uTime",&uTime); + pumpstation->SetBranchAddress("datime",&datime); + pumpstation->SetBranchAddress("fDatime",&fDatime); + pumpstation->SetBranchAddress("switchState0",&switchState0); + pumpstation->SetBranchAddress("switchState1",&switchState1); + pumpstation->SetBranchAddress("switchState2",&switchState2); + pumpstation->SetBranchAddress("switchState3",&switchState3); + pumpstation->SetBranchAddress("switchState4",&switchState4); + pumpstation->SetBranchAddress("gaugeState0",&gaugeState0); + pumpstation->SetBranchAddress("pressure0",&pressure0); + pumpstation->SetBranchAddress("gaugeState1",&gaugeState1); + pumpstation->SetBranchAddress("pressure1",&pressure1); + pumpstation->SetBranchAddress("gaugeState2",&gaugeState2); + pumpstation->SetBranchAddress("pressure2",&pressure2); + +// This is the loop skeleton +// To read only selected branches, Insert statements like: +// pumpstation->SetBranchStatus("*",0); // disable all branches +// TTreePlayer->SetBranchStatus("branchname",1); // activate branchname + + Long64_t nentries = pumpstation->GetEntries(); + + Long64_t nbytes = 0; +// for (Long64_t i=0; iGetEntry(i); +// } +} From 07ae7ecb2ab3d25a28e3202362bd24c7583432c7 Mon Sep 17 00:00:00 2001 From: Andreas Mussgiller Date: Tue, 22 May 2018 10:51:30 +0200 Subject: [PATCH 03/11] added DAF logo to website --- pumpstation/website/data/DAF_Logo_color2.png | Bin 0 -> 4746 bytes pumpstation/website/index.php | 1 + 2 files changed, 1 insertion(+) create mode 100644 pumpstation/website/data/DAF_Logo_color2.png diff --git a/pumpstation/website/data/DAF_Logo_color2.png b/pumpstation/website/data/DAF_Logo_color2.png new file mode 100644 index 0000000000000000000000000000000000000000..04273e240b6e2762a93bb486047db5d2cc52ce70 GIT binary patch literal 4746 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 YKNj$^`ZBAXssI2007*qoM6N<$f{8%Z-T(jq literal 0 HcmV?d00001 diff --git a/pumpstation/website/index.php b/pumpstation/website/index.php index 50d13cc35..53b5f6f66 100644 --- a/pumpstation/website/index.php +++ b/pumpstation/website/index.php @@ -365,6 +365,7 @@

+ Date: Tue, 22 May 2018 13:41:47 +0200 Subject: [PATCH 04/11] cosmetics --- pumpstation/analysis/PumpStationAnalysis.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pumpstation/analysis/PumpStationAnalysis.cc b/pumpstation/analysis/PumpStationAnalysis.cc index 539953e97..e718c80f8 100644 --- a/pumpstation/analysis/PumpStationAnalysis.cc +++ b/pumpstation/analysis/PumpStationAnalysis.cc @@ -27,7 +27,7 @@ int main(int argc, char *argv[]) { if (argc<3 || argc>5) { std::cout << "usage:" << std::endl; - std::cout << argv[0] << " Output Directory [Start Date YYYY-MM-DD] [End Date YYYY-MM-DD]" << std::endl; + std::cout << argv[0] << " Output-File Input-Directory [Start Date YYYY-MM-DD] [End Date YYYY-MM-DD]" << std::endl; exit(0); } From ca8fa327d3ee4f04f6f0108ef9fbb26b3e2bcdd0 Mon Sep 17 00:00:00 2001 From: Andreas Mussgiller Date: Tue, 22 May 2018 15:06:53 +0200 Subject: [PATCH 05/11] fixes and cosmetics --- pumpstation/website/index.php | 8 ++++---- pumpstation/website/pumpstation.ini | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/pumpstation/website/index.php b/pumpstation/website/index.php index 53b5f6f66..ae8043f62 100644 --- a/pumpstation/website/index.php +++ b/pumpstation/website/index.php @@ -88,7 +88,7 @@ if ($P1 >= 10.0) { printf ( "%.0f", $P1); } else if ($P1 >= 0.1) { - printf ( "%.1f", $P1); + printf ( "%.2f", $P1); } else { printf ( "%.1E", $P1); } @@ -113,7 +113,7 @@ if ($P2 >= 10.0) { printf ( "%.0f", $P2); } else if ($P2 >= 0.1) { - printf ( "%.1f", $P2); + printf ( "%.2f", $P2); } else { printf ( "%.1E", $P2); } @@ -138,7 +138,7 @@ if ($PSYS>= 10.0) { printf ( "%.0f", $PSYS); } else if ($PSYS>= 0.1) { - printf ( "%.1f", $PSYS); + printf ( "%.2f", $PSYS); } else { printf ( "%.1E", $PSYS); } @@ -215,7 +215,7 @@ // } if ($Valve2State== 0) { echo ('
'); -} else if ($S1 == 1) { +} else if ($Valve2State== 1) { echo ('
'); } echo ('
'); diff --git a/pumpstation/website/pumpstation.ini b/pumpstation/website/pumpstation.ini index 3a0a91113..d4e93492b 100644 --- a/pumpstation/website/pumpstation.ini +++ b/pumpstation/website/pumpstation.ini @@ -3,5 +3,5 @@ TimeZone = Europe/Berlin Pump1Switch = 0 Pump2Switch = 1 Valve1Switch = 2 -Valve2Switch = 4 -Valve3Switch = 3 +Valve2Switch = 3 +Valve3Switch = 4 From dcbf9fa4fd9e812b844f7b3c115a64a060c77349 Mon Sep 17 00:00:00 2001 From: Andreas Mussgiller Date: Tue, 22 May 2018 15:08:41 +0200 Subject: [PATCH 06/11] increased website auto-update timer to 15s --- pumpstation/website/index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pumpstation/website/index.php b/pumpstation/website/index.php index ae8043f62..085370c41 100644 --- a/pumpstation/website/index.php +++ b/pumpstation/website/index.php @@ -20,7 +20,7 @@ - + .: CMS Pump Station Status & Control :.