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

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

#ifndef ROOT_Minuit2_MnTraceObject
#define ROOT_Minuit2_MnTraceObject

namespace ROOT {

   namespace Minuit2 {

      class MinimumState;
      class MnUserParameterState;

      class MnTraceObject {

      public:

         MnTraceObject(int parNumber = -1) :
            fUserState(0),
            fParNumber(parNumber) {}

         virtual ~MnTraceObject() {}

         virtual void Init(const MnUserParameterState & state) { fUserState = &state; }

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

         const MnUserParameterState & UserState() const { return *fUserState; }

         void SetParNumber(int number) { fParNumber = number; }

         int  ParNumber() const { return fParNumber; }

      private:

         const MnUserParameterState * fUserState;
         int fParNumber;
      };

   }  // namespace Minuit2
}  // namespace ROOT

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