]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/macrosSDD/PlotOutputQAtrainSDD.C
some c++11 fixes
[u/mrichter/AliRoot.git] / ITS / macrosSDD / PlotOutputQAtrainSDD.C
index 33998b02a9a78c3e4b62eb8230e6eb8aeadb4af4..a93173413c3cc2e95a29df47fcd536f2409af027 100644 (file)
 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 <nFiles ; iFil++) { 
-       fileName=Form("%s",gr->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 <nFiles ; 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;
+         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)");