MnCross.h

Go to the documentation of this file.
00001 // @(#)root/minuit2:$Id: MnCross.h 23522 2008-04-24 15:09:19Z moneta $
00002 // Authors: M. Winkler, F. James, L. Moneta, A. Zsenei   2003-2005  
00003 
00004 /**********************************************************************
00005  *                                                                    *
00006  * Copyright (c) 2005 LCG ROOT Math team,  CERN/PH-SFT                *
00007  *                                                                    *
00008  **********************************************************************/
00009 
00010 #ifndef ROOT_Minuit2_MnCross
00011 #define ROOT_Minuit2_MnCross
00012 
00013 #include "Minuit2/MnUserParameterState.h"
00014 
00015 namespace ROOT {
00016 
00017    namespace Minuit2 {
00018 
00019 
00020 class MnCross {
00021 
00022 public:
00023   
00024   class CrossParLimit {};
00025   class CrossFcnLimit {};
00026   class CrossNewMin {};
00027 
00028 public:
00029   
00030   MnCross() : fValue(0.), fState(MnUserParameterState()), fNFcn(0), fValid(false), fLimset(false), fMaxFcn(false), fNewMin(false) {} 
00031   
00032   MnCross(unsigned int nfcn) : fValue(0.), fState(MnUserParameterState() ), fNFcn(nfcn), fValid(false), fLimset(false), fMaxFcn(false), fNewMin(false) {} 
00033 
00034   MnCross(const  MnUserParameterState& state, unsigned int nfcn) : fValue(0.), fState(state), fNFcn(nfcn), fValid(false), fLimset(false), fMaxFcn(false), fNewMin(false) {} 
00035   
00036   MnCross(double value, const MnUserParameterState& state, unsigned int nfcn) : fValue(value), fState(state), fNFcn(nfcn), fValid(true), fLimset(false), fMaxFcn(false), fNewMin(false) {}
00037   
00038   MnCross(const MnUserParameterState& state, unsigned int nfcn, CrossParLimit) : fValue(0.), fState(state), fNFcn(nfcn), fValid(true), fLimset(true), fMaxFcn(false), fNewMin(false) {}
00039 
00040   MnCross(const MnUserParameterState& state, unsigned int nfcn, CrossFcnLimit) : fValue(0.), fState(state), fNFcn(nfcn), fValid(false), fLimset(false), fMaxFcn(true), fNewMin(false) {}
00041 
00042   MnCross(const MnUserParameterState& state, unsigned int nfcn, CrossNewMin) : fValue(0.), fState(state), fNFcn(nfcn), fValid(false), fLimset(false), fMaxFcn(false), fNewMin(true) {}
00043 
00044   ~MnCross() {}
00045 
00046   MnCross(const MnCross& cross) : fValue(cross.fValue), fState(cross.fState), fNFcn(cross.fNFcn), fValid(cross.fValid), fLimset(cross.fLimset), fMaxFcn(cross.fMaxFcn), fNewMin(cross.fNewMin) {}
00047 
00048   MnCross& operator()(const MnCross& cross) {
00049     fValue = cross.fValue;
00050     fState = cross.fState;
00051     fNFcn = cross.fNFcn;
00052     fValid = cross.fValid;
00053     fLimset = cross.fLimset;
00054     fMaxFcn = cross.fMaxFcn;
00055     fNewMin = cross.fNewMin;
00056     return *this;
00057   }
00058 
00059   double Value() const {return fValue;}  
00060   const MnUserParameterState& State() const {return fState;}
00061   bool IsValid() const {return fValid;}
00062   bool AtLimit() const {return fLimset;}
00063   bool AtMaxFcn() const {return fMaxFcn;}
00064   bool NewMinimum() const {return fNewMin;}
00065   unsigned int NFcn() const {return fNFcn;}
00066 
00067 private:
00068 
00069   double fValue;
00070   MnUserParameterState fState;
00071   unsigned int fNFcn;
00072   bool fValid;
00073   bool fLimset;
00074   bool fMaxFcn;
00075   bool fNewMin;
00076 };
00077 
00078   }  // namespace Minuit2
00079 
00080 }  // namespace ROOT
00081 
00082 #endif  // ROOT_Minuit2_MnCross

Generated on Tue Jul 5 14:25:44 2011 for ROOT_528-00b_version by  doxygen 1.5.1