2 #include <fwk/CentralConfig.h>
4 #include <sevt/SEvent.h>
5 #include <sevt/SEventSimData.h>
7 #include <sevt/Station.h>
8 #include <sevt/StationSimData.h>
9 #include <sevt/StationRecData.h>
10 #include <sevt/StationTriggerData.h>
11 #include <sevt/StationCalibData.h>
12 #include <sevt/StationGPSData.h>
13 #include <sevt/Header.h>
15 #include <sevt/PMTSimData.h>
16 #include <sevt/PMTRecData.h>
17 #include <sevt/PMTCalibData.h>
18 #include <sevt/EventTrigger.h>
20 #include <sdet/SDetector.h>
21 #include <det/Detector.h>
23 #include <utl/Trace.h>
24 #include <utl/TimeStamp.h>
25 #include <utl/UTCDateTime.h>
26 #include <utl/ErrorLogger.h>
27 #include <utl/Particle.h>
30 #include <tst/Verify.h>
32 #include <cppunit/extensions/HelperMacros.h>
43 fIsOwnerOfEvent =
true;
70 det::Detector::GetInstance().Update(fTime);
71 fEvent->GetHeader().SetTime(fTime);
74 SEvent& sEvent = fEvent->GetSEvent();
75 const sdet::SDetector& sDetector = det::Detector::GetInstance().GetSDetector();
78 for (
const auto& station : sDetector.StationsRange()) {
91 fIsOwnerOfEvent =
false;
110 CPPUNIT_ASSERT(Verify<Equal>(header.
GetId(), 999));
111 CPPUNIT_ASSERT(Verify<Equal>(header.
GetTime(), fTime));
118 SEvent& sEvent = fEvent->GetSEvent();
119 setHeaderValues(sEvent);
120 checkHeaderValues(sEvent);
127 SEvent& sEvent = fEvent->GetSEvent();
155 CPPUNIT_ASSERT(Verify<Equal>(t3It->GetAlgorithm(), string(
"dummy_1")));
157 CPPUNIT_ASSERT(Verify<Equal>(t3It->GetWindow(103),
TimeInterval(0)));
159 CPPUNIT_ASSERT(Verify<Equal>(t3It->GetOffset(103),
TimeInterval(0)));
160 CPPUNIT_ASSERT(Verify<Equal>(t3It->GetOffset(106),
TimeInterval(20)));
165 CPPUNIT_ASSERT(Verify<Equal>(t3It->GetAlgorithm(),string(
"dummy_2")));
167 CPPUNIT_ASSERT(Verify<Equal>(t3It->GetWindow(105),
TimeInterval(0)));
169 CPPUNIT_ASSERT(Verify<Equal>(t3It->GetOffset(105),
TimeInterval(0)));
170 CPPUNIT_ASSERT(Verify<Equal>(t3It->GetOffset(102),
TimeInterval(3)));
174 CPPUNIT_ASSERT(t3It == end);
203 CPPUNIT_ASSERT(Verify<Equal>(trig.GetId(), 55
U));
204 CPPUNIT_ASSERT(Verify<Equal>(trig.GetPreviousId(), 56
U));
205 CPPUNIT_ASSERT(Verify<Equal>(trig.GetNStations(), 57
U));
206 CPPUNIT_ASSERT(Verify<Equal>(trig.GetSender(), string(
"bill gates") ));
207 CPPUNIT_ASSERT(Verify<Equal>(trig.GetAlgorithm(), string(
"al-gor-ithm") ));
208 CPPUNIT_ASSERT(Verify<CloseTo>(trig.GetSDPAngle(), 0.2));
216 SEvent& sEvent = fEvent->GetSEvent();
217 setPMTRecDataValues(sEvent);
218 checkPMTRecDataValues(sEvent);
225 for (
const auto& station : sEvent.StationsRange()) {
227 for (
const auto& pmt : station.PMTsRange()) {
229 CPPUNIT_ASSERT(pmt.HasRecData());
238 for (
int i = 0; i <= 10; ++i) {
239 CPPUNIT_ASSERT(Verify<CloseTo>(recHadron[i],
double(i)));
240 CPPUNIT_ASSERT(Verify<CloseTo>(recTotal[i],
double(i+1)));
245 for (
const auto& vem : recPMT.VEMTracesRange()) {
246 const TraceD& trace = vem.GetTrace();
247 for (
int i = 0; i <= 10; ++i) {
249 CPPUNIT_ASSERT(Verify<CloseTo>(trace[i],
double(i)));
251 CPPUNIT_ASSERT(Verify<CloseTo>(trace[i],
double(i+1)));
255 CPPUNIT_ASSERT(Verify<Equal>(numSources, 2));
258 CPPUNIT_ASSERT(Verify<CloseTo>(recPMT.GetRiseTime(), 10.));
259 CPPUNIT_ASSERT(Verify<CloseTo>(recPMT.GetRiseTimeRMS(), 1.));
260 CPPUNIT_ASSERT(Verify<CloseTo>(recPMT.GetFallTime(), 20.));
261 CPPUNIT_ASSERT(Verify<CloseTo>(recPMT.GetFallTimeRMS(), 2.));
262 CPPUNIT_ASSERT(Verify<CloseTo>(recPMT.GetAreaOverPeak(), 90.));
263 CPPUNIT_ASSERT(Verify<CloseTo>(recPMT.GetTotalCharge(), 100.));
264 CPPUNIT_ASSERT(Verify<CloseTo>(recPMT.GetPeakAmplitude(), 1.));
274 for (
auto& station : sEvent.StationsRange()) {
276 for (
auto& pmt : station.PMTsRange()) {
279 CPPUNIT_ASSERT(!pmt.HasRecData());
291 for (
int i = 0; i <= 10; ++i) {
292 recHadron[i] = double(i);
293 recTotal[i] = double(i+1);
312 SEvent& sEvent = fEvent->GetSEvent();
313 setEventTriggerValues(sEvent);
314 checkEventTriggerValues(sEvent);
321 for (
auto& station : sEvent.StationsRange()) {
323 CPPUNIT_ASSERT(!station.HasTriggerData());
324 station.MakeTriggerData();
328 stationTrig.
SetAlgorithm(StationTriggerData::eT1Threshold);
329 CPPUNIT_ASSERT(Verify<Equal>(stationTrig.
GetAlgorithm(), StationTriggerData::eT1Threshold));
330 CPPUNIT_ASSERT(Verify<Equal>(stationTrig.
GetAlgorithmName(), string(
"T1 Threshold")));
332 stationTrig.
SetAlgorithm(StationTriggerData::eT2Threshold);
333 CPPUNIT_ASSERT(Verify<Equal>(stationTrig.
GetAlgorithm(), StationTriggerData::eT2Threshold));
334 CPPUNIT_ASSERT(Verify<Equal>(stationTrig.
GetAlgorithmName(), string(
"T2 Threshold")));
336 stationTrig.
SetAlgorithm(StationTriggerData::eTimeOverThreshold);
337 CPPUNIT_ASSERT(Verify<Equal>(stationTrig.
GetAlgorithm(), StationTriggerData::eTimeOverThreshold));
338 CPPUNIT_ASSERT(Verify<Equal>(stationTrig.
GetAlgorithmName(), string(
"Time Over Threshold")));
342 CPPUNIT_ASSERT(Verify<Equal>(stationTrig.
GetAlgorithmName(), string(
"Muon")));
346 CPPUNIT_ASSERT(Verify<Equal>(stationTrig.
GetAlgorithmName(), string(
"Silent")));
350 CPPUNIT_ASSERT(Verify<Equal>(stationTrig.
GetAlgorithmName(), string(
"Random")));
354 CPPUNIT_ASSERT(Verify<Equal>(stationTrig.
GetAlgorithmName(), string(
"None")));
356 stationTrig.
SetAlgorithm(StationTriggerData::eTimeOverThreshold);
368 for (
const auto& station : sEvent.StationsRange()) {
370 CPPUNIT_ASSERT(station.HasTriggerData());
373 CPPUNIT_ASSERT(Verify<Equal>(stationTrig.GetOffsetMicroSecond(), 100));
374 CPPUNIT_ASSERT(Verify<Equal>(stationTrig.GetWindowMicroSecond(), 101));
375 CPPUNIT_ASSERT(Verify<Equal>(stationTrig.GetAlgorithm(), StationTriggerData::eTimeOverThreshold));
376 CPPUNIT_ASSERT(Verify<Equal>(stationTrig.GetAlgorithmName(), string(
"Time Over Threshold")));
377 CPPUNIT_ASSERT(Verify<Equal>(stationTrig.GetErrorCode(), 5));
385 SEvent& sEvent = fEvent->GetSEvent();
386 setStationTriggerValues(sEvent);
387 checkStationTriggerValues(sEvent);
394 SEvent& sEvent = fEvent->GetSEvent();
395 setPMTSimDataValues(sEvent);
396 checkPMTSimDataValues(sEvent);
405 for (
auto& station : sEvent.StationsRange()) {
407 for (
auto& pmt : station.PMTsRange()) {
410 CPPUNIT_ASSERT(!pmt.HasSimData());
420 for (
int i = -5; i < 5; ++i) {
422 CPPUNIT_ASSERT(Verify<Equal>(simTot[i], i));
424 CPPUNIT_ASSERT(Verify<Equal>(simTot.
GetStart(), -5));
425 CPPUNIT_ASSERT(Verify<Equal>(simTot.
GetStop(), 4));
428 for (
int i = -5; i < 5; ++i) {
429 simElectron[i] = i+2;
430 CPPUNIT_ASSERT(Verify<Equal>(simElectron[i], i+2));
432 CPPUNIT_ASSERT(Verify<Equal>(simElectron.
GetStart(), -5));
433 CPPUNIT_ASSERT(Verify<Equal>(simElectron.
GetStop(), 4));
442 for (
int i = -5; i < 5; ++i)
446 for (
int i = -5; i < 5; ++i)
447 baseThirdBounce[i] = i+101;
456 for (
int i = -5; i < 5; ++i)
457 filterTot[i] = i+200;
460 for (
int i = -5; i < 5; ++i)
461 filterHadron[i] = i+201;
471 for (
int i = -10; i <= 10; ++i)
472 fadcTraceDL[i] = i+3;
483 for (
const auto& station : sEvent.StationsRange()) {
485 for (
const auto& pmt : station.PMTsRange()) {
488 CPPUNIT_ASSERT(pmt.HasSimData());
492 CPPUNIT_ASSERT(simPMT.HasPETimeDistribution());
496 CPPUNIT_ASSERT(Verify<Equal>(totalTd.GetStart(), -5));
497 CPPUNIT_ASSERT(Verify<Equal>(totalTd.GetStop(), 4));
498 for (
int i = -5; i < 5; ++i)
499 CPPUNIT_ASSERT(Verify<Equal>(totalTd[i], i));
503 CPPUNIT_ASSERT(Verify<Equal>(electronTd.
GetStart(), -5));
504 CPPUNIT_ASSERT(Verify<Equal>(electronTd.
GetStop(), 4));
505 for (
int i = -5; i < 5; ++i)
506 CPPUNIT_ASSERT(Verify<Equal>(electronTd[i], i+2));
511 for (
const auto& pet : simPMT.PETimeDistributionsRange()) {
518 CPPUNIT_ASSERT(Verify<Equal>(td[i], i));
522 CPPUNIT_ASSERT(Verify<Equal>(td[i], i+2));
528 CPPUNIT_ASSERT(Verify<Equal>(numSources, 2));
531 CPPUNIT_ASSERT(simPMT.HasBaseSignal());
534 for (
int i = -5; i < 5; ++i)
535 CPPUNIT_ASSERT(Verify<Equal>(simPMT.GetBaseSignal()[i], i+100.));
536 for (
int i = -5; i < 5; ++i)
540 CPPUNIT_ASSERT(simPMT.HasFilterSignal());
543 for (
int i = -5; i < 5; ++i)
544 CPPUNIT_ASSERT(Verify<Equal>(simPMT.GetFilterSignal()[i], i+200.));
545 for (
int i = -5; i < 5; ++i)
550 CPPUNIT_ASSERT(Verify<Equal>(fadcTraceDL.
GetStart(), -10));
551 CPPUNIT_ASSERT(Verify<Equal>(fadcTraceDL.
GetStop(), 10));
560 CPPUNIT_ASSERT(Verify<Equal>(trace[i], i+3));
563 CPPUNIT_ASSERT(Verify<Equal>(numSources, 1));
574 SEvent& sEvent = fEvent->GetSEvent();
575 setPMTValues(sEvent);
576 checkPMTValues(sEvent);
583 const sdet::SDetector& theSDetector = det::Detector::GetInstance().GetSDetector();
588 for (Station::PMTIterator pIt = sIt->PMTsBegin();
589 pIt != sIt->PMTsEnd(); ++pIt) {
603 for (
unsigned int i = fadcTraceTotal.
GetStart(); i < fadcTraceTotal.
GetStop(); ++i) {
604 fadcTraceTotal[i] = i;
605 fadcTraceMuon[i] = i+1;
617 for (
const auto& station : sEvent.StationsRange()) {
619 unsigned int expectedPMTId = 0;
620 for (
const auto& pmt : station.PMTsRange()) {
623 CPPUNIT_ASSERT(pmt.GetId() == expectedPMTId);
630 for (
int i = fadcTraceTotal.GetStart(); i < int(fadcTraceTotal.GetStop()); ++i) {
631 CPPUNIT_ASSERT(fadcTraceTotal[i] == i);
632 CPPUNIT_ASSERT(fadcTraceMuon[i] == i+1);
640 const TraceI& trace = fadc.GetTrace();
644 CPPUNIT_ASSERT(trace[i] == i);
647 CPPUNIT_ASSERT(trace[i] == i+1);
653 CPPUNIT_ASSERT(numSources == 2);
664 SEvent& sEvent = fEvent->GetSEvent();
665 setPMTCalibDataValues(sEvent);
666 checkPMTCalibDataValues(sEvent);
673 for (
auto& station : sEvent.StationsRange()) {
675 for (
auto& pmt : station.PMTsRange()) {
677 CPPUNIT_ASSERT(!pmt.HasCalibData());
694 vector<int> muonBase;
695 vector<int> muonPeak;
696 vector<int> muonCharge;
697 vector<int> muonShape;
698 for (
int i = 0; i < 10; ++i) {
699 muonBase.push_back(i);
700 muonPeak.push_back(i+1);
701 muonCharge.push_back(i+2);
702 muonShape.push_back(i+3);
717 for (
const auto& station : sEvent.StationsRange()) {
719 for (
const auto& pmt : station.PMTsRange()) {
721 CPPUNIT_ASSERT(pmt.HasCalibData());
724 CPPUNIT_ASSERT(calibPMT.IsTubeOk());
725 CPPUNIT_ASSERT(Verify<Equal>(calibPMT.GetRate(), 1.));
726 CPPUNIT_ASSERT(Verify<CloseTo>(calibPMT.GetOnlinePeak(), 2.));
727 CPPUNIT_ASSERT(Verify<CloseTo>(calibPMT.GetOnlineCharge(), 3.));
728 CPPUNIT_ASSERT(Verify<CloseTo>(calibPMT.GetBaseline(), 4.));
729 CPPUNIT_ASSERT(Verify<CloseTo>(calibPMT.GetBaselineRMS(), 0.4));
732 CPPUNIT_ASSERT(Verify<CloseTo>(calibPMT.GetGainRatio(), 6.));
733 CPPUNIT_ASSERT(Verify<CloseTo>(calibPMT.GetGainRatioRMS(), 0.6));
734 CPPUNIT_ASSERT(Verify<Equal>(calibPMT.GetEvolution(), 2));
735 CPPUNIT_ASSERT(Verify<Equal>(calibPMT.GetNumberTDA(), 3));
736 CPPUNIT_ASSERT(Verify<CloseTo>(calibPMT.GetHighGainDelay(), 7.));
737 CPPUNIT_ASSERT(Verify<CloseTo>(calibPMT.GetHighGainDelayRMS(), 0.7));
738 CPPUNIT_ASSERT(Verify<CloseTo>(calibPMT.GetHighGainDelayChi2(), 8.));
740 for (
int i = 0; i <= 9; ++i) {
741 CPPUNIT_ASSERT(Verify<Equal>(calibPMT.GetMuonBaseHisto().at(i), i));
742 CPPUNIT_ASSERT(Verify<Equal>(calibPMT.GetMuonPeakHisto().at(i), i+1));
743 CPPUNIT_ASSERT(Verify<Equal>(calibPMT.GetMuonChargeHisto().at(i), i+2));
744 CPPUNIT_ASSERT(Verify<Equal>(calibPMT.GetMuonShapeHisto().at(i), i+3));
746 CPPUNIT_ASSERT(Verify<Equal>(calibPMT.GetMuonBaseHistoOffset(), 1));
747 CPPUNIT_ASSERT(Verify<Equal>(calibPMT.GetMuonPeakHistoOffset(), 2));
748 CPPUNIT_ASSERT(Verify<Equal>(calibPMT.GetMuonChargeHistoOffset(), 3));
758 for (
auto& station : sEvent.StationsRange()) {
760 CPPUNIT_ASSERT(!station.HasVEMTrace());
761 station.MakeVEMTrace();
763 TraceD& totTrace = station.GetVEMTrace();
764 for (
int i = 0; i <= 10; ++i)
767 station.SetTraceStartTime(
UTCDateTime(2004,1,1, 12,0,0).GetTimeStamp());
769 station.SetCandidate();
770 CPPUNIT_ASSERT(station.IsCandidate());
771 CPPUNIT_ASSERT(!station.IsSilent());
772 CPPUNIT_ASSERT(!station.IsRejected());
775 CPPUNIT_ASSERT(!station.IsCandidate());
776 CPPUNIT_ASSERT(station.IsSilent());
777 CPPUNIT_ASSERT(!station.IsRejected());
779 CPPUNIT_ASSERT(!station.IsRejected());
781 CPPUNIT_ASSERT(!station.IsCandidate());
782 CPPUNIT_ASSERT(!station.IsSilent());
783 CPPUNIT_ASSERT(station.IsRejected());
787 CPPUNIT_ASSERT(!station.IsCandidate());
788 CPPUNIT_ASSERT(!station.IsSilent());
789 CPPUNIT_ASSERT(station.IsRejected());
790 CPPUNIT_ASSERT(station.GetRejectionStatus() ==
795 CPPUNIT_ASSERT(!station.IsCandidate());
796 CPPUNIT_ASSERT(!station.IsSilent());
797 CPPUNIT_ASSERT(station.IsRejected());
798 CPPUNIT_ASSERT(station.GetRejectionStatus() ==
803 CPPUNIT_ASSERT(!station.IsLowGainSaturation());
804 CPPUNIT_ASSERT(!station.IsHighGainSaturation());
806 station.SetLowGainSaturation();
807 CPPUNIT_ASSERT(station.IsLowGainSaturation());
808 CPPUNIT_ASSERT(!station.IsHighGainSaturation());
810 station.SetHighGainSaturation();
811 CPPUNIT_ASSERT(station.IsLowGainSaturation());
812 CPPUNIT_ASSERT(station.IsHighGainSaturation());
814 station.SetHighGainSaturation(
false);
815 station.SetLowGainSaturation(
false);
816 CPPUNIT_ASSERT(!station.IsLowGainSaturation());
817 CPPUNIT_ASSERT(!station.IsHighGainSaturation());
819 station.SetHighGainSaturation();
828 const sdet::SDetector& sDetector = det::Detector::GetInstance().GetSDetector();
831 for (
const auto&
s : sEvent.StationsRange()) {
833 CPPUNIT_ASSERT(find(stationList.begin(), stationList.end(),
s.GetId()) != stationList.end());
835 unsigned int expectedPMTId = 0;
836 for (
auto sIt =
s.PMTsBegin(), sEnd =
s.PMTsEnd(); sIt != sEnd; ++sIt) {
838 CPPUNIT_ASSERT(
s.HasPMT(expectedPMTId));
839 CPPUNIT_ASSERT(Verify<Equal>(
s.GetPMT(expectedPMTId).GetId(), expectedPMTId));
842 CPPUNIT_ASSERT(
s.HasVEMTrace());
844 const TraceD& totTrace =
s.GetVEMTrace();
845 for (
int i = 0; i <= 10; ++i)
846 CPPUNIT_ASSERT(Verify<CloseTo>(totTrace[i],
double(i)));
850 CPPUNIT_ASSERT(
s.IsRejected());
853 CPPUNIT_ASSERT(!
s.IsLowGainSaturation());
854 CPPUNIT_ASSERT(
s.IsHighGainSaturation());
862 SEvent& sEvent = fEvent->GetSEvent();
863 setStationValues(sEvent);
864 checkStationValues(sEvent);
871 SEvent& sEvent = fEvent->GetSEvent();
872 setStationSimDataValues(sEvent);
873 checkStationSimDataValues(sEvent);
880 SEvent& sEvent = fEvent->GetSEvent();
881 setStationGPSDataValues(sEvent);
882 checkStationGPSDataValues(sEvent);
889 for (
auto&
s : sEvent.StationsRange()) {
891 CPPUNIT_ASSERT(!
s.HasGPSData());
915 for (
const auto&
s : sEvent.StationsRange()) {
917 CPPUNIT_ASSERT(
s.HasGPSData());
920 CPPUNIT_ASSERT(Verify<Equal>(stationGPS.GetSecond(), 1
U));
921 CPPUNIT_ASSERT(Verify<Equal>(stationGPS.GetOffset(), 2));
922 CPPUNIT_ASSERT(Verify<Equal>(stationGPS.GetCorrectedNanosecond(), 3
U));
923 CPPUNIT_ASSERT(Verify<Equal>(stationGPS.GetTick(), 4
U));
924 CPPUNIT_ASSERT(Verify<Equal>(stationGPS.GetTickFall(), 5
U));
925 CPPUNIT_ASSERT(Verify<Equal>(stationGPS.GetCurrent100(), 6));
926 CPPUNIT_ASSERT(Verify<Equal>(stationGPS.GetNext100(), 7));
927 CPPUNIT_ASSERT(Verify<Equal>(stationGPS.GetCurrent40(), 8));
928 CPPUNIT_ASSERT(Verify<Equal>(stationGPS.GetNext40(), 9));
929 CPPUNIT_ASSERT(Verify<Equal>(stationGPS.GetPreviousST(), 10));
930 CPPUNIT_ASSERT(Verify<Equal>(stationGPS.GetCurrentST(), 11));
931 CPPUNIT_ASSERT(Verify<Equal>(stationGPS.GetNextST(), 12));
940 const sdet::SDetector& sDetector = det::Detector::GetInstance().GetSDetector();
942 for (
auto&
s : sEvent.StationsRange()) {
944 CPPUNIT_ASSERT(!
s.HasSimData());
960 for (
int iP = 0; iP < 3; ++iP)
961 s.AddParticle(aMuon);
987 stationGPS.SetOffset(2);
988 stationGPS.SetCorrectedNanosecond(3);
989 stationGPS.SetTick(4);
990 stationGPS.SetTickFall(5);
991 stationGPS.SetCurrent100(6);
992 stationGPS.SetNext100(7);
993 stationGPS.SetCurrent40(8);
994 stationGPS.SetNext40(9);
995 stationGPS.SetPreviousST(10);
996 stationGPS.SetCurrentST(11);
997 stationGPS.SetNextST(12);
1016 stationTrig.
SetAlgorithm(StationTriggerData::eTimeOverThreshold);
1023 stationTrig_2.
SetAlgorithm(StationTriggerData::eT1Threshold);
1035 for (
const auto&
s : sEvent.StationsRange()) {
1037 CPPUNIT_ASSERT(
s.HasSimData());
1040 CPPUNIT_ASSERT(Verify<Equal>(
1041 simStation.GetSimulatorSignature(), string(
"All your base are belong to us")
1053 CPPUNIT_ASSERT(Verify<Equal>(
1057 if (
s.GetId() == 46)
1058 CPPUNIT_ASSERT(Verify<Equal>(simStation.IsInsideMinRadius(),
true));
1060 CPPUNIT_ASSERT(Verify<Equal>(simStation.IsInsideMinRadius(),
false));
1066 const int times = distance(simStation.TriggerTimesBegin(), simStation.TriggerTimesEnd());
1067 CPPUNIT_ASSERT(times == 2);
1068 CPPUNIT_ASSERT(!simStation.HasTriggerData(st_3));
1069 CPPUNIT_ASSERT(simStation.HasTriggerData(st_1));
1070 CPPUNIT_ASSERT(simStation.HasTriggerData(st_2));
1071 unsigned int s_1 = 3;
1072 unsigned int s_2 = 45000;
1073 CPPUNIT_ASSERT(Verify<Equal>(simStation.GetGPSData(st_1).GetCorrectedNanosecond(), s_1));
1074 CPPUNIT_ASSERT(Verify<Equal>(simStation.GetGPSData(st_2).GetCorrectedNanosecond(), s_2));
1075 CPPUNIT_ASSERT(Verify<Equal>(simStation.GetTriggerData(st_2).GetAlgorithm(), StationTriggerData::eT1Threshold));
1076 CPPUNIT_ASSERT(Verify<Equal>(simStation.GetTriggerData(st_1).GetAlgorithm(), StationTriggerData::eTimeOverThreshold));
1085 for (
auto&
s : sEvent.StationsRange()) {
1087 CPPUNIT_ASSERT(!
s.HasRecData());
1108 for (
const auto&
s : sEvent.StationsRange()) {
1110 CPPUNIT_ASSERT(
s.HasRecData());
1113 CPPUNIT_ASSERT(Verify<Equal>(stationRec.GetTotalSignal(), 1.));
1114 CPPUNIT_ASSERT(Verify<Equal>(stationRec.GetPeakAmplitude(), 2.));
1115 CPPUNIT_ASSERT(Verify<Equal>(stationRec.GetRiseTime(), 3.));
1116 CPPUNIT_ASSERT(Verify<Equal>(stationRec.GetRiseTimeRMS(), 0.3));
1117 CPPUNIT_ASSERT(Verify<Equal>(stationRec.GetFallTime(), 4.));
1118 CPPUNIT_ASSERT(Verify<Equal>(stationRec.GetFallTimeRMS(), 0.4));
1119 CPPUNIT_ASSERT(Verify<Equal>(stationRec.GetResidual(), 5.));
1120 CPPUNIT_ASSERT(Verify<Equal>(stationRec.GetSignalStartSlot(), 6
U));
1121 CPPUNIT_ASSERT(Verify<Equal>(stationRec.GetSignalEndSlot(), 7
U));
1122 CPPUNIT_ASSERT(Verify<Equal>(stationRec.GetMuonComponent(), 8.));
1123 CPPUNIT_ASSERT(Verify<Equal>(
1133 SEvent& sEvent = fEvent->GetSEvent();
1134 setStationRecDataValues(sEvent);
1135 checkStationRecDataValues(sEvent);
1142 for (
auto&
s : sEvent.StationsRange()) {
1144 CPPUNIT_ASSERT(!
s.HasCalibData());
1156 vector<int> muonChargeHisto;
1157 for (
int i = 0; i <= 9; ++i)
1158 muonChargeHisto.push_back(i);
1168 for (
const auto&
s : sEvent.StationsRange()) {
1170 CPPUNIT_ASSERT(
s.HasCalibData());
1173 CPPUNIT_ASSERT(Verify<Equal>(stationCalib.GetVersion(), 1));
1174 CPPUNIT_ASSERT(Verify<Equal>(stationCalib.GetStartSecond(), 2
U));
1175 CPPUNIT_ASSERT(Verify<Equal>(stationCalib.GetEndSecond(), 3
U));
1176 CPPUNIT_ASSERT(Verify<Equal>(stationCalib.GetNT1(), 4
U));
1177 CPPUNIT_ASSERT(Verify<Equal>(stationCalib.GetNT2(), 5
U));
1178 CPPUNIT_ASSERT(Verify<Equal>(stationCalib.GetNTot(), 6
U));
1179 CPPUNIT_ASSERT(Verify<Equal>(stationCalib.GetNTubesOk(), 7
U));
1181 vector<int> muonChargeHisto;
1182 for (
int i = 0; i < 10; ++i)
1183 CPPUNIT_ASSERT(Verify<Equal>(stationCalib.GetMuonChargeHisto().at(i), i));
1184 CPPUNIT_ASSERT(Verify<Equal>(stationCalib.GetMuonChargeHistoOffset(), 13));
1193 SEvent& sEvent = fEvent->GetSEvent();
1194 setStationCalibDataValues(sEvent);
1195 checkStationCalibDataValues(sEvent);
1202 SEvent& sEvent = fEvent->GetSEvent();
1209 checkAll(copySEvent);
1216 SEvent& sEvent = fEvent->GetSEvent();
1221 copyEvent = *fEvent;
1224 checkAll(copySEvent);
1231 setHeaderValues(sEvent);
1232 setEventTriggerValues(sEvent);
1233 setStationTriggerValues(sEvent);
1234 setPMTValues(sEvent);
1235 setPMTSimDataValues(sEvent);
1236 setPMTRecDataValues(sEvent);
1237 setPMTCalibDataValues(sEvent);
1238 setStationValues(sEvent);
1239 setStationSimDataValues(sEvent);
1240 setStationRecDataValues(sEvent);
1241 setStationCalibDataValues(sEvent);
1242 setStationGPSDataValues(sEvent);
1251 CPPUNIT_ASSERT(Verify<Equal>(nstations, fNStations));
1253 checkHeaderValues(sEvent);
1254 checkEventTriggerValues(sEvent);
1255 checkStationTriggerValues(sEvent);
1256 checkPMTValues(sEvent);
1257 checkPMTSimDataValues(sEvent);
1258 checkPMTRecDataValues(sEvent);
1259 checkPMTCalibDataValues(sEvent);
1260 checkStationValues(sEvent);
1261 checkStationSimDataValues(sEvent);
1262 checkStationRecDataValues(sEvent);
1263 checkStationCalibDataValues(sEvent);
1264 checkStationGPSDataValues(sEvent);
1271 SEvent& sEvent = fEvent->GetSEvent();
1272 setSEventIterators(sEvent);
1273 checkSEventIterators(sEvent);
1275 for (
auto&
s : sEvent.StationsRange()) {
1277 CPPUNIT_ASSERT(!
s.IsCandidate());
1278 CPPUNIT_ASSERT(!
s.IsSilent());
1279 CPPUNIT_ASSERT(
s.IsRejected());
1290 CPPUNIT_ASSERT(nStations >= 7);
1294 for (
int i = 0; i < 3; ++i, ++sIt)
1298 for (
int i = 0; i < 3; ++i, ++sIt) {
1299 sIt->SetRejected(mask);
1305 sIt->SetCandidate();
1314 CPPUNIT_ASSERT(nStations >= 7);
1317 for (
const auto&
s : sEvent.StationsRange()) {
1318 CPPUNIT_ASSERT(
s.IsCandidate() ||
s.IsSilent() ||
s.IsRejected());
1322 CPPUNIT_ASSERT(countAll == nStations);
1324 int countSilent = 0;
1325 for (
const auto&
s : sEvent.SilentStationsRange()) {
1326 CPPUNIT_ASSERT(
s.IsSilent());
1330 CPPUNIT_ASSERT(countSilent == 3);
1333 for (
int i = 0; i < 3; ++i) {
1334 int countRejected = 0;
1335 for (
const auto&
s : sEvent.RejectedStationsRange(mask)) {
1336 CPPUNIT_ASSERT(
s.GetRejectionStatus() & mask);
1337 for (
int j = 0; j < 3; ++j)
1338 CPPUNIT_ASSERT(
s.GetRejectionStatus() & (1 << (j+1)));
1341 CPPUNIT_ASSERT(countRejected == (i + 1));
1347 int countCandidate = 0;
1348 for (
const auto&
s : sEvent.CandidateStationsRange()) {
1349 CPPUNIT_ASSERT(
s.IsCandidate());
1353 CPPUNIT_ASSERT(countCandidate == countAll - 6);
void checkStationCalibDataValues(const sevt::SEvent &sEvent)
Class to access station level reconstructed data.
int GetStart() const
First slot with data.
void SetStop(const SizeType stop)
Set valid data stop bin.
Station Level Simulated Data
StationIterator StationsEnd()
End of all stations.
utl::TraceD & GetVEMTrace(const StationConstants::SignalComponent source=StationConstants::eTotal)
Traces calibrated in VEM Peak.
void SetTotalSignal(const double signal, const double sErr=0)
Total integrated signal in VEM unit, averaged over pmts.
void SetMuonPeakHisto(const std::vector< int > &mph, const int offset)
void testStationGPSData()
void SetNTot(const unsigned int ntot)
total number of triggers recevied during calibration
void AddT3(const sevt::T3 &t3)
Add a T3.
void testStationRecData()
void SetAlgorithm(const std::string &algo)
Set the trigger algorithm.
void SetSignalStartSlot(const unsigned int slot)
Start time of the signal in time slots from beginning of trace.
const std::vector< int > & GetFullStationList() const
Get list of ID's for all stations available in the database or configuration file.
void MakeVEMTrace(const StationConstants::SignalComponent source=StationConstants::eTotal)
void checkAll(const sevt::SEvent &sEvent)
void SetCurrentST(const int num)
int GetNumberOfStations() const
Get total number of stations in the event.
SizeType GetStop() const
Get valid data stop bin.
void SetOnlineCharge(const double charge)
bool HasBaseSignal(const StationConstants::SignalComponent source=StationConstants::eTotal) const
Check if signal at PMT base already exists (optionally for a given source)
void setStationCalibDataValues(sevt::SEvent &sEvent)
Interface class to access to the SD part of an event.
Describes a particle for Simulation.
This class contains the basic information to build a surface event.
void SetCurrent100(const int num)
void SetAreaOverPeak(const double areaOverPeak)
void SetOffsetMicroSecond(const int offset)
void SetTime(const utl::TimeStamp &stamp)
Set the trigger time stamp.
void checkEventTriggerValues(const sevt::SEvent &sEvent)
void SetNumberTDA(const int num)
void SetTime(const utl::TimeStamp &time)
Set time of the trigger.
void SetPeakAmplitude(const double peak)
Amplitude of signal Peak in VEM-Peak unit,averaged over pmts.
void checkPMTValues(const sevt::SEvent &sEvent)
sevt::StationGPSData & GetGPSData(const utl::TimeStamp &time)
Get simulated GPSData.
void testSEventIterators()
void SetNext40(const int num)
EventTrigger & GetTrigger()
Get the object with central trigger data, throw if n.a.
Signal from photons that bounced thrice (includes all particle sources)
void SetFallTime(const double fallTime, const double rms)
void SetTick(const unsigned int num)
Histogram class for time distributions with suppressed empty bins.
void SetMuonChargeHisto(const std::vector< int > &mch, const int offset)
void SetOnlinePeak(const double peak)
void SetCurrent40(const int num)
void SetHighGainDelayChi2(const double chi2)
void SetPreviousId(const unsigned int id)
Set Id of the FD trigger that contains data for this event.
void checkStationTriggerValues(const sevt::SEvent &sEvent)
const std::string & GetAlgorithmName() const
void SetSimulatorSignature(const std::string &name)
Set name of the tank simulator module used to simulate this station.
void testStationCalibData()
void setStationTriggerValues(sevt::SEvent &sEvent)
bool HasPETimeDistribution(const StationConstants::SignalComponent source=StationConstants::eTotal) const
Check if a PE release time distribution exists (optionally for a given source)
bool HasSimData() const
check whether the SimData object exists
void checkStationValues(const sevt::SEvent &sEvent)
bool HasFADCTrace(StationConstants::SignalComponent source=StationConstants::eTotal) const
Check if FADC trace (prior to local trigger simulation) exists.
A TimeStamp holds GPS second and nanosecond for some event.
void SetRiseTime(const double riseTime, const double rms)
Rise time and rise time RMS averaged over PMTs.
void SetNTubesOk(const unsigned int nTubesOk)
get numbers of tubes with calibration
void SetPeakAmplitude(const double peak)
void SetMuonComponent(const double component)
Muon signal [number of muons].
boost::shared_ptr< const CoordinateTransformer > CoordinateSystemPtr
Shared pointer for coordinate systems.
sevt::StationTriggerData & GetTriggerData(const utl::TimeStamp &time)
Get simulated TriggerData.
void SetResidual(const double residual)
Residual of geometry fit.
void checkStationGPSDataValues(const sevt::SEvent &sEvent)
void SetGainRatio(const double da, const double rms)
Set dynode/anode and dynode/anode RMS.
class to hold reconstructed data at PMT level
bool HasFilterSignal(const StationConstants::SignalComponent source=StationConstants::eTotal) const
Check if the signal at front-end filter already exists (optionally for a given source) ...
void MakeBaseSignal(const StationConstants::SignalComponent source=StationConstants::eTotal)
Create a TimeDistributionD representing signal at PMT base (optionally for a give source) ...
Interface class to access the Event Trigger (T3)
void setPMTSimDataValues(sevt::SEvent &sEvent)
void MakeSimData()
Create the SimData object.
void SetStart(const SizeType start)
Set valid data start bin.
void SetFallTime(const double fallTime, const double rms)
Fall time and fall time RMS averaged over PMTs.
void SetVersion(const int version)
version of the onboard calibration
void testStationTriggerData()
bool HasTrigger() const
check whether the central trigger object exists
void SetSecond(const unsigned int sec)
Set end of traces raw time.
void MakeTrigger()
Create the central trigger object.
int GetStop() const
Last slot with data (1 less than First slot if no data)
a t3: algo, second, usecond and a vector of <t3stat>
void SetOffset(const int os)
Set GPS offset compared to a reference.
void SetPlaneFrontTime(const utl::TimeStamp &time)
Set shower front plane arrival time.
void MakeStation(const int stationId)
make a station with specifying Id, throw if invalid stationId
utl::TimeDistributionD & GetFilterSignal(const StationConstants::SignalComponent source=StationConstants::eTotal)
get simulated signal after the filter, optionally for a given source.
void SetMuonChargeHisto(const std::vector< int > &mch, const int offset)
histogram of the sum of muon charges
void setHeaderValues(sevt::SEvent &sEvent)
void SetId(const unsigned int id)
Set Id of the trigger.
void setEventTriggerValues(sevt::SEvent &sEvent)
SEventSimData & GetSimData()
Get the object with simulated data, throw if n.a.
void SetNT1(const unsigned int nt1)
number of T1 received during calibration
void checkSEventIterators(const sevt::SEvent &sEvent)
void SetRate(const double rate)
void SetTotalCharge(const double totalCharge, const double chErr=0)
void setStationGPSDataValues(sevt::SEvent &sEvent)
void setAll(sevt::SEvent &sEvent)
void SetSignalStartTime(const utl::TimeStamp time)
Start time of the signal.
A TimeInterval is used to represent time elapsed between two events.
Algorithm GetAlgorithm() const
void SetNStations(const unsigned int num)
Set number of stations in the trigger.
void setPMTRecDataValues(sevt::SEvent &sEvent)
void SetHighGainDelay(const double dt, const double rms)
Set dynode anode delay and delay RMS.
void SetSDPAngle(const double ang)
Set SDPAngle of the trigger.
std::vector< sevt::T3 >::iterator T3Iterator
void SetNT2(const unsigned int nt2)
number of T2 received during calibration
static CentralConfig * GetInstance()
Use this the first time you get an instance of central configuration.
Station Trigger Data description
void SetMuonBaseHisto(const std::vector< int > &mbh, const int offset)
void MakeTriggerAndGPSData(const utl::TimeStamp &time)
Creates the trigger data at the given time and also the GPS data to guarantee they are both created...
StationIterator StationsBegin()
Beginning of all stations.
SizeType GetStart() const
Get valid data start bin.
void setPMTValues(sevt::SEvent &sEvent)
T3Iterator T3sEnd()
Iterator over the list of T3s.
void checkStationRecDataValues(const sevt::SEvent &sEvent)
Class to hold simulated data at PMT level.
void SetNext100(const int num)
total (shower and background)
void SetWindowMicroSecond(const int window)
void SetAlgorithm(const std::string &algo)
Set algorithm of the trigger.
void SetStartSecond(const unsigned int ss)
GPS second of start of calibration.
Detector description interface for SDetector-related data.
void SetCorrectedNanosecond(const unsigned int ns)
Set corrected trigger nanosecond.
bool HasTriggerData(const utl::TimeStamp &time) const
Check whether there is trigger data at the given time.
void setSEventIterators(sevt::SEvent &sEvent)
void setStationValues(sevt::SEvent &sEvent)
sevt::Header & GetHeader()
boost::indirect_iterator< InternalStationIterator, Station & > StationIterator
Iterator over all stations.
unsigned int GetFADCTraceLength() const
void SetEndSecond(const unsigned int es)
GPS second of end of calibration.
void setStationSimDataValues(sevt::SEvent &sEvent)
void SetAlgorithm(const Algorithm algo)
void checkPMTSimDataValues(const sevt::SEvent &sEvent)
void SetEvolution(const int ev)
void MakeFilterSignal(const StationConstants::SignalComponent source=StationConstants::eTotal)
Create a TimeDistributionD representing signal after front-end filter (optionally for a given source)...
void setPMTCalibDataValues(sevt::SEvent &sEvent)
void checkHeaderValues(const sevt::SEvent &sEvent)
void SetRiseTime(const double riseTime, const double rms)
utl::TimeDistributionI & GetPETimeDistribution(const StationConstants::SignalComponent source=StationConstants::eTotal)
Simulated photoelectron time distribution.
utl::TimeDistributionD & GetBaseSignal(const StationConstants::SignalComponent source=StationConstants::eTotal)
Get simulated signal at the PMT base, optionally for a given source.
signal from direct light (includes all particle sources). Same as 0'th bounce light ...
const Station & GetStation(const int stationId) const
Get station by Station Id.
utl::TimeDistributionI & GetFADCTrace(const sdet::PMTConstants::PMTGain gain=sdet::PMTConstants::eHighGain, const StationConstants::SignalComponent source=StationConstants::eTotal)
Get FADC trace by gain and source.
void SetIsInsideMinRadius(const bool isIn=true)
Set flag indicating whether station is in the shower hole.
bool HasVEMTrace(const StationConstants::SignalComponent source=StationConstants::eTotal) const
T3Iterator T3sBegin()
Iterator over the list of T3s.
constexpr double microsecond
void checkStationSimDataValues(const sevt::SEvent &sEvent)
void setStationRecDataValues(sevt::SEvent &sEvent)
void checkPMTCalibDataValues(const sevt::SEvent &sEvent)
sevt::SEvent & GetSEvent()
TimeStamp GetTimeStamp() const
void SetNextST(const int num)
void AddStation(const int id, const utl::TimeInterval &offset, const utl::TimeInterval &window)
Add a station to request data, specifying offset and window size.
void SetIsTubeOk(const bool ok)
void checkPMTRecDataValues(const sevt::SEvent &sEvent)
void SetErrorCode(const int errorCode)
void SetMuonShapeHisto(const std::vector< int > &ms)
void SetPreviousST(const int num)
void MakeFADCTrace(StationConstants::SignalComponent source=StationConstants::eTotal)
Make FADC trace prior to local trigger simulation.
void SetSender(const std::string &sender)
Set sender of the trigger.
void testStationSimData()
void SetBaseline(const double base, const double rms, const sdet::PMTConstants::PMTGain gain=sdet::PMTConstants::eHighGain)
Set baseline and baseline RMS for a particular channel (defaults to high gain channel) ...
void SetTickFall(const unsigned int num)
void MakePETimeDistribution(const StationConstants::SignalComponent source=StationConstants::eTotal)
Create a PE release time distribution (optionally for given source)
void SetSignalEndSlot(const unsigned int slot)
End time of the signal in time slots from beginning of trace.