# class TMVA::MethodFisher: public TMVA::MethodBase

```
```
Fisher and Mahalanobis Discriminants (Linear Discriminant Analysis)

In the method of Fisher discriminants event selection is performed in a transformed variable space with zero linear correlations, by distinguishing the mean values of the signal and background distributions.

The linear discriminant analysis determines an axis in the (correlated) hyperspace of the input variables such that, when projecting the output classes (signal and background) upon this axis, they are pushed as far as possible away from each other, while events of a same class are confined in a close vicinity. The linearity property of this method is reflected in the metric with which "far apart" and "close vicinity" are determined: the covariance matrix of the discriminant variable space.

The classification of the events in signal and background classes relies on the following characteristics (only): overall sample means, xi, for each input variable, i, class-specific sample means, xS(B),i, and total covariance matrix Tij. The covariance matrix can be decomposed into the sum of a within- (Wij) and a between-class (Bij) class matrix. They describe the dispersion of events relative to the means of their own class (within-class matrix), and relative to the overall sample means (between-class matrix). The Fisher coefficients, Fi, are then given by

where in TMVA is set NS=NB, so that the factor in front of the sum simplifies to ½. The Fisher discriminant then reads
The offset F0 centers the sample mean of xFi at zero. Instead of using the within-class matrix, the Mahalanobis variant determines the Fisher coefficients as follows:
with resulting xMa that are very similar to the xFi.

TMVA provides two outputs for the ranking of the input variables:

• Fisher test: the Fisher analysis aims at simultaneously maximising the between-class separation, while minimising the within-class dispersion. A useful measure of the discrimination power of a variable is hence given by the diagonal quantity: Bii/Wii.
• Discrimination power: the value of the Fisher coefficient is a measure of the discriminating power of a variable. The discrimination power of set of input variables can therefore be measured by the scalar
The corresponding numbers are printed on standard output.
```

```

## Function Members (Methods)

