]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG3/vertexingHF/AliBtoJPSItoEleCDFfitHandler.cxx
Remove obsolte Jpsi classes
[u/mrichter/AliRoot.git] / PWG3 / vertexingHF / AliBtoJPSItoEleCDFfitHandler.cxx
index 431e15091523d7edab784fc261a294d2b5b3db23..6c7851444c5af10bdcb6e1606e24191401127bfe 100644 (file)
@@ -43,6 +43,8 @@ void CDFFunction(Int_t &npar, Double_t *gin, Double_t &f, Double_t *par, Int_t i
 
 //_________________________________________________________________________________________________
 AliBtoJPSItoEleCDFfitHandler::AliBtoJPSItoEleCDFfitHandler():
+fIsParamFixed(16),
+fPrintStatus(kFALSE),
 fUp(0),
 fX(0x0),
 fM(0x0),
@@ -56,6 +58,8 @@ fNcand(0)
 //_________________________________________________________________________________________________
 AliBtoJPSItoEleCDFfitHandler::AliBtoJPSItoEleCDFfitHandler(Double_t* decaytime, 
   Double_t* invariantmass, Int_t ncand) :
+fIsParamFixed(16),
+fPrintStatus(kFALSE),
 fUp(0),
 fX(decaytime),
 fM(invariantmass),
@@ -66,10 +70,24 @@ fNcand(ncand)
   // constructor
   //
   AliInfo("\n+++\n+++ Minimization object AliBtoJPSItoEleCDFfitHandler created\n+++\n");
-  AliInfo("\n+++\n+++ Creating AliBtoJPSItoEleCDFfitFCN object\n+++\n");
   fLikely = new AliBtoJPSItoEleCDFfitFCN();
-  fLikely->SetCrystalBallParam(kFALSE); //Landau selected; otherwise Crystal Ball is selected
-  SetErrorDef(1.);
+  AliInfo("\n+++\n+++ CDF fit function object AliBtoJPSItoEleCDFfitFCN created\n+++\n");
+  AliInfo("Parameter 0  ----> fRadius");
+  AliInfo("Parameter 1  ----> fTheta");
+  AliInfo("Parameter 2  ----> fPhi");
+  AliInfo("Parameter 3  ----> fOneOvLamPlus");
+  AliInfo("Parameter 4  ----> fOneOvLamMinus");
+  AliInfo("Parameter 5  ----> fOneOvLamSym");
+  AliInfo("Parameter 6  ----> fMSlope");
+  AliInfo("Parameter 7  ----> fB");
+  AliInfo("Parameter 8  ----> fFsig");
+  AliInfo("Parameter 9  ----> fMmean");
+  AliInfo("Parameter 10 ----> fNexp");
+  AliInfo("Parameter 11 ----> fSigma");
+  AliInfo("Parameter 12 ----> fAlpha");
+  AliInfo("Parameter 13 ----> fNorm");
+  AliInfo("Parameter 14 ----> fSigmaResol");
+  AliInfo("Parameter 15 ----> fNResol");
   AliInfo(Form("\n+++\n+++ Number of candidates ---> %d\n+++\n ", ncand));
 }
 //___________________________________________________________________________
@@ -79,18 +97,22 @@ AliBtoJPSItoEleCDFfitHandler& AliBtoJPSItoEleCDFfitHandler::operator=(const AliB
   // Assignment operator
   //
   if (this!=&c) {
-      fUp     = c.fUp;
-      fX      = c.fX;
-      fM      = c.fM;
-      fLikely = c.fLikely;
-      fNcand = c.fNcand;
+      fIsParamFixed = c.fIsParamFixed;
+      fPrintStatus  = c.fPrintStatus;
+      fUp           = c.fUp;
+      fX            = c.fX;
+      fM            = c.fM;
+      fLikely       = c.fLikely;
+      fNcand        = c.fNcand;
      }
   return *this;
 }
 
-//___________________________________________________________________________
+//_______________________________________________________________________________________
 AliBtoJPSItoEleCDFfitHandler::AliBtoJPSItoEleCDFfitHandler(const AliBtoJPSItoEleCDFfitHandler& c) :
 TNamed(c),
