Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-09-15 09:11:25

0001 // @(#)root/minuit2:$Id$
0002 // Authors: M. Winkler, F. James, L. Moneta, A. Zsenei   2003-2005
0003 
0004 /**********************************************************************
0005  *                                                                    *
0006  * Copyright (c) 2005 LCG ROOT Math team,  CERN/PH-SFT                *
0007  *                                                                    *
0008  **********************************************************************/
0009 
0010 #ifndef ROOT_Minuit2_MnCross
0011 #define ROOT_Minuit2_MnCross
0012 
0013 #include "Minuit2/MnUserParameterState.h"
0014 
0015 namespace ROOT {
0016 
0017 namespace Minuit2 {
0018 
0019 class MnCross {
0020 
0021 public:
0022    class CrossParLimit {
0023    };
0024    class CrossFcnLimit {
0025    };
0026    class CrossNewMin {
0027    };
0028 
0029 public:
0030    MnCross()
0031       : fValue(0.), fState(MnUserParameterState()), fNFcn(0), fValid(false), fLimset(false), fMaxFcn(false),
0032         fNewMin(false)
0033    {
0034    }
0035 
0036    MnCross(unsigned int nfcn)
0037       : fValue(0.), fState(MnUserParameterState()), fNFcn(nfcn), fValid(false), fLimset(false), fMaxFcn(false),
0038         fNewMin(false)
0039    {
0040    }
0041 
0042    MnCross(const MnUserParameterState &state, unsigned int nfcn)
0043       : fValue(0.), fState(state), fNFcn(nfcn), fValid(false), fLimset(false), fMaxFcn(false), fNewMin(false)
0044    {
0045    }
0046 
0047    MnCross(double value, const MnUserParameterState &state, unsigned int nfcn)
0048       : fValue(value), fState(state), fNFcn(nfcn), fValid(true), fLimset(false), fMaxFcn(false), fNewMin(false)
0049    {
0050    }
0051 
0052    MnCross(const MnUserParameterState &state, unsigned int nfcn, CrossParLimit)
0053       : fValue(0.), fState(state), fNFcn(nfcn), fValid(true), fLimset(true), fMaxFcn(false), fNewMin(false)
0054    {
0055    }
0056 
0057    MnCross(const MnUserParameterState &state, unsigned int nfcn, CrossFcnLimit)
0058       : fValue(0.), fState(state), fNFcn(nfcn), fValid(false), fLimset(false), fMaxFcn(true), fNewMin(false)
0059    {
0060    }
0061 
0062    MnCross(const MnUserParameterState &state, unsigned int nfcn, CrossNewMin)
0063       : fValue(0.), fState(state), fNFcn(nfcn), fValid(false), fLimset(false), fMaxFcn(false), fNewMin(true)
0064    {
0065    }
0066 
0067    MnCross(const MnCross &cross)
0068       : fValue(cross.fValue), fState(cross.fState), fNFcn(cross.fNFcn), fValid(cross.fValid), fLimset(cross.fLimset),
0069         fMaxFcn(cross.fMaxFcn), fNewMin(cross.fNewMin)
0070    {
0071    }
0072 
0073    MnCross &operator=(const MnCross &) = default;
0074 
0075    MnCross &operator()(const MnCross &cross)
0076    {
0077       fValue = cross.fValue;
0078       fState = cross.fState;
0079       fNFcn = cross.fNFcn;
0080       fValid = cross.fValid;
0081       fLimset = cross.fLimset;
0082       fMaxFcn = cross.fMaxFcn;
0083       fNewMin = cross.fNewMin;
0084       return *this;
0085    }
0086 
0087    double Value() const { return fValue; }
0088    const MnUserParameterState &State() const { return fState; }
0089    bool IsValid() const { return fValid; }
0090    bool AtLimit() const { return fLimset; }
0091    bool AtMaxFcn() const { return fMaxFcn; }
0092    bool NewMinimum() const { return fNewMin; }
0093    unsigned int NFcn() const { return fNFcn; }
0094 
0095 private:
0096    double fValue;
0097    MnUserParameterState fState;
0098    unsigned int fNFcn;
0099    bool fValid;
0100    bool fLimset;
0101    bool fMaxFcn;
0102    bool fNewMin;
0103 };
0104 
0105 } // namespace Minuit2
0106 
0107 } // namespace ROOT
0108 
0109 #endif // ROOT_Minuit2_MnCross