public:
 virtual ~MethodFisher() void TObject::AbstractMethod(const char* method) const void TMVA::Configurable::AddOptionsXMLTo(void* parent) const void TMVA::MethodBase::AddOutput(TMVA::Types::ETreeType type, TMVA::Types::EAnalysisType analysisType) virtual void AddWeightsXMLTo(void* parent) const virtual void TObject::AppendPad(Option_t* option = "") TDirectory* TMVA::MethodBase::BaseDir() const virtual void TObject::Browse(TBrowser* b) void TMVA::Configurable::CheckForUnusedOptions() const virtual void TMVA::MethodBase::CheckSetup() static TClass* Class() virtual const char* TObject::ClassName() const virtual void TObject::Clear(Option_t* = "") virtual TObject* TObject::Clone(const char* newname = "") const virtual Int_t TObject::Compare(const TObject* obj) const TMVA::Configurable TMVA::Configurable::Configurable(const TString& theOption = "") TMVA::Configurable TMVA::Configurable::Configurable(const TMVA::Configurable&) virtual void TObject::Copy(TObject& object) const virtual const TMVA::Ranking* CreateRanking() TMVA::DataSet* TMVA::MethodBase::Data() const TMVA::DataSetInfo& TMVA::MethodBase::DataInfo() const virtual void TMVA::MethodBase::DeclareCompatibilityOptions() virtual void TObject::Delete(Option_t* option = "")MENU void TMVA::MethodBase::DisableWriting(Bool_t setter) virtual Int_t TObject::DistancetoPrimitive(Int_t px, Int_t py) Bool_t TMVA::MethodBase::DoMulticlass() const Bool_t TMVA::MethodBase::DoRegression() const virtual void TObject::Draw(Option_t* option = "") virtual void TObject::DrawClass() constMENU virtual TObject* TObject::DrawClone(Option_t* option = "") constMENU virtual void TObject::Dump() constMENU virtual void TObject::Error(const char* method, const char* msgfmt) const virtual void TObject::Execute(const char* method, const char* params, Int_t* error = 0) virtual void TObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0) virtual void TObject::ExecuteEvent(Int_t event, Int_t px, Int_t py) virtual void TObject::Fatal(const char* method, const char* msgfmt) const virtual TObject* TObject::FindObject(const char* name) const virtual TObject* TObject::FindObject(const TObject* obj) const TMVA::Types::EAnalysisType TMVA::MethodBase::GetAnalysisType() const const char* TMVA::Configurable::GetConfigDescription() const const char* TMVA::Configurable::GetConfigName() const virtual Option_t* TObject::GetDrawOption() const static Long_t TObject::GetDtorOnly() virtual Double_t TMVA::MethodBase::GetEfficiency(const TString&, TMVA::Types::ETreeType, Double_t& err) const TMVA::Event* TMVA::MethodBase::GetEvent() const const TMVA::Event* TMVA::MethodBase::GetEvent(const TMVA::Event* ev) const const TMVA::Event* TMVA::MethodBase::GetEvent(Long64_t ievt) const const TMVA::Event* TMVA::MethodBase::GetEvent(Long64_t ievt, TMVA::Types::ETreeType type) const const vector& TMVA::MethodBase::GetEventCollection(TMVA::Types::ETreeType type) TMVA::MethodFisher::EFisherMethod GetFisherMethod() virtual const char* TObject::GetIconName() const const TString& TMVA::MethodBase::GetInputLabel(Int_t i) const const TString& TMVA::MethodBase::GetInputTitle(Int_t i) const const TString& TMVA::MethodBase::GetInputVar(Int_t i) const const TString& TMVA::MethodBase::GetJobName() const virtual Double_t TMVA::MethodBase::GetKSTrainingVsTest(Char_t SorB, TString opt = "X") virtual Double_t TMVA::MethodBase::GetMaximumSignificance(Double_t SignalEvents, Double_t BackgroundEvents, Double_t& optimal_significance_value) const const TString& TMVA::MethodBase::GetMethodName() const TMVA::Types::EMVA TMVA::MethodBase::GetMethodType() const TString TMVA::MethodBase::GetMethodTypeName() const virtual vector TMVA::MethodBase::GetMulticlassEfficiency(vector >& purity) virtual vector TMVA::MethodBase::GetMulticlassTrainingEfficiency(vector >& purity) virtual const vector& TMVA::MethodBase::GetMulticlassValues() virtual Double_t GetMvaValue(Double_t* err = 0, Double_t* errUpper = 0) virtual const char* TMVA::MethodBase::GetName() const UInt_t TMVA::MethodBase::GetNEvents() const UInt_t TMVA::MethodBase::GetNTargets() const UInt_t TMVA::MethodBase::GetNvar() const UInt_t TMVA::MethodBase::GetNVariables() const virtual char* TObject::GetObjectInfo(Int_t px, Int_t py) const static Bool_t TObject::GetObjectStat() virtual Option_t* TObject::GetOption() const const TString& TMVA::Configurable::GetOptions() const virtual Double_t TMVA::MethodBase::GetProba(const TMVA::Event* ev) virtual Double_t TMVA::MethodBase::GetProba(Double_t mvaVal, Double_t ap_sig) const TString TMVA::MethodBase::GetProbaName() const virtual Double_t TMVA::MethodBase::GetRarity(Double_t mvaVal, TMVA::Types::ESBType reftype = Types::kBackground) const virtual void TMVA::MethodBase::GetRegressionDeviation(UInt_t tgtNum, TMVA::Types::ETreeType type, Double_t& stddev, Double_t& stddev90Percent) const virtual const vector& TMVA::MethodBase::GetRegressionValues() const vector& TMVA::MethodBase::GetRegressionValues(const TMVA::Event*const ev) Double_t TMVA::MethodBase::GetRMS(Int_t ivar) const virtual Double_t TMVA::MethodBase::GetROCIntegral(TH1D* histS, TH1D* histB) const virtual Double_t TMVA::MethodBase::GetROCIntegral(TMVA::PDF* pdfS = 0, TMVA::PDF* pdfB = 0) const virtual Double_t TMVA::MethodBase::GetSeparation(TH1*, TH1*) const virtual Double_t TMVA::MethodBase::GetSeparation(TMVA::PDF* pdfS = 0, TMVA::PDF* pdfB = 0) const Double_t TMVA::MethodBase::GetSignalReferenceCut() const Double_t TMVA::MethodBase::GetSignalReferenceCutOrientation() const virtual Double_t TMVA::MethodBase::GetSignificance() const const TMVA::Event* TMVA::MethodBase::GetTestingEvent(Long64_t ievt) const Double_t TMVA::MethodBase::GetTestTime() const const TString& TMVA::MethodBase::GetTestvarName() const virtual const char* TObject::GetTitle() const virtual Double_t TMVA::MethodBase::GetTrainingEfficiency(const TString&) const TMVA::Event* TMVA::MethodBase::GetTrainingEvent(Long64_t ievt) const UInt_t TMVA::MethodBase::GetTrainingROOTVersionCode() const TString TMVA::MethodBase::GetTrainingROOTVersionString() const UInt_t TMVA::MethodBase::GetTrainingTMVAVersionCode() const TString TMVA::MethodBase::GetTrainingTMVAVersionString() const Double_t TMVA::MethodBase::GetTrainTime() const TMVA::TransformationHandler& TMVA::MethodBase::GetTransformationHandler(Bool_t takeReroutedIfAvailable = true) const TMVA::TransformationHandler& TMVA::MethodBase::GetTransformationHandler(Bool_t takeReroutedIfAvailable = true) const virtual UInt_t TObject::GetUniqueID() const TString TMVA::MethodBase::GetWeightFileName() const Double_t TMVA::MethodBase::GetXmax(Int_t ivar) const Double_t TMVA::MethodBase::GetXmin(Int_t ivar) const virtual Bool_t TObject::HandleTimer(TTimer* timer) virtual Bool_t HasAnalysisType(TMVA::Types::EAnalysisType type, UInt_t numberClasses, UInt_t numberTargets) virtual ULong_t TObject::Hash() const Bool_t TMVA::MethodBase::HasMVAPdfs() const TMVA::IMethod TMVA::IMethod::IMethod() TMVA::IMethod TMVA::IMethod::IMethod(const TMVA::IMethod&) virtual void TObject::Info(const char* method, const char* msgfmt) const virtual Bool_t TObject::InheritsFrom(const char* classname) const virtual Bool_t TObject::InheritsFrom(const TClass* cl) const virtual void TObject::Inspect() constMENU void TObject::InvertBit(UInt_t f) virtual TClass* IsA() const virtual Bool_t TObject::IsEqual(const TObject* obj) const virtual Bool_t TObject::IsFolder() const Bool_t TObject::IsOnHeap() const virtual Bool_t TMVA::MethodBase::IsSignalLike() virtual Bool_t TMVA::MethodBase::IsSignalLike(Double_t mvaVal) virtual Bool_t TObject::IsSortable() const Bool_t TObject::IsZombie() const virtual void TObject::ls(Option_t* option = "") const virtual void TMVA::MethodBase::MakeClass(const TString& classFileName = TString("")) const void TObject::MayNotUse(const char* method) const TMVA::MethodBase TMVA::MethodBase::MethodBase(const TMVA::MethodBase&) TMVA::MethodBase TMVA::MethodBase::MethodBase(TMVA::Types::EMVA methodType, TMVA::DataSetInfo& dsi, const TString& weightFile, TDirectory* theBaseDir = 0) TMVA::MethodBase TMVA::MethodBase::MethodBase(const TString& jobName, TMVA::Types::EMVA methodType, const TString& methodTitle, TMVA::DataSetInfo& dsi, const TString& theOption = "", TDirectory* theBaseDir = 0) TDirectory* TMVA::MethodBase::MethodBaseDir() const TMVA::MethodFisher MethodFisher(const TMVA::MethodFisher&) TMVA::MethodFisher MethodFisher(TMVA::DataSetInfo& dsi, const TString& theWeightFile, TDirectory* theTargetDir = __null) TMVA::MethodFisher MethodFisher(const TString& jobName, const TString& methodTitle, TMVA::DataSetInfo& dsi, const TString& theOption = "Fisher", TDirectory* theTargetDir = 0) virtual Bool_t TObject::Notify() void TObject::Obsolete(const char* method, const char* asOfVers, const char* removedFromVers) const void TObject::operator delete(void* ptr) void TObject::operator delete(void* ptr, void* vp) void TObject::operator delete[](void* ptr) void TObject::operator delete[](void* ptr, void* vp) void* TObject::operator new(size_t sz) void* TObject::operator new(size_t sz, void* vp) void* TObject::operator new[](size_t sz) void* TObject::operator new[](size_t sz, void* vp) TMVA::MethodFisher& operator=(const TMVA::MethodFisher&) virtual map TMVA::MethodBase::OptimizeTuningParameters(TString fomType = "ROCIntegral", TString fitType = "FitGA") virtual void TObject::Paint(Option_t* option = "") virtual void TMVA::Configurable::ParseOptions() virtual void TObject::Pop() virtual void TObject::Print(Option_t* option = "") const void PrintCoefficients() virtual void TMVA::MethodBase::PrintHelpMessage() const void TMVA::Configurable::PrintOptions() const void TMVA::MethodBase::ProcessSetup() virtual Int_t TObject::Read(const char* name) void TMVA::Configurable::ReadOptionsFromStream(istream& istr) void TMVA::Configurable::ReadOptionsFromXML(void* node) void TMVA::MethodBase::ReadStateFromFile() void TMVA::MethodBase::ReadStateFromStream(istream& tf) void TMVA::MethodBase::ReadStateFromStream(TFile& rf) void TMVA::MethodBase::ReadStateFromXMLString(const char* xmlstr) virtual void ReadWeightsFromStream(istream& i) virtual void ReadWeightsFromXML(void* wghtnode) virtual void TObject::RecursiveRemove(TObject* obj) void TMVA::MethodBase::RerouteTransformationHandler(TMVA::TransformationHandler* fTargetTransformation) virtual void TMVA::MethodBase::Reset() void TObject::ResetBit(UInt_t f) virtual void TObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU virtual void TObject::SavePrimitive(ostream& out, Option_t* option = "") virtual void TMVA::MethodBase::SetAnalysisType(TMVA::Types::EAnalysisType type) void TMVA::MethodBase::SetBaseDir(TDirectory* methodDir) void TObject::SetBit(UInt_t f) void TObject::SetBit(UInt_t f, Bool_t set) void TMVA::Configurable::SetConfigDescription(const char* d) void TMVA::Configurable::SetConfigName(const char* n) virtual void TObject::SetDrawOption(Option_t* option = "")MENU static void TObject::SetDtorOnly(void* obj) void TMVA::MethodBase::SetMethodBaseDir(TDirectory* methodDir) void TMVA::MethodBase::SetMethodDir(TDirectory* methodDir) void TMVA::Configurable::SetMsgType(TMVA::EMsgType t) static void TObject::SetObjectStat(Bool_t stat) void TMVA::Configurable::SetOptions(const TString& s) void TMVA::MethodBase::SetSignalReferenceCut(Double_t cut) void TMVA::MethodBase::SetSignalReferenceCutOrientation(Double_t cutOrientation) void TMVA::MethodBase::SetTestTime(Double_t testTime) void TMVA::MethodBase::SetTestvarName(const TString& v = "") void TMVA::MethodBase::SetTrainTime(Double_t trainTime) virtual void TMVA::MethodBase::SetTuneParameters(map tuneParameters) virtual void TObject::SetUniqueID(UInt_t uid) void TMVA::MethodBase::SetupMethod() virtual void ShowMembers(TMemberInspector& insp) const virtual void Streamer(TBuffer&) void StreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_b) virtual void TObject::SysError(const char* method, const char* msgfmt) const Bool_t TObject::TestBit(UInt_t f) const Int_t TObject::TestBits(UInt_t f) const virtual void TMVA::MethodBase::TestClassification() virtual void TMVA::MethodBase::TestMulticlass() virtual void TMVA::MethodBase::TestRegression(Double_t& bias, Double_t& biasT, Double_t& dev, Double_t& devT, Double_t& rms, Double_t& rmsT, Double_t& mInf, Double_t& mInfT, Double_t& corr, TMVA::Types::ETreeType type) virtual void Train() void TMVA::MethodBase::TrainMethod() virtual void TObject::UseCurrentStyle() virtual void TObject::Warning(const char* method, const char* msgfmt) const virtual Int_t TObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) virtual Int_t TObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const virtual void TMVA::MethodBase::WriteEvaluationHistosToFile(TMVA::Types::ETreeType treetype) virtual void TMVA::MethodBase::WriteMonitoringHistosToFile() const void TMVA::Configurable::WriteOptionsToStream(ostream& o, const TString& prefix) const void TMVA::MethodBase::WriteStateToFile() const
