Draft: CbmTrdModuleRecR cleanup discussions.
With this draft MR, I wanted to bring my current personal version of CbmTrdModuleRecR::BuildCluster()
to your attention. It reproduces the original version but is a bit more concise in my opinion. Unfortunately, it is still too slow. I takes up to two seconds to process one timeslice of data from the 2457 run. Suggestions for additional improvements are appreciated.
Again, this is not meant to be merged into the offline version of the code. It is precursor work for a new class.
Merge request reports
Activity
requested review from @a.bercuci
assigned to @d.smith
I observed the following: The
while(true)
loop only executes a single iteration in the vast majority of cases, meaning the inner loop over all digis is only done once, but on occasion it gets stuck and produces 20+ inner loops, which is probably what is slowing down the code. I guess this is what is called "monster events"?Interstingly, this is not caused by the row merging. In fact, the same effect is observed with
rowmerge=false
and the runtime isn't even that much shorter.You mean to separate between self and neighbor triggers ? If yes this looks like a major development which probably should be coupled with the cluster shape that we have discussed here !1605 (comment 39289)
@p.kaehler maybe we should discuss it during our TRD meeting ? I know @d.smith is not a fun of meetings :) but maybe he can also join !?
@a.bercuci I can perhaps attend your meeting next week. I have one other idea that I wanted to try, that might speed up this code.
@a.bercuci A short question: is the return value of
digi->GetAddressChannel()
always a number in the range [0,nRows*nCols)? I.e. is the channel drawn from a consequtive set of numbers?