From 6321ee4667ac3abea6e1d99be4c4b14c7ffb56be Mon Sep 17 00:00:00 2001 From: dainese Date: Sat, 13 Feb 2010 22:15:57 +0000 Subject: [PATCH] Updates (Chiara) --- PWG3/vertexingHF/AliAnalysisTaskSED0Mass.cxx | 42 +++++++++------- PWG3/vertexingHF/AliHFMassFitter.cxx | 51 +++++++++++++++----- PWG3/vertexingHF/AliHFMassFitter.h | 34 +++++++------ 3 files changed, 82 insertions(+), 45 deletions(-) diff --git a/PWG3/vertexingHF/AliAnalysisTaskSED0Mass.cxx b/PWG3/vertexingHF/AliAnalysisTaskSED0Mass.cxx index 26abd0c69ca..9e681e96ef1 100644 --- a/PWG3/vertexingHF/AliAnalysisTaskSED0Mass.cxx +++ b/PWG3/vertexingHF/AliAnalysisTaskSED0Mass.cxx @@ -80,6 +80,7 @@ fVHFmycuts(0), fArray(0), fReadMC(0), fLsNormalization(1.) + { // Default constructor for(Int_t i=0;i<5;i++) {fTotPosPairs[i]=0; fTotNegPairs[i]=0;} @@ -311,8 +312,9 @@ void AliAnalysisTaskSED0Mass::UserCreateOutputObjects() tmpS27l->Sumw2(); //distribution w/o cuts - TH1F* tmpMS = new TH1F(nameMassNocutsS.Data(),"D^{0} invariant mass; M [GeV]; Entries",300,0,3.73); - TH1F *tmpMB=(TH1F*)tmpMt->Clone(); + // TH1F* tmpMS = new TH1F(nameMassNocutsS.Data(),"D^{0} invariant mass; M [GeV]; Entries",300,0.7,3.); + TH1F* tmpMS = new TH1F(nameMassNocutsS.Data(),"D^{0} invariant mass; M [GeV]; Entries",300,1.56484,2.16484); //range (MD0-300MeV, mD0 + 300MeV) + TH1F *tmpMB=(TH1F*)tmpMS->Clone(); tmpMB->SetName(nameMassNocutsB.Data()); tmpMS->Sumw2(); tmpMB->Sumw2(); @@ -704,7 +706,7 @@ void AliAnalysisTaskSED0Mass::UserExec(Option_t */*option*/) } - } + } if(pt>0. && pt<=1.){ ((TH1F*)fDistr->FindObject("hd0d0S_1"))->Fill(d->Prodd0d0()); @@ -864,10 +866,12 @@ void AliAnalysisTaskSED0Mass::UserExec(Option_t */*option*/) // printf(" cosThetaPoint > %f\n",fD0toKpiCuts[8]); Int_t ptbin=0; + Bool_t isInRange=kFALSE; //cout<<"P_t = "<0. && pt<=1.) { ptbin=1; + isInRange=kTRUE; /* //test d0 cut fVHFPPR->SetD0toKpiCuts(0.7,0.04,0.8,0.5,0.5,0.05,0.1,-0.0002,0.5); @@ -886,6 +890,7 @@ void AliAnalysisTaskSED0Mass::UserExec(Option_t */*option*/) if(pt>1. && pt<=3.) { if(pt>1. && pt<=2.) ptbin=2; if(pt>2. && pt<=3.) ptbin=3; + isInRange=kTRUE; /* //test d0 cut fVHFPPR->SetD0toKpiCuts(0.7,0.02,0.8,0.7,0.7,0.05,0.1,-0.0002,0.6); @@ -899,20 +904,22 @@ void AliAnalysisTaskSED0Mass::UserExec(Option_t */*option*/) } if(pt>3. && pt<=5.){ - ptbin=4; - /* - //test d0 cut - fVHFPPR->SetD0toKpiCuts(0.7,0.02,0.8,0.7,0.7,0.05,0.1,-0.0001,0.8); - fVHFmycuts->SetD0toKpiCuts(0.7,0.02,0.8,0.7,0.7,0.05,0.1,-0.00015,0.8); - */ - //original - fVHFPPR->SetD0toKpiCuts(0.7,0.02,0.8,0.7,0.7,0.05,0.05,-0.0001,0.8); - fVHFmycuts->SetD0toKpiCuts(0.7,0.02,0.8,0.7,0.7,0.05,0.05,-0.00015,0.8); - - //printf("I'm in the bin %d\n",ptbin); + ptbin=4; + isInRange=kTRUE; + /* + //test d0 cut + fVHFPPR->SetD0toKpiCuts(0.7,0.02,0.8,0.7,0.7,0.05,0.1,-0.0001,0.8); + fVHFmycuts->SetD0toKpiCuts(0.7,0.02,0.8,0.7,0.7,0.05,0.1,-0.00015,0.8); + */ + //original + fVHFPPR->SetD0toKpiCuts(0.7,0.02,0.8,0.7,0.7,0.05,0.05,-0.0001,0.8); + fVHFmycuts->SetD0toKpiCuts(0.7,0.02,0.8,0.7,0.7,0.05,0.05,-0.00015,0.8); + + //printf("I'm in the bin %d\n",ptbin); } - if(pt>5.){ + if(pt>5.&& pt<=10.){ //additional upper limit to compare with Correction Framework ptbin=5; + isInRange=kTRUE; /* //test d0 cut fVHFPPR->SetD0toKpiCuts(0.7,0.02,0.8,0.7,0.7,0.05,0.1,-0.00005,0.8); @@ -926,7 +933,7 @@ void AliAnalysisTaskSED0Mass::UserExec(Option_t */*option*/) //printf("I'm in the bin %d\n",ptbin); //old //fVHF->SetD0toKpiCuts(0.7,0.03,0.8,0.06,0.06,0.05,0.05,-0.0002,0.6); //2.p-p vertex reconstructed - if(prongsinacc){ + if(prongsinacc && isInRange){ FillHists(ptbin,d,mcArray,fVHFPPR,fOutputPPR); FillHists(ptbin,d,mcArray,fVHFmycuts,fOutputmycuts); } @@ -972,7 +979,7 @@ void AliAnalysisTaskSED0Mass::FillHists(Int_t ptbin, AliAODRecoDecayHF2Prong *pa //count candidates selected by cuts fNentries->Fill(2); //count true D0 selected by cuts - if (labD0>=0) fNentries->Fill(3); + if (fReadMC && labD0>=0) fNentries->Fill(3); PostData(3,fNentries); if (okD0==1) { @@ -1056,6 +1063,7 @@ void AliAnalysisTaskSED0Mass::Terminate(Option_t */*option*/) // if(fDebug > 1) printf("AnalysisTaskSED0Mass: Terminate() \n"); + fOutputPPR = dynamic_cast (GetOutputData(1)); if (!fOutputPPR) { printf("ERROR: fOutputthight not available\n"); diff --git a/PWG3/vertexingHF/AliHFMassFitter.cxx b/PWG3/vertexingHF/AliHFMassFitter.cxx index 5b97517c4b2..3c0618c7027 100644 --- a/PWG3/vertexingHF/AliHFMassFitter.cxx +++ b/PWG3/vertexingHF/AliHFMassFitter.cxx @@ -86,6 +86,7 @@ AliHFMassFitter::AliHFMassFitter (TH1F *histoToFit, Double_t minvalue, Double_t // standard constructor fhistoInvMass= (TH1F*)histoToFit->Clone("fhistoInvMass"); + fhistoInvMass->SetDirectory(0); fminMass=minvalue; fmaxMass=maxvalue; if(rebin!=1) RebinMass(rebin); @@ -234,6 +235,7 @@ void AliHFMassFitter::ComputeParSize() { void AliHFMassFitter::SetHisto(TH1F *histoToFit){ //fhistoInvMass = (TH1F*)histoToFit->Clone(); fhistoInvMass = new TH1F(*histoToFit); + fhistoInvMass->SetDirectory(0); cout<<"SetHisto pointer "<Integral(fminMass,fmaxMass); if(ftypeOfFit4Bkg!=3) slope1 = funcbkg->GetParameter(1); if(ftypeOfFit4Bkg==2) conc1 = funcbkg->GetParameter(2); - cout<<"Primo fit: \nintbkg1 = "<SetParNames("IntGB","MeanGB","SigmaGB","BkgInt","Coef1","Coef2"); funcbkg1->SetParameters(0.5*(totInt-intbkg1),fMass,ffactor*fSigmaSgn,intbkg1,slope1,conc1); -// cout<<"Parameters set to: "<<0.5*(totInt-intbkg1)<<"\t"<Fit(bkg1name.Data(),"R,L,E,+,0"); + if (status != 0){ + cout<<"Minuit returned "<GetParameter(i); //cout<GetParameter(i); @@ -829,7 +836,10 @@ Bool_t AliHFMassFitter::MassFitter(Bool_t draw){ Double_t sgnInt; sgnInt = totInt-bkgInt; cout<<"------TotInt = "<SetParameters(totInt,slope1,sgnInt,fMass,fSigmaSgn); //cout<<"Parameters set to: "<SetParameters(totInt,slope1,conc1,sgnInt,fMass,fSigmaSgn); -// cout<<"Parameters set to: "<Fit(massname.Data(),"R,L,E,+,0"); + if (status != 0){ + cout<<"Minuit returned "<GetParameter(nFitPars-2); @@ -913,6 +930,7 @@ Bool_t AliHFMassFitter::MassFitter(Bool_t draw){ for (Int_t i=0; i<2; i++) { gMinuit->SetErrorDef(errDef[i]); cont[i] = (TGraph*)gMinuit->Contour(80,kpar,jpar); + cout<<"Minuit Status = "<GetStatus()<Integral("width");} // return total integral of the histogram + void Signal(Double_t nOfSigma,Double_t &signal,Double_t &errsignal) const; // signal in nsigma with error + void Signal(Double_t min,Double_t max,Double_t &signal,Double_t &errsignal) const; // signal in (min, max) with error + void Background(Double_t nOfSigma,Double_t &background,Double_t &errbackground) const; // backgournd in nsigma with error + void Background(Double_t min,Double_t max,Double_t &background,Double_t &errbackground) const; // backgournd in (min, max) with error + void Significance(Double_t nOfSigma,Double_t &significance,Double_t &errsignificance) const; // significance in nsigma with error + void Significance(Double_t min,Double_t max,Double_t &significance,Double_t &errsignificance) const; // significance in (min, max) with error Double_t FitFunction4MassDistr (Double_t*, Double_t*); Double_t FitFunction4Sgn (Double_t*, Double_t*); -- 2.43.0