#------------------------------------------------------------------------
# ToDo.txt
# Andreas Suter, 2007/11/28
# $Id$
#------------------------------------------------------------------------

---------------------
short term:
---------------------

* dump data and theory after fit (ascii/root): **DONE** for now
    done for ascii/root asymmetry && single histo: all the rest is missing
* migrate all typedef's and defines -> PMusr.h **DONE**

* Since rootcint cannot handle the spirit include files I will try to remove all the
  root dictionary related stuff since almost for sure, nobody will use the classes
  from the cint interpreter level 2007/12/27 **DONE**

* begin with the implementation of the FUNCTIONS block
  using the spirit parser framework **DONE**

* 2007/12/30: implement functions in PTheory **DONE** 08-01-02

* 2008/01/02: nice function block output needed. **DONE** 08-01-02

* write a little standalone program which is converting the old msr-files to 
  the new ones. **DONE** 08-01-04

* implement max.likelihood fits **DONE** 08-02-06 (for Single Histo only.
  For the others not clear how to do it.)

* fix problems in FUNCTIONS of the form (sin(par1)) **DONE** 08-02-18

* fix output problems of the mlog files **DONE** 08-02-22

* if a parameter is not used at all, minuit is still varying it!! This is stupid.
  Check the minuit manual, there must be a function to "remove" these parameters,
  i.e. forcing minuit to ignore them. checked the manual: use fix() (see p.31)
  **DONE** 08-03-10

* implement table based theory functions (LF stuff)
  static GKT LF **DONE** 08-03-12

* setup startup handler with infos like: data path, symbol list, color list, ...
  **DONE** 08-04-04

* at the moment that startup handler is looked for in the directory where musrfit/musrview
  is executed, this is stupid. Define a place where to look for it.
  **DONE** 08-04-08

* do I need to cleanup AddText() objects from TPaveText etc myself? -> YES **DONE** 08-04-17

* need a CLEAN concept for handling data/theory generation for kView!! **DONE** 08-04-17

* something is strange with the coordinate system in TPaveText! **CHECK**

* something is wrong with lifetimecorrection plot of musrview (up shifted data) **FIXED** 08-05-16

* implement access to user-function, i.e. functions not
  defined within musrfit, using the ROOT dictionary feature
  to look for them and use them. 
  **DONE**

* tshift implementation under way. Wrong and needs to be fixed: 
  **FIXED** 08-06-16

* faulty dependency check in the Makefile when handling the PSI-Bin-Class stuff.
  Needs to be fixed! **FIXED** 08-06-16

* implement NonMuSR stuff **DONE** 08-06-20, some more testing needed

* nonMusr: db-file format should be added. That this is going to work, in the 
           RUN block part, a new entry is needed, namely
           xy-data. Indices or label are used to pick to proper data
           from the db-file.
           xy-data T asym <- labels
           or
           xy-data 3 6    <- indices
  **DONE** 08-08-08

* Minuit2: name length is now unlimited and hence the 10 char restriction can be lifted.
  **DONE** 08-08-08

* musrfit: switch "--keep-output-mn2" and "-k" needed. It will rename the MINUIT2.OUTPUT and 
  MINUIT2.root files to fln-mn2.output and fln-mn2.root.
  This is sometimes nice to have.
  **DONE** 08-09-01

* PFitter.cpp: the value of the parabolic error in the MINUIT2.OUTPUT is wrong (only MIGRAD is
  called and neither HESSE nor MINOS). Suspect the problem in the ExecuteSave() routine.
  Needs to be checked.
  **DONE** 08-09-01

* PFitter.cpp: implement HESSE
  **DONE** 08-09-01

* implement the handling for single side limited boundaries for parameters which is 
  possible in MINUIT2
  syntax would be:
  0.0 100.0  // lower and upper limit
  0.0 none   // lower limit only
  none 100.0 // upper limit only
  **FIRST IMPLEMENTATION DONE, NEEDS EXTENSIVE TESTING** 08-09-23

* CHECK: the normalization for single histo fits should ALWAYS be (1/ns)! (as discussed with Dima) but
  I guess it is (1/bin) at the moment. (1/ns) has the advantage that it is really instrument independent!
  **CHECKED AND FIXED** 08-11-12

* implement FFT with msr-interface
  **DONE** 2009-01

* implement dynamic LF-KT by using the integral equation representation (Volterra Eq) and an optimzed
  implementation of the gauss * sine integral
  **START** 2009-01-13

---------------------
intermediate term:
---------------------

* start writing docu, i.e. transferring WKM doc from German -> English and
  describe new features with examples!
* introduce error numbers with corresponding docu/explanation in the latex-docu.  
* implement RRF stuff

---------------------
long term:
---------------------

* implement ROOT based wkmview, i.e. all the graphical stuff needed
  including event handler, etc.
* switch from make to cmake
* add the possibility for cuts to db-files
* add the possibility for variable transformations to db-files

---------------------
bugs:
---------------------
* when having multiple plots: closing some of the plots and finally pressing 'q' will lead to a crash
  since root already eliminated the closed canvas plot.

---------------------
problems:
---------------------
* rootcint cannot handle spirit framework includes, hence FUNCTIONS related stuff cannot be included
  into a root dictionary.

---------------------
fixes:
---------------------
* Needed to change some part of the Minuit2 source code, otherwise I got a strange linker error message.
  In MnMinos.h the constructors (3 overloaded versions) are defined implicitly. When linking against libPMusr.so
  which is using libMinuit2Base.so, I got the error message from the linker that is cannot find the reference
  to the second constructor. When transferring the implicit definition from the header file to the cxx, the
  problem was gone. Since to fiddle in the Minuit2 source code directly is ugly, I should look for a way to
  build libPMusr.so which doesn't have this problem.
  
  -> This problem has been resolved cleanly by using minuit2 delivered with root!
