root-project / root

The official repository for ROOT: analyzing, storing and visualizing big data, scientifically
https://root.cern
Other
2.63k stars 1.26k forks source link

should fLogger be persistant ? #9792

Closed couet closed 3 months ago

couet commented 2 years ago

In TMVA code the fLogger data member appears in several classes. Sometimes it is persistant ( a ! in the online comment) and sometimes it is not. Making a "log message" persistant sounds a bit weird ... But may be it should be ? ... at least the current code is not consistent:

tmva/inc/TMVA/ClassInfo.h:      mutable MsgLogger* fLogger;           //! message logger
tmva/inc/TMVA/Config.h:      mutable MsgLogger* fLogger;                 // message logger
tmva/inc/TMVA/Configurable.h:      mutable MsgLogger* fLogger;                     //! message logger
tmva/inc/TMVA/DataInputHandler.h:      mutable MsgLogger*                                 fLogger;            //! message logger
tmva/inc/TMVA/DataSet.h:      mutable MsgLogger*         fLogger;                      //! message logger
tmva/inc/TMVA/DataSetFactory.h:      MsgLogger*                 fLogger;          //! message logger
tmva/inc/TMVA/DataSetInfo.h:      mutable MsgLogger*         fLogger;            //! message logger
tmva/inc/TMVA/DataSetManager.h:      MsgLogger*                 fLogger;   //! message logger
tmva/inc/TMVA/ExpectedErrorPruneTool.h:      mutable MsgLogger* fLogger;   // message logger
tmva/inc/TMVA/FitterBase.h:      mutable MsgLogger*                  fLogger;       // message logger
tmva/inc/TMVA/GeneticAlgorithm.h:      mutable MsgLogger* fLogger;         // message logger
tmva/inc/TMVA/GeneticPopulation.h:      mutable MsgLogger* fLogger;   // message logger
tmva/inc/TMVA/KDEKernel.h:      mutable MsgLogger* fLogger;   // message logger
tmva/inc/TMVA/LDA.h:      mutable MsgLogger *fLogger;                  // message logging service
tmva/inc/TMVA/ModulekNN.h:         mutable MsgLogger* fLogger;   // message logger
tmva/inc/TMVA/OptimizeConfigParameters.h:      mutable MsgLogger*         fLogger;   // message logger
tmva/inc/TMVA/PDEFoam.h:      mutable MsgLogger* fLogger;                     //! message logger
tmva/inc/TMVA/PDEFoamDensityBase.h:         mutable MsgLogger *fLogger; //! message logger
tmva/inc/TMVA/PDEFoamKernelBase.h:      mutable MsgLogger* fLogger;  //! message logger
tmva/inc/TMVA/PDF.h:      mutable MsgLogger*       fLogger;               //! message logger
tmva/inc/TMVA/ROCCalc.h:      mutable MsgLogger* fLogger;   //! message logger
tmva/inc/TMVA/ROCCurve.h:   mutable MsgLogger *fLogger; //! message logger
tmva/inc/TMVA/Ranking.h:      mutable MsgLogger*      fLogger;                   //! message logger
tmva/inc/TMVA/Reader.h:      mutable MsgLogger* fLogger;   // message logger
tmva/inc/TMVA/Results.h:      mutable MsgLogger*           fLogger;      //! message logger
tmva/inc/TMVA/ResultsClassification.h:      mutable MsgLogger*      fLogger;      //! message logger
tmva/inc/TMVA/ResultsMulticlass.h:      mutable MsgLogger* fLogger;                                            //! message logger
tmva/inc/TMVA/ResultsRegression.h:      mutable MsgLogger* fLogger;                                     //! message logger
tmva/inc/TMVA/RootFinder.h:      mutable MsgLogger* fLogger;   //! message logger
tmva/inc/TMVA/Rule.h:      mutable MsgLogger*   fLogger;        //! message logger
tmva/inc/TMVA/RuleCut.h:      mutable MsgLogger*    fLogger;   // message logger
tmva/inc/TMVA/RuleEnsemble.h:      mutable MsgLogger*            fLogger;            //! message logger
tmva/inc/TMVA/RuleFit.h:      mutable MsgLogger*                  fLogger;   // message logger
tmva/inc/TMVA/RuleFitAPI.h:      mutable MsgLogger    fLogger;      // message logger
tmva/inc/TMVA/RuleFitParams.h:      mutable MsgLogger*    fLogger;         //! message logger
tmva/inc/TMVA/SVKernelMatrix.h:      mutable MsgLogger* fLogger;                     //! message logger
tmva/inc/TMVA/SVWorkingSet.h:      mutable MsgLogger*          fLogger;      //! message logger
tmva/inc/TMVA/SimulatedAnnealing.h:      mutable MsgLogger*            fLogger;   // message logger
tmva/inc/TMVA/TActivationChooser.h:      mutable MsgLogger* fLogger;                     //! message logger
tmva/inc/TMVA/TransformationHandler.h:      mutable MsgLogger*    fLogger;             //! message logger
tmva/inc/TMVA/Types.h:      mutable MsgLogger* fLogger;   // message logger
tmva/inc/TMVA/VarTransformHandler.h:      mutable MsgLogger* fLogger;             //! message logger
tmva/inc/TMVA/VariableTransformBase.h:      mutable MsgLogger* fLogger;                     //! message logger
couet commented 2 years ago