protected:
 virtual void TObject::DoError(int level, const char* location, const char* fmt, va_list va) const void TMVA::Configurable::EnableLooseOptions(Bool_t b = kTRUE) virtual void GetHelpMessage() const const TString& TMVA::MethodBase::GetInternalVarName(Int_t ivar) const const TString& TMVA::MethodBase::GetOriginalVarName(Int_t ivar) const const TString& TMVA::Configurable::GetReferenceFile() const static TMVA::MethodBase* TMVA::MethodBase::GetThisBase() const TString& TMVA::MethodBase::GetWeightFileDir() const Bool_t TMVA::MethodBase::HasTrainingTree() const Bool_t TMVA::MethodBase::Help() const Bool_t TMVA::MethodBase::IgnoreEventsWithNegWeightsInTraining() const Bool_t TMVA::MethodBase::IsConstructedFromWeightFile() const Bool_t TMVA::MethodBase::IsNormalised() const TMVA::MsgLogger& TMVA::Configurable::Log() const Bool_t TMVA::Configurable::LooseOptionCheckingEnabled() const virtual void MakeClassSpecific(ostream&, const TString&) const virtual void TMVA::MethodBase::MakeClassSpecificHeader(ostream&, const TString& = "") const void TObject::MakeZombie() void TMVA::MethodBase::NoErrorCalc(Double_t*const err, Double_t*const errUpper) void TMVA::Configurable::ResetSetFlag() void TMVA::MethodBase::SetNormalised(Bool_t norm) void TMVA::MethodBase::SetWeightFileDir(TString fileDir) void TMVA::MethodBase::SetWeightFileName(TString) void TMVA::MethodBase::Statistics(TMVA::Types::ETreeType treeType, const TString& theVarName, Double_t&, Double_t&, Double_t&, Double_t&, Double_t&, Double_t&) Bool_t TMVA::MethodBase::TxtWeightsOnly() const Bool_t TMVA::MethodBase::Verbose() const void TMVA::Configurable::WriteOptionsReferenceToFile()
