macro to extract efficiency: small fix
[u/mrichter/AliRoot.git] / PWGPP / pid / doeffKa.C
index bea1198..ccee518 100644 (file)
@@ -9,21 +9,14 @@
 #include"AliPIDperfContainer.h"
 
 int LoadLib();
-void doeffKaUser(Int_t pos,Float_t etaminkp=-0.8,Float_t etamaxkp=0.8);
 void doeffKa(Int_t pos=1,Float_t prob=0.1,Float_t etaminkp=-0.8,Float_t etamaxkp=0.8);
 TH2F *GetHistoKap(Float_t pt=1,Float_t ptM=1.1,Float_t pMinkp=0,Float_t pMinkn=0.,Float_t etaminkp=-0.8,Float_t etamaxkp=0.8);
 TH2F *GetHistoKan(Float_t pt=1,Float_t ptM=1.1,Float_t pMinkn=0,Float_t pMinkp=0.,Float_t etaminkp=-0.8,Float_t etamaxkp=0.8);
 void fit(TH1D *h,Float_t *a=NULL,char *opt="",char *opt2="",Float_t pt=1.5);
 void AddHisto(TH2F *h1,TH2F *h2,Float_t w);
-TH2F *GetHistoUser(Int_t pos=1,Float_t pt=1,Float_t ptM=1.1,Float_t etaminkp=-0.8,Float_t etamaxkp=0.8);
-TH2F *GetHistoPiUser(Int_t pos=1,Float_t pt=1,Float_t ptM=1.1,Float_t etaminkp=-0.8,Float_t etamaxkp=0.8);
-TH2F *GetHistoKaUser(Int_t pos=1,Float_t pt=1,Float_t ptM=1.1,Float_t etaminkp=-0.8,Float_t etamaxkp=0.8);
-TH2F *GetHistoPrUser(Int_t pos=1,Float_t pt=1,Float_t ptM=1.1,Float_t etaminkp=-0.8,Float_t etamaxkp=0.8);
 
 TObject* fContPid1;
 TObject* fContPid2;
-TObject* fContUser1;
-TObject* fContUser2;
 const Int_t nBinPid = 14; // pt,eta, ptPip, ptPin, PPip, PPin, TOF3sigmaPip, TOF3sigmaPin, isPhiTrue, nsigmaPip, nsigmaPin
 // 0.985 < mass < 1.045 (60) and 0 < centrality < 100 (10)
 Int_t binPid[nBinPid] = {1/*ptPhi*/,8/*EtaPi*/,20/*pt+*/,20/*pt-*/,5/*P+*/,1/*P-*/,2/*TOFmatch+*/,2/*TOFmatch-*/,2/*istrue*/,4/*Nsigma+*/,4/*Nsigma-*/,1/*DeltaPhi+*/,1/*DeltaPhi-*/,1/*Psi*/};
@@ -42,7 +35,7 @@ Float_t fitmax = 1.045;
 Int_t cmin = 1;// min 1
 Int_t cmax = 8;// max 10
 
-Float_t weightS = -0.9;
+Float_t weightS = -1.;
 
 Int_t rebinsize = 1;
 
@@ -55,7 +48,6 @@ Bool_t keepTrue = kFALSE; // put it to false to fit only background (only for MC
 Bool_t kGoodMatch = kFALSE; // to check good matching
 
 Bool_t kSigma2vs3 = kFALSE; // to check good matching
-Bool_t kSigma2vs3TPC = kFALSE; // to check good matching
 
 Bool_t require5sigma = kFALSE; // don't touch this flag
 
