15 using std::stringstream;
16 #define ASSERT_EQUAL(x,y)\
20 stringstream difference;\
21 difference<<x<<" vs "<<y;\
22 Error("Test failed: file %s; line %d: %s", __FILE__ , __LINE__,difference.str().c_str());\
31 if(GetIteration() == 1) {
36 if(GetSequence().GetName() ==
"TestNeigh") {
39 }
else if (GetSequence().GetName() ==
"TestNeighFilter" && GetOccurrence() == 1){
40 if(GetIteration() == 1) {
64 if(GetSequence().GetName() ==
"TestNeighFilter") {
65 static int passed = 0;
66 if(GetOccurrence() == 0) {
68 for(
size_t i = 0 ; i < neighbours.
Size(); i++) {
69 const QEvent& other = neighbours[i];
77 for(
size_t i = 0 ; i < neighbours.
Size(); i++) {
79 const QEvent& other = neighbours[i];
89 ev.
Get(
"DAQ",readHandle);
95 const unsigned long long time = header.
GetTime().GetFromStartRunNs();
97 if(GetIteration() == 2) {
98 fEventMap[eventnumber].fEventNumber = hevnum;
99 fEventMap[eventnumber].fTime = time;
101 }
else if(GetSequence().GetName() ==
"TimeSort") {
103 }
else if(GetSequence().GetName() ==
"TestNeigh") {
104 std::vector<int> thNeigh = fNeighMap[hevnum];
106 std::vector<int> neigh;
107 for(
size_t n = 0; n < neighbours.
Size(); n++) {
108 const QEvent& other = neighbours[n];
112 std::sort(thNeigh.begin(),thNeigh.end());
113 std::sort(neigh.begin(),neigh.end());
115 for(
size_t n = 0; n < neigh.size() && n<thNeigh.size(); n++) {
120 ev.
Get<
QBool>(
"UpdateNeighbour") =
true;
125 for(
size_t i = 0 ; i < neighbours.
Size(); i++) {
126 const QEvent& other = neighbours[i];
128 const unsigned long long o_time = o_header.
GetTime().GetFromStartRunNs();
131 other.
Get<
QBool>(GetName().c_str(),un);
133 if(o_eventnumber < eventnumber) {
136 diff = time - o_time;
138 if(o_eventnumber == (eventnumber - 1)) {
141 }
else if(o_eventnumber > eventnumber) {
142 if(o_eventnumber == (eventnumber + 1)) {
147 diff = o_time - time;
163 if(GetIteration() == 2 && GetSequence().GetName() ==
"TestNeighFilter" && GetOccurrence() == 1) {
164 Info(
"----TEST SUMMARY-----");
165 Info(
"OK: %d", fTestOK);
166 if(fTestKO >0 ) Error(
"KO: %d", fTestKO);
167 if(fTestOK != 18689*2) Panic(
"Expected test %d vs %d",18689*2,fTestOK);
170 if(GetIteration() == 2) {
171 std::map<unsigned int, EventInfo>::const_iterator iter = fEventMap.begin();
172 while(iter != fEventMap.end()) {
173 const double thisTime = iter->second.fTime;
174 const unsigned int thisEventNumber = iter->second.fEventNumber;
176 std::map<unsigned int, EventInfo>::const_iterator oiter = fEventMap.begin();
177 fNeighMap[thisEventNumber].clear();
178 while(oiter != fEventMap.end()) {
179 const double otherTime = oiter->second.fTime;
180 const unsigned int otherEventNumber = oiter->second.fEventNumber;
181 if(fabs(thisTime-otherTime)/1.e09 < 1.000 && thisEventNumber != otherEventNumber) {
182 fNeighMap[thisEventNumber].push_back(otherEventNumber);
190 }
else if(GetSequence().GetName() ==
"TestNeigh" && GetOccurrence() == 0) {
191 Info(
"----TEST SUMMARY-----");
192 Info(
"OK: %d", fTestOK);
193 if(fTestKO > 0 ) Error(
"KO: %d", fTestKO);
194 if(fTestOK != 142632) Panic(
"Expected test %d vs %d",142632,fTestOK);
195 }
else if( GetSequence().GetName() ==
"TestNeighFilter" && GetOccurrence() == 1) {
196 Info(
"----TEST SUMMARY-----");
197 Info(
"OK: %d", fTestOK);
198 if(fTestKO > 0 ) Error(
"KO: %d", fTestKO);
199 if(fTestOK != 18689) Panic(
"Expected test %d vs %d",18689,fTestOK);
#define ASSERT_EQUAL(x, y)
#define REGISTER_MODULE(clazz)
one-line description of your module
void Init(Diana::QEvent &ev)
Init method.
void Do(Diana::QEvent &ev, const Diana::QEventList &neighbours)
Do method.
static std::map< unsigned int, std::vector< int > > fNeighMap
bool wrapped into a QObject
list of references to const QEvent (s)
size_t Size() const
number of QEvent (s)
void RequireByLabel(const QEventLabel &label) const
notify the QEvent that we need a QObject, if not found an exception is thrown
void Require(const std::string &owner, const std::string &name) const
notify the QEvent that we need a QObject, if not found an exception is thrown
void Get(const char *owner, ReadHandle< Q > &handle) const
Get a QObject Handle in read mode.
unsigned int GetReadNumber() const
return the event number as read by the current reader.
void Add(WriteHandle< Q > &handle)
Add a QObject to the event.
virtual bool IsValid() const
Check object validity.
Raw event: bolometer channel, trigger positions and types.
bool GetIsNoise() const
Get IsNoise.
read handle to access QEvent QObject's.
the Diana namespace is needed because sometimes we use Qt libraries, that use same class names of our...