private:
 virtual void DeclareOptions() void GetCov_BetweenClass() void GetCov_Full() void GetCov_WithinClass() void GetDiscrimPower() void GetFisherCoeff() void GetMean() virtual void Init() void InitMatrices() virtual void ProcessOptions()

## Data Members

public:
 Bool_t TMVA::MethodBase::fSetupCompleted is method setup const TMVA::Event* TMVA::MethodBase::fTmpEvent ! temporary event when testing on a different DataSet than the own one static TObject::(anonymous) TObject::kBitMask static TObject::EStatusBits TObject::kCanDelete static TObject::EStatusBits TObject::kCannotPick static TMVA::MethodFisher::EFisherMethod kFisher static TObject::EStatusBits TObject::kHasUUID static TObject::EStatusBits TObject::kInvalidObject static TObject::(anonymous) TObject::kIsOnHeap static TObject::EStatusBits TObject::kIsReferenced static TMVA::MethodFisher::EFisherMethod kMahalanobis static TObject::EStatusBits TObject::kMustCleanup static TObject::EStatusBits TObject::kNoContextMenu static TObject::(anonymous) TObject::kNotDeleted static TObject::EStatusBits TObject::kObjInCanvas static TObject::(anonymous) TObject::kOverwrite static TMVA::MethodBase::EWeightFileType TMVA::MethodBase::kROOT static TObject::(anonymous) TObject::kSingleKey static TMVA::MethodBase::EWeightFileType TMVA::MethodBase::kTEXT static TObject::(anonymous) TObject::kWriteDelete static TObject::(anonymous) TObject::kZombie
