Skip to content

Commit 638c396

Browse files
committed
Add extra parameters for TDC5 in dldprint
1 parent 825f22d commit 638c396

File tree

2 files changed

+22
-8
lines changed

2 files changed

+22
-8
lines changed

plugins/dogma/dldprint.cxx

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,10 @@ int usage(const char *errstr = nullptr)
5353
printf(" -tdc id - printout raw data as TDC subsubevent (default none)\n");
5454
printf(" -trignumdump - print only trigger nummers from events or TU (default off)\n");
5555
print_tdc_arguments();
56+
printf(" -fine-min5 value - minimal fine counter value of TDC v5, used for liner time calibration (default %u)\n", (unsigned) Tdc5FineMin);
57+
printf(" -fine-max5 value - maximal fine counter value of TDC v5, used for liner time calibration (default %u)\n", (unsigned) Tdc5FineMax);
58+
printf(" -mhz5 value - running frequency of TDC v5 (default %5.1f)\n", (double) Tdc5FreqMhz);
59+
5660
return errstr ? 1 : 0;
5761
}
5862

@@ -65,6 +69,8 @@ struct TuStat {
6569
};
6670

6771
bool printraw = false, printsub = false, showrate = false, reconnect = false, dostat = false, dominsz = false, domaxsz = false, autoid = false;
72+
double mhz5 = Tdc5FreqMhz, coarse_tmlen5 = 1000. / Tdc5FreqMhz;
73+
unsigned fine_min5 = Tdc5FineMin, fine_max5 = Tdc5FineMax;
6874
unsigned idrange = 0xff, onlynew = 0, onlyraw = 0, hubmask = 0, fullid = 0, adcmask = 0, onlymonitor = 0;
6975
int buffer_size = 4, dotriggerdump = 0;
7076

@@ -128,18 +134,16 @@ void print_tu(dogma::DogmaTu *tu, const char *prefix = "")
128134
int pktlen = (int) tu->GetTdc5PaketLength();
129135
tdc5_parse_header(&h, &it, buf, pktlen);
130136

131-
double coarse_tmlen = 1000. / Tdc5FreqMhz; // time in nanoseconds
132-
const int Tdc5FineMin = 19, Tdc5FineMax = 392;
133137
double last_rising_tm = 0.;
134138
int last_rising_ch = -1;
135-
printf("%s Trigger time: %12.9fs\n", prefix, h.trig_time * coarse_tmlen * 1e-9); // time in seconds
139+
printf("%s Trigger time: %12.9fs\n", prefix, h.trig_time * coarse_tmlen5 * 1e-9); // time in seconds
136140
while (tdc5_parse_next(&tm, &it, buf, pktlen) == 1) {
137141
int fine = tm.fine;
138-
if (fine < Tdc5FineMin)
139-
fine = Tdc5FineMin;
140-
else if (fine > Tdc5FineMax)
141-
fine = Tdc5FineMax;
142-
double fulltm = -coarse_tmlen * (tm.coarse + (0. + tm.fine - Tdc5FineMin) / (0. + Tdc5FineMax - Tdc5FineMin));
142+
if (fine < fine_min5)
143+
fine = fine_min5;
144+
else if (fine > fine_max5)
145+
fine = fine_max5;
146+
double fulltm = -coarse_tmlen5 * (tm.coarse + (0. + fine - fine_min5) / (0. + fine_max5 - fine_min5));
143147
printf("%s ch:%02u falling:%1d coarse:%04u fine:%03u fulltm:%7.3f",
144148
prefix, (unsigned) tm.channel, tm.is_falling,
145149
(unsigned) tm.coarse, (unsigned) tm.fine, fulltm);
@@ -283,6 +287,14 @@ int main(int argc, char* argv[])
283287
} else if ((strcmp(argv[n], "-tdc") == 0) && (n + 1 < argc)) {
284288
dabc::str_to_uint(argv[++n], &tdcmask);
285289
tdcs.emplace_back(tdcmask);
290+
} else if ((strcmp(argv[n], "-mhz5") == 0) && (n + 1 < argc)) {
291+
double mhz5 = 300.;
292+
dabc::str_to_double(argv[++n], &mhz5);
293+
coarse_tmlen5 = 1000. / mhz5;
294+
} else if ((strcmp(argv[n], "-fine-min5") == 0) && (n + 1 < argc)) {
295+
dabc::str_to_uint(argv[++n], &fine_min5);
296+
} else if ((strcmp(argv[n], "-fine-max5") == 0) && (n + 1 < argc)) {
297+
dabc::str_to_uint(argv[++n], &fine_max5);
286298
} else if (!scan_tdc_arguments(n, argc, argv))
287299
return usage("Unknown option");
288300
}

plugins/dogma/dogma/tdc5.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
#endif
1414

1515
#define Tdc5FreqMhz 300.
16+
#define Tdc5FineMin 19
17+
#define Tdc5FineMax 395
1618

1719
struct tdc5_parse_it {
1820
int i;

0 commit comments

Comments
 (0)