Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 10:10:24

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() {}
0068 
0069    MnCross(const MnCross &cross)
0070       : fValue(cross.fValue), fState(cross.fState), fNFcn(cross.fNFcn), fValid(cross.fValid), fLimset(cross.fLimset),
0071         fMaxFcn(cross.fMaxFcn), fNewMin(cross.fNewMin)
0072    {
0073    }
0074 
0075    MnCross &operator=(const MnCross &) = default;
0076 
0077    MnCross &operator()(const MnCross &cross)
0078    {
0079       fValue = cross.fValue;
0080       fState = cross.fState;
0081       fNFcn = cross.fNFcn;
0082       fValid = cross.fValid;
0083       fLimset = cross.fLimset;
0084       fMaxFcn = cross.fMaxFcn;
0085       fNewMin = cross.fNewMin;
0086       return *this;
0087    }
0088 
0089    double Value() const { return fValue; }
0090    const MnUserParameterState &State() const { return fState; }
0091    bool IsValid() const { return fValid; }
0092    bool AtLimit() const { return fLimset; }
0093    bool AtMaxFcn() const { return fMaxFcn; }
0094    bool NewMinimum() const { return fNewMin; }
0095    unsigned int NFcn() const { return fNFcn; }
0096 
0097 private:
0098    double fValue;
0099    MnUserParameterState fState;
0100    unsigned int fNFcn;
0101    bool fValid;
0102    bool fLimset;
0103    bool fMaxFcn;
0104    bool fNewMin;
0105 };
0106 
0107 } // namespace Minuit2
0108 
0109 } // namespace ROOT
0110 
0111 #endif // ROOT_Minuit2_MnCross