@@ -72,7 +64,7 @@ TH2F *htracked;
 
 Bool_t kLoaded=kFALSE;
 int LoadLib(){
-  weightS = -0.9;
+  weightS = -1.;
 
   require5sigma = kFALSE;
 
@@ -99,8 +91,6 @@ int LoadLib(){
 
     fContPid1 = (AliPIDperfContainer *) l->FindObject("contPID");
     fContPid2 = (AliPIDperfContainer *) l->FindObject("contPID2");
-    fContUser1 = (AliPIDperfContainer *) l->FindObject("contUserPID");
-    fContUser2 = (AliPIDperfContainer *) l->FindObject("contUserPID2");
     hmatched = (TH2F *) l2->FindObject("hMatchKa"); 
     htracked = (TH2F *) l2->FindObject("hTrackingKa"); 
   }
@@ -145,16 +135,10 @@ int LoadLib(){
     kOverAll = 0;
   }
 
-  if(kSigma2vs3TPC){
-    kGoodMatch=kFALSE;
-    kOverAll = 0;
-  }
-
   if(bayesVsigma){
     kOverAll = 0;
     kGoodMatch=kFALSE;
     kSigma2vs3=kFALSE;
-    kSigma2vs3TPC=kFALSE;
     kTOFmatch=kTRUE;
     weightS = -0.7;
   }
@@ -164,200 +148,6 @@ int LoadLib(){
 
   return 1;
 }
-void doeffKaUser(Int_t pos,Float_t etaminkp,Float_t etamaxkp){
-  Int_t nptbin = binPid[2];
-  Float_t minptbin = xmin[2];
-  Float_t maxptbin = xmax[2];
-  
-  TCanvas *c1 = new TCanvas();
-  c1->Divide((nptbin+1)/2,2);
-
-  Double_t xx[50],yyPi[50],yyKa[50],yyPr[50];
-  Double_t exx[50],eyyPi[50],eyyKa[50],eyyPr[50];
-
-  TH2F *hh;
-  TH1D *h;
-
-  Float_t b[100][3];
-  Float_t bPi[100][3];
-  Float_t bKa[100][3];
-  Float_t bPr[100][3];
-
-  char name[100];
-
-  for(Int_t i=0;i < nptbin;i++){
-    c1->cd(i+1);
-    Float_t ptmin = minptbin+(maxptbin-minptbin)/nptbin*(i);
-    Float_t ptmax = minptbin+(maxptbin-minptbin)/nptbin*(i+1);
-    
-    xx[i] = (ptmin+ptmax)/2;
-    exx[i] = (-ptmin+ptmax)/2;
-    
-    hh=GetHistoUser(pos,ptmin,ptmax,etaminkp,etamaxkp);
-    sprintf(name,"all%i",i);
-    h = hh->ProjectionX(name,cmin,cmax);
-    Int_t ntrial = 0;
-    Float_t chi2 = 10000;
-    while(ntrial < 3 && (chi2 > 20 + 1000*selectTrue)){
-      fit(h,b[i],"WW","",xx[i]);
-      fit(h,b[i],"","",xx[i]);
-      ntrial++;
-      chi2 = b[i][2];
-    }
-    printf("%i) %f +/- %f\n",i,b[i][0],b[i][1]);
-
-    hh=GetHistoPiUser(pos,ptmin,ptmax,etaminkp,etamaxkp);
-    sprintf(name,"pi%i",i);
-    h = hh->ProjectionX(name,cmin,cmax);
-    ntrial = 0;
-    chi2 = 10000;
-    while(ntrial < 3 && (chi2 > 20 + 1000*selectTrue)){
-      fit(h,bPi[i],"WW","",xx[i]);
-      fit(h,bPi[i],"","",xx[i]);
-      ntrial++;
-      chi2 = bPi[i][2];
-    }
-    printf("pi) %f +/- %f\n",bPi[i][0],bPi[i][1]);
-
-    hh=GetHistoKaUser(pos,ptmin,ptmax,etaminkp,etamaxkp);
-    sprintf(name,"ka%i",i);
-    h = hh->ProjectionX(name,cmin,cmax);
-    ntrial = 0;
-    chi2 = 10000;
-    while(ntrial < 3 && (chi2 > 20 + 1000*selectTrue)){
-      fit(h,bKa[i],"WW","",xx[i]);
-      fit(h,bKa[i],"","",xx[i]);
-      ntrial++;
-      chi2 = bKa[i][2];
-    }
-    printf("ka) %f +/- %f\n",bKa[i][0],bKa[i][1]);
-
-    hh=GetHistoPrUser(pos,ptmin,ptmax,etaminkp,etamaxkp);
-    sprintf(name,"pr%i",i);
-    h = hh->ProjectionX(name,cmin,cmax);
-    ntrial = 0;
-    chi2 = 10000;
-    while(ntrial < 3 && (chi2 > 20 + 1000*selectTrue)){
-      fit(h,bPr[i],"WW","",xx[i]);
-      fit(h,bPr[i],"","",xx[i]);
-      ntrial++;
-      chi2 = bPr[i][2];
-    }
-    printf("pr) %f +/- %f\n",bPr[i][0],bPr[i][1]);
-
-    yyPi[i] = bPi[i][0] / b[i][0];
-    yyKa[i] = bKa[i][0] / b[i][0];
-    yyPr[i] = bPr[i][0] / b[i][0];
-
-    eyyPi[i] = bPi[i][1]/bPi[i][0]*yyPi[i];
-    eyyKa[i] = bKa[i][1]/bKa[i][0]*yyKa[i];
-    eyyPr[i] = bPr[i][1]/bPr[i][0]*yyPr[i];
-  }
-
-  /*TCanvas *c2 =*/ new TCanvas();
-  TGraphErrors *gKa = new TGraphErrors(nptbin,xx,yyKa,exx,eyyKa);
-  gKa->Draw("AP");
-  gKa->SetLineColor(1);
-  gKa->SetMarkerColor(1);
-  gKa->SetMarkerStyle(21);
-
-  TGraphErrors *gPi = new TGraphErrors(nptbin,xx,yyPi,exx,eyyPi);
-  gPi->Draw("P");
-  gPi->SetLineColor(4);
-  gPi->SetMarkerColor(4);
-  gPi->SetMarkerStyle(20);
-
-  TGraphErrors *gPr = new TGraphErrors(nptbin,xx,yyPr,exx,eyyPr);
-  gPr->Draw("P");
-  gPr->SetLineColor(2);
-  gPr->SetMarkerColor(2);
-  gPr->SetMarkerStyle(22);
-
-  if(pos) sprintf(name,"phiUserAnalPos_%3.1f-%3.1f_%i-%i.root",etaminkp,etamaxkp,cmin,cmax);
-  else sprintf(name,"phiUserAnalNeg_%3.1f-%3.1f_%i-%i.root",etaminkp,etamaxkp,cmin,cmax);
-
-  gPi->SetName("piSelected");
-  gKa->SetName("kaSelected");
-  gPr->SetName("prSelected");
-
-  TFile *fout = new TFile(name,"RECREATE");
-  gPi->Write();
-  gKa->Write();
-  gPr->Write();
-  fout->Close();
-}
-
-TH2F *GetHistoUser(Int_t pos,Float_t pt,Float_t ptM,Float_t etaminkp,Float_t etamaxkp){
-  //  Int_t binUser[nBinUser] = {8/*Eta*/,20/*pt*/,2/*istrue*/,4/*whatSelection*/,1/*DeltaPhi*/,1/*Psi*/};
-  Float_t x[] = {etaminkp+0.0001,pt+0.0001,isMC,0.0001,-TMath::Pi(),TMath::Pi(),-TMath::Pi()/2,TMath::Pi()/2};
-  Float_t x2[] = {etamaxkp-0.0001,ptM-0.0001,isMC,2.9999,-TMath::Pi(),TMath::Pi(),-TMath::Pi()/2,TMath::Pi()/2};
-
-  AliPIDperfContainer *tmp = (AliPIDperfContainer *) fContUser1;
-  if(!pos) tmp = (AliPIDperfContainer *) fContUser2;
-
-  TH2F *h = tmp->GetQA(0, x, x2);
-
-  h->GetXaxis()->SetTitle("M_{K^{0}_{s}} (GeV/#it{c}^{2})");
-  h->GetYaxis()->SetTitle("centrality [%]");
-
-  return h;
-
-}
-
-
-TH2F *GetHistoPiUser(Int_t pos,Float_t pt,Float_t ptM,Float_t etaminkp,Float_t etamaxkp){
-  //  Int_t binUser[nBinUser] = {8/*Eta*/,20/*pt*/,2/*istrue*/,4/*whatSelection*/,1/*DeltaPhi*/,1/*Psi*/};
-  Float_t x[] = {etaminkp+0.0001,pt+0.0001,isMC,1.0001,-TMath::Pi(),TMath::Pi(),-TMath::Pi()/2,TMath::Pi()/2};
-  Float_t x2[] = {etamaxkp-0.0001,ptM-0.0001,isMC,1.0002,-TMath::Pi(),TMath::Pi(),-TMath::Pi()/2,TMath::Pi()/2};
-
-  AliPIDperfContainer *tmp = (AliPIDperfContainer *) fContUser1;
-  if(!pos) tmp = (AliPIDperfContainer *) fContUser2;
-
-  TH2F *h = tmp->GetQA(0, x, x2);
-
-  h->GetXaxis()->SetTitle("M_{K^{0}_{s}} (GeV/#it{c}^{2})");
-  h->GetYaxis()->SetTitle("centrality [%]");
-
-  return h;
-
-}
-
-
-TH2F *GetHistoKaUser(Int_t pos,Float_t pt,Float_t ptM,Float_t etaminkp,Float_t etamaxkp){
-  //  Int_t binUser[nBinUser] = {8/*Eta*/,20/*pt*/,2/*istrue*/,4/*whatSelection*/,1/*DeltaPhi*/,1/*Psi*/};
-  Float_t x[] = {etaminkp+0.0001,pt+0.0001,isMC,2.0001,-TMath::Pi(),TMath::Pi(),-TMath::Pi()/2,TMath::Pi()/2};
-  Float_t x2[] = {etamaxkp-0.0001,ptM-0.0001,isMC,2.0002,-TMath::Pi(),TMath::Pi(),-TMath::Pi()/2,TMath::Pi()/2};
-
-  AliPIDperfContainer *tmp = (AliPIDperfContainer *) fContUser1;
-  if(!pos) tmp = (AliPIDperfContainer *) fContUser2;
-
-  TH2F *h = tmp->GetQA(0, x, x2);
-
-  h->GetXaxis()->SetTitle("M_{K^{0}_{s}} (GeV/#it{c}^{2})");
-  h->GetYaxis()->SetTitle("centrality [%]");
-
-  return h;
-
-}
-
-
-TH2F *GetHistoPrUser(Int_t pos,Float_t pt,Float_t ptM,Float_t etaminkp,Float_t etamaxkp){
-  //  Int_t binUser[nBinUser] = {8/*Eta*/,20/*pt*/,2/*istrue*/,4/*whatSelection*/,1/*DeltaPhi*/,1/*Psi*/};
-  Float_t x[] = {etaminkp+0.0001,pt+0.0001,isMC,3.0001,-TMath::Pi(),TMath::Pi(),-TMath::Pi()/2,TMath::Pi()/2};
-  Float_t x2[] = {etamaxkp-0.0001,ptM-0.0001,isMC,3.0002,-TMath::Pi(),TMath::Pi(),-TMath::Pi()/2,TMath::Pi()/2};
-
-  AliPIDperfContainer *tmp = (AliPIDperfContainer *) fContUser1;
-  if(!pos) tmp = (AliPIDperfContainer *) fContUser2;
-
-  TH2F *h = tmp->GetQA(0, x, x2);
-
-  h->GetXaxis()->SetTitle("M_{K^{0}_{s}} (GeV/#it{c}^{2})");
-  h->GetYaxis()->SetTitle("centrality [%]");
-
-  return h;
-
-}
-
 
 void doeffKa(Int_t pos,Float_t prob,Float_t etaminkp,Float_t etamaxkp){
   LoadLib();
@@ -386,9 +176,8 @@ void doeffKa(Int_t pos,Float_t prob,Float_t etaminkp,Float_t etamaxkp){
   if(prob > 0.1999){
     kGoodMatch = kFALSE;
     kSigma2vs3 = kFALSE;
-    kSigma2vs3TPC=kFALSE;
-    if(! kOverAll) require5sigma = kTRUE;
-    if(!isMC && !kOverAll) weightS = -0.9;
+//    if(! kOverAll) require5sigma = kTRUE;
+    if(!isMC && !kOverAll) weightS = -0.95;
   }
 
   TCanvas *c1 = new TCanvas();
@@ -538,9 +327,6 @@ void doeffKa(Int_t pos,Float_t prob,Float_t etaminkp,Float_t etamaxkp){
   if(kSigma2vs3)
     sprintf(flag2,"Sigma2vs3");
 
-  if(kSigma2vs3TPC)
-    sprintf(flag2,"Sigma2vs3TPC");
-
   if(kOverAll)
     sprintf(flag2,"OverAll");
   if(kOverAllTOFmatch)
@@ -552,7 +338,7 @@ void doeffKa(Int_t pos,Float_t prob,Float_t etaminkp,Float_t etamaxkp){
     if(prob >=0.2) sprintf(name,"kaonPos%sP%iEff%i_%i%s%s.root",etarange,Int_t(prob*100),(cmin-1)*10,cmax*10,flag,flag2);
     else{
       sprintf(name,"kaonPos%sMatchEff%i_%i%s%s.root",etarange,(cmin-1)*10,cmax*10,flag,flag2);
-      if(!(kOverAll || bayesVsigma || kGoodMatch || kSigma2vs3 || kSigma2vs3TPC)) kWriteME = kTRUE;
+      if(!(kOverAll || bayesVsigma || kGoodMatch || kSigma2vs3)) kWriteME = kTRUE;
     }
   }
   else{
@@ -608,14 +394,6 @@ TH2F *GetHistoKap(Float_t pt,Float_t ptM,Float_t pMinkp,Float_t pMinkn,Float_t e
       x2[9] = 2;
   }
 
-  if(kSigma2vs3TPC){
-    x[6] = 0.0001;
-    x2[6] = 0.0002;
-    x2[9] = 3;
-    if(pMinkp > 0)
-      x2[9] = 2;
-  }
-
   if(bayesVsigma){
     if(pMinkp > 0){
       x[4] = 0.2001;
@@ -678,14 +456,6 @@ TH2F *GetHistoKan(Float_t pt,Float_t ptM,Float_t pMinkn,Float_t pMinkp,Float_t e
     if(pMinkn > 0)
       x2[10] = 2;
   }
-
-  if(kSigma2vs3TPC){
-    x[7] = 0.0001;
-    x2[7] = 0.0002;
-    x2[10] = 3;
-    if(pMinkn > 0)
-      x2[10] = 2;
-  }
  
  if(bayesVsigma){
     if(pMinkn > 0){