]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Option to fit with chi2 or likelihood
authorfprino <prino@to.infn.it>
Mon, 10 Nov 2014 09:51:19 +0000 (10:51 +0100)
committerfprino <prino@to.infn.it>
Mon, 10 Nov 2014 09:51:39 +0000 (10:51 +0100)
PWGHF/vertexingHF/AliHFMassFitter.cxx
PWGHF/vertexingHF/AliHFMassFitter.h

index 3d37f95896e7dac011eb9ab66834e4670447fe51..b761f79c9bfe56db1ad19350961f4554e97cc52d 100644 (file)
@@ -76,6 +76,7 @@ AliHFMassFitter::AliHFMassFitter() :
   fSideBandl(0),
   fSideBandr(0),
   fcounter(0),
+  fFitOption("L,"),
   fContourGraph(0)
 {
   // default constructor
@@ -114,6 +115,7 @@ AliHFMassFitter::AliHFMassFitter (const TH1F *histoToFit, Double_t minvalue, Dou
  fSideBandl(0),
  fSideBandr(0),
  fcounter(0),
+ fFitOption("L,"),
  fContourGraph(0)
 {
   // standard constructor
@@ -170,6 +172,7 @@ AliHFMassFitter::AliHFMassFitter(const AliHFMassFitter &mfit):
   fSideBandl(mfit.fSideBandl),
   fSideBandr(mfit.fSideBandr),
   fcounter(mfit.fcounter),
+  fFitOption(mfit.fFitOption),
   fContourGraph(mfit.fContourGraph)
 {
   //copy constructor
@@ -228,6 +231,7 @@ AliHFMassFitter& AliHFMassFitter::operator=(const AliHFMassFitter &mfit){
   fSideBands= mfit.fSideBands;
   fSideBandl= mfit.fSideBandl;
   fSideBandr= mfit.fSideBandr;
+  fFitOption= mfit.fFitOption;
   fcounter= mfit.fcounter;
   fContourGraph= mfit.fContourGraph;
 
@@ -1060,7 +1064,7 @@ Bool_t AliHFMassFitter::MassFitter(Bool_t draw){
   //if only signal and reflection: skip
   if (!(ftypeOfFit4Bkg==3 && ftypeOfFit4Sgn==1)) {
     ftypeOfFit4Sgn=0;
-    fhistoInvMass->Fit(bkgname.Data(),"R,L,E,0");
+    fhistoInvMass->Fit(bkgname.Data(),Form("R,%sE,0",fFitOption.Data()));
    
     for(Int_t i=0;i<bkgPar;i++){
       fFitPars[i]=funcbkg->GetParameter(i);
@@ -1094,7 +1098,7 @@ Bool_t AliHFMassFitter::MassFitter(Bool_t draw){
 
     funcbkg1->SetLineColor(2); //red
 
- switch (ftypeOfFit4Bkg) {
   switch (ftypeOfFit4Bkg) {
     case 0:
        {
         cout<<"*** Exponential Fit ***"<<endl;
@@ -1140,10 +1144,10 @@ Bool_t AliHFMassFitter::MassFitter(Bool_t draw){
        }
         break;
     }
-      //cout<<"Parameters set to: "<<0.5*(totInt-intbkg1)<<"\t"<<fMass<<"\t"<<ffactor*fSigmaSgn<<"\t"<<intbkg1<<"\t"<<slope1<<"\t"<<conc1<<"\t"<<endl;
-      //cout<<"Limits: ("<<fminMass<<","<<fmaxMass<<")\tnPar = "<<bkgPar<<"\tgsidebands = "<<fSideBands<<endl;
+    //cout<<"Parameters set to: "<<0.5*(totInt-intbkg1)<<"\t"<<fMass<<"\t"<<ffactor*fSigmaSgn<<"\t"<<intbkg1<<"\t"<<slope1<<"\t"<<conc1<<"\t"<<endl;
+    //cout<<"Limits: ("<<fminMass<<","<<fmaxMass<<")\tnPar = "<<bkgPar<<"\tgsidebands = "<<fSideBands<<endl;
 
-    Int_t status=fhistoInvMass->Fit(bkg1name.Data(),"R,L,E,+,0");
+    Int_t status=fhistoInvMass->Fit(bkg1name.Data(),Form("R,%sE,+,0",fFitOption.Data()));
     if (status != 0){
       cout<<"Minuit returned "<<status<<endl;
       return kFALSE;
@@ -1258,7 +1262,7 @@ Bool_t AliHFMassFitter::MassFitter(Bool_t draw){
 
   Int_t status;
 
-  status = fhistoInvMass->Fit(massname.Data(),"R,L,E,+,0");
+  status = fhistoInvMass->Fit(massname.Data(),Form("R,%sE,+,0",fFitOption.Data()));
   if (status != 0){
     cout<<"Minuit returned "<<status<<endl;
     return kFALSE;
@@ -1411,7 +1415,7 @@ Bool_t AliHFMassFitter::RefitWithBkgOnly(Bool_t draw){
   }
 
 
-  Int_t status=fhistoInvMass->Fit(bkgname.Data(),"R,L,E,+,0");
+  Int_t status=fhistoInvMass->Fit(bkgname.Data(),Form("R,%sE,+,0",fFitOption.Data()));
   if (status != 0){
     cout<<"Minuit returned "<<status<<endl;
     return kFALSE;
index 00100e0bea75d9354e5ff0c6794f8bdb5d174cdf..6f25c73cb968a25bfda9be87fa0a41a392ffbddb 100644 (file)
@@ -110,7 +110,9 @@ class AliHFMassFitter : public TNamed {
   TF1*     GetMassFunc(){
     return fhistoInvMass->GetFunction("funcmass");
   }
-
+  void SetUseLikelihoodFit(){fFitOption="L,";}
+  void SetUseLikelihoodWithWeightsFit(){fFitOption="WL,";}
+  void SetUseChi2Fit(){fFitOption="";}
 
  private:
 
@@ -147,9 +149,10 @@ class AliHFMassFitter : public TNamed {
   Int_t     fSideBandl;        // left side band limit (bin number)
   Int_t     fSideBandr;        // right side band limit (bin number)
   Int_t     fcounter;          // internal counter
+  TString   fFitOption;        // L, LW or Chi2
   TList*    fContourGraph;     // TList of TGraph containing contour plots
 
-  ClassDef(AliHFMassFitter,6); // class for invariant mass fit
+  ClassDef(AliHFMassFitter,7); // class for invariant mass fit
 };
 
 #endif