Int_t ifunc=0;
-Float_t fitmin = 1.08;
+Float_t fitmin = 1.1;
Float_t fitmax = 1.15;
Int_t cmin = 1; // min 1
Bool_t kOverAll = kFALSE;
Bool_t kOverAllTOFmatch = kFALSE;
Bool_t kOverAll2Sigma = kFALSE;
+Bool_t kPid2Sigma = kFALSE;
+Bool_t kPid3Sigma = kFALSE;
TH2F *hmatched;
TH2F *htracked;
kLoaded = kTRUE;
// check if MC
- Float_t x[] = {xmin[0]+0.001,xmin[1]+0.001,xmin[2]+0.001,xmin[3]+0.001,xmin[4]+0.001,xmin[5]+0.001,xmin[6]+0.001,xmin[7]+0.001,1/*trueMC*/,xmin[9],xmin[10]};
- Float_t x2[] = {xmax[0],xmax[1],xmax[2],xmax[3],xmax[4],xmax[5],xmax[6],xmax[7],xmax[8],xmax[9],xmax[10]};
+ Float_t x[] = {xmin[0]+0.001,xmin[1]+0.001,xmin[2]+0.001,xmin[3]+0.001,xmin[4]+0.001,xmin[5]+0.001,xmin[6]+0.001,xmin[7]+0.001,1/*trueMC*/,xmin[9],xmin[10],xmin[11],xmin[12],xmin[13]};
+ Float_t x2[] = {xmax[0],xmax[1],xmax[2],xmax[3],xmax[4],xmax[5],xmax[6],xmax[7],xmax[8],xmax[9],xmax[10],xmax[11],xmax[12],xmax[13]};
- AliPIDperfContainer *tmp = (AliPIDperfContainer *) fContPid1;
+ AliPIDperfContainer *tmp = (AliPIDperfContainer *) fContPid2;
TH1D *h = tmp->GetQA(0, x, x2)->ProjectionX("checkMC");
if(h->GetEntries()) isMC = kTRUE;
printf("MC truth found!!!!!!\nIt is MC!!!!!!");
}
- fsign = new TF1("fsign","gaus(0) +0.5*[0]*TMath::Exp(-[3]*TMath::Abs(x-[1]))",fitmin,fitmax);
- fback = new TF1("fback","pol2",fitmin,fitmax);
- fall = new TF1("fall","gaus(0) +0.5*[0]*TMath::Exp(-[3]*TMath::Abs(x-[1])) + pol2(4)",fitmin,fitmax);
+ fsign = new TF1("fsign","gaus(0) +0*0.5*[0]*TMath::Exp(-[3]*TMath::Abs(x-[1]))",fitmin,fitmax);
+ fback = new TF1("fback","pol2*(x-0.938-0.139)*(x > 0.938+0.139)",fitmin,fitmax);
+ fall = new TF1("fall","gaus(0) +0*0.5*[0]*TMath::Exp(-[3]*TMath::Abs(x-[1])) + pol2(4)*(x-0.938-0.139)*(x > 0.938+0.139)",fitmin,fitmax);
fsign->SetLineColor(2);
fback->SetLineColor(4);
maxptbin = xmax[3];
}
- if(prob > 0.1999){
+ if(prob > 0.1999|| kPid3Sigma ||kPid2Sigma){
kGoodMatch = kFALSE;
kSigma2vs3 = kFALSE;
- if(! kOverAll) require5sigma = kTRUE;
+// if(! kOverAll) require5sigma = kTRUE;
if(!isMC) weightS = -0.95;
}
expt[i] = (-ptmin+ptmax)/2;
eff[i] = b2[i][0]/(b[i][0]-b2[i][0]*weightS);
- b[i][0] = b[i][0]-b2[i][0]*weightS;
+ // b[i][0] = b[i][0]-b2[i][0]*weightS;
+
+ // efferr[i] = TMath::Sqrt(b[i][1]*b[i][1]/b[i][0]/b[i][0] + b2[i][1]*b2[i][1]/b2[i][0]/b2[i][0])*(b2[i][0]+b2[i][1])*(1+weightS*(b2[i][0]-b2[i][1])/b[i][0])/b[i][0];//*(1-eff[i]);//der2*der2*(b[i][1]*b[i][1] - b2[i][1]*b2[i][1]));
- efferr[i] = TMath::Sqrt(b[i][1]*b[i][1]/b[i][0]/b[i][0] + b2[i][1]*b2[i][1]/b2[i][0]/b2[i][0])*(b2[i][0]+b2[i][1])*(1+weightS*(b2[i][0]-b2[i][1])/b[i][0])/b[i][0];//*(1-eff[i]);//der2*der2*(b[i][1]*b[i][1] - b2[i][1]*b2[i][1]));
+ efferr[i] = 1./(b[i][0]-b2[i][0]*weightS)/(b[i][0]-b2[i][0]*weightS)*TMath::Sqrt(b[i][0]*b[i][0]*b2[i][1]*b2[i][1] + b2[i][0]*b2[i][0]*b[i][1]*b[i][1]);
if(TMath::Abs(efferr[i]) > 1)efferr[i]=1;
}
if(kOverAll2Sigma)
sprintf(flag2,"OverAll2sigma");
+ if(kPid3Sigma)
+ sprintf(flag2,"pid3sigma");
+ if(kPid2Sigma)
+ sprintf(flag2,"pid2sigma");
+
if(pos){
if(prob >=0.2) sprintf(name,"protonPos%sP%iEff%i_%i%s%s.root",etarange,Int_t(prob*100),(cmin-1)*10,cmax*10,flag,flag2);
else{
TH2F *GetHistoPrp(Float_t pt,Float_t ptM,Float_t pMinkp,Float_t pMinkn,Float_t etaminkp,Float_t etamaxkp){
- Float_t x[] = {xmin[0]+0.001,etaminkp+0.001,pt+0.001,xmin[3]+0.001,pMinkp+0.001,pMinkn+0.001,(pMinkp>0.09)+0.001,kTOFmatch+0.001,selectTrue,xmin[9],xmin[10],xmin[11],xmin[12],xmin[13]};
+ Float_t x[] = {xmin[0]+0.001,etaminkp+0.001,pt+0.001,xmin[3]+0.001,pMinkp+0.001,pMinkn+0.001,(pMinkp>0.09 || kPid3Sigma||kPid2Sigma)+0.001,kTOFmatch+0.001,selectTrue,xmin[9],xmin[10],xmin[11],xmin[12],xmin[13]};
Float_t x2[] = {xmax[0],etamaxkp-0.001,ptM-0.001,xmax[3],xmax[4],xmax[5],xmax[6],xmax[7],keepTrue,xmax[9],xmax[10],xmax[11],xmax[12],xmax[13]};
if(kOverAll){
}
if(require5sigma) x2[9] = 4.9;
+ if(kPid3Sigma && pMinkp>0.09) x2[9] = 2.9;
+ if(kPid2Sigma && pMinkp>0.09) x2[9] = 1.9;
AliPIDperfContainer *tmp = (AliPIDperfContainer *) fContPid1;
TH2F *GetHistoPrn(Float_t pt,Float_t ptM,Float_t pMinkn,Float_t pMinkp,Float_t etaminkp,Float_t etamaxkp){
- Float_t x[] = {xmin[0]+0.001,etaminkp+0.001,xmin[2]+0.001,pt+0.001,pMinkp+0.001,pMinkn+0.001,kTOFmatch+0.001,(pMinkn>0.09)+0.001,selectTrue,xmin[9],xmin[10],xmin[11],xmin[12],xmin[13]};
+ Float_t x[] = {xmin[0]+0.001,etaminkp+0.001,xmin[2]+0.001,pt+0.001,pMinkp+0.001,pMinkn+0.001,kTOFmatch+0.001,(pMinkn>0.09 || kPid3Sigma||kPid2Sigma)+0.001,selectTrue,xmin[9],xmin[10],xmin[11],xmin[12],xmin[13]};
Float_t x2[] = {xmax[0],etamaxkp-0.001,xmax[2],ptM-0.001,xmax[4],xmax[5],xmax[6],xmax[7],keepTrue,xmax[9],xmax[10],xmax[11],xmax[12],xmax[13]};
if(kOverAll){
}
if(require5sigma) x2[10] = 4.9;
+ if(kPid3Sigma && pMinkn>0.09) x2[10] = 2.9;
+ if(kPid2Sigma && pMinkn>0.09) x2[10] = 1.9;
AliPIDperfContainer *tmp = (AliPIDperfContainer *) fContPid2;
fall->SetParameter(0,100);
fall->SetParameter(1,1.115);
fall->SetParameter(2,2.89748e-03);
- fall->FixParameter(3,350+600/pt);
+ fall->FixParameter(3,1000+350+600/pt);
- fall->SetParLimits(0,0.00001,10000);
+ fall->SetParLimits(0,0.00001,10000000);
fall->SetParLimits(1,1.105,1.125);//1.01898 + 2.4e-04*pt-1e-03,1.01898 + 2.4e-04*pt+1e-03);
fall->SetParLimits(2,0.0005,0.0015);
//fall->SetParLimits(3,200,350);
// getchar();
if(pt > 2.5){
- if(pt < 2.8) h2->RebinX(2);
- else if(pt < 3) h2->RebinX(4);
- else h2->RebinX(10);
+ if(pt < 2.4) h2->RebinX(1);
+ else if(pt < 3) h2->RebinX(2);
+ else h2->RebinX(2);
}
h=h2;
Float_t signI = ftmp2->Integral(mean-10*sigma,mean+10*sigma)/h->GetBinWidth(1);
Float_t backI = ftmp3->Integral(mean-3*sigma,mean+3*sigma)/h->GetBinWidth(1);
- Float_t errI = TMath::Sqrt(ftmp->GetParError(0)*ftmp->GetParError(0)/(0.001+ftmp->GetParameter(0))/(0.001+ftmp->GetParameter(0)));
+ Float_t errI = TMath::Abs(ftmp->GetParError(0)*ftmp->GetParError(0)/(0.001+ftmp->GetParameter(0))/(0.001+ftmp->GetParameter(0)));
+
+ errI = TMath::Sqrt(errI);
+
+ if(signI < 0) signI = 0;
+ if(backI < 1) backI = 1;
printf("signal(5 sigma) = %f +/- %f(fit) +/- %f(stat)\n",signI,errI*signI,TMath::Sqrt(signI));
printf("backgr(3sigma) = %f\n",backI);