ROOT logo
/* Copyright(c) 1998-2009, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

//-------------------------------------------------------------------------
//                      Class AliDielectronBtoJPSItoEle
//                  Unbinned log-likelihood fit analysis class
//
//                             Origin: C.Di Giglio
//        Contact: Carmelo.Digiglio@ba.infn.it , giuseppe.bruno@ba.infn.it
//-------------------------------------------------------------------------
class TH1F ;
#include "TNtuple.h"
#include "TMath.h"

#include "AliDielectronBtoJPSItoEleCDFfitFCN.h"
#include "AliDielectronBtoJPSItoEleCDFfitHandler.h"
#include "AliDielectronBtoJPSItoEle.h"
#include "AliLog.h"

ClassImp(AliDielectronBtoJPSItoEle)

//_______________________________________________________________________________ 
AliDielectronBtoJPSItoEle::AliDielectronBtoJPSItoEle() :
fFCNfunction(0),
fMCtemplate(0),
fResType("FF")
{
  //
  // default constructor
  //
}
//___________________________________________________________________________________
AliDielectronBtoJPSItoEle::AliDielectronBtoJPSItoEle(const AliDielectronBtoJPSItoEle& source) :
TNamed(source),
fFCNfunction(source.fFCNfunction),
fMCtemplate(source.fMCtemplate),
fResType(source.fResType)
{
  //
  // copy constructor
  //
}
//_________________________________________________________________________________________________

AliDielectronBtoJPSItoEle &AliDielectronBtoJPSItoEle::operator=(const AliDielectronBtoJPSItoEle& source)
{
  //
  // assignment operator
  //
  if(&source == this) return *this;
  fFCNfunction = source.fFCNfunction;
  fMCtemplate = source.fMCtemplate;

  return *this;
}
//_________________________________________________________________________________________________
AliDielectronBtoJPSItoEle::~AliDielectronBtoJPSItoEle()
{
  //
  // destructor
  //
  delete fFCNfunction;
  delete fMCtemplate;
}
//_________________________________________________________________________________________________
Int_t AliDielectronBtoJPSItoEle::DoMinimization(Int_t step)
{
  //
  // performs the minimization
  //
  Int_t iret=fFCNfunction->DoMinimization(step);

  return iret;
}
//_________________________________________________________________________________________________
void AliDielectronBtoJPSItoEle::ReadCandidates(TNtuple* nt, Double_t* &pseudoproper, Double_t* &invmass, Double_t* &pt, Int_t * &typeCand, Int_t& ncand, Double_t massLow, Double_t massUp, Double_t ptLow, Double_t ptUp)
{
  //
  // Read N-tuple with X and M values
  //
  Float_t mJPSI = 0; Float_t x = 0; Float_t type = 0; Float_t transvMom = 0.;
  Int_t nentries = 0;
  ncand=0;
  TString arrType[] = {"SS","FS","FF"};
  nt->SetBranchAddress("Mass",&mJPSI);
  nt->SetBranchAddress("Xdecaytime",&x);
  nt->SetBranchAddress("Pt",&transvMom);
  //
  if(!nt->GetListOfBranches()->At(2)) {AliInfo("ERROR: branch with candidate type doesn't exist! \n"); return;}
  nt->SetBranchAddress("Type",&type);
  //
  nentries = (Int_t)nt->GetEntries();
  pseudoproper = new Double_t[nentries];
  invmass      = new Double_t[nentries];
  pt           = new Double_t[nentries];
  typeCand     = new Int_t[nentries];

  for(Int_t i = 0; i < nentries; i++) {
      nt->GetEntry(i);
      if(!fResType.Contains(arrType[(Int_t)type])) continue;
      if(massUp > massLow && massLow > 0) { if(mJPSI < massLow || mJPSI >massUp) continue; } 
      if(ptUp > ptLow && ptLow > 0) { if(transvMom < ptLow || transvMom > ptUp) continue; } 
      pseudoproper[ncand]=(Double_t)x;
      invmass[ncand]=(Double_t)mJPSI;
      pt[ncand]=(Double_t)transvMom;
      typeCand[ncand] = (Int_t)type;
      ncand++;
      }
 return; 
}
//_________________________________________________________________________________________________
void AliDielectronBtoJPSItoEle::SetCsiMC()
{
  //
  // Sets X distribution used as MC template for JPSI from B
  //
  fFCNfunction->LikelihoodPointer()->SetCsiMC(fMCtemplate);

  return;
}
//_________________________________________________________________________________________________
void AliDielectronBtoJPSItoEle::SetFitHandler(Double_t* x /*pseudoproper*/, Double_t* m /*inv mass*/, Double_t* pt /*pt*/, Int_t* type /*type*/, Int_t ncand /*candidates*/) 
{
  //
  // Create the fit handler object to play with different params of the fitting function
  //

  fFCNfunction = new AliDielectronBtoJPSItoEleCDFfitHandler(x,m,pt,type,ncand);
  if(!fFCNfunction) {

     AliInfo("fFCNfunction not istanziated  ---> nothing done");
     return;

     } 
}
 AliDielectronBtoJPSItoEle.cxx:1
 AliDielectronBtoJPSItoEle.cxx:2
 AliDielectronBtoJPSItoEle.cxx:3
 AliDielectronBtoJPSItoEle.cxx:4
 AliDielectronBtoJPSItoEle.cxx:5
 AliDielectronBtoJPSItoEle.cxx:6
 AliDielectronBtoJPSItoEle.cxx:7
 AliDielectronBtoJPSItoEle.cxx:8
 AliDielectronBtoJPSItoEle.cxx:9
 AliDielectronBtoJPSItoEle.cxx:10
 AliDielectronBtoJPSItoEle.cxx:11
 AliDielectronBtoJPSItoEle.cxx:12
 AliDielectronBtoJPSItoEle.cxx:13
 AliDielectronBtoJPSItoEle.cxx:14
 AliDielectronBtoJPSItoEle.cxx:15
 AliDielectronBtoJPSItoEle.cxx:16
 AliDielectronBtoJPSItoEle.cxx:17
 AliDielectronBtoJPSItoEle.cxx:18
 AliDielectronBtoJPSItoEle.cxx:19
 AliDielectronBtoJPSItoEle.cxx:20
 AliDielectronBtoJPSItoEle.cxx:21
 AliDielectronBtoJPSItoEle.cxx:22
 AliDielectronBtoJPSItoEle.cxx:23
 AliDielectronBtoJPSItoEle.cxx:24
 AliDielectronBtoJPSItoEle.cxx:25
 AliDielectronBtoJPSItoEle.cxx:26
 AliDielectronBtoJPSItoEle.cxx:27
 AliDielectronBtoJPSItoEle.cxx:28
 AliDielectronBtoJPSItoEle.cxx:29
 AliDielectronBtoJPSItoEle.cxx:30
 AliDielectronBtoJPSItoEle.cxx:31
 AliDielectronBtoJPSItoEle.cxx:32
 AliDielectronBtoJPSItoEle.cxx:33
 AliDielectronBtoJPSItoEle.cxx:34
 AliDielectronBtoJPSItoEle.cxx:35
 AliDielectronBtoJPSItoEle.cxx:36
 AliDielectronBtoJPSItoEle.cxx:37
 AliDielectronBtoJPSItoEle.cxx:38
 AliDielectronBtoJPSItoEle.cxx:39
 AliDielectronBtoJPSItoEle.cxx:40
 AliDielectronBtoJPSItoEle.cxx:41
 AliDielectronBtoJPSItoEle.cxx:42
 AliDielectronBtoJPSItoEle.cxx:43
 AliDielectronBtoJPSItoEle.cxx:44
 AliDielectronBtoJPSItoEle.cxx:45
 AliDielectronBtoJPSItoEle.cxx:46
 AliDielectronBtoJPSItoEle.cxx:47
 AliDielectronBtoJPSItoEle.cxx:48
 AliDielectronBtoJPSItoEle.cxx:49
 AliDielectronBtoJPSItoEle.cxx:50
 AliDielectronBtoJPSItoEle.cxx:51
 AliDielectronBtoJPSItoEle.cxx:52
 AliDielectronBtoJPSItoEle.cxx:53
 AliDielectronBtoJPSItoEle.cxx:54
 AliDielectronBtoJPSItoEle.cxx:55
 AliDielectronBtoJPSItoEle.cxx:56
 AliDielectronBtoJPSItoEle.cxx:57
 AliDielectronBtoJPSItoEle.cxx:58
 AliDielectronBtoJPSItoEle.cxx:59
 AliDielectronBtoJPSItoEle.cxx:60
 AliDielectronBtoJPSItoEle.cxx:61
 AliDielectronBtoJPSItoEle.cxx:62
 AliDielectronBtoJPSItoEle.cxx:63
 AliDielectronBtoJPSItoEle.cxx:64
 AliDielectronBtoJPSItoEle.cxx:65
 AliDielectronBtoJPSItoEle.cxx:66
 AliDielectronBtoJPSItoEle.cxx:67
 AliDielectronBtoJPSItoEle.cxx:68
 AliDielectronBtoJPSItoEle.cxx:69
 AliDielectronBtoJPSItoEle.cxx:70
 AliDielectronBtoJPSItoEle.cxx:71
 AliDielectronBtoJPSItoEle.cxx:72
 AliDielectronBtoJPSItoEle.cxx:73
 AliDielectronBtoJPSItoEle.cxx:74
 AliDielectronBtoJPSItoEle.cxx:75
 AliDielectronBtoJPSItoEle.cxx:76
 AliDielectronBtoJPSItoEle.cxx:77
 AliDielectronBtoJPSItoEle.cxx:78
 AliDielectronBtoJPSItoEle.cxx:79
 AliDielectronBtoJPSItoEle.cxx:80
 AliDielectronBtoJPSItoEle.cxx:81
 AliDielectronBtoJPSItoEle.cxx:82
 AliDielectronBtoJPSItoEle.cxx:83
 AliDielectronBtoJPSItoEle.cxx:84
 AliDielectronBtoJPSItoEle.cxx:85
 AliDielectronBtoJPSItoEle.cxx:86
 AliDielectronBtoJPSItoEle.cxx:87
 AliDielectronBtoJPSItoEle.cxx:88
 AliDielectronBtoJPSItoEle.cxx:89
 AliDielectronBtoJPSItoEle.cxx:90
 AliDielectronBtoJPSItoEle.cxx:91
 AliDielectronBtoJPSItoEle.cxx:92
 AliDielectronBtoJPSItoEle.cxx:93
 AliDielectronBtoJPSItoEle.cxx:94
 AliDielectronBtoJPSItoEle.cxx:95
 AliDielectronBtoJPSItoEle.cxx:96
 AliDielectronBtoJPSItoEle.cxx:97
 AliDielectronBtoJPSItoEle.cxx:98
 AliDielectronBtoJPSItoEle.cxx:99
 AliDielectronBtoJPSItoEle.cxx:100
 AliDielectronBtoJPSItoEle.cxx:101
 AliDielectronBtoJPSItoEle.cxx:102
 AliDielectronBtoJPSItoEle.cxx:103
 AliDielectronBtoJPSItoEle.cxx:104
 AliDielectronBtoJPSItoEle.cxx:105
 AliDielectronBtoJPSItoEle.cxx:106
 AliDielectronBtoJPSItoEle.cxx:107
 AliDielectronBtoJPSItoEle.cxx:108
 AliDielectronBtoJPSItoEle.cxx:109
 AliDielectronBtoJPSItoEle.cxx:110
 AliDielectronBtoJPSItoEle.cxx:111
 AliDielectronBtoJPSItoEle.cxx:112
 AliDielectronBtoJPSItoEle.cxx:113
 AliDielectronBtoJPSItoEle.cxx:114
 AliDielectronBtoJPSItoEle.cxx:115
 AliDielectronBtoJPSItoEle.cxx:116
 AliDielectronBtoJPSItoEle.cxx:117
 AliDielectronBtoJPSItoEle.cxx:118
 AliDielectronBtoJPSItoEle.cxx:119
 AliDielectronBtoJPSItoEle.cxx:120
 AliDielectronBtoJPSItoEle.cxx:121
 AliDielectronBtoJPSItoEle.cxx:122
 AliDielectronBtoJPSItoEle.cxx:123
 AliDielectronBtoJPSItoEle.cxx:124
 AliDielectronBtoJPSItoEle.cxx:125
 AliDielectronBtoJPSItoEle.cxx:126
 AliDielectronBtoJPSItoEle.cxx:127
 AliDielectronBtoJPSItoEle.cxx:128
 AliDielectronBtoJPSItoEle.cxx:129
 AliDielectronBtoJPSItoEle.cxx:130
 AliDielectronBtoJPSItoEle.cxx:131
 AliDielectronBtoJPSItoEle.cxx:132
 AliDielectronBtoJPSItoEle.cxx:133
 AliDielectronBtoJPSItoEle.cxx:134
 AliDielectronBtoJPSItoEle.cxx:135