X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=ITS%2FmacrosSDD%2FPlotOutputQAtrainSDD.C;h=a93173413c3cc2e95a29df47fcd536f2409af027;hb=cf2a0de44e7ab121556f058c0420bef7972a2cf0;hp=33998b02a9a78c3e4b62eb8230e6eb8aeadb4af4;hpb=7541e187063534093eb27d8e87e1776981670f45;p=u%2Fmrichter%2FAliRoot.git diff --git a/ITS/macrosSDD/PlotOutputQAtrainSDD.C b/ITS/macrosSDD/PlotOutputQAtrainSDD.C index 33998b02a9a..a93173413c3 100644 --- a/ITS/macrosSDD/PlotOutputQAtrainSDD.C +++ b/ITS/macrosSDD/PlotOutputQAtrainSDD.C @@ -19,22 +19,28 @@ Double_t LangausFun(Double_t *x, Double_t *par); -void PlotOutputQAtrainSDD(TString option="local", - TString fileName="QAresults.root", +void PlotOutputQAtrainSDD(TString option="local", Int_t nRun=0, - Int_t year=2010, - TString period="LHC10e"){ + TString period="LHC11a", + TString recoPass="pass2_with_SDD", + TString qaTrain="", + TString fileName="QAresults.root"){ gStyle->SetOptStat(0); // gStyle->SetOptTitle(0); TFile *f; TString path; + Int_t year=2011; + if(period.Contains("LHC10")) year=2010; + else if(period.Contains("LHC09")) year=2009; if(option.Contains("local")){ f=new TFile(fileName.Data()); + printf("Opened file %s\n",f->GetName()); }else{ TGrid::Connect("alien:"); - path=Form("/alice/data/%d/%s/%09d/ESDs/",year,period.Data(),nRun); + path=Form("/alice/data/%d/%s/%09d/ESDs/%s",year,period.Data(),nRun,recoPass.Data()); + printf("search in path %s\n",path.Data()); if(!gGrid||!gGrid->IsConnected()) { printf("gGrid not found! exit macro\n"); return; @@ -46,22 +52,45 @@ void PlotOutputQAtrainSDD(TString option="local", return; } printf("================>%d files found\n", nFiles); - Int_t theFile=0; - Int_t maxVer=0; - if (nFiles > 1){ + if(qaTrain.Length()>0){ + Int_t found=kFALSE; for (Int_t iFil = 0; iFil GetKey(iFil,"turl")); - TString cutFilename=fileName.ReplaceAll("/QAresults.root",""); - Int_t last=cutFilename.Sizeof()-3; - cutFilename.Remove(0,last); - Int_t qaver=atoi(cutFilename.Data()); - if(qaver>maxVer){ - maxVer=qaver; - theFile=iFil; + fileName=Form("%s",gr->GetKey(iFil,"turl")); + TString isMerged=fileName; + isMerged.Remove(isMerged.Sizeof()-16); + isMerged.Remove(0,isMerged.Sizeof()-5); + if(!isMerged.Contains("QA")) continue; + if(fileName.Contains(qaTrain.Data())){ + found=kTRUE; + break; } } + if(!found){ + printf(" File from %s train not found\n",qaTrain.Data()); + return; + } + }else{ + Int_t theFile=0; + Int_t maxVer=0; + if (nFiles > 1){ + for (Int_t iFil = 0; iFil GetKey(iFil,"turl")); + TString isMerged=fileName; + isMerged.Remove(isMerged.Sizeof()-16); + isMerged.Remove(0,isMerged.Sizeof()-5); + if(!isMerged.Contains("QA")) continue; + TString cutFilename=fileName.ReplaceAll("/QAresults.root",""); + Int_t last=cutFilename.Sizeof()-3; + cutFilename.Remove(0,last); + Int_t qaver=atoi(cutFilename.Data()); + if(qaver>maxVer){ + maxVer=qaver; + theFile=iFil; + } + } + } + fileName=Form("%s",gr->GetKey(theFile,"turl")); } - fileName=Form("%s",gr->GetKey(theFile,"turl")); f=TFile::Open(fileName.Data()); } @@ -127,7 +156,7 @@ void PlotOutputQAtrainSDD(TString option="local", printf("Number of Triggered Events = %d\n",nTrigEvents); nEvents=nTrigEvents; }else{ - printf("No request on the trigger done whenrunning the task\n"); + printf("No request on the trigger done when running the task\n"); } Int_t bestMod=0; for(Int_t iMod=0; iMod<260;iMod++){ @@ -164,7 +193,7 @@ void PlotOutputQAtrainSDD(TString option="local", Float_t tpsN=0.; Float_t erpsN=0.; Float_t etpsN=0.; - if(ga>0){ + if(ga>0 && nEvents>0){ rpsN=rps/ga/(Float_t)nEvents; tpsN=tps/ga/(Float_t)nEvents; erpsN=TMath::Sqrt(rps)/ga/(Float_t)nEvents; @@ -189,6 +218,7 @@ void PlotOutputQAtrainSDD(TString option="local", h2dmodT4N->SetBinContent(iDet,iLad,tpsN); } } + if(nEvents<1) return; gStyle->SetPalette(1); @@ -230,41 +260,44 @@ void PlotOutputQAtrainSDD(TString option="local", h2dmodR4N->GetYaxis()->SetTitle("Ladder"); cmodR->Update(); } - - TCanvas* cmodT=new TCanvas("cmodT","TrackPoint Occup",1200,1200); - cmodT->Divide(2,3); - cmodT->cd(1); - hmodT->Draw(); - hmodT->GetXaxis()->SetTitle("SDD Module Id"); - hmodT->GetYaxis()->SetTitle("TrackPoints"); - hmodT->GetYaxis()->SetTitleOffset(1.4); - cmodT->cd(2); - gPad->SetLeftMargin(0.14); - hmodTN->Draw("E"); - hmodTN->GetXaxis()->SetTitle("SDD Module Id"); - hmodTN->GetYaxis()->SetTitle("TrackPoints"); - hmodTN->GetYaxis()->SetTitleOffset(1.4); - cmodT->cd(3); - gPad->SetLeftMargin(0.14); - h2dmodT3->Draw("colz"); - h2dmodT3->GetXaxis()->SetTitle("Detector"); - h2dmodT3->GetYaxis()->SetTitle("Ladder"); - cmodT->cd(4); - gPad->SetLeftMargin(0.14); - h2dmodT3N->Draw("colz"); - h2dmodT3N->GetXaxis()->SetTitle("Detector"); - h2dmodT3N->GetYaxis()->SetTitle("Ladder"); - cmodT->cd(5); - gPad->SetLeftMargin(0.14); - h2dmodT4->Draw("colz"); - h2dmodT4->GetXaxis()->SetTitle("Detector"); - h2dmodT4->GetYaxis()->SetTitle("Ladder"); - cmodT->cd(6); - gPad->SetLeftMargin(0.14); - h2dmodT4N->Draw("colz"); - h2dmodT4N->GetXaxis()->SetTitle("Detector"); - h2dmodT4N->GetYaxis()->SetTitle("Ladder"); - cmodT->Update(); + + + if(hmodT->GetEntries()>0){ + TCanvas* cmodT=new TCanvas("cmodT","TrackPoint Occup",1200,1200); + cmodT->Divide(2,3); + cmodT->cd(1); + hmodT->Draw(); + hmodT->GetXaxis()->SetTitle("SDD Module Id"); + hmodT->GetYaxis()->SetTitle("TrackPoints"); + hmodT->GetYaxis()->SetTitleOffset(1.4); + cmodT->cd(2); + gPad->SetLeftMargin(0.14); + hmodTN->Draw("E"); + hmodTN->GetXaxis()->SetTitle("SDD Module Id"); + hmodTN->GetYaxis()->SetTitle("TrackPoints"); + hmodTN->GetYaxis()->SetTitleOffset(1.4); + cmodT->cd(3); + gPad->SetLeftMargin(0.14); + h2dmodT3->Draw("colz"); + h2dmodT3->GetXaxis()->SetTitle("Detector"); + h2dmodT3->GetYaxis()->SetTitle("Ladder"); + cmodT->cd(4); + gPad->SetLeftMargin(0.14); + h2dmodT3N->Draw("colz"); + h2dmodT3N->GetXaxis()->SetTitle("Detector"); + h2dmodT3N->GetYaxis()->SetTitle("Ladder"); + cmodT->cd(5); + gPad->SetLeftMargin(0.14); + h2dmodT4->Draw("colz"); + h2dmodT4->GetXaxis()->SetTitle("Detector"); + h2dmodT4->GetYaxis()->SetTitle("Ladder"); + cmodT->cd(6); + gPad->SetLeftMargin(0.14); + h2dmodT4N->Draw("colz"); + h2dmodT4N->GetXaxis()->SetTitle("Detector"); + h2dmodT4N->GetYaxis()->SetTitle("Ladder"); + cmodT->Update(); + } TH1F* htplad3=(TH1F*)l->FindObject("hTPLad3"); TH1F* htplad4=(TH1F*)l->FindObject("hTPLad4"); @@ -296,7 +329,7 @@ void PlotOutputQAtrainSDD(TString option="local", hnormOcc4->SetBinError(ilad+1,eocc); } - + if(tpok){ TCanvas* cn0=new TCanvas("cn0","Normalized Ladder Occupancy",1400,600); cn0->Divide(2,1); @@ -314,20 +347,23 @@ void PlotOutputQAtrainSDD(TString option="local", hnormOcc4->GetYaxis()->SetTitleOffset(1.35); cn0->Update(); } + if(hcllay){ Double_t norm=hcllay->GetBinContent(1); - hcllay->Scale(1./norm); - hcllay->SetTitle(""); - hcllay->GetXaxis()->SetRange(2,7); - hcllay->SetMinimum(0.); - hcllay->SetMaximum(1.1); - hcllay->SetMarkerStyle(23); - TCanvas* ceffL=new TCanvas("ceffL","PointPerLayer",1000,600); - ceffL->SetGridy(); - hcllay->Draw(); - hcllay->GetXaxis()->SetTitle("Layer"); - hcllay->GetYaxis()->SetTitle("Fraction of tracks with point in layer"); - ceffL->Update(); + if(norm>0.){ + hcllay->Scale(1./norm); + hcllay->SetTitle(""); + hcllay->GetXaxis()->SetRange(2,7); + hcllay->SetMinimum(0.); + hcllay->SetMaximum(1.1); + hcllay->SetMarkerStyle(23); + TCanvas* ceffL=new TCanvas("ceffL","PointPerLayer",1000,600); + ceffL->SetGridy(); + hcllay->Draw(); + hcllay->GetXaxis()->SetTitle("Layer"); + hcllay->GetYaxis()->SetTitle("Fraction of tracks with point in layer"); + ceffL->Update(); + } } hgpmod->SetTitle(""); @@ -366,9 +402,11 @@ void PlotOutputQAtrainSDD(TString option="local", ceff0->Update(); TH1F* heff=new TH1F("heff","",260,239.5,499.5); + TH1F* hfracskip=new TH1F("hfracskip","",260,239.5,499.5); + for(Int_t imod=0; imod<260;imod++){ Float_t numer=hgpmod->GetBinContent(imod+1)+hbrmod->GetBinContent(imod+1)+hoamod->GetBinContent(imod+1)+hnrmod->GetBinContent(imod+1); - Float_t denom=hapmod->GetBinContent(imod+1); + Float_t denom=hapmod->GetBinContent(imod+1)-hskmod->GetBinContent(imod+1); Float_t eff=0.; Float_t erreff=0.; if(denom>0){ @@ -377,10 +415,23 @@ void PlotOutputQAtrainSDD(TString option="local", } heff->SetBinContent(imod+1,eff); heff->SetBinError(imod+1,erreff); + Float_t numer2=hskmod->GetBinContent(imod+1); + Float_t denom2=hapmod->GetBinContent(imod+1); + Float_t frac=0.; + Float_t efrac=0.; + if(denom2>0.){ + frac=numer2/denom2; + efrac=TMath::Sqrt(frac*(1-frac)/denom2); + } + hfracskip->SetBinContent(imod+1,frac); + hfracskip->SetBinError(imod+1,efrac); + } printf("---- Modules with efficiency < 90%% ----\n"); - TCanvas* ceff1=new TCanvas("ceff1","Efficiency",1000,600); + TCanvas* ceff1=new TCanvas("ceff1","Efficiency",1000,1000); + ceff1->Divide(1,2); + ceff1->cd(1); heff->Draw(); heff->GetXaxis()->SetTitle("SDD Module Id"); heff->GetYaxis()->SetTitle("Fraction of tracks with point in good region"); @@ -393,7 +444,11 @@ void PlotOutputQAtrainSDD(TString option="local", printf("Module %d - Layer %d Ladder %2d Det %d - Eff. %.3f\n",iMod,lay,lad,det,heff->GetBinContent(ibin)); } } - ceff1->Update(); + ceff1->cd(2); + hfracskip->Draw(); + hfracskip->GetXaxis()->SetTitle("SDD Module Id"); + hfracskip->GetYaxis()->SetTitle("Fraction of tracks with skipped SDD"); + if(hgpxl){ hgpxl->SetTitle(""); @@ -549,6 +604,8 @@ void PlotOutputQAtrainSDD(TString option="local", hSigTim[it]->GetXaxis()->SetTitle(Form("dE/dx, time interval %d",it+1)); hSigTim[it]->GetYaxis()->SetTitle("Events"); Float_t mpv=lfun->GetParameter(1); + Float_t maxf=lfun->GetMaximumX(70.,90.); + printf("mpv=%f maxfunc=%f\n",mpv,maxf); Float_t empv=lfun->GetParError(1); Float_t sig=lfun->GetParameter(3); Float_t esig=lfun->GetParError(3); @@ -574,8 +631,8 @@ void PlotOutputQAtrainSDD(TString option="local", gPad->SetTickx(); gPad->SetTicky(); gmpv->SetMarkerStyle(20); - // gmpv->SetMinimum(0); - // gmpv->SetMaximum(120); + gmpv->SetMinimum(70); + gmpv->SetMaximum(90); gmpv->GetXaxis()->SetLimits(-0.2,6.8); gmpv->Draw("AP"); // gmpv->GetXaxis()->SetTitle("Drift Time interval number"); @@ -590,6 +647,8 @@ void PlotOutputQAtrainSDD(TString option="local", gPad->SetTicky(); gsigl->SetMarkerStyle(20); gsigl->GetXaxis()->SetLimits(-0.2,6.8); + gsigl->SetMinimum(7.); + gsigl->SetMaximum(11.); gsigl->Draw("AP"); // gsigl->GetXaxis()->SetTitle("Drift Time interval number"); gsigl->GetYaxis()->SetTitle("#sigma_{Landau} (keV)"); @@ -603,6 +662,8 @@ void PlotOutputQAtrainSDD(TString option="local", gPad->SetTicky(); gsigg->SetMarkerStyle(20); gsigg->GetXaxis()->SetLimits(-0.2,6.8); + gsigg->SetMinimum(3.); + gsigg->SetMaximum(7.); gsigg->Draw("AP"); gsigg->GetXaxis()->SetTitle("Drift Time interval number"); gsigg->GetYaxis()->SetTitle("#sigma_{Gauss} (keV)");