// @(#)root/minuit2:$Id$
// Author:  L. Moneta 2012

/**********************************************************************
 *                                                                    *
 * Copyright (c) 2012 LCG ROOT Math team,  CERN/PH-SFT                *
 *                                                                    *
 **********************************************************************/

#ifndef ROOT_TMinuit2TraceObject
#define ROOT_TMinuit2TraceObject

#include "TNamed.h"
#include "Minuit2/MnTraceObject.h"

class TH1;
class TVirtualPad;
class TList;

namespace ROOT {

   namespace Minuit2 {

      class MinimumState;
      class MnUserParameterState;

   }  // namespace Minuit2
}  // namespace ROOT

class TMinuit2TraceObject : public ROOT::Minuit2::MnTraceObject, public TNamed {

public:

   TMinuit2TraceObject(int parNumber = -1);

   virtual ~TMinuit2TraceObject();

   virtual void Init(const ROOT::Minuit2::MnUserParameterState & state);

   virtual void operator() (int i, const ROOT::Minuit2::MinimumState & state);

   ClassDef(TMinuit2TraceObject,0) // Example Trace Object for Minuit2

private:

   int fIterOffset;                // offset in iteration in case of combined minimizers
   TH1 * fHistoFval;               // Function value histogram
   TH1 * fHistoEdm;                // Edm histogram
   TList * fHistoParList;          // list of parameter values histograms
   TVirtualPad * fOldPad;          // old existing current pad
   TVirtualPad * fMinuitPad;       // new pad with trace histograms


};


#endif  // ROOT_TMinuit2TraceObject
 TMinuit2TraceObject.h:1
 TMinuit2TraceObject.h:2
 TMinuit2TraceObject.h:3
 TMinuit2TraceObject.h:4
 TMinuit2TraceObject.h:5
 TMinuit2TraceObject.h:6
 TMinuit2TraceObject.h:7
 TMinuit2TraceObject.h:8
 TMinuit2TraceObject.h:9
 TMinuit2TraceObject.h:10
 TMinuit2TraceObject.h:11
 TMinuit2TraceObject.h:12
 TMinuit2TraceObject.h:13
 TMinuit2TraceObject.h:14
 TMinuit2TraceObject.h:15
 TMinuit2TraceObject.h:16
 TMinuit2TraceObject.h:17
 TMinuit2TraceObject.h:18
 TMinuit2TraceObject.h:19
 TMinuit2TraceObject.h:20
 TMinuit2TraceObject.h:21
 TMinuit2TraceObject.h:22
 TMinuit2TraceObject.h:23
 TMinuit2TraceObject.h:24
 TMinuit2TraceObject.h:25
 TMinuit2TraceObject.h:26
 TMinuit2TraceObject.h:27
 TMinuit2TraceObject.h:28
 TMinuit2TraceObject.h:29
 TMinuit2TraceObject.h:30
 TMinuit2TraceObject.h:31
 TMinuit2TraceObject.h:32
 TMinuit2TraceObject.h:33
 TMinuit2TraceObject.h:34
 TMinuit2TraceObject.h:35
 TMinuit2TraceObject.h:36
 TMinuit2TraceObject.h:37
 TMinuit2TraceObject.h:38
 TMinuit2TraceObject.h:39
 TMinuit2TraceObject.h:40
 TMinuit2TraceObject.h:41
 TMinuit2TraceObject.h:42
 TMinuit2TraceObject.h:43
 TMinuit2TraceObject.h:44
 TMinuit2TraceObject.h:45
 TMinuit2TraceObject.h:46
 TMinuit2TraceObject.h:47
 TMinuit2TraceObject.h:48
 TMinuit2TraceObject.h:49
 TMinuit2TraceObject.h:50
 TMinuit2TraceObject.h:51
 TMinuit2TraceObject.h:52
 TMinuit2TraceObject.h:53
 TMinuit2TraceObject.h:54
 TMinuit2TraceObject.h:55
 TMinuit2TraceObject.h:56
 TMinuit2TraceObject.h:57