+fIsParamFixed(c.fIsParamFixed),
+fPrintStatus(c.fPrintStatus),
 fUp(c.fUp),
 fX(c.fX),
 fM(c.fM),
@@ -101,7 +123,7 @@ fNcand(c.fNcand)
   // Copy Constructor
   //
 }
-//________________________________________________________________________
+//_______________________________________________________________________________________
 AliBtoJPSItoEleCDFfitHandler::~AliBtoJPSItoEleCDFfitHandler()
 {
   //
@@ -109,58 +131,40 @@ AliBtoJPSItoEleCDFfitHandler::~AliBtoJPSItoEleCDFfitHandler()
   //
   delete fLikely;
 }
-//_________________________________________________________________________________________________
+//_______________________________________________________________________________________
 Int_t AliBtoJPSItoEleCDFfitHandler::DoMinimization()
 {
   //
   // performs the minimization
   //
-  static TVirtualFitter *fitter = TVirtualFitter::Fitter(this,13);
+  static TVirtualFitter *fitter = TVirtualFitter::Fitter(this,16);
   fitter->SetFCN(CDFFunction);
-  Double_t startingParamValues[13] =
-         /* startfPlus
-            startfMinus
-            startfSym
-            startfOneOvLamPlus
-            startfOneOvLamMinus
-            startfOneOvLamSym
-            startfMSlope
-            startfB
-            startfFsig
-            startfMmean
-            startfNexp
-            startfSigma
-            startfAlpha */
-            {5.00e-01,
-             TMath::Pi()/4.,
-             TMath::Pi()/4.,
-             2.0964360e-03,
-             4.8309180e-03,
-             1.582530e-04,
-             -1.5720e-02,
-             0.1800e+00,
-             0.7000e+00,
-            3.0910e+00,
-             1.0500e+00,
-             1.4250e-02,
-             6.758e-01};
-
-  fitter->SetParameter(0,"fRadius",startingParamValues[0], 0.01, 0., 1.);
-  fitter->SetParameter(1,"fTheta",startingParamValues[1], 0.001, 0., TMath::Pi()/2);
-  fitter->SetParameter(2,"fPhi",startingParamValues[2], 0.001, 0., TMath::Pi()/2);
-  fitter->SetParameter(3,"fOneOvLamPlus",startingParamValues[3], 0.0001, 0., 5.e-01);
-  fitter->SetParameter(4,"fOneOvLamMinus",startingParamValues[4], 0.0001, 0., 5.e-01);
-  fitter->SetParameter(5,"fOneOvLamSym",startingParamValues[5], 0.00001, 0., 5.e-01);
-  fitter->SetParameter(6,"fMSlope",startingParamValues[6], 0.001, -1.e-00, 1.e+00);
-  fitter->SetParameter(7,"fB",startingParamValues[7], 0.1, 0., 1.);
-  fitter->SetParameter(8,"fFsig",startingParamValues[8], 0.1, 0., 1.);
-  fitter->SetParameter(9,"fMmean",startingParamValues[9], 0.1, 0., 1.e+02);
-  fitter->SetParameter(10,"fNexp",startingParamValues[10], 0.1, 0., 1.e+02);
-  fitter->SetParameter(11,"fSigma",startingParamValues[11], 0.001, 0., 1.e+02);
-  fitter->SetParameter(12,"fAlpha",startingParamValues[12], 0.01, 0., 1.e+02);
-  fitter->FixParameter(9);
-
-  Double_t arglist[2]={10000,0.5}; 
+
+  fitter->SetParameter(0,"fRadius",fParamStartValues[0], 1.e-06, 0., 1.);
+  fitter->SetParameter(1,"fTheta",fParamStartValues[1], 1.e-06, 0.,2*TMath::Pi());
+  fitter->SetParameter(2,"fPhi",fParamStartValues[2], 1.e-06, 0.,2*TMath::Pi());
+//  fitter->SetParameter(3,"fOneOvLamPlus",fParamStartValues[3], 1.e-10, 0., 5.e+01);
+//  fitter->SetParameter(4,"fOneOvLamMinus",fParamStartValues[4], 1.e-10, 0., 5.e+01);
+//  fitter->SetParameter(5,"fOneOvLamSym",fParamStartValues[5], 1.e-10, 0., 5.e+01);
+  fitter->SetParameter(3,"fOneOvLamPlus",fParamStartValues[3], 1.e-10, 0.0000001, 5.e+01);
+  fitter->SetParameter(4,"fOneOvLamMinus",fParamStartValues[4], 1.e-10, 0.00000001, 5.e+01);
+  fitter->SetParameter(5,"fOneOvLamSym",fParamStartValues[5], 1.e-10, 0.00000001, 5.e+01);
+  fitter->SetParameter(6,"fMSlope",fParamStartValues[6], 1.e-04, -2.5, 2.5);
+  fitter->SetParameter(7,"fB",fParamStartValues[7], 1.e-08, 0., 1.);
+  fitter->SetParameter(8,"fFsig",fParamStartValues[8], 1.e-08, 0., 1.);
+  fitter->SetParameter(9,"fMmean",fParamStartValues[9], 1.e-08, 0., 1.e+04);
+  fitter->SetParameter(10,"fNexp",fParamStartValues[10], 1.e-08, 0., 1.e+02);
+  fitter->SetParameter(11,"fSigma",fParamStartValues[11], 1.e-08, 0., 1.e+04);
+  fitter->SetParameter(12,"fAlpha",fParamStartValues[12], 1.e-08, 0., 1.e+04);
+  fitter->SetParameter(13,"fNorm",fParamStartValues[13], 1.e-08, 0., 1.e+01);
+  fitter->SetParameter(14,"fSigmaResol",fParamStartValues[14], 1.e-08, 0., 1.e+04);
+  fitter->SetParameter(15,"fNResol",fParamStartValues[15], 1.e-08, 0., 1.e+05);
+
+  for(UInt_t indexparam = 0; indexparam < 16; indexparam++){
+     if(IsParamFixed(indexparam))fitter->FixParameter((Int_t)indexparam);
+  }
+
+  Double_t arglist[2]={10000,1.0}; 
   Int_t iret=fitter->ExecuteCommand("MIGRAD", arglist ,2);
   fitter->PrintResults(4,0);
 
@@ -178,8 +182,7 @@ void AliBtoJPSItoEleCDFfitHandler::CdfFCN(Int_t & /* npar */,
   fLikely->SetAllParameters(par);
   fLikely->ConvertFromSpherical();
   fLikely->ComputeIntegral();
-  //printf("\n+++\n+++\n+++\n");
-  //fLikely->PrintStatus();
+  if(fPrintStatus)fLikely->PrintStatus();
 
   TStopwatch t;
   t.Start();
@@ -193,3 +196,43 @@ void AliBtoJPSItoEleCDFfitHandler::CdfFCN(Int_t & /* npar */,
 
   return;
 }
+//_______________________________________________________________________________________
+void AliBtoJPSItoEleCDFfitHandler::SetParamStartValues(Double_t inputparamvalues[16])
+{
+  for(Int_t index=0; index < 16; index++) fParamStartValues[index] = inputparamvalues[index];
+}
+//_______________________________________________________________________________________
+void AliBtoJPSItoEleCDFfitHandler::SetResolutionConstants()
+{
+  //
+  // Sets constants for the resolution function
+  //
+  fLikely->SetResolutionConstants();
+
+}
+//_______________________________________________________________________________________
+void AliBtoJPSItoEleCDFfitHandler::SetCrystalBallFunction(Bool_t okCB) 
+{
+  //
+  // Sets the CB as the parametrization for the signal invariant mass spectrum 
+  // (otherwise Landau is chosen)
+  //
+  fLikely->SetCrystalBallFunction(okCB);
+}
+//_______________________________________________________________________________________
+void AliBtoJPSItoEleCDFfitHandler::SetMassWndHigh(Double_t limit) 
+{ 
+  //
+  // Sets upper limit for the invariant mass window (under J/PSI mass peak)
+  //
+  fLikely->SetMassWndHigh(limit);
+}
+//_______________________________________________________________________________________
+void AliBtoJPSItoEleCDFfitHandler::SetMassWndLow(Double_t limit)
+{
+  //
+  // Sets lower limit for the invariant mass window (under J/PSI mass peak)
+  //
+  fLikely->SetMassWndLow(limit);
+}
+