@lmoneta : what should we do with that one ? I can modify the code in a way or an other and make a PR, but you should tell me what to do ( ! or not !). Or we can ignore this issue and I close it.

pcanal commented 2 years ago

Sometimes it is persistant ( a ! in the online comment)

Some correction, the ! means transient :) (i.e. most of them are correctly marked as not persistent) and some seems to have already been corrected.

dpiparo commented 7 months ago

These need to be corrected (///<! instead of ///<):

tmva//tmva/inc/TMVA/RuleFitAPI.h:193:      mutable MsgLogger    fLogger;      ///< message logger
tmva//tmva/inc/TMVA/Reader.h:161:      mutable MsgLogger* fLogger;   ///< message logger
tmva//tmva/inc/TMVA/Config.h:145:      mutable MsgLogger* fLogger;                 ///< message logger
tmva//tmva/inc/TMVA/Types.h:181:      mutable MsgLogger* fLogger;   ///< message logger
tmva//tmva/inc/TMVA/KDEKernel.h:88:      mutable MsgLogger* fLogger;       ///< message logger
tmva//tmva/inc/TMVA/PDEFoamKernelBase.h:44:      mutable MsgLogger* fLogger;  //! message logger
tmva//tmva/inc/TMVA/QuickMVAProbEstimator.h:37:      mutable MsgLogger*    fLogger;
tmva//tmva/inc/TMVA/OptimizeConfigParameters.h:97:      mutable MsgLogger*         fLogger;   ///< message logger
tmva//tmva/inc/TMVA/LDA.h:78:      mutable MsgLogger *fLogger;                  ///< message logging service
tmva//tmva/inc/TMVA/FitterBase.h:88:      mutable MsgLogger*                  fLogger;       // message logger
tmva//tmva/inc/TMVA/ModulekNN.h:163:         mutable MsgLogger* fLogger;   // message logger
tmva//tmva/inc/TMVA/Timer.h:96:      mutable MsgLogger*   fLogger;     ///< the output logger
tmva//tmva/inc/TMVA/RuleFit.h:173:      mutable MsgLogger*                  fLogger;   ///< message logger
tmva//tmva/inc/TMVA/Tools.h:227:      mutable MsgLogger*    fLogger;
tmva//tmva/inc/TMVA/RuleCut.h:97:      mutable MsgLogger*    fLogger;   // message logger
tmva//tmva/inc/TMVA/ExpectedErrorPruneTool.h:77:      mutable MsgLogger* fLogger;   ///< message logger
tmva//tmva/inc/TMVA/ROCCalc.h:77:      mutable MsgLogger* fLogger;   //! message logger
tmva//tmva/inc/TMVA/CostComplexityPruneTool.h:86:      mutable MsgLogger* fLogger; //! output stream to save logging information
tmva//tmva/inc/TMVA/GeneticAlgorithm.h:101:      mutable MsgLogger* fLogger;         // message logger
tmva//tmva/inc/TMVA/VarTransformHandler.h:48:      mutable MsgLogger* fLogger;             //! message logger
tmva//tmva/inc/TMVA/SimulatedAnnealing.h:118:      mutable MsgLogger*            fLogger;   ///< message logger
tmva//tmva/inc/TMVA/GeneticPopulation.h:99:      mutable MsgLogger* fLogger;   ///< message logger
lmoneta commented 3 months ago

These classes are normally never stored in a file, but in case somebody does, there is no reason to store also the MsgLogger, so we can assume that is a transient data member in all cases