JFJochReceiver: Give one plot at a time
This commit is contained in:
@@ -49,9 +49,9 @@ grpc::Status JFJochBroker::GetStatus(grpc::ServerContext *context, const JFJochP
|
||||
GRPC_RUN( *response = state_machine.GetStatus() );
|
||||
}
|
||||
|
||||
grpc::Status JFJochBroker::GetPlots(grpc::ServerContext *context, const JFJochProtoBuf::Empty *request,
|
||||
JFJochProtoBuf::ReceiverDataProcessingPlots *response) {
|
||||
GRPC_RUN( *response = state_machine.GetPlots() );
|
||||
grpc::Status JFJochBroker::GetPlots(grpc::ServerContext *context, const JFJochProtoBuf::PlotRequest *request,
|
||||
JFJochProtoBuf::Plot *response) {
|
||||
GRPC_RUN( *response = state_machine.GetPlots(*request) );
|
||||
}
|
||||
|
||||
grpc::Status JFJochBroker::GetPreview(grpc::ServerContext *context, const JFJochProtoBuf::Empty *request,
|
||||
|
||||
@@ -41,8 +41,8 @@ public:
|
||||
grpc::Status GetStatus(grpc::ServerContext *context, const JFJochProtoBuf::Empty *request,
|
||||
JFJochProtoBuf::BrokerStatus *response) override;
|
||||
|
||||
grpc::Status GetPlots(grpc::ServerContext *context, const JFJochProtoBuf::Empty *request,
|
||||
JFJochProtoBuf::ReceiverDataProcessingPlots *response) override;
|
||||
grpc::Status GetPlots(grpc::ServerContext *context, const JFJochProtoBuf::PlotRequest *request,
|
||||
JFJochProtoBuf::Plot *response) override;
|
||||
|
||||
grpc::Status GetPreview(grpc::ServerContext *context, const JFJochProtoBuf::Empty *request,
|
||||
JFJochProtoBuf::PreviewFrame *response) override;
|
||||
|
||||
@@ -143,16 +143,11 @@ JFJochProtoBuf::ReceiverStatus JFJochServices::GetReceiverStatus() {
|
||||
return receiver.GetStatus();
|
||||
}
|
||||
|
||||
JFJochProtoBuf::ReceiverDataProcessingPlots JFJochServices::GetPlots() {
|
||||
JFJochProtoBuf::Plot JFJochServices::GetPlots(const JFJochProtoBuf::PlotRequest &request) {
|
||||
try {
|
||||
return receiver.GetPlots();
|
||||
return receiver.GetPlots(request);
|
||||
} catch (...) {
|
||||
JFJochProtoBuf::ReceiverDataProcessingPlots plots;
|
||||
*plots.mutable_indexing_rate() = JFJochProtoBuf::Plot();
|
||||
*plots.mutable_bkg_estimate() = JFJochProtoBuf::Plot();
|
||||
*plots.mutable_spot_count() = JFJochProtoBuf::Plot();
|
||||
*plots.mutable_radial_int_profile() = JFJochProtoBuf::Plot();
|
||||
return plots;
|
||||
return JFJochProtoBuf::Plot();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ public:
|
||||
|
||||
JFJochProtoBuf::ReceiverStatus GetReceiverStatus();
|
||||
JFJochProtoBuf::PreviewFrame GetPreviewFrame();
|
||||
JFJochProtoBuf::ReceiverDataProcessingPlots GetPlots();
|
||||
JFJochProtoBuf::Plot GetPlots(const JFJochProtoBuf::PlotRequest &request);
|
||||
|
||||
void SetDataProcessingSettings(const JFJochProtoBuf::DataProcessingSettings &settings);
|
||||
JFJochServices& Receiver(const std::string &addr);
|
||||
|
||||
@@ -493,8 +493,8 @@ JFJochProtoBuf::BrokerStatus JFJochStateMachine::GetStatus() const {
|
||||
return ret;
|
||||
}
|
||||
|
||||
JFJochProtoBuf::ReceiverDataProcessingPlots JFJochStateMachine::GetPlots() const {
|
||||
return services.GetPlots();
|
||||
JFJochProtoBuf::Plot JFJochStateMachine::GetPlots(const JFJochProtoBuf::PlotRequest &request) const {
|
||||
return services.GetPlots(request);
|
||||
}
|
||||
|
||||
void JFJochStateMachine::SetDataProcessingSettings(const JFJochProtoBuf::DataProcessingSettings &settings) {
|
||||
|
||||
@@ -84,7 +84,7 @@ public:
|
||||
JFJochProtoBuf::JFCalibrationStatistics GetCalibrationStatistics() const;
|
||||
|
||||
JFJochProtoBuf::BrokerStatus GetStatus() const;
|
||||
JFJochProtoBuf::ReceiverDataProcessingPlots GetPlots() const;
|
||||
JFJochProtoBuf::Plot GetPlots(const JFJochProtoBuf::PlotRequest &request) const;
|
||||
|
||||
JFJochProtoBuf::Image GetNeXusMask() const;
|
||||
JFJochProtoBuf::Image GetPedestalG0() const;
|
||||
|
||||
@@ -690,12 +690,10 @@ int64_t DiffractionExperiment::GetSpotFindingStride() const {
|
||||
}
|
||||
|
||||
int64_t DiffractionExperiment::GetSpotFindingBin() const {
|
||||
if (GetSpotFindingPeriod().count() <= 0)
|
||||
return 100;
|
||||
else if (GetSpotFindingPeriod().count() >= 1000*1000)
|
||||
if (GetImageTime().count() >= 200*1000)
|
||||
return 1;
|
||||
else
|
||||
return 1000*1000/(GetSpotFindingPeriod().count()); // 1 bin = 1 second
|
||||
return 200*1000 / GetImageTime().count(); // 1 bin = 1 second
|
||||
}
|
||||
|
||||
int64_t DiffractionExperiment::GetPreviewStride(std::chrono::microseconds period) const {
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
#include <jfjoch.pb.h>
|
||||
|
||||
#include "JFJochException.h"
|
||||
|
||||
#include <iostream>
|
||||
|
||||
template <class T> class StatusVector {
|
||||
mutable std::mutex m;
|
||||
@@ -20,10 +20,10 @@ template <class T> class StatusVector {
|
||||
public:
|
||||
void AddElement(uint32_t id, T val) {
|
||||
std::unique_lock<std::mutex> ul(m);
|
||||
|
||||
content[id] = val;
|
||||
if (id > max_id)
|
||||
max_id = id;
|
||||
|
||||
}
|
||||
|
||||
[[nodiscard]] float Mean() const {
|
||||
@@ -47,8 +47,12 @@ public:
|
||||
"Bin number must be greater than zero");
|
||||
|
||||
std::vector<float> ret;
|
||||
|
||||
size_t elems = (max_id + 1) / bin_size + (((max_id + 1) % bin_size > 0) ? 1 : 0);
|
||||
ret.resize(elems);
|
||||
|
||||
if (!content.empty()) {
|
||||
for (int bin = 0; bin < max_id / bin_size + ((max_id % bin_size > 0) ? 1 : 0); bin++) {
|
||||
for (int bin = 0; bin < elems; bin++) {
|
||||
double sum = 0;
|
||||
int64_t count = 0;
|
||||
|
||||
@@ -61,9 +65,9 @@ public:
|
||||
}
|
||||
}
|
||||
if (count > 0)
|
||||
ret.push_back(static_cast<float>(sum / static_cast<double>(count)));
|
||||
ret[bin] = static_cast<float>(sum / static_cast<double>(count));
|
||||
else
|
||||
ret.push_back(0.0);
|
||||
ret[bin] = 0.0;
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
|
||||
@@ -131,17 +131,16 @@ JFJochProtoBuf::ReceiverNetworkConfig JFJochReceiverClient::GetNetworkConfig() {
|
||||
return ret;
|
||||
}
|
||||
|
||||
JFJochProtoBuf::ReceiverDataProcessingPlots JFJochReceiverClient::GetPlots() {
|
||||
JFJochProtoBuf::ReceiverDataProcessingPlots ret;
|
||||
JFJochProtoBuf::Plot JFJochReceiverClient::GetPlots(const JFJochProtoBuf::PlotRequest &request) {
|
||||
JFJochProtoBuf::Plot ret;
|
||||
if (_stub) {
|
||||
grpc::ClientContext context;
|
||||
JFJochProtoBuf::Empty empty;
|
||||
auto status = _stub->GetDataProcessingPlots(&context, empty, &ret);
|
||||
auto status = _stub->GetDataProcessingPlots(&context, request, &ret);
|
||||
if (!status.ok()) throw JFJochException(JFJochExceptionCategory::gRPCError,
|
||||
"JFJochReceiver: " + status.error_message());
|
||||
} else {
|
||||
// TODO: Write some dummy plots
|
||||
}
|
||||
return ret;
|
||||
|
||||
}
|
||||
@@ -22,7 +22,7 @@ public:
|
||||
JFJochProtoBuf::ReceiverStatus GetStatus();
|
||||
JFJochProtoBuf::PreviewFrame GetPreviewFrame();
|
||||
JFJochProtoBuf::ReceiverNetworkConfig GetNetworkConfig();
|
||||
JFJochProtoBuf::ReceiverDataProcessingPlots GetPlots();
|
||||
JFJochProtoBuf::Plot GetPlots(const JFJochProtoBuf::PlotRequest& request);
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -260,6 +260,18 @@ message ReceiverStatus {
|
||||
optional float indexing_rate = 3;
|
||||
}
|
||||
|
||||
enum PlotType {
|
||||
BKG_ESTIMATE = 0;
|
||||
RAD_INT = 1;
|
||||
SPOT_COUNT = 2;
|
||||
INDEXING_RATE = 3;
|
||||
}
|
||||
|
||||
message PlotRequest {
|
||||
PlotType type = 1;
|
||||
uint64 binning = 2;
|
||||
}
|
||||
|
||||
message ReceiverDataProcessingPlots {
|
||||
Plot bkg_estimate = 1;
|
||||
Plot radial_int_profile = 2;
|
||||
@@ -377,7 +389,6 @@ message DataProcessingSettings {
|
||||
optional float low_resolution_limit = 7;
|
||||
float bkg_estimate_low_q = 8;
|
||||
float bkg_estimate_high_q = 9;
|
||||
optional int64 result_binning = 10;
|
||||
}
|
||||
|
||||
message PreviewFrame {
|
||||
@@ -481,7 +492,7 @@ service gRPC_JFJochReceiver {
|
||||
rpc Stop (Empty) returns (ReceiverOutput) {}
|
||||
rpc GetStatus (Empty) returns (ReceiverStatus) {}
|
||||
rpc SetDataProcessingSettings(DataProcessingSettings) returns (Empty) {}
|
||||
rpc GetDataProcessingPlots(Empty) returns (ReceiverDataProcessingPlots) {}
|
||||
rpc GetDataProcessingPlots(PlotRequest) returns (Plot) {}
|
||||
rpc GetPreviewFrame (Empty) returns (PreviewFrame) {}
|
||||
rpc GetNetworkConfig (Empty) returns (ReceiverNetworkConfig) {}
|
||||
}
|
||||
@@ -517,7 +528,7 @@ service gRPC_JFJochBroker {
|
||||
rpc GetMeasurementStatistics (Empty) returns (MeasurementStatistics) {}
|
||||
rpc GetDataProcessingSettings (Empty) returns (DataProcessingSettings) {}
|
||||
rpc PutDataProcessingSettings (DataProcessingSettings) returns (Empty) {}
|
||||
rpc GetPlots (Empty) returns (ReceiverDataProcessingPlots) {}
|
||||
rpc GetPlots (PlotRequest) returns (Plot) {}
|
||||
|
||||
rpc GetPreview (Empty) returns (PreviewFrame) {}
|
||||
rpc GetPedestalG0 (Empty) returns (Image) {}
|
||||
|
||||
@@ -174,12 +174,12 @@ async def put_data_processing_settings(data: str = Body(...)):
|
||||
raise HTTPException(status_code=400, detail=e.details())
|
||||
|
||||
|
||||
@app.get("/data_processing/plots")
|
||||
async def get_settings():
|
||||
@app.post("/data_processing/plots")
|
||||
async def get_settings(data: str = Body(...)):
|
||||
try:
|
||||
stub = jfjoch_pb2_grpc.gRPC_JFJochBrokerStub(channel)
|
||||
return MessageToDict(
|
||||
stub.GetPlots(jfjoch_pb2.Empty()), including_default_value_fields=True
|
||||
stub.GetPlots(Parse(data, jfjoch_pb2.PlotRequest())), including_default_value_fields=True
|
||||
)
|
||||
except grpc.RpcError as e:
|
||||
raise HTTPException(status_code=400, detail=e.details())
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -46,8 +46,8 @@ class gRPC_JFJochReceiverStub(object):
|
||||
)
|
||||
self.GetDataProcessingPlots = channel.unary_unary(
|
||||
'/JFJochProtoBuf.gRPC_JFJochReceiver/GetDataProcessingPlots',
|
||||
request_serializer=jfjoch__pb2.Empty.SerializeToString,
|
||||
response_deserializer=jfjoch__pb2.ReceiverDataProcessingPlots.FromString,
|
||||
request_serializer=jfjoch__pb2.PlotRequest.SerializeToString,
|
||||
response_deserializer=jfjoch__pb2.Plot.FromString,
|
||||
)
|
||||
self.GetPreviewFrame = channel.unary_unary(
|
||||
'/JFJochProtoBuf.gRPC_JFJochReceiver/GetPreviewFrame',
|
||||
@@ -153,8 +153,8 @@ def add_gRPC_JFJochReceiverServicer_to_server(servicer, server):
|
||||
),
|
||||
'GetDataProcessingPlots': grpc.unary_unary_rpc_method_handler(
|
||||
servicer.GetDataProcessingPlots,
|
||||
request_deserializer=jfjoch__pb2.Empty.FromString,
|
||||
response_serializer=jfjoch__pb2.ReceiverDataProcessingPlots.SerializeToString,
|
||||
request_deserializer=jfjoch__pb2.PlotRequest.FromString,
|
||||
response_serializer=jfjoch__pb2.Plot.SerializeToString,
|
||||
),
|
||||
'GetPreviewFrame': grpc.unary_unary_rpc_method_handler(
|
||||
servicer.GetPreviewFrame,
|
||||
@@ -290,8 +290,8 @@ class gRPC_JFJochReceiver(object):
|
||||
timeout=None,
|
||||
metadata=None):
|
||||
return grpc.experimental.unary_unary(request, target, '/JFJochProtoBuf.gRPC_JFJochReceiver/GetDataProcessingPlots',
|
||||
jfjoch__pb2.Empty.SerializeToString,
|
||||
jfjoch__pb2.ReceiverDataProcessingPlots.FromString,
|
||||
jfjoch__pb2.PlotRequest.SerializeToString,
|
||||
jfjoch__pb2.Plot.FromString,
|
||||
options, channel_credentials,
|
||||
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
|
||||
|
||||
@@ -764,8 +764,8 @@ class gRPC_JFJochBrokerStub(object):
|
||||
)
|
||||
self.GetPlots = channel.unary_unary(
|
||||
'/JFJochProtoBuf.gRPC_JFJochBroker/GetPlots',
|
||||
request_serializer=jfjoch__pb2.Empty.SerializeToString,
|
||||
response_deserializer=jfjoch__pb2.ReceiverDataProcessingPlots.FromString,
|
||||
request_serializer=jfjoch__pb2.PlotRequest.SerializeToString,
|
||||
response_deserializer=jfjoch__pb2.Plot.FromString,
|
||||
)
|
||||
self.GetPreview = channel.unary_unary(
|
||||
'/JFJochProtoBuf.gRPC_JFJochBroker/GetPreview',
|
||||
@@ -1014,8 +1014,8 @@ def add_gRPC_JFJochBrokerServicer_to_server(servicer, server):
|
||||
),
|
||||
'GetPlots': grpc.unary_unary_rpc_method_handler(
|
||||
servicer.GetPlots,
|
||||
request_deserializer=jfjoch__pb2.Empty.FromString,
|
||||
response_serializer=jfjoch__pb2.ReceiverDataProcessingPlots.SerializeToString,
|
||||
request_deserializer=jfjoch__pb2.PlotRequest.FromString,
|
||||
response_serializer=jfjoch__pb2.Plot.SerializeToString,
|
||||
),
|
||||
'GetPreview': grpc.unary_unary_rpc_method_handler(
|
||||
servicer.GetPreview,
|
||||
@@ -1312,8 +1312,8 @@ class gRPC_JFJochBroker(object):
|
||||
timeout=None,
|
||||
metadata=None):
|
||||
return grpc.experimental.unary_unary(request, target, '/JFJochProtoBuf.gRPC_JFJochBroker/GetPlots',
|
||||
jfjoch__pb2.Empty.SerializeToString,
|
||||
jfjoch__pb2.ReceiverDataProcessingPlots.FromString,
|
||||
jfjoch__pb2.PlotRequest.SerializeToString,
|
||||
jfjoch__pb2.Plot.FromString,
|
||||
options, channel_credentials,
|
||||
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
|
||||
|
||||
|
||||
@@ -601,28 +601,39 @@ void JFJochReceiver::AddRadialIntegrationProfile(const std::vector<float> &resul
|
||||
}
|
||||
}
|
||||
|
||||
void JFJochReceiver::GetRadialIntegrationProfile(JFJochProtoBuf::ReceiverDataProcessingPlots &plots) {
|
||||
void JFJochReceiver::GetRadialIntegrationProfile(JFJochProtoBuf::Plot &plot) {
|
||||
std::unique_lock<std::mutex> ul(rad_int_profile_mutex);
|
||||
auto plot = plots.mutable_radial_int_profile();
|
||||
|
||||
const auto &bin_to_q = rad_int_mapping->GetBinToQ();
|
||||
if (!rad_int_profile.empty()) {
|
||||
*plot->mutable_x() = {bin_to_q.begin(), bin_to_q.end()};
|
||||
*plot->mutable_y() = {rad_int_profile.begin(), rad_int_profile.end()};
|
||||
*plot.mutable_x() = {bin_to_q.begin(), bin_to_q.end()};
|
||||
*plot.mutable_y() = {rad_int_profile.begin(), rad_int_profile.end()};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
JFJochProtoBuf::ReceiverDataProcessingPlots JFJochReceiver::GetPlots() {
|
||||
JFJochProtoBuf::ReceiverDataProcessingPlots ret;
|
||||
auto local_data_processing_settings = GetDataProcessingSettings();
|
||||
JFJochProtoBuf::Plot JFJochReceiver::GetPlots(const JFJochProtoBuf::PlotRequest &request) {
|
||||
JFJochProtoBuf::Plot ret;
|
||||
auto nbins = experiment.GetSpotFindingBin();
|
||||
if (local_data_processing_settings.has_result_binning())
|
||||
nbins = local_data_processing_settings.result_binning();
|
||||
if (request.binning() > 0)
|
||||
nbins = request.binning();
|
||||
|
||||
spot_count.GetPlot(*ret.mutable_spot_count(), nbins);
|
||||
bkg_estimate.GetPlot(*ret.mutable_bkg_estimate(), nbins);
|
||||
indexing_solution.GetPlot(*ret.mutable_indexing_rate(), nbins);
|
||||
GetRadialIntegrationProfile(ret);
|
||||
switch (request.type()) {
|
||||
case JFJochProtoBuf::RAD_INT:
|
||||
GetRadialIntegrationProfile(ret);
|
||||
break;
|
||||
case JFJochProtoBuf::SPOT_COUNT:
|
||||
spot_count.GetPlot(ret, nbins);
|
||||
break;
|
||||
case JFJochProtoBuf::INDEXING_RATE:
|
||||
indexing_solution.GetPlot(ret, nbins);
|
||||
break;
|
||||
case JFJochProtoBuf::BKG_ESTIMATE:
|
||||
bkg_estimate.GetPlot(ret, nbins);
|
||||
break;
|
||||
default:
|
||||
// Do nothing
|
||||
break;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
@@ -100,7 +100,7 @@ class JFJochReceiver {
|
||||
JFJochProtoBuf::DataProcessingSettings GetDataProcessingSettings();
|
||||
|
||||
void AddRadialIntegrationProfile(const std::vector<float> &result);
|
||||
void GetRadialIntegrationProfile(JFJochProtoBuf::ReceiverDataProcessingPlots &plots);
|
||||
void GetRadialIntegrationProfile(JFJochProtoBuf::Plot &plots);
|
||||
|
||||
void UpdateMaxImage(int64_t image_number);
|
||||
public:
|
||||
@@ -122,7 +122,7 @@ public:
|
||||
double GetIndexingRate() const;
|
||||
void SetDataProcessingSettings(const JFJochProtoBuf::DataProcessingSettings &data_processing_settings);
|
||||
|
||||
JFJochProtoBuf::ReceiverDataProcessingPlots GetPlots();
|
||||
JFJochProtoBuf::Plot GetPlots(const JFJochProtoBuf::PlotRequest& request);
|
||||
};
|
||||
|
||||
#endif //JUNGFRAUJOCH_JFJOCHRECEIVER_H
|
||||
|
||||
@@ -129,12 +129,14 @@ grpc::Status JFJochReceiverService::GetStatus(grpc::ServerContext *context, cons
|
||||
}
|
||||
|
||||
grpc::Status
|
||||
JFJochReceiverService::GetDataProcessingPlots(grpc::ServerContext *context, const JFJochProtoBuf::Empty *request,
|
||||
JFJochProtoBuf::ReceiverDataProcessingPlots *response) {
|
||||
JFJochReceiverService::GetDataProcessingPlots(grpc::ServerContext *context, const JFJochProtoBuf::PlotRequest *request,
|
||||
JFJochProtoBuf::Plot *response) {
|
||||
// Need to hold mutex, as receiver might not exist here, if state is idle
|
||||
std::unique_lock<std::mutex> ul(state_mutex);
|
||||
if (request->binning() <= 0)
|
||||
return {grpc::StatusCode::ABORTED, "Binning must be > 0"};
|
||||
if (receiver)
|
||||
*response = receiver->GetPlots();
|
||||
*response = receiver->GetPlots(*request);
|
||||
return grpc::Status::OK;
|
||||
}
|
||||
|
||||
|
||||
@@ -47,8 +47,8 @@ public:
|
||||
JFJochProtoBuf::PreviewFrame *response) override;
|
||||
grpc::Status GetNetworkConfig(grpc::ServerContext *context, const JFJochProtoBuf::Empty *request,
|
||||
JFJochProtoBuf::ReceiverNetworkConfig *response) override;
|
||||
grpc::Status GetDataProcessingPlots(grpc::ServerContext *context, const JFJochProtoBuf::Empty *request,
|
||||
JFJochProtoBuf::ReceiverDataProcessingPlots *response) override;
|
||||
grpc::Status GetDataProcessingPlots(grpc::ServerContext *context, const JFJochProtoBuf::PlotRequest *request,
|
||||
JFJochProtoBuf::Plot *response) override;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -440,6 +440,7 @@ TEST_CASE("DiffractionExperiment_SpotFinding", "[DiffractionExperiment]") {
|
||||
DiffractionExperiment x;
|
||||
std::map<size_t, uint32_t> map, map2;
|
||||
x.ImagesPerTrigger(10000).Summation(1).FrameTime(1ms);
|
||||
REQUIRE(x.GetSpotFindingBin() == 200);
|
||||
x.SpotFindingPeriod(0ms);
|
||||
REQUIRE(x.GetSpotFindingStride() == 0);
|
||||
REQUIRE(x.GetSpotFindingPeriod().count() == 0);
|
||||
@@ -447,19 +448,6 @@ TEST_CASE("DiffractionExperiment_SpotFinding", "[DiffractionExperiment]") {
|
||||
x.SpotFindingPeriod(1s);
|
||||
REQUIRE(x.GetSpotFindingPeriod() == std::chrono::milliseconds(1000));
|
||||
REQUIRE(x.GetSpotFindingStride() == 1000);
|
||||
REQUIRE(x.GetSpotFindingBin() == 1);
|
||||
|
||||
x.SpotFindingPeriod(10s);
|
||||
REQUIRE(x.GetSpotFindingBin() == 1);
|
||||
|
||||
x.SpotFindingPeriod(10ms);
|
||||
REQUIRE(x.GetSpotFindingBin() == 100);
|
||||
|
||||
x.SpotFindingPeriod(4ms);
|
||||
REQUIRE(x.GetSpotFindingBin() == 250);
|
||||
|
||||
x.SpotFindingPeriod(50ms);
|
||||
REQUIRE(x.GetSpotFindingBin() == 20);
|
||||
|
||||
REQUIRE_THROWS(x.SpotFindingPeriod(-5ms));
|
||||
|
||||
|
||||
@@ -814,13 +814,27 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_background_estimation", "[JFJochReceiver]")
|
||||
REQUIRE_NOTHROW(state_machine.Stop());
|
||||
logger.Info("Stopped measurement");
|
||||
|
||||
JFJochProtoBuf::ReceiverDataProcessingPlots plots;
|
||||
REQUIRE(fpga_receiver.GetDataProcessingPlots(nullptr, nullptr, &plots).ok());
|
||||
JFJochProtoBuf::PlotRequest req;
|
||||
req.set_type(JFJochProtoBuf::BKG_ESTIMATE);
|
||||
req.set_binning(10);
|
||||
|
||||
REQUIRE(plots.bkg_estimate().x_size() == 1);
|
||||
REQUIRE(plots.bkg_estimate().y_size() == 1);
|
||||
REQUIRE(plots.bkg_estimate().x(0) == Approx(4.5));
|
||||
REQUIRE(plots.bkg_estimate().y(0) == Approx((5 + 23) / 2.0));
|
||||
JFJochProtoBuf::Plot plot;
|
||||
REQUIRE(fpga_receiver.GetDataProcessingPlots(nullptr, &req, &plot).ok());
|
||||
|
||||
REQUIRE(plot.x_size() == 1);
|
||||
REQUIRE(plot.y_size() == 1);
|
||||
REQUIRE(plot.x(0) == Approx(4.5));
|
||||
REQUIRE(plot.y(0) == Approx((5 + 23) / 2.0));
|
||||
|
||||
req.set_type(JFJochProtoBuf::BKG_ESTIMATE);
|
||||
req.set_binning(1);
|
||||
REQUIRE(fpga_receiver.GetDataProcessingPlots(nullptr, &req, &plot).ok());
|
||||
|
||||
REQUIRE(plot.x_size() == 10);
|
||||
REQUIRE(plot.y_size() == 10);
|
||||
|
||||
req.set_binning(0);
|
||||
REQUIRE(!fpga_receiver.GetDataProcessingPlots(nullptr, &req, &plot).ok());
|
||||
|
||||
auto tmp = state_machine.GetMeasurementStatistics();
|
||||
REQUIRE(tmp.has_value());
|
||||
|
||||
@@ -28,6 +28,14 @@ TEST_CASE("StatusVector_GetStatus","[StatusVector]") {
|
||||
REQUIRE(status_out[3] == 0);
|
||||
REQUIRE(status_out[4] == Approx(45));
|
||||
REQUIRE(status_out[5] == Approx((44+41)/2.0));
|
||||
|
||||
status_out = status_vector.GetStatus(1);
|
||||
REQUIRE(status_out.size() == 2601);
|
||||
REQUIRE(status_out[5] == 11);
|
||||
REQUIRE(status_out[1900] == 0);
|
||||
REQUIRE(status_out[2000] == 45);
|
||||
REQUIRE(status_out[2543] == 44);
|
||||
REQUIRE(status_out[2600] == 41);
|
||||
}
|
||||
|
||||
TEST_CASE("StatusVector_Plot","[StatusVector]") {
|
||||
|
||||
Reference in New Issue
Block a user