Project

General

Profile

Actions

Sim-Development #1541

closed

Sim-Development #1536: Remove all inheritance from digi classes

Adapt digi consumer classes to handle digis without baseclass CbmDigi

Added by Volker Friese over 2 years ago. Updated over 2 years ago.

Status:
Closed
Priority:
Normal
Assignee:
Target version:
Start date:
02/21/2020
Due date:
02/27/2020
% Done:

100%

Estimated time:
20.00 h
Spent time:

Related issues

Related to Simulation - Sim-Development #1540: Remove inheritance of CbmDigi from TObjectClosedVolker Friese03/05/202003/06/2020

Actions
Precedes Simulation - Sim-Development #1542: Remove inheritance of digi classes from CbmDigiClosedVolker Friese02/28/202003/02/2020

Actions
Actions #1

Updated by Volker Friese over 2 years ago

Actions #2

Updated by Volker Friese over 2 years ago

Actions #3

Updated by Volker Friese over 2 years ago

  • Status changed from Assigned to In Progress
  • Assignee changed from Volker Friese to Pierre-Alain Loizeau
  • % Done changed from 0 to 20

The usage of the base class CbmDigi must be removed. In a few cases, this could be trivially done by avoiding an upwards cast (see r15783).

A more involved problem is classes that use CbmTbDaqBuffer, which seems to be a copy of the now deprecated CbmDaqBuffer. These are:
  • beamtime/CbmSourceLmd
  • beamtime/unpacker/CbmROCUnpackSts
  • beamtime/unpacker/CbmROCUnpackMuch
  • fles/cern2016/unpacker/CbmTSUnpackMuch
  • fles/cern2016/unpacker/CbmTSUnpackTof
  • fles/star2018/unpacker/CbmUnpackTofStar2018
  • MQ/unpacker/CbmDeviceUnpackTofMcbm2018
And in two cases, removal of the usage of CbmDigi is more involved, but not because of using CbmTbDaqBuffer:
  • fles/mcbm2018/tasks/CbmCheckTiming
  • fles/mcbm2018/tasks/CbmMcbm2018CheckPulser

Before taking action, I would like to inquire which of these classes are obsolete, in order not to waste work.

Actions #4

Updated by Pierre-Alain Loizeau over 2 years ago

Deprecated for sure:
  • beamtime/CbmSourceLmd (or maybe still used by Christian Simon for TRB data)
  • beamtime/unpacker/CbmROCUnpackSts
  • beamtime/unpacker/CbmROCUnpackMuch
Dependent on use by TOF group, probably deprecated:
  • fles/cern2016/unpacker/CbmTSUnpackMuch
  • fles/cern2016/unpacker/CbmTSUnpackTof
Code for STAR last year, probably deprecated:
  • fles/star2018/unpacker/CbmUnpackTofStar2018
Norbert MQ:
  • MQ/unpacker/CbmDeviceUnpackTofMcbm2018
Still in use and requiring code duplication in case of simple base class drop:
  • fles/mcbm2018/tasks/CbmCheckTiming
  • fles/mcbm2018/tasks/CbmMcbm2018CheckPulser
    => Would work with a templated function maybe?

I cannot add Norbert as watcher, could you do it?

Actions #5

Updated by Volker Friese over 2 years ago

  • Assignee changed from Pierre-Alain Loizeau to Volker Friese

Both

fles/mcbm2018/tasks/CbmCheckTiming
fles/mcbm2018/tasks/CbmMcbm2018CheckPulser

can, I think, be rather easily adapted. There are switches for detector ID anyhow in the code, the cast to CbmDigi can be moved into that, thus avoiding using a base class pointer.

Actions #6

Updated by Volker Friese over 2 years ago

  • % Done changed from 20 to 70
Actions #7

Updated by Volker Friese over 2 years ago

I have removed the inheritance from CbmDigi for MVD, STS, RICH, MUCH and PSD so far. In the process I have noticed that in some classes (CbmCheckTiming, CbmMcbm2018CheckPulser), the virtual method CbmDigi::GetCharge() was used, Since this method was not implemented in RichDigi, MuchDigi and PsdDigi, it always returned zero (implementation in base class). I hope Pierre-Alain was aware of that. I have implemented these methods now directly in the respective digi classes, again with zero return value.

Actions #8

Updated by Volker Friese over 2 years ago

  • % Done changed from 70 to 80

With r15813, all digi classes used in simulation do not derive from CbmDigi any more (still from TObject, that will be the next step).

To be adjusted (use CbmDigiManager) are still:
  • run/CbmBuildEventsIdeal
  • littrack/cbm/qa/clustering/CbmLitClusteringQA
  • fles/mcbm2018/tasks/CbmCheckEvents
I have taken the following classes out of the build:
  • beamtime/CbmSourceLmd
  • beamtime/unpacker/CbmROCUnpackSts
  • beamtime/unpacker/CbmROCUnpackMuch
  • fles/cern2016/unpacker/CbmTSUnpackMuch
  • fles/cern2016/unpacker/CbmTSUnpackTof
  • fles/star2018/CbmUnpackTofStar2018

and the directory MQ/unpacker.
If some of these are still needed, some work has to be invested. Otherwise, I suggest to remove all these classes.

There are other digi classes still deriving from CbmDigi:
  • much/CbmMuchStrawDigi
  • psd/CbmPsdDigiMcbm
  • core/data/beamtime/CbmAuxDigi
  • core/data/beamtime/fhodo/CbmFiberHodoDigi
  • core/data/beamtime/CbmTbEvent

which have to be attended to (if still needed) before the base class CbmDigi can be removed.

Actions #9

Updated by Volker Friese over 2 years ago

  • % Done changed from 80 to 90
To be adjusted (use CbmDigiManager) are still:
  • run/CbmBuildEventsIdeal
  • littrack/cbm/qa/clustering/CbmLitClusteringQA
  • fles/mcbm2018/tasks/CbmCheckEvents

Are all done by now.

There are other digi classes still deriving from CbmDigi:
  • much/CbmMuchStrawDigi

Will be removed (notice from V. Singhal)

  • psd/CbmPsdDigiMcbm

Is unified with CbmPsdDigi (r15834)

  • core/data/beamtime/CbmAuxDigi
  • core/data/beamtime/fhodo/CbmFiberHodoDigi
  • core/data/beamtime/CbmTbEvent

CbmDigi inheritance was removed (still derive from TObject, but no harm in that).

Actions #10

Updated by Volker Friese over 2 years ago

  • Status changed from In Progress to Closed
  • % Done changed from 90 to 100

Target met, issue can be closed.

Actions

Also available in: Atom PDF