protected:
 TMVA::Types::EAnalysisType TMVA::MethodBase::fAnalysisType method-mode : true --> regression, false --> classification UInt_t TMVA::MethodBase::fBackgroundClass index of the Background-class vector* TMVA::MethodBase::fInputVars vector of input variables used in MVA vector* TMVA::MethodBase::fMulticlassReturnVal holds the return-values for the multiclass classification Int_t TMVA::MethodBase::fNbins number of bins in input variable histograms Int_t TMVA::MethodBase::fNbinsH number of bins in evaluation histograms Int_t TMVA::MethodBase::fNbinsMVAoutput number of bins in MVA output histograms TMVA::Ranking* TMVA::MethodBase::fRanking pointer to ranking object (created by derived classifiers) vector* TMVA::MethodBase::fRegressionReturnVal holds the return-values for the regression UInt_t TMVA::MethodBase::fSignalClass index of the Signal-class
private:
 TMatrixD* fBetw between-class matrix TMatrixD* fCov full covariance matrix vector* fDiscrimPow discriminating power Double_t fF0 offset vector* fFisherCoeff Fisher coefficients TMVA::MethodFisher::EFisherMethod fFisherMethod Fisher or Mahalanobis TMatrixD* fMeanMatx Double_t fSumOfWeightsB sum-of-weights for background training events Double_t fSumOfWeightsS sum-of-weights for signal training events TString fTheMethod Fisher or Mahalanobis TMatrixD* fWith within-class matrix

