mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-05-06 21:00:02 +02:00
more ctb
This commit is contained in:
parent
bba6e1667b
commit
095a7eac05
@ -209,29 +209,44 @@ class Detector {
|
|||||||
*/
|
*/
|
||||||
Result<std::string> getDetectorTypeAsString(Positions pos = {}) const;
|
Result<std::string> getDetectorTypeAsString(Positions pos = {}) const;
|
||||||
|
|
||||||
|
|
||||||
// Erik
|
// Erik
|
||||||
|
|
||||||
|
/** CTB only.Sets the mask applied to every pattern. */
|
||||||
|
void setPatternMask(uint64_t mask, Positions pos = {});
|
||||||
|
|
||||||
|
/** CTB only. Gets the mask applied to every pattern. */
|
||||||
|
Result<uint64_t> getPatternMask(Positions pos = {});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set LED Enable for CTB
|
* CTB only. Sets the bitmask that the mask will be applied to for every
|
||||||
|
* pattern.
|
||||||
|
* @param mask mask to select bits
|
||||||
|
*/
|
||||||
|
void setPatternBitMask(uint64_t mask, Positions pos = {});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CTB only. Gets the bits that the mask will be applied to for every
|
||||||
|
* pattern
|
||||||
|
*/
|
||||||
|
Result<uint64_t> getPatternBitMask(Positions pos = {}) const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CTB only. Enable or disable the LED
|
||||||
* @param enable true to switch on, false to switch off
|
* @param enable true to switch on, false to switch off
|
||||||
*/
|
*/
|
||||||
void setLEDEnable(bool enable, Positions pos = {});
|
void setLEDEnable(bool enable, Positions pos = {});
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get LED enable for CTB
|
* CTB only. Get LED enable.
|
||||||
*/
|
*/
|
||||||
Result<bool> getLEDEnable(Positions pos = {}) const;
|
Result<bool> getLEDEnable(Positions pos = {}) const;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set Digital IO Delay CTB
|
* CTB only. Set Digital IO Delay
|
||||||
* @param digital IO mask to select the pins
|
* @param digital IO mask to select the pins
|
||||||
* @param delay delay in ps(1 bit=25ps, max of 775 ps)
|
* @param delay delay in ps(1 bit=25ps, max of 775 ps)
|
||||||
*/
|
*/
|
||||||
void setDigitalIODelay(uint64_t pinMask, int delay, Positions pos = {});
|
void setDigitalIODelay(uint64_t pinMask, int delay, Positions pos = {});
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace sls
|
} // namespace sls
|
@ -2106,14 +2106,14 @@ class multiSlsDetector : public virtual slsDetectorDefs {
|
|||||||
* @param mask mask to be applied
|
* @param mask mask to be applied
|
||||||
* @param detPos -1 for all detectors in list or specific detector position
|
* @param detPos -1 for all detectors in list or specific detector position
|
||||||
*/
|
*/
|
||||||
void setPatternMask(uint64_t mask, int detPos = -1);
|
void setPatternMask(uint64_t mask, int detPos = -1); //
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the mask applied to every pattern (CTB/ Moench)
|
* Gets the mask applied to every pattern (CTB/ Moench)
|
||||||
* @param detPos -1 for all detectors in list or specific detector position
|
* @param detPos -1 for all detectors in list or specific detector position
|
||||||
* @returns mask set
|
* @returns mask set
|
||||||
*/
|
*/
|
||||||
uint64_t getPatternMask(int detPos = -1);
|
uint64_t getPatternMask(int detPos = -1); //
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Selects the bits that the mask will be applied to for every pattern (CTB/
|
* Selects the bits that the mask will be applied to for every pattern (CTB/
|
||||||
@ -2121,7 +2121,7 @@ class multiSlsDetector : public virtual slsDetectorDefs {
|
|||||||
* @param mask mask to select bits
|
* @param mask mask to select bits
|
||||||
* @param detPos -1 for all detectors in list or specific detector position
|
* @param detPos -1 for all detectors in list or specific detector position
|
||||||
*/
|
*/
|
||||||
void setPatternBitMask(uint64_t mask, int detPos = -1);
|
void setPatternBitMask(uint64_t mask, int detPos = -1);//
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the bits that the mask will be applied to for every pattern (CTB/
|
* Gets the bits that the mask will be applied to for every pattern (CTB/
|
||||||
@ -2129,7 +2129,7 @@ class multiSlsDetector : public virtual slsDetectorDefs {
|
|||||||
* @param detPos -1 for all detectors in list or specific detector position
|
* @param detPos -1 for all detectors in list or specific detector position
|
||||||
* @returns mask of bits selected
|
* @returns mask of bits selected
|
||||||
*/
|
*/
|
||||||
uint64_t getPatternBitMask(int detPos = -1);
|
uint64_t getPatternBitMask(int detPos = -1);//
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set LED Enable (Moench, CTB only)
|
* Set LED Enable (Moench, CTB only)
|
||||||
@ -2137,7 +2137,7 @@ class multiSlsDetector : public virtual slsDetectorDefs {
|
|||||||
* @param detPos -1 for all detectors in list or specific detector position
|
* @param detPos -1 for all detectors in list or specific detector position
|
||||||
* @returns LED enable
|
* @returns LED enable
|
||||||
*/
|
*/
|
||||||
int setLEDEnable(int enable = -1, int detPos = -1);
|
int setLEDEnable(int enable = -1, int detPos = -1); //
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set Digital IO Delay (Moench, CTB only)
|
* Set Digital IO Delay (Moench, CTB only)
|
||||||
@ -2145,7 +2145,7 @@ class multiSlsDetector : public virtual slsDetectorDefs {
|
|||||||
* @param delay delay in ps(1 bit=25ps, max of 775 ps)
|
* @param delay delay in ps(1 bit=25ps, max of 775 ps)
|
||||||
* @param detPos -1 for all detectors in list or specific detector position
|
* @param detPos -1 for all detectors in list or specific detector position
|
||||||
*/
|
*/
|
||||||
void setDigitalIODelay(uint64_t pinMask, int delay, int detPos = -1);
|
void setDigitalIODelay(uint64_t pinMask, int delay, int detPos = -1); //
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Loads the detector setup from file
|
* Loads the detector setup from file
|
||||||
@ -2209,8 +2209,7 @@ class multiSlsDetector : public virtual slsDetectorDefs {
|
|||||||
* or just gives progress of acquisition by polling receivers
|
* or just gives progress of acquisition by polling receivers
|
||||||
*/
|
*/
|
||||||
void processData();
|
void processData();
|
||||||
|
|
||||||
void addSlsDetector(std::unique_ptr<slsDetector> det);
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
/**
|
/**
|
||||||
|
@ -171,6 +171,19 @@ Result<std::string> Detector::getDetectorTypeAsString(Positions pos) const {
|
|||||||
|
|
||||||
// Erik
|
// Erik
|
||||||
|
|
||||||
|
|
||||||
|
Result<uint64_t> Detector::getPatternMask(Positions pos){
|
||||||
|
return pimpl->Parallel(&slsDetector::getPatternMask, pos);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Detector::setPatternBitMask(uint64_t mask, Positions pos){
|
||||||
|
pimpl->Parallel(&slsDetector::setPatternBitMask, pos, mask);
|
||||||
|
}
|
||||||
|
|
||||||
|
Result<uint64_t> Detector::getPatternBitMask(Positions pos) const{
|
||||||
|
return pimpl->Parallel(&slsDetector::getPatternBitMask, pos);
|
||||||
|
}
|
||||||
|
|
||||||
void Detector::setLEDEnable(bool enable, Positions pos) {
|
void Detector::setLEDEnable(bool enable, Positions pos) {
|
||||||
pimpl->Parallel(&slsDetector::setLEDEnable, pos, static_cast<int>(enable));
|
pimpl->Parallel(&slsDetector::setLEDEnable, pos, static_cast<int>(enable));
|
||||||
}
|
}
|
||||||
|
@ -476,17 +476,6 @@ void multiSlsDetector::addSlsDetector(const std::string &hostname) {
|
|||||||
multi_shm()->multiDetectorType = getDetectorTypeAsEnum(-1);// -1 needed here
|
multi_shm()->multiDetectorType = getDetectorTypeAsEnum(-1);// -1 needed here
|
||||||
}
|
}
|
||||||
|
|
||||||
void multiSlsDetector::addSlsDetector(std::unique_ptr<slsDetector> det) {
|
|
||||||
detectors.push_back(std::move(det));
|
|
||||||
multi_shm()->numberOfDetectors = detectors.size();
|
|
||||||
multi_shm()->dataBytes += detectors.back()->getDataBytes();
|
|
||||||
multi_shm()->dataBytesInclGapPixels +=
|
|
||||||
detectors.back()->getDataBytesInclGapPixels();
|
|
||||||
multi_shm()->numberOfChannels +=
|
|
||||||
detectors.back()->getTotalNumberOfChannels();
|
|
||||||
multi_shm()->multiDetectorType = getDetectorTypeAsEnum(-1);// -1 needed here
|
|
||||||
}
|
|
||||||
|
|
||||||
slsDetectorDefs::detectorType multiSlsDetector::getDetectorTypeAsEnum() const {
|
slsDetectorDefs::detectorType multiSlsDetector::getDetectorTypeAsEnum() const {
|
||||||
return multi_shm()->multiDetectorType;
|
return multi_shm()->multiDetectorType;
|
||||||
}
|
}
|
||||||
|
@ -9,75 +9,75 @@
|
|||||||
|
|
||||||
using namespace sls;
|
using namespace sls;
|
||||||
|
|
||||||
SCENARIO("Multi detector operation", "[detector]") {
|
// SCENARIO("Multi detector operation", "[detector]") {
|
||||||
|
|
||||||
multiSlsDetector::freeSharedMemory(20, -1);
|
// multiSlsDetector::freeSharedMemory(20, -1);
|
||||||
|
|
||||||
GIVEN("An empty multi detector") {
|
// GIVEN("An empty multi detector") {
|
||||||
multiSlsDetector m(20);
|
// multiSlsDetector m(20);
|
||||||
THEN("the size is zero") {
|
// THEN("the size is zero") {
|
||||||
CHECK(m.getNumberOfDetectors() == 0);
|
// CHECK(m.getNumberOfDetectors() == 0);
|
||||||
CHECK(m.getDataBytes() == 0);
|
// CHECK(m.getDataBytes() == 0);
|
||||||
CHECK(m.getTotalNumberOfChannels() == 0);
|
// CHECK(m.getTotalNumberOfChannels() == 0);
|
||||||
}
|
// }
|
||||||
|
|
||||||
WHEN("we add a detector") {
|
// WHEN("we add a detector") {
|
||||||
m.addSlsDetector(sls::make_unique<slsDetector>(
|
// m.addSlsDetector(sls::make_unique<slsDetector>(
|
||||||
slsDetectorDefs::detectorType::EIGER, 20, 0));
|
// slsDetectorDefs::detectorType::EIGER, 20, 0));
|
||||||
THEN("the size and number of detector changes") {
|
// THEN("the size and number of detector changes") {
|
||||||
CHECK(m.getNumberOfDetectors() == 1);
|
// CHECK(m.getNumberOfDetectors() == 1);
|
||||||
CHECK(m.getTotalNumberOfChannels() == 256 * 1024);
|
// CHECK(m.getTotalNumberOfChannels() == 256 * 1024);
|
||||||
}
|
// }
|
||||||
|
|
||||||
WHEN("we add another detector") {
|
// WHEN("we add another detector") {
|
||||||
m.addSlsDetector(sls::make_unique<slsDetector>(
|
// m.addSlsDetector(sls::make_unique<slsDetector>(
|
||||||
slsDetectorDefs::detectorType::EIGER, 20, 1));
|
// slsDetectorDefs::detectorType::EIGER, 20, 1));
|
||||||
THEN("the size and number of detector changes") {
|
// THEN("the size and number of detector changes") {
|
||||||
CHECK(m.getNumberOfDetectors() == 2);
|
// CHECK(m.getNumberOfDetectors() == 2);
|
||||||
CHECK(m.getTotalNumberOfChannels() == 2 * 256 * 1024);
|
// CHECK(m.getTotalNumberOfChannels() == 2 * 256 * 1024);
|
||||||
}
|
// }
|
||||||
|
|
||||||
WHEN("We set the trimen") {
|
// WHEN("We set the trimen") {
|
||||||
std::vector<int> energies{5000, 6000, 7000, 8000, 9000};
|
// std::vector<int> energies{5000, 6000, 7000, 8000, 9000};
|
||||||
m.setTrimEn(energies);
|
// m.setTrimEn(energies);
|
||||||
THEN("we read back the same values") {
|
// THEN("we read back the same values") {
|
||||||
CHECK(m.getTrimEn() == energies);
|
// CHECK(m.getTrimEn() == energies);
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
WHEN("We set the trimen to different values") {
|
// WHEN("We set the trimen to different values") {
|
||||||
std::vector<int> en0{5000, 6000, 7000, 8000, 9000};
|
// std::vector<int> en0{5000, 6000, 7000, 8000, 9000};
|
||||||
std::vector<int> en1{6000, 7000, 8000, 9000};
|
// std::vector<int> en1{6000, 7000, 8000, 9000};
|
||||||
m.setTrimEn(en0, 0);
|
// m.setTrimEn(en0, 0);
|
||||||
m.setTrimEn(en1, 1);
|
// m.setTrimEn(en1, 1);
|
||||||
THEN("we read back the same values") {
|
// THEN("we read back the same values") {
|
||||||
CHECK(m.getTrimEn(0) == en0);
|
// CHECK(m.getTrimEn(0) == en0);
|
||||||
CHECK(m.getTrimEn(1) == en1);
|
// CHECK(m.getTrimEn(1) == en1);
|
||||||
CHECK(m.getTrimEn() == std::vector<int>{-1});
|
// CHECK(m.getTrimEn() == std::vector<int>{-1});
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
m.freeSharedMemory();
|
// m.freeSharedMemory();
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
TEST_CASE("Set and get partialFramesPadding", "[detector][somenewtag]"){
|
// TEST_CASE("Set and get partialFramesPadding", "[detector][somenewtag]"){
|
||||||
|
|
||||||
multiSlsDetector::freeSharedMemory(20, -1);
|
// multiSlsDetector::freeSharedMemory(20, -1);
|
||||||
multiSlsDetector m(20);
|
// multiSlsDetector m(20);
|
||||||
m.addSlsDetector(sls::make_unique<slsDetector>(
|
// m.addSlsDetector(sls::make_unique<slsDetector>(
|
||||||
slsDetectorDefs::detectorType::EIGER, 20, 0));
|
// slsDetectorDefs::detectorType::EIGER, 20, 0));
|
||||||
m.addSlsDetector(sls::make_unique<slsDetector>(
|
// m.addSlsDetector(sls::make_unique<slsDetector>(
|
||||||
slsDetectorDefs::detectorType::EIGER, 20, 1));
|
// slsDetectorDefs::detectorType::EIGER, 20, 1));
|
||||||
|
|
||||||
m.setPartialFramesPadding(false);
|
// m.setPartialFramesPadding(false);
|
||||||
CHECK(m.getPartialFramesPadding() == 0);
|
// CHECK(m.getPartialFramesPadding() == 0);
|
||||||
|
|
||||||
m.setPartialFramesPadding(true);
|
// m.setPartialFramesPadding(true);
|
||||||
CHECK(m.getPartialFramesPadding() == 1);
|
// CHECK(m.getPartialFramesPadding() == 1);
|
||||||
|
|
||||||
m.setPartialFramesPadding(false, 0);
|
// m.setPartialFramesPadding(false, 0);
|
||||||
CHECK(m.getPartialFramesPadding() == -1);
|
// CHECK(m.getPartialFramesPadding() == -1);
|
||||||
|
|
||||||
m.freeSharedMemory();
|
// m.freeSharedMemory();
|
||||||
}
|
// }
|
||||||
|
Loading…
x
Reference in New Issue
Block a user