#include "AliRDHFCutsDplustoKpipi.h"\r
#include "AliRDHFCutsD0toKpi.h"\r
#include "AliHFMassFitter.h"\r
+#include "AliNormalizationCounter.h"\r
#endif\r
\r
/* $Id$ */ \r
const Int_t nPtBins=5;\r
Double_t ptlims[nPtBins+1]={2.,4.,6.,8.,12.,24.};\r
Int_t rebin[nPtBins]={4,4,6,6,8};\r
-Double_t sigmapt[nPtBins]={ 0.012, 0.016, 0.016, 0.018, 0.20 };\r
+Double_t sigmapt[nPtBins]={ 0.010, 0.012, 0.016, 0.018, 0.20 };\r
Bool_t fixPeakSigma = kFALSE;\r
//\r
const Int_t nMultbins=6;\r
Double_t multlims[nMultbins+1]={1.,9.,14.,20.,31.,49.,100.};\r
+// const Int_t nMultbins=1;\r
+// Double_t multlims[nMultbins+1]={0.,500.};\r
//\r
Int_t firstUsedBin[nPtBins]={-1,-1,-1,-1,-1}; // -1 uses all bins, >=1 to set the lower bin to be accepted from original histo\r
//\r
\r
// Functions\r
Bool_t LoadDplusHistos(TObjArray* listFiles, TH3F** hPtMassMult, TH2F** hNtrZvtx, TH2F** hNtrZvtxCorr, const char *CutsType, Int_t Option);\r
-Bool_t LoadD0toKpiHistos(TObjArray* listFiles, TH3F** hPtMassMult, TH2F** hNtrZvtx, TH2F** hNtrZvtxCorr, \r
+Bool_t LoadD0toKpiHistos(TObjArray* listFiles, TH3F** hPtMassMult, TH2F** hNtrZvtx, TH2F** hNtrZvtxCorr, AliNormalizationCounter *counter,\r
const char *CutsType, Int_t Option);\r
Bool_t CheckNtrVsZvtx(TH2F** hNtrZvtx, TH2F** hNtrZvtxCorr, Int_t nFiles);\r
TH1F* RebinHisto(TH1F* hOrig, Int_t reb, Int_t firstUse=-1);\r
for(Int_t i=0; i<4; i++) hNtrZvtx[i]=0x0;\r
TH2F** hNtrZvtxCorr=new TH2F*[4];\r
for(Int_t i=0; i<4; i++) hNtrZvtxCorr[i]=0x0;\r
+ AliNormalizationCounter *counter=0x0;\r
+ TH1F * hNormalization = new TH1F("hNormalization","Events in the norm counter",nMultbins,multlims);\r
\r
Float_t massD;\r
Bool_t retCode;\r
if(analysisType==kD0toKpi) {\r
massD=1.86484003067016602e+00;//(Float_t)(TDatabasePDG::Instance()->GetParticle(421)->Mass());\r
- retCode=LoadD0toKpiHistos(listFiles,hPtMassMult,hNtrZvtx,hNtrZvtxCorr,CutsType,Option);\r
+ retCode=LoadD0toKpiHistos(listFiles,hPtMassMult,hNtrZvtx,hNtrZvtxCorr,counter,CutsType,Option);\r
}\r
else if(analysisType==kDplusKpipi) {\r
massD=1.86961996555328369e+00;//(Float_t)(TDatabasePDG::Instance()->GetParticle(411)->Mass());\r
// printf(" Studying multiplicity bin %d\n",j);\r
Int_t multbinlow = hmultaxis->FindBin(multlims[j]);\r
Int_t multbinhigh = hmultaxis->FindBin(multlims[j+1])-1;\r
+ Float_t val = multbinlow + (multbinhigh-multbinlow)/2.;\r
+ Int_t hnbin = hNormalization->FindBin(val);\r
+ Float_t nevents = 0.;\r
+ if(counter) { nevents = counter->GetNEventsForNorm(multbinlow,multbinhigh); cout << endl<<endl<<" Nevents ("<<multbinlow<<","<<multbinhigh<<") ="<<nevents<<endl<<endl<<endl;}\r
+ hNormalization->SetBinContent(hnbin,nevents);\r
//\r
// Loop on pt bins\r
//\r
}\r
// printf(" getting the fit parameters\n");\r
Double_t mass=fitter[massBin]->GetMean();\r
+ Double_t massUnc=fitter[massBin]->GetMeanUncertainty();\r
Double_t sigma=fitter[massBin]->GetSigma();\r
+ Double_t sigmaUnc=fitter[massBin]->GetSigmaUncertainty();\r
if(j==0) arrchisquare0[iBin]=fitter[massBin]->GetReducedChiSquare();\r
else if(j==1) arrchisquare1[iBin]=fitter[massBin]->GetReducedChiSquare();\r
else if(j==2) arrchisquare2[iBin]=fitter[massBin]->GetReducedChiSquare();\r
fitter[massBin]->Signal(3,s,errs);\r
fitter[massBin]->Background(3,b,errb);\r
fitter[massBin]->Significance(3,sig,errsig);\r
- Double_t ry=fitter[iBin]->GetRawYield();\r
- Double_t ery=fitter[iBin]->GetRawYieldError();\r
+ Double_t ry=fitter[massBin]->GetRawYield();\r
+ Double_t ery=fitter[massBin]->GetRawYieldError();\r
myCanvas[massBin] = new TCanvas(Form("myCanvas_%d_%d",j,iBin),Form("Invariant mass mult bin %d, pt bin %d",j,iBin));\r
fitter[massBin]->DrawHere(gPad);\r
\r
hSignificance[j]->SetBinContent(iBin+1,sig);\r
hSignificance[j]->SetBinError(iBin+1,errsig);\r
hMass[j]->SetBinContent(iBin+1,mass);\r
- hMass[j]->SetBinError(iBin+1,0.0001);\r
+ hMass[j]->SetBinError(iBin+1,massUnc);\r
hSigma[j]->SetBinContent(iBin+1,sigma);\r
- hSigma[j]->SetBinError(iBin+1,0.0001);\r
+ hSigma[j]->SetBinError(iBin+1,sigmaUnc);\r
\r
massBin++;\r
delete hRebinned;\r
if(analysisType==kDplusKpipi) partname="Dminus";\r
}\r
\r
- TString outfilename = Form("RawYield_MultInt_%s_%s",partname.Data(),CutsType);\r
+ TString outfilename = Form("RawYield_Mult_%s_%s",partname.Data(),CutsType);\r
if(fixPeakSigma) outfilename += "_SigmaFixed";\r
if(typeb==0) outfilename += "_Expo.root";\r
else if(typeb==1) outfilename += "_Linear.root";\r
else if(typeb==2) outfilename += "_Pol2.root";\r
\r
- TFile* outf=new TFile(outfilename,"update");\r
+ TFile* outf=new TFile(outfilename,"recreate");\r
outf->cd(); \r
+ hNormalization->Write();\r
for(Int_t j=0; j<massBin; j++) hmass[j]->Write();\r
for(Int_t j=0; j<nMultbins; j++){\r
hMass[j]->Write();\r
}\r
\r
//_____________________________________________________________________________________________\r
-Bool_t LoadD0toKpiHistos(TObjArray* listFiles, TH3F** hPtMassMult, TH2F** hNtrZvtx, TH2F** hNtrZvtxCorr, const char *CutsType, Int_t Option)\r
+Bool_t LoadD0toKpiHistos(TObjArray* listFiles, TH3F** hPtMassMult, TH2F** hNtrZvtx, TH2F** hNtrZvtxCorr, AliNormalizationCounter *counter, const char *CutsType, Int_t Option)\r
{\r
Int_t nFiles=listFiles->GetEntries();\r
TList **hlist=new TList*[nFiles];\r
listnorm += CutsType;\r
printf("List norm name %s\n",listnorm.Data());\r
hlistNorm[nReadFiles]=(TList*)dir->Get(listnorm);\r
+ // AliNormalizationCounter *tmpcounter = (AliNormalizationCounter*)hlistNorm[nReadFiles]->FindObject("NormCounterCorrMult");\r
+ // counter->Add(tmpcounter);\r
+ // delete tmpcounter;\r
+ // counter = tmpcounter;\r
\r
TString cutsobjname="coutputCutsD0";\r
if(optPartAntiPart==kParticleOnly) cutsobjname+="D0";\r
outf->Close();\r
return kTRUE;\r
\r
- }\r
+}\r
\r
//_____________________________________________________________________________________________\r
TH1F* RebinHisto(TH1F* hOrig, Int_t reb, Int_t firstUse){\r