## Function documentation

MethodFisher(const TString& jobName, const TString& methodTitle, TMVA::DataSetInfo& dsi, const TString& theOption = "Fisher", TDirectory* theTargetDir = 0)
``` standard constructor for the "Fisher"
```
MethodFisher(TMVA::DataSetInfo& dsi, const TString& theWeightFile, TDirectory* theTargetDir = __null)
``` constructor from weight file
```
void Init( void )
``` default initialization called by all constructors
```
void DeclareOptions()
``` MethodFisher options:
format and syntax of option string: "type"
where type is "Fisher" or "Mahalanobis"

```
void ProcessOptions()
``` process user options
```
~MethodFisher( void )
``` destructor
```
Bool_t HasAnalysisType(TMVA::Types::EAnalysisType type, UInt_t numberClasses, UInt_t numberTargets)
``` Fisher can only handle classification with 2 classes
```
void Train( void )
``` computation of Fisher coefficients by series of matrix operations
```
Double_t GetMvaValue(Double_t* err = 0, Double_t* errUpper = 0)
``` returns the Fisher value (no fixed range)
```
void InitMatrices( void )
``` initializaton method; creates global matrices and vectors
```
void GetMean( void )
``` compute mean values of variables in each sample, and the overall means
```
void GetCov_WithinClass( void )
``` the matrix of covariance 'within class' reflects the dispersion of the
events relative to the center of gravity of their own class
```
void GetCov_BetweenClass( void )
``` the matrix of covariance 'between class' reflects the dispersion of the
events of a class relative to the global center of gravity of all the class
hence the separation between classes
```
void GetCov_Full( void )
``` compute full covariance matrix from sum of within and between matrices
```
void GetFisherCoeff( void )
``` Fisher = Sum { [coeff]*[variables] }

let Xs be the array of the mean values of variables for signal evts
let Xb be the array of the mean values of variables for backgd evts
let InvWith be the inverse matrix of the 'within class' correlation matrix

then the array of Fisher coefficients is
[coeff] =sqrt(fNsig*fNbgd)/fNevt*transpose{Xs-Xb}*InvWith
```
void GetDiscrimPower( void )
``` computation of discrimination power indicator for each variable
small values of "fWith" indicates little compactness of sig & of backgd
big values of "fBetw" indicates large separation between sig & backgd

we want signal & backgd classes as compact and separated as possible
the discriminating power is then defined as the ration "fBetw/fWith"
```
const TMVA::Ranking* CreateRanking()
``` computes ranking of input variables
```
void PrintCoefficients( void )
``` display Fisher coefficients and discriminating power for each variable
check maximum length of variable name
```
``` read Fisher coefficients from weight file
```
``` create XML description of Fisher classifier
```
``` read Fisher coefficients from xml weight file
```
void MakeClassSpecific(ostream& , const TString& ) const
``` write Fisher-specific classifier response
```
void GetHelpMessage() const
``` get help message text

typical length of text line:
"|--------------------------------------------------------------|"
```
MethodFisher(const TString& jobName, const TString& methodTitle, TMVA::DataSetInfo& dsi, const TString& theOption = "Fisher", TDirectory* theTargetDir = 0)
EFisherMethod GetFisherMethod( void )
`{ return fFisherMethod; }`