Paul Dauncey - Outcome of the EMT software review 19/11/01 ========================================================== Under each category, there is my opinion on a prioritised list of tasks. GENERAL: 1) Need to organise package coordinators and announcing tags to go into releases better. Review the package coordinators and centralise the announcements through one person. 2) Remove L1EmtConfigTools from the online releases and, when ready, add L1EmtDiagnostics. 3) Have more L1EmtTools for offline main programs. This is particularly important for L1EmtOnlineTools and L1EmtCalOnlineTools where we do not want to clutter the libraries with mains. The former would contain stand-alone code to read and write XTC and flat files so as to inspect the configuration data in them. The latter would do the same for calibration cycle TC's. There may be other applications. 4) Generally move files to the correct packages; some specific examples are given below. ONLINE AND CALIBRATION: 1) Clarify exactly whether the Ax mask is set via a flat file or not. If so, fix this so that the database keeps a correct record of what was used. 2) Get the background/spy task working reliably and put into regular and standard use at IR-2. 3) Clear up the old XTC files used for reverse dataflow and the library and links areas used for both IR-2 and the teststand. Have a central default version of the startup file which is used for both IR-2 and the teststand; should this be in online_releases using cvs? 4) Make sure errors are reported, to cerr or elsewhere. A specific example is any error found in the beginRun readback of configuration data needs to be reported. 5) Remove all use of assert and change to using cout and/or cerr. As these both go to the same log file, ensure cerr is distinguished so as to be able to spot errors easily. 6) Understand, clean up and document the useful calibration types. 7) The frameclash calibration run does not vary the synchDelay parameter. Ideally, this would do both the EMC and the GLT interface timing in the same calibration run. Note; changing synchDelay will change our overall timing wrt the rest of BaBar and hence give synch requests from ODF. These will need to be disabled for such a run. 8) Make L1EmtDiagnostics up-to-date and useful. Move many files from other packages to here; a specific example is L1EmtCalOdf/TestEmtCycles. 9) Move L1EmtOdf/TrgConfig to somewhere else; L1EmtCalOdf? Also, where should L1EmtOdf/L1EmtSoakTestAction live? CONFIGURATION: 1) Organise L1EmtEnv and L1EmtConfig so as to have a clear demarkation of which does what; remove one if it is sensible. Split L1EmtConfig into a transient and persistent class package. 2) Investigate the implications for schema migration in Objy for the L1EmtXxxRawDataP classes. 3) Make all configuration L1EmtXxxRawData classes purely two-byte structures for use on different endian machines. Also, be consistent in using the Objy-usable d_UShort, etc., basic types throughout. 4) Remove any dependencies on L1EmtXxxRawData outside of L1EmtXxx. This means all copies of the data and friends of L1EmtXxxRawData. This will require rewriting the configuration TC's, transient and persistent configuration classes. Should/could the L1EmtXxxRawData classes be the transient classes? 5) Make the TC, transient and persistent classes store ten copies of L1EmtFcxRawData and L1EmtFxRawData. 6) Move files to correct packages; a specific example is the XTC decoder programs in L1EmtConfigTools, which should move to L1EmtOnlineTools. 7) Make TC, transient and persistent classes for front-end and back-end playback data. OFFLINE AND MONITORING: 1) Investigate the implications for schema migration in Objy for the L1EmtErrorDigiP classes. 2) Add any errors found during the L1EmtTCtoDigi conversion to L1EmtErrorDigi. 3) Leave the full CSER in L1EmtErrorDigi; add the D-link headers? 4) Add more histograms for automatic comparison to FastMonAuto. 5) Bring the L1EmtErrorDigiP in line with L1EmtErrorDigi. 6) Use the L1EmtErrorDigi in L1EmtDigiToTC. 7) Should L1EmtTCModule not be a module but a class? SIMULATION: 1) Get the most up-to-date version of the simulation into the production. 2) Make the use of L1EmtSpyModel and the standard simulation consistent; possibly merge them and/or remove one. Ensure the same simulation code is used offline and in the online background task. 3) Use L1EmtFcxRawData configuration data in the simulation. This is needed to calcuate the constant part of the value of the bxATFirstSample's, i.e. the difference between the readDelay and the relevant data delay. (N.B. Check the units of this in the simulation.) 4) Use L1EmtFxRawData configuration data in the simulation. This is needed to further limit the amount of data written to the L1EmtGltDigi and L1EmtPhiDigi objects, as may be done in future for real data. 5) Some documentation on how to run the (EMT part of the?) simulation and use the EMT output, so that a non-expert can work with it, would be useful.