-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathChangelog.txt
816 lines (647 loc) · 35.4 KB
/
Changelog.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
31.3.2021
1. Let configure name of second script with base::ProcMgr::instance()->SetSecondName("any.C")
30.3.2021
1. Let analyze data produced with hadaq::MonitorModule of DABC. One can use
hadaq::MonitorProcessor, see application/monitor/ subdir
18.3.2021
1. Implement preliminary TDC v4 support. It should be automatically recognized and
processed.
6.08.2020
1. Implement N-points linear calibration. One can configure N points instead of 2.
Take more memory, but improve precision for channels where linear approximation
is not precise enough, but full look-up table takes too much performance.
5.08.2020
1. Implement real liner calibration function. Instead of stroing full look-up table,
only two points for linear function are stored. Reduced dramatically usage of the memory,
especially when applying such calibration. Support both formats when storing and redaing
calibration files. Improve speed of HADES calibration procedure in multithreaded environment.
2. Use std::vector instead of plain arrays for calibration function.
28.07.2020
1. Add support of standalone sub-sub-event in hld print. Such sub-sub-event
does not have typical header and uses full data of sub-event, inheriting its ID
2. Configure ToT value for 0xD trigger and hmin/hmax value for histograms based on
hardware type from TDC header. Applied only if value was not set before explicitely.
26.05.2020
1. Add cmake support for compilation of Stream library
31.01.2019
1. Let configure sorting order of created sub-folders. Default is ON
2. Let configure parameters of ToT calibration
28.01.2019
1. Change interpretation of hit1 and hit2 message
hit0 (0x8) from hardware, normal hit message
hit1 (0xa) from hardware, produced instead of 0x3ff
hit2 (0xe) software, is planned for replaced hit0 messages
2. Initial commit from Semen Lebedev for HADES raw data quality monitoring
5.07.2018
1. Introduce StartMonitor class. It dedicated to debug START detector in HADES
4.07.2018
1. Let configure ToT value and histogram range for 0xD trigger
28.06.2018
1. Special mode for ToT calibration during beamtime.
Use half of the statistic for preliminary calibrations and then calculate ToT and calibrate to 30 ns.
22.06.2018
1. In hadaq::SpillProcessor introduce fast (20 us binning) and slow (40 ms binning) histogramming
of hits counts. Fast histograms will be used to calculate quality
20.06.2018
1. Implement implicit calibration mode for DABC. In this case calibration is started by
the command from the control GUI and all hits are accumulated for calibration.
18.05.2018
1. Introduce hadaq::SpillProcessor to provide analysis of spill structures
Done independent from normal TDC processors to speedup the code.
4.05.2018
1. Provide hadaq::TdcProcessor::SetUseDTrigForRef() to allow use D
trigger in ref calculations
23.03.2018
1. Extract special data from CTS header, keep support of TDC inside
29.11.2017
1. Add event sequence number and run id into HDL subevent, which can be used in second.C
6.11.2017
1. Add support of simple linear calibration. Can be actiavted if events count for calibration
ends with 77 like 10077 or 500077.
2. Linear calibration also can be actiavted if calibration mode equal to -77 - this produces linear
calibration at the end of file processing
3. When SetTriggerDWindow configured, also all fine-time histograms for appropriate triggers
(not only 0xD) will be accumulated under specified condition
30.10.2017
1. Let configure window for 0xD trigger hits, which should be accepted for calibrations.
Like hadaq::TdcProcessor::SetTriggerDWindow(-10, 40);
27.10.2017
1. Try to repair data of 0xD trigger from DRICH.
2. Let analyze sub-sub hubs.
4.08.2017
1. Implement hadaq::TdcProcessor::SetChannelTotShift
It allows to directly set shifts for each channel (in nanoseconds).
Can be used if automatically ToT calibration does not work.
This shift applied in the histograms and in data, stored in output event
3.08.2017
1. Add preliminary support for ROOT6
22.05.2017
1. Bugfix - wrong memory assignment when analyzing events.
Memoru buffer was released before starting analysis.
In most cases worked, but sometime memory was reallocated and overwritten
2. Preallocate memory in output event already in constructor
18.05.2017
1. Bugfix - corrupted value of fine counter leads to analysis crash. Now checked.
2. Bugfix - also check earlier if channel id is invalid
9.03.2017
1. When configure autocalibration, one can specify value > 1e9.
In such case calibration will be executed only once.
For instance, when specify 1000100000, calibration will be produced once after 100000 hits
2. One can change number of fine-counter bins via hadaq::TdcProcessor::SetDefaults(550).
This should be done before creating any TDC processor and loading calibration files.
7.11.2016
1. Provide access to HLD event/subevent headers (without data). Like:
hadaq::HldProcessor* hld = dynamic_cast<hadaq::HldProcessor*> (base::ProcMgr::instance()->FindProc("HLD"));
hadaq::TrbProcessor* trb = hld ? hld->FindTRB(0x8000) : 0;
hadaq::TdcProcessor* tdc = hld ? hld->FindTDC(0x1340) : 0;
if (hld) printf("HLD event header %u\n", hld->GetLastEventHdr().GetSeqNr());
if (trb) printf("TRB subevent header trig:%x decoding:%x\n", trb->GetLastSubeventHdr().GetTrigNr(), trb->GetLastSubeventHdr().GetDecoding());
if (tdc) printf("TDC header/trailer messages raw %x %x\n", tdc->GetLastTdcHeader().getData(), tdc->GetLastTdcTrailer().getData());
31.08.2016
1. Provide new method of bubbles decoding. It uses same lookup table as FPGA code.
2. Also try to optimize such lookup table
25.07.2016
1. Add protection for wrong data inside HUB subevent.
If length of such data exceed HUB sub-sub event size, it will be cutted
14.03.2016
1. Support of raw chain data from TDC. In such case original chain is readout and send
in HLD subevents. Primiary analysis of bubbles and other errors are implemented
3.02.2016
1. When filling RisingRf histogram, do not use special calibration trigger 0xD
2. Introduce time shift compensation for each channel depending from temperature.
From current measurements about 5..30 ps/C could be observed.
Problem of such compensation - there is no clear 0 point. Therefore channels inside
single FPGA could be consistently shifted, but that to do with channels from different FPGA?
Let use following agreement - maximal compensation for some channel is 5 times
bigger then compensation of minimal channel. Any better idea?
2.02.2016
1. Fix small problems with TOT calibration
2. When use 0xD trigger for calibration, take into account only last hit
3. When configuring triggers mask one could enable temperature correction,
setting 0x80000000 bit in the mask.
25.01.2016
1. Use trigger mask, when assign type of events for calibration.
2. Use temperature, provided in status even. Calculate average temperature during calibration.
3. Let use measured temperature to adjust calibration function. Use scaling factor,
which should be defined separately.
17.11.2015
1. Store TDC data always in subevent - this let use different formats with go4
output event. One also can use second.C in same way with all store kinds.
2. When call ConfigureCalibration, specify trigger type as well.
16.11.2015
1. Differentiate btween raw and raw-only analysis kind. In first case one could switch
analysis to other kind, raw-only analysis remains so
2. TDC calibration called individually for each TDC, HLD or TRB processor can only
check calibration status.
3. Remove no longer used CheckAutoCalibration methods
10.11.2015
1. Simplify logic of triggered analysis. Output structures can be created already during
first buffer scan - one do not needs any artificial sync and trigger marks.
2. Create central ProcMgr::AnalyzeNewData() function, which correctly handles
new data in different situations. Use in both go4 and DABC run engines.
3. For processors, created "on-the-fly", explicitely call pre-loop methods.
4. In TDC processor use tot_shift correction for all falling edges, including storage
in output tree.
5. With Processor::SetStoreKind() one could specify different store formats.
It is extenstion of SetStoreEnabled() function, replaced with SetStoreKind(on?1:0)
6. Provide compact (SetStoreKind(2)) format for TDC data. It is MessageFloat struct with
channel id and float time stamp relative to ch0 in ns. Channel 0 is excluded.
7. Implement also double (SetStoreKind(3)) format for TDC data. It is MessageDouble
struct, using double for absolute time stamp in s. Channel 0 is included.
8. Store trigger type in HLD file - one could add more info later into HldMessage.
9. Store HLD message also in output triggered event, let filter results base on trigger type
10.Implement hadaq::HldFilter, useful when one want to store data only of special trigger.
9.11.2015
1. First steps toward automatic TRB/TDC configuration when processing HLD data.
2. When autocreate property configured, TRB and TDC created automatically.
3. One could configure defualt hist filling level for proc manager - it used for
every new created histogram.
4. Cross-processing configured automatically when reference to other TDC channel
is configured
5. Central ConfigureCalibration() method setup whole calibration. One provides
file prefix and count for automatic calibration. If count == 0, no calibration done
at all (only load files if exists). If count == -1, calibration will be written at the
end of files processing.
6. Allow to call function from ProcMgr - it could be interpreted function from
ROOT CINT or compiled function when running with DABC
7. Call function after components were created in HLD processor
8. Let configure default TDC and HUB ranges, used when auto-create option is on
9. Add enumeration of TRB and TDC processors from HldProcessor. Simplify configuration scripts.
6.11.2015
1. Show TOT shifts in special histograms.
2. When store calibrated value for falling edge in calibr message,
use 10 times larger range (50 ns insted of 5 ns). This allows to take into
account TOT shifts which are typically between 29 and 41 ns.
5.11.2015
1. First attempt to use 0xD trigger for calibration of TOT value.
Activated when 0xD trigger specified as source for calibration data.
2. Store calibrated TOT shift in the files.
3. Use calibrated TOT shift when set fine-counter value for falling edge hit.
It uses 10ps binning, while most significant bit of new fine counter
used to check overflow of the coarse-counter
3.11.2015
1. Configurable trigger type used for TDC calibration.
Either all trigger types or only specific trigger type is used.
29.10.2015
1. Introduce new message type in for the TDC - calibration.
It contains two corrected values for fine time for next two hit messages
2. Implement transformation of HLD events/subevents in the way,
that one could either replace hit messages or insert new calibration messages
3. Use such feature in recalibration module in DABC
5.10.2015
1. Correctly clear all TDC processors before each event
23.09.2015
1. If hadaq::TdcProcessor::CreateRateHisto method called,
fill hits rate histogram for that TDC
2. Let configure multiple HUBs for each TRB processor.
21.09.2015
1. Provide access to last TDC header from hadaq::TdcProcessor.
3.09.2015
1. Add RegisterObject method to register ROOT objects like canvas or graph
to the go4 framework. Such objects will be stored in the autosave file.
Method not implemented for other engines
7.07.2015
1. dabcengine is now plugin in DABC itself while DABC uses some of classes
inside TdcCalibrationModule. Keep only configuration file as example.
6.07.2015
1. Provide merging of histograms, produced in parallel by several workers.
When producing ROOT files, remove empty histograms (if any)
3.07.2015
1. In dabcengine introduce data storage in autosave file. It is binary buffer
with all histograms. In DABC special conversion utility will be introduced to
convert such file into ROOT histograms.
2. One could disable sync-message appending to each TDC buffer. This allows to
work without TDC data copying in new buffer, gives ~5% performance increase
3. Use defines for histogram filling methods. This let increase performance
of dabcengine (where build-in histogram format used) by ~40%.
2.07.2015
1. Introduce dabcengine, which allows to run code in DABC environment
Code is still experimental, data can be only accessed via web server
while application running.
2. Change internal histogram format - add underflow/overflow bins.
Let use such histogram later for better analysis.
18.02.2015
1. When loading TDC calibrations, one could specify scaling factor
(should be grater than 1). This could allow to use calibration,
measured with lower temperature for higher temperature.
Factor should be calculated with other tools
17.02.2015
1. Introduce internal histogram format for the framework. It is just plain
double arrays. Same format is used when `stream` encapsulated into DABC.
Let fill histograms very fast.
2. Provide fast methods for histogram filling without range checks and
with bin index.
3. Use FastFillH1/H2 functions in hadaq::TdcProcessor::TransformTdcData,
speed up TDC calibration by factor 4 when all histograms are filled.
4.02.2015
1. In hadaq::TrbProcessor::CheckAutoCalibration handle each TDC separately.
Return negative value when some TDCs not yet ready
2. When calibrating TDC, write value which should be subtracted from the coarse
time stamp - like original fine counter
3. Implement different modes for calibration of falling edge.
Mode can be specified by edge mask.
1 - use only rising edge
2 - edges considered fully independent
3 - falling edge uses calibration and statistic from rising edge
4 - common statistic for both edges is used
3.02.2015
1. From now one should always use full TDC ids like 0xc001.
This allow to have different IDs in same TRB
2. When calculating time-over-threshold, try to avoid fake TOT values if
leading edge was missed and several trailing edges comes one after another
3. Do not account modified hits in the calibration statistic,
allow to build full-range histogram for fine-counter histograms
4. Try to avoid dynamic_cast<TdcProcessor*> as much as possible,
while it could be very time-expensive operation
5. Provide calibration progress and status information individually for each TDC
22.01.2015
1. In hadaq::TrbProcessor::CheckAutoCalibration calculate progress information
about accumulated statistic for automatic TDC calibration.
When value >=1, calibration will be automatically performed.
19.01.2015
1. Provide extra method to calibrate data in TDC subevents
2. Rename hadaq/defines.h to hadaq/definess.h to avoid duplication with DABC
3. Provide possibility for auto-calibration for DABC-kind of work
16.01.2015
1. Fully remove ROOT dependency from libStream itself. All ROOT-specific
functionality moved into TRootProcMgr, which is compiled together with
dictionary into libStreamDict library.
2.12.2014
1. Introduce hadaq::SubProcessor which combines common functionality
of different front-ends, which can be used with Trb
2. Use it as base class for existing TdcProcessor and new AdcProcessor
3. Introduce dummy code for processing ADC data,
need to be intensively tested
12.11.2014
1. Implement user source for dat files, produced by GET4 simulation.
23.10.2014
1. Add statistic over rising/falling edges per TDC (when falling edges are enabled)
7.10.2014
1. If redtdc contains 0x70000 (like 0x7c010), than direct difference
without channel 0 will be calculated.
23.09.2014
1. Add possibility to calculate time reference between different TRBs,
before only TDC on the same TRB could be used
2.09.2014
1. Process hits not as rising and falling edges but as leading and trailing.
Means leading should be always there, trailing is optional. When trailing is
enabled (so-call edges mask bigger than 1), time-over-threshold value is calculated.
2. Provide possibility to store channel 0 value in output event. Show in example
for hades processing how it can be used.
11.07.2014
1. Add support of 32bit mode in get4::MbsProcessor.
2. Implement calibration for GET4. Calibration provides 3-4 ps better resolution.
9.07.2014
1. Add get4::MbsProcessor for debugging of Get4 with MBS readout.
Also simple example is provided.
21.05.2014
1. Add 2-D histogram in hadaq::TdcProcessor for fine counter, coarse counter and
calibrations.
29.04.2014
1. Via hadaq::HldProcessor::SetEventTypeSelect() allow to specify the only
event type id, used in the analysis.
2.04.2014
1. Allow to specify wildcard in HLD file names when starting go4. Like:
go4analysis -user '/path/file*.hld'
It is important to specify quotes around file name.
10.03.2014
1. When TDC created with CTS id, it will be used to process data from CTS header.
Andreas should test and provide code for corect location of such TDC data.
24.02.2014
1. Use TDC id as the axis label of statistic histograms
14.02.2014
1. When trigger window not specified, in triggered mode all hits will be accepted.
2. Introduce hadaq::HldProcessor, which responsible to process generic HLD data.
One can add several TRB processors to it and it delivers correct
3. Provide applications/giessen example of usage of HldProcessor.
4. Implement storage of TDC data in the tree.
For each TDC vector of extended messages are created.
27.01.2014
1. Update correspondent histograms when loading calibration from file
2. Provide example how calibration can be produced directly - calibr.C
17.01.2014
1. Use TTree directly when create storage for events data.
Of course, works only when compiled with ROOT.
2. Use full 2-byte in TDC numbering, allow to specify how id appears in the name.
3. Provide several common methods in hadaq::TrbProcessor to create TDCs
and load calibrations - make it analouge to hydra2 code.
4. Register store tree in the go4 - one could see tree structure in the browser
16.01.2014
1. Introduce EventStore class, which should be used to store events and (or)
results of events processing
2. Provide in go4engine TTreeStore, which implements ROOT TTree for the store.
In fact, TTree syntax will be used for EventStore
3. Simplify go4engine - keep only first step, remove analysis and second step.
4. Refactorize cern-gem12 and get4test applications, move complete code
into second.C script.
5. In mami-jan14 application provide example how event store can be used.
Produced tree can be directly used in go4 or ROOT.
6. Move ROOT-relevant classes to main library, later one could provide
ROOT-engine (without go4), using such classes.
7. Provide different levels of histograms filling. For hadaq::TdcProcessor
use such level to exclude complex histograms when such histograms not required.
8. Implement triggered mode, when all input data must be processed at once and flushed.
Use such mode for TRB3/TDC processing.
15.01.2014
1. Implement correct flushing of data in hadaq::TdcProcessor (via trigger time)
2. Implement three different ways to recalculate time from local to global:
interpolation, left sync marker, right sync marker. Last used for tdc
processing, where trigger time is used as sync marker.
3. Introduce EventProc class, which is base class for all kinds of
event processing. One can create many of such objects.
4. Provide example for mami-jan14 beamtime. There are two PadiwaProc and
final TestProc, which do exactely the job.
14.01.2014
1. Allow to use normal TRB3 trigger as timer marker for the events.
At the same time use trigger time for time synchronisation between TDCs.
2. Provide possibility to artificially compensate epoch counter reset by TRB3.
In sych case epoch counter will be contigious and complete logic of
stream framework can be used.
8.01.2014
1. Provide TdcProcessor::SetUseLastHit(), which allow to use last hit for ref time
calculations
3.01.2014
1. Implement double-reference also with channels from other TDCs.
12.12.2013
1. Implement conditional print when time difference to refchannel belong to
specified interval. Works only when reference channel from same TDC and
when ref channel smaller than specified. Conditions can be seen and adjusted
from the go4 gui.
6.12.2013
1. When channel 0 used as reference, try to account all hits in channel when
filling histograms.
3.12.2013
1. Calculate multiplicity of each TDC channel and accumulate in histogram.
28.11.2013
1. Always recreate histograms even when same histogram already exists.
To avoid ROOT warnings, one should delete auto-save file before starting go4.
27.11.2013
1. Suppress TDC errors after specified number of error shown (default 1000)
2. Make histogram titles more clear
3. Provide example for padiwa
4. Make double correlation histograms in TDC, provide exmaple in padiwa
5. In TDC processor create histograms only when they really needed
6. Provide method for explicit histogram creations for selected channels.
Can be used to ensure order how histograms folders are appeared in browser.
20.11.2013
1. Create 2-D histograms in TDC analysis only optionally and one can provide
range and bins number for such histograms.
2. In TDC calibration set center of bin as calibration value.
31.10.2013
1. Provide THookProc, which allows to regularly execute user code.
Plan to use with trb3tdc analysis to control stability of the TDC measurements.
Provide simple example in correspondent macro.
8.10.2013
1. In applications/trb3tdc/first.C in clear form provide hardware ids for the TDCs.
Check that all ids conform to the coding convention.
2.10.2013
1. In hadaq::TdcProcessor substract time of channel 0 when calculating difference
between two channels on different TDCs. For instance, when channel 5 on TDC 3 should
be compared whith channel 7 on TDC 9, following calculation will be done:
diff = (tdc[3].ch[5] - tdc[3].ch[0]) - (tdc[9].ch[7] - tdc[9].ch[0]);
2. Modify trb3tdc example to show how non subsequent ids can be specified.
Increase number of bins in "TdcDistr" overview histogram.
17.09.2013
1. In hadaq::TrbProcessor add identifier for HUB header. Seems to be, in some
configuration FPGA which is working as HUB can add its header (was not so before).
This header can be just ignored, while it only marks portion of data, which is
produced by HUB, but all identifiers like TDC are remained as before.
8.07.2013
1. In hadaq::TdcProcessor add possibility to create pictures with all histograms.
This is done in first.C script, where one can detect if script runs from the go4.
In this case one can get access to histograms from TdcProcessor and create pictures
with that histograms. Example in applications/trb3tdc/first.C file.
13.06.2013
1. Implement work-around for callculating references between TRB3 TDC channels from
different TDCs. Normally such analysis should be implemented in second stept,
but now do it at the level of TrbProcessor at the end of event unpacking.
10.06.2013
1. Add support of the 32-bit Get4 readout.
For the moment it is done via SYS messages.
No any special configuration needed. Not yet tested.
10.05.2013
1. Unified HADAQ structures between DABC and Stream analysis.
Idea to use as much as possible common code in both frameworks.
2. Use hadaq::HldFile from DABC for user source.
19.04.2013
1. Fix several problems with hld files usage. Mainly problem was due to 8-bytes padding
of hadaq events/subevents, which was not takes into account. In DABC similar code was
implemented correctly from beginning.
12.04.2013
1. Provide user source for hld files. Later one could extend it to any other user sources,
mainly for different files formats.
2. Strange results with UDP generators - show wrong alignment of subevents. Must
be checked with real TRB3 data.
19.03.2013
1. Analyze fine counter of TDC hit message if it was missed hit or counter out of allowed
range. Let configure subevents ID for CTS and TDC.
18.03.2013
1. Implement nxyter ADC baseline compensation, using old text files. Can be used for beamtime
analysis. Implementing of baseline measurement should be done.
2. Fix several problems in cern-oct12 analysis, where NXYTER and FPGA TDC should be
correctly synchronized.
14.03.2013
1. Provide automatic calibration mode for FPGA TDC, allow to process only rising or only
falling edges. Optimize internal data structures and performance.
13.03.2013
1. Add new application for FPGA TDC testing on TRB3.
First provide possibility for raw printout of the data.
2. Fill different per-channel raw histograms for FPGA TDC (of course, optionally)
3. Implement manual calibration mode for FPGA TDC. Manual means one could generate calibration
once (in form of binary file) and than reuse it for analysis of other data
4. Allow to disable some TDC channels, also allow to disable calibration of some channels
12.02.2013
1) Add possibility to switch on/off histogram filling
2) Copy and modify Queue and RecordsQueue classes from DABC.
They allow to allocate and use fixed-space queue for complex
data types.
3) Replacement of std::vectors by Queue class gave significant
improvement in get4test, where long markers queue (~2000 items) are used.
Each vector::erase() operation is too expensive, where Queue::pop()
does mostly nothing.
4) As last change, RecordsQueue used for buffers queue.
Probably not important for performance, but unified all queues.
8.02.2013
1) Support of raw data format for Get4 and nXYTER. Simple modification, while
complete analysis does not depends on position of SYNC messages in the buffers
2) Introducing OpticSplitter, which is required to split data after raw
optic readout. In this case ABB put messages from all ROCs in one data stream.
17.01.2013
1) In GET4 analysis treat correctly rising and falling edges.
2) Make correct calculations of signal width in get4test
3) Add leading edge difference to next channel in get4test
4) Add possibility to ignore 250MHz times in get4 processor
to avoid problems with unsynchronized clocks
21.12.2012
1) Shift all time stamp classes into base/TimeStamp.h file
2) Change NX and GET4 timing concept in messages/iterators/processors
Now everywhere LocalStampConverter is used to convert timestamps
to local time in seconds. Change to seconds have consequence in
most places - time conditions, safety margins and some other constants
have been changed.
3) Really separate functionality of nx::Message/Iterator and
get4::Message/Iterator classes.
4) Change hadaq::TdcIterator and hadaq::TdcProcessor to use
LocalStampConverter class and seconds as time units.
5) In mbs::Processor use LocalStampConverter just to emulate time scale.
Every sync is just new second and LocalStampConverter prevents wrap
of such artificial time scale
20.12.2012
1) Use only valid syncs for synchronization - in case of TRB some SYNCs are dropped
while one could not extract time stamp for them.
2) Take into account that hits from TDC channels are not sorted and
therefore event closing should be done by mean of channel 0 time - channel 0 is
always with bigger time stamp.
3) Account event multiplicity direct in TestHitTime() method - anyway it is just
informational value.
4) Event data for FPGA TDC
5) Define base::SubEvent::Sort() method for time sorting, implement in all subclasses
6) Declare template classes - base::MessageExt and base::SubEventExt.
Many common and special virtual methods defined - like message access or Sort() or Clear().
Event and message structures for NX, GET4 and TDC now based on such template classes
7) Introduce templated method base::StreamProc::AddMessage, which uses
event/message class as parameter to add hit to specific subevent
8) Simple mbs::Processor and empty mbs::SubEvent classes.
For the moment specialized for cern-oct12 beamtime, later one could
think about more generic way to integrate MBS data in such framework
9) Introduce base::LocalStampConverter which should help to convert local stamps
to double value, taking into account all possible wraps. Class should be
used in all places where so-called local time is produced. Such local time
will not wrap any longer and more smart calibration could be used for the
local/global time calculations.
19.12.2012
1) First try of synchronization with processor/subprocessor approach.
Problem here that SYNC number registered by TRB3 itself,
while SYNC time is recorded by every TDC individually.
In such case TrbProcessor just split raw data between TdcProcessor's.
If found, SYNC messages placed in begin of raw data.
2) RawScan mode introduced in StreamProc class.
It indicates, than only raw data scan is performed - no any output data should
be expected from such processor. Such mode required for TrbProcessor which works
just like splitter.
3) If error found in the buffer (FirstBufferScan() returns false),
buffer will be ignored in all consequent stages.
18.12.2012
1) Introduce TdcMessage and TdcIterator classes. These are basic classes
for navigation via FPGA-TDC raw data.
17.12.2012
1) Preliminary HADAQ code - only raw data scan at the moment
2) Distribute code between TrbProcessor and TdcProcessor.
3) TrbProcessor navigates over TRB events-subevents and CTS data,
4) TdcProcessor is special treatment of data from FPGA-TDC.
It is sub-sub-processor relative to central manager. It is done while
for each TDC time synchronization should be performed separately.
5) One can only see statistic over TDC channels, next step is TdcHit and TdcEvent
structures
14.12.2012
1) Avoid local-trigger duplication or very close distance between them.
Is a case with corrupted GET4 data. Now one can set minimal margin between
two consequent events. Implemented for both GET4 and NX.
2) In get4test create summary histogram to see which channels have problems
3) Ensure that cern-gem12 analysis works without SYNC usage.
Data flushing was activated for such case. Results histograms are the same.
4) Implement cern-gem12 code.
13.12.2012
1) Create message and iterator classes for nx and get4 analysis.
These were last connection to ROClib. Therefore from this point:
2) Move further development from ROClib to go4/app repository.
Main motivation - there are parts which could be interesting not only for CBM/ROC users.
3) Rename to "stream" project. Name will probably change, but main idea -
it is flexible stream-based analysis.
4) Reorganize folder structure. Separate framework, go4engine and application.
Introduce project-wide build rules and Makefiles.
5) In get4test application make analysis of selected hits.
First produce only widths. Cleanup code of basic get4::Processor class.
Implement printing for get4, handle it via central SysCoreProc class
12.12.2012
1) Reorganize libraries and code in newmonitor - introduce second step in analysis chain.
At the moment this step will be go4-based code, one could make later same logic as with
first step. Major difference to first step that in second step events are already defined
and one do not require any complex queueing of input data.
Second step also should be reinitialized via separate macro - named second.C.
There all sub-processors should be instantiated.
2) Introduce skeleton for get4test code, based on two-step approach.
3) Introduce SysCoreProc class, which should be base for all kind of ROC-based analysis.
Aim not to introduce common message loop (as in very first go4monitor) but
rather common structures and histograms.
4) Add possibility to skip time synchronization for some streams. It is
useful when the only stream is used or when streams synchronized anyway,
like in optic case.
5) Add possibility to define regions-of-interests in get4 based on some ref channel.
For a now primitive (only single channel), later one could apply trigger-like
logic to several Get4 channels (like in GSI beamtime nov-2012).
Very preliminary, seems to be work with latest test data.
11.12.2012
First step to non-synchronized data streams. Any number of SYNCs can be
produced now, simple algorithm looks for the same SYNC id to set global
times and introduce time calibrations. Works with run87 of CERN/SPS beamtime.
Fix problem with time uncertainty parameter for NX processing.
Implement two-dimensional histograms. Add such in NX processing.
One need to make histogram filling optional - can take significant amount of time.
Without filling current NX code works 2x times faster
10.12.2012
One another method for last-epoch correction.
While main problem is CERN/SPS beamtime, make heuristic for exactly
this data. Seems to be, MSB bits gives us the best possibility for selection.
With some other checks 99.5% of corrupted data can be repaired.
Rest are other errors (next-epoch problem or wrong bits is time stamp)
do not have any chance to be correctly fixed. My estimation gives
about 0.1% of such nasty messages.
7.12.2012
Add reference channel for simple reference calculations
in GET4 processor.
Add second level for histogram prefixes like ROC0/GET4_2/Ch2
3.12.2012
First test with running GET4 v1.0 setup.
Implement several basic histograms for GET4.
30.11.2012
Attempt to implement last-epoch bit correction, many other side-effects are discovered
with nXYTER/Optic readout, especially for CERN/SPS 2012 beamtime. Many open questions
are remained. Allow to specify initialization script name - like setup_get4.C or
setup_cern_oct12.C. Calling arguments are:
go4analysis -file file.lmd -args setup_get4.C
Primary classes for GET4 analysis.
Possibility of raw analysis only.
29.11.2012
Define trigger marker as time interval - first step direction Region-of-Interest
concept. Later one could not only select events, but rather intervals which are
than delivered to next steps. As next iteration, forwarding of complete data stream
with regular time intervals (like 1 ms) should be implemented.
Message time sorting is implemented.
28.11.2012
Master time now can be assigned, by default processor with trigger source is used.
Flush trigger is implemented, it allows to avoid situation when many data without
trigger must be accumulated in the queues. Flush trigger generated about once
per buffer in master processor. cern-gem12 starts to look very reasonable. As next
step, normal region-of-interest selection should be implemented, no-trigger-mode and
configurable message sorting.
27.11.2012
First test with cern-gem12 data, where aux2 on ROC4 was used as trigger.
One need to implement special kind of "flush" trigger when no reference signals
for long time to avoid over-fill of all queues. Anyhow, first reasonable results!
27.11.2012
Introduce simple typedefs for GlobalStamp_t and LocalStamp_t
Provide local/global time for each buffer, liner interpolation of
time between two sync markers, helper index to locate faster region
between two syncs.
27.11.2012
Remove user source class from go4wrapper.
Now event production works inside normal processor of the first
step and one can normally configure it with all available go4 sources.
Many input events can be queued internally, many output events can
be produced via SetKeepInputEvent() logic.
Thus N->M problematic is fully implemented!
27.11.2012
Change to the two-scan algorithm. Exactly two full scan of data are required.
This simplifies logic how all kind of intermediate data can be processed.
As consequence, many events can be produced by scan of next buffer.
Each processor fills its own subevent, which are than collected together in
common event.
Provide Event and SubEvent classes. Implement event building.
Code shows reasonable results with ROC data from CERN beamtime.
26.11.2012
Group all new classes in one directory and one library
23.11.2012
First checkin in repository
21.11.2012
Start of project, first line of code