]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG1/macros/PlotITSTrackingHists.C
removing osolete macros
[u/mrichter/AliRoot.git] / PWG1 / macros / PlotITSTrackingHists.C
index 724736628ac81cf67313b7ce699610e5d998bc80..2fb8db287981d16ef3924583d85e28b7d665bac7 100644 (file)
@@ -1,20 +1,52 @@
-void PlotITSTrackingHists(TString fname="ITS.Performance.root") {
+Bool_t PlotITSTrackingHists(TString fname="ITS.Performance.root",
+                           Float_t *ioValues=0,Float_t *ioErrors=0) 
+{
   //
   // Macro to plot the histos from the task AliAnalysisTaskITSTrackingCheck
   // A. Dainese 28.11.09
   // 
 
+  Bool_t plotAlignmentChecks=kFALSE;
   //gStyle->SetOptStat(0);
 
   if(fname.Contains("alien")) TGrid::Connect("alien://");
 
   TFile *f= TFile::Open(fname.Data());
+  if(!f) return kFALSE;
 
   TList *list=(TList*)f->Get("cOutputITS");
+  TList *listSPD=0;
+  TDirectoryFile *dir=0;
   if(!list) {
-    TDirectoryFile *dir=(TDirectoryFile*)f->GetDirectory("ITS_Performance");
-    list = (TList*)dir->Get("cOutputITS");
+    dir=(TDirectoryFile*)f->GetDirectory("ITS_Performance");
+    if(dir) list = (TList*)dir->Get("cOutputITS");
+    // count active SPD HSs
+    dir=(TDirectoryFile*)f->GetDirectory("SPD_Performance");
+    if(dir) listSPD = (TList*)dir->Get("coutput1");
   }
+
+  if(!list) return kFALSE;
+
+  TH1F *hnHSsSPD=new TH1F("hnHSsSPD","Active HSs in SPD layers 1 and 2; layer; HSs",2,0.5,2.5);
+  if(listSPD) {
+    //listSPD->Print();
+    TH1F *hFiredChip = (TH1F*)listSPD->FindObject("hFiredChip");
+    Int_t nHSsInner=0,nHSsOuter=0;
+    for(Int_t i=0;i<400;i++) if(hFiredChip->GetBinContent(i)>0) nHSsInner++;
+    for(Int_t i=400;i<1200;i++) if(hFiredChip->GetBinContent(i)>0) nHSsOuter++;
+    nHSsInner = (Int_t)(nHSsInner/10);
+    nHSsOuter = (Int_t)(nHSsOuter/10);
+    hnHSsSPD->SetBinContent(1,nHSsInner);
+    hnHSsSPD->SetBinContent(2,nHSsOuter);
+    if(ioValues) ioValues[0]=(Float_t)nHSsInner/40.;
+    if(ioValues) ioValues[1]=(Float_t)nHSsOuter/80.;
+  }
+
+  TCanvas *cSPD=new TCanvas("cSPD","cSPD");
+  hnHSsSPD->SetMaximum(90);
+  hnHSsSPD->SetMinimum(0);
+  hnHSsSPD->Draw();
+
   TH1F *fHistNclsITSSA = (TH1F*)list->FindObject("fHistNclsITSSA");
   TH1F *fHistClusterMapITSSA = (TH1F*)list->FindObject("fHistClusterMapITSSA");
   TH1F *fHistClusterMapITSSAok = (TH1F*)list->FindObject("fHistClusterMapITSSAok");
@@ -61,6 +93,13 @@ void PlotITSTrackingHists(TString fname="ITS.Performance.root") {
   TH1F *fHistPtITSMI2InAcc = (TH1F*)list->FindObject("fHistPtITSMI2InAcc");
   TH1F *fHistPtITSMISPDInAcc = (TH1F*)list->FindObject("fHistPtITSMISPDInAcc");
   TH1F *fHistPtITSMIoneSPDInAcc = (TH1F*)list->FindObject("fHistPtITSMIoneSPDInAcc");
+  TH1F *fHistPtITSMI6InAccFake = (TH1F*)list->FindObject("fHistPtITSMI6InAccFake");
+  TH1F *fHistPtITSMI5InAccFake = (TH1F*)list->FindObject("fHistPtITSMI5InAccFake");
+  TH1F *fHistPtITSMI4InAccFake = (TH1F*)list->FindObject("fHistPtITSMI4InAccFake");
+  TH1F *fHistPtITSMI3InAccFake = (TH1F*)list->FindObject("fHistPtITSMI3InAccFake");
+  TH1F *fHistPtITSMI2InAccFake = (TH1F*)list->FindObject("fHistPtITSMI2InAccFake");
+  TH1F *fHistPtITSMISPDInAccFake = (TH1F*)list->FindObject("fHistPtITSMISPDInAccFake");
+  TH1F *fHistPtITSMIoneSPDInAccFake = (TH1F*)list->FindObject("fHistPtITSMIoneSPDInAccFake");
   TH1F *fHistPtITSMIoneSPDthreeSDDSSDInAcc = (TH1F*)list->FindObject("fHistPtITSMIoneSPDthreeSDDSSDInAcc");
   TH1F *fHistPtITSMIokbadoutinz6InAcc = (TH1F*)list->FindObject("fHistPtITSMIokbadoutinz6InAcc");
   TH1F *fHistPtITSMIokbadoutinz5InAcc = (TH1F*)list->FindObject("fHistPtITSMIokbadoutinz5InAcc");
@@ -93,12 +132,14 @@ void PlotITSTrackingHists(TString fname="ITS.Performance.root") {
   TH1F *fHistPtITSTPCsel = (TH1F*)list->FindObject("fHistPtITSTPCsel");
   TH1F *fHistPtITSTPCselP = (TH1F*)list->FindObject("fHistPtITSTPCselP");
   TH1F *fHistPtITSTPCselS = (TH1F*)list->FindObject("fHistPtITSTPCselS");
+  TH1F *fHistPtITSTPCselFake = (TH1F*)list->FindObject("fHistPtITSTPCselFake");
   TH1F *fHistPtITSTPCselPfromStrange = (TH1F*)list->FindObject("fHistPtITSTPCselSfromStrange");
   TH1F *fHistPtITSTPCselSfromStrange = (TH1F*)list->FindObject("fHistPtITSTPCselSfromStrange");
   TH1F *fHistPtITSTPCselSfromMat = (TH1F*)list->FindObject("fHistPtITSTPCselSfromMat");
 
   TH1F *fHistPtTPCInAccSfromMat = (TH1F*)list->FindObject("fHistPtTPCInAccSfromMat");
 
+
   //ReweightStrange(fHistPtTPCInAcc,fHistPtTPCInAccPfromStrange,fHistPtTPCInAccSfromStrange);
   //ReweightStrange(fHistPtITSTPCsel,fHistPtITSTPCselPfromStrange,fHistPtITSTPCselSfromStrange);
 
@@ -108,6 +149,14 @@ void PlotITSTrackingHists(TString fname="ITS.Performance.root") {
   fHistPtITSMIge2InAcc->Add(fHistPtITSMI4InAcc);
   fHistPtITSMIge2InAcc->Add(fHistPtITSMI3InAcc);
   fHistPtITSMIge2InAcc->Add(fHistPtITSMI2InAcc);
+  TH1F *fHistPtITSMIge2InAccFake = 0;
+  if(fHistPtITSMI6InAccFake) {
+    fHistPtITSMIge2InAccFake=(TH1F*)fHistPtITSMI6InAccFake->Clone("fHistPtITSMIge2InAccFake");
+    fHistPtITSMIge2InAccFake->Add(fHistPtITSMI5InAccFake);
+    fHistPtITSMIge2InAccFake->Add(fHistPtITSMI4InAccFake);
+    fHistPtITSMIge2InAccFake->Add(fHistPtITSMI3InAccFake);
+    fHistPtITSMIge2InAccFake->Add(fHistPtITSMI2InAccFake);
+  }
   TH1F *fHistPtITSMIge2InAccP = (TH1F*)fHistPtITSMI6InAccP->Clone("fHistPtITSMIge2InAccP");
   fHistPtITSMIge2InAccP->Add(fHistPtITSMI5InAccP);
   fHistPtITSMIge2InAccP->Add(fHistPtITSMI4InAccP);
@@ -119,6 +168,19 @@ void PlotITSTrackingHists(TString fname="ITS.Performance.root") {
   fHistPtITSMIge2InAccS->Add(fHistPtITSMI3InAccS);
   fHistPtITSMIge2InAccS->Add(fHistPtITSMI2InAccS);
 
+  // fake fraction
+  if(fHistPtITSMIge2InAccFake) {
+    fHistPtITSMIge2InAccFake->Divide(fHistPtITSMIge2InAccFake,fHistPtITSMIge2InAcc,1,1,"B");
+    fHistPtITSMI2InAccFake->Divide(fHistPtITSMI2InAccFake,fHistPtITSMI2InAcc,1,1,"B");
+    fHistPtITSMI3InAccFake->Divide(fHistPtITSMI3InAccFake,fHistPtITSMI3InAcc,1,1,"B");
+    fHistPtITSMI4InAccFake->Divide(fHistPtITSMI4InAccFake,fHistPtITSMI4InAcc,1,1,"B");
+    fHistPtITSMI5InAccFake->Divide(fHistPtITSMI5InAccFake,fHistPtITSMI5InAcc,1,1,"B");
+    fHistPtITSMI6InAccFake->Divide(fHistPtITSMI6InAccFake,fHistPtITSMI6InAcc,1,1,"B");
+    fHistPtITSMISPDInAccFake->Divide(fHistPtITSMISPDInAccFake,fHistPtITSMISPDInAcc,1,1,"B");
+    fHistPtITSMIoneSPDInAccFake->Divide(fHistPtITSMIoneSPDInAccFake,fHistPtITSMIoneSPDInAcc,1,1,"B");
+    if (fHistPtITSTPCselFake)fHistPtITSTPCselFake->Divide(fHistPtITSTPCselFake,fHistPtITSTPCsel,1,1,"B");
+  }
+
   TH1F* fHistPtITSMISPDInAccMC=(TH1F*)fHistPtITSMISPDInAcc->Clone("fHistPtITSMISPDInAccMC");
   TH1F* fHistPtITSMIoneSPDInAccMC=(TH1F*)fHistPtITSMIoneSPDInAcc->Clone("fHistPtITSMIoneSPDInAccMC");
 
@@ -351,6 +413,57 @@ void PlotITSTrackingHists(TString fname="ITS.Performance.root") {
   fHistPtITSTPCsel->Draw("same");
   fHistPtITSMIge2InAcc->Draw("same");
   l3->Draw();
+  if(ioValues) {
+    Int_t index,ptbin;
+    ptbin=fHistPtITSMIge2InAcc->FindBin(0.201);
+    index=2;
+    ioValues[index]=fHistPtITSMIge2InAcc->GetBinContent(ptbin);
+    ioErrors[index]=fHistPtITSMIge2InAcc->GetBinError(ptbin);
+    ptbin=fHistPtITSMIge2InAcc->FindBin(1.001);
+    index=3;
+    ioValues[index]=fHistPtITSMIge2InAcc->GetBinContent(ptbin);
+    ioErrors[index]=fHistPtITSMIge2InAcc->GetBinError(ptbin);
+    ptbin=fHistPtITSMIge2InAcc->FindBin(10.001);
+    index=4;
+    ioValues[index]=fHistPtITSMIge2InAcc->GetBinContent(ptbin);
+    ioErrors[index]=fHistPtITSMIge2InAcc->GetBinError(ptbin);
+    ptbin=fHistPtITSMI6InAcc->FindBin(0.201);
+    index=5;
+    ioValues[index]=fHistPtITSMI6InAcc->GetBinContent(ptbin);
+    ioErrors[index]=fHistPtITSMI6InAcc->GetBinError(ptbin);
+    ptbin=fHistPtITSMI6InAcc->FindBin(1.001);
+    index=6;
+    ioValues[index]=fHistPtITSMI6InAcc->GetBinContent(ptbin);
+    ioErrors[index]=fHistPtITSMI6InAcc->GetBinError(ptbin);
+    ptbin=fHistPtITSMI6InAcc->FindBin(10.001);
+    index=7;
+    ioValues[index]=fHistPtITSMI6InAcc->GetBinContent(ptbin);
+    ioErrors[index]=fHistPtITSMI6InAcc->GetBinError(ptbin);
+    ptbin=fHistPtITSMISPDInAcc->FindBin(0.201);
+    index=8;
+    ioValues[index]=fHistPtITSMISPDInAcc->GetBinContent(ptbin);
+    ioErrors[index]=fHistPtITSMISPDInAcc->GetBinError(ptbin);
+    ptbin=fHistPtITSMISPDInAcc->FindBin(1.001);
+    index=9;
+    ioValues[index]=fHistPtITSMISPDInAcc->GetBinContent(ptbin);
+    ioErrors[index]=fHistPtITSMISPDInAcc->GetBinError(ptbin);
+    ptbin=fHistPtITSMISPDInAcc->FindBin(10.001);
+    index=10;
+    ioValues[index]=fHistPtITSMISPDInAcc->GetBinContent(ptbin);
+    ioErrors[index]=fHistPtITSMISPDInAcc->GetBinError(ptbin);
+    ptbin=fHistPtITSMIoneSPDInAcc->FindBin(0.201);
+    index=11;
+    ioValues[index]=fHistPtITSMIoneSPDInAcc->GetBinContent(ptbin);
+    ioErrors[index]=fHistPtITSMIoneSPDInAcc->GetBinError(ptbin);
+    ptbin=fHistPtITSMIoneSPDInAcc->FindBin(1.001);
+    index=12;
+    ioValues[index]=fHistPtITSMIoneSPDInAcc->GetBinContent(ptbin);
+    ioErrors[index]=fHistPtITSMIoneSPDInAcc->GetBinError(ptbin);
+    ptbin=fHistPtITSMIoneSPDInAcc->FindBin(10.001);
+    index=13;
+    ioValues[index]=fHistPtITSMIoneSPDInAcc->GetBinContent(ptbin);
+    ioErrors[index]=fHistPtITSMIoneSPDInAcc->GetBinError(ptbin);
+  }
   c5->cd(2);
   TH1F *fHistPtITSMIokbadoutinzge4InAcc = (TH1F*)fHistPtITSMIokbadoutinz6InAcc->Clone("fHistPtITSMIokbadoutinzge4InAcc");
   fHistPtITSMIokbadoutinzge4InAcc->Add(fHistPtITSMIokbadoutinz5InAcc);
@@ -378,6 +491,37 @@ void PlotITSTrackingHists(TString fname="ITS.Performance.root") {
   l4->AddEntry(fHistPtITSMIokbadoutinz4InAcc,"4 layers","l");
   l4->Draw();
 
+  if(fHistPtITSMIge2InAccFake) {
+    TCanvas *c5f =new TCanvas("c5f","c5f",10,10,600,600);
+    c5f->SetGridy();
+    c5f->SetLogx();
+    fHistPtITSMIge2InAccFake->SetMaximum(1.5);
+    fHistPtITSMIge2InAccFake->SetMinimum(0);
+    fHistPtITSMIge2InAccFake->SetTitle("Fraction of fake tracks with N ITS points");
+    fHistPtITSMIge2InAccFake->SetYTitle("Fraction of fakes");
+    fHistPtITSMIge2InAccFake->Draw();
+    fHistPtITSMI6InAccFake->SetLineColor(2);
+    fHistPtITSMI6InAccFake->Draw("same");
+    fHistPtITSMI5InAccFake->SetLineColor(3);
+    //fHistPtITSMI5InAccFake->Draw("same");
+    fHistPtITSMI4InAccFake->SetLineColor(4);
+    //fHistPtITSMI4InAccFake->Draw("same");
+    fHistPtITSMI3InAccFake->SetLineColor(6);
+    //fHistPtITSMI3InAccFake->Draw("same");
+    fHistPtITSMI2InAccFake->SetLineColor(7);
+    //fHistPtITSMI2InAccFake->Draw("same");
+    fHistPtITSMISPDInAccFake->SetLineColor(9);
+    fHistPtITSMISPDInAccFake->Draw("same");
+    fHistPtITSMIoneSPDInAccFake->SetLineColor(15);
+    fHistPtITSMIoneSPDInAccFake->Draw("same");
+    if(fHistPtITSTPCselFake) {
+      fHistPtITSTPCselFake->SetLineColor(kAzure+1);
+      fHistPtITSTPCselFake->Draw("same");
+    }
+    fHistPtITSMIge2InAccFake->Draw("same");
+    l3->Draw();
+  }
+
 
   TLegend *l4d=new TLegend(0.5,0.5,0.9,0.9);
   TCanvas *c5d =new TCanvas("c5d","c5d",10,10,600,600);
@@ -500,7 +644,7 @@ void PlotITSTrackingHists(TString fname="ITS.Performance.root") {
   l3->Draw();
 
 
-
+  if(!plotAlignmentChecks) return kTRUE;
 
   // PLOT ALIGNMENT CHECKS
   //
@@ -599,7 +743,7 @@ void PlotITSTrackingHists(TString fname="ITS.Performance.root") {
   l6->Draw();
 
 
-  return;
+  return kTRUE;
 }
 //-----------------------------------------------------------------------------
 void PlotEffRatio() {
@@ -848,9 +992,17 @@ void PlotEffOfficial(Bool_t drawRatio=kTRUE) {
 void PlotImpPar_rphi(Int_t rebin=1) {
 
 
-  TFile *fMC= new TFile("ITS.Performance_lhc10b2.root");
+  TFile *fMC= new TFile("AnalysisResults_onlynonfakes.root");
 
   TList *list=(TList*)fMC->Get("cOutputITS");
+  TDirectoryFile *dir=0;
+  if(!list) {
+    dir=(TDirectoryFile*)fMC->GetDirectory("ITS_Performance");
+    if(dir) list = (TList*)dir->Get("cOutputITS");
+  }
+
+  if(!list) return kFALSE;
+
   TH1F *fHistd0rphiITSMIoneSPDInAccP150200MC = (TH1F*)list->FindObject("fHistd0rphiITSMIoneSPDInAccP150200");
   TH1F *fHistd0rphiITSMIoneSPDInAccS150200MC = (TH1F*)list->FindObject("fHistd0rphiITSMIoneSPDInAccS150200");
   TH1F *fHistd0rphiITSMIoneSPDInAccS150200fromStrangeMC = (TH1F*)list->FindObject("fHistd0rphiITSMIoneSPDInAccS150200fromStrange");
@@ -901,9 +1053,15 @@ void PlotImpPar_rphi(Int_t rebin=1) {
   fHistd0rphiITSMIoneSPDInAcc40008000MC->Scale(1./fHistd0rphiITSMIoneSPDInAcc40008000MC->GetEntries());
   
 
-  TFile *f= new TFile("ITS.Performance_117048_117223_pass1.root");
+  TFile *f= new TFile("AnalysisResults_onlynonfakes.root");
+  list=(TList*)f->Get("cOutputITS");
+  if(!list) {
+    dir=(TDirectoryFile*)f->GetDirectory("ITS_Performance");
+    if(dir) list = (TList*)dir->Get("cOutputITS");
+  }
+
+  if(!list) return kFALSE;
 
-  TList *list=(TList*)f->Get("cOutputITS");
   TH1F *fHistd0rphiITSMIoneSPDInAccP150200 = (TH1F*)list->FindObject("fHistd0rphiITSMIoneSPDInAccP150200");
   TH1F *fHistd0rphiITSMIoneSPDInAccS150200 = (TH1F*)list->FindObject("fHistd0rphiITSMIoneSPDInAccS150200");
   TH1F *fHistd0rphiITSMIoneSPDInAccP350450 = (TH1F*)list->FindObject("fHistd0rphiITSMIoneSPDInAccP350450");
@@ -2558,5 +2716,388 @@ void ReweightStrange(TH1F *hPt,TH1F* hPtPfromStrange,TH1F* hPtSfromStrange) {
     if(hPtPfromStrange) hPt->SetBinContent(i,hPt->GetBinContent(i)+(weightP-1.)*hPtPfromStrange->GetBinContent(i));
   }
 
+  return;
+}
+//--------------------------------------------------------------------------
+void ITSTrackingTrending(Int_t firstrun,Int_t lastrun,
+                        TString pathBeforeRun="/alice/sim/LHC10d1/",
+                        TString pathAfterRun="/QA14/QAresults.root",
+                        //TString pathBeforeRun="/alice/data/2010/LHC10b/000",
+                        //TString pathAfterRun="/ESDs/pass2/QA9/QAresults.root",
+                        TString pathAfterRun2="") 
+{
+  //
+  // Make ITS efficiency trending plots from QAresults.root files
+  //
+  gStyle->SetOptStat(0);
+
+  Float_t ioValues[100],ioErrors[100];
+  Int_t index;
+  Int_t nruns=lastrun-firstrun+1;
+
+
+  TH1F *hFracSPD1 = new TH1F("hFracSPD1","SPD inner; run number; Fraction of HSs",nruns,firstrun-0.5,lastrun+0.5);
+  hFracSPD1->SetLineColor(3);
+  hFracSPD1->SetMarkerColor(3);
+  TH1F *hFracSPD2 = new TH1F("hFracSPD2","SPD outer; run number; Fraction of HSs",nruns,firstrun-0.5,lastrun+0.5);
+  hFracSPD2->SetLineColor(8);
+  hFracSPD2->SetMarkerColor(8);
+
+
+  TH1F *hEffge2Pt02 = new TH1F("hEffge2Pt02","Efficiency; run number; TPC+ITS / TPC",nruns,firstrun-0.5,lastrun+0.5);
+  hEffge2Pt02->SetLineWidth(2);
+  hEffge2Pt02->SetLineColor(1);
+  hEffge2Pt02->SetMarkerColor(1);
+  TH1F *hEffge2Pt1 = new TH1F("hEffge2Pt1","Efficiency; run number; TPC+ITS / TPC",nruns,firstrun-0.5,lastrun+0.5);
+  hEffge2Pt1->SetLineWidth(2);
+  hEffge2Pt1->SetLineColor(1);
+  hEffge2Pt1->SetMarkerColor(1);
+  TH1F *hEffge2Pt10 = new TH1F("hEffge2Pt10","Efficiency; run number; TPC+ITS / TPC",nruns,firstrun-0.5,lastrun+0.5);
+  hEffge2Pt10->SetLineWidth(2);
+  hEffge2Pt10->SetLineColor(1);
+  hEffge2Pt10->SetMarkerColor(1);
+
+  TH1F *hEff6Pt02 = new TH1F("hEff6Pt02","Efficiency; run number; TPC+ITS / TPC",nruns,firstrun-0.5,lastrun+0.5);
+  hEff6Pt02->SetLineWidth(2);
+  hEff6Pt02->SetLineColor(2);
+  hEff6Pt02->SetMarkerColor(2);
+  TH1F *hEff6Pt1 = new TH1F("hEff6Pt1","Efficiency; run number; TPC+ITS / TPC",nruns,firstrun-0.5,lastrun+0.5);
+  hEff6Pt1->SetLineWidth(2);
+  hEff6Pt1->SetLineColor(2);
+  hEff6Pt1->SetMarkerColor(2);
+  TH1F *hEff6Pt10 = new TH1F("hEff6Pt10","Efficiency; run number; TPC+ITS / TPC",nruns,firstrun-0.5,lastrun+0.5);
+  hEff6Pt10->SetLineWidth(2);
+  hEff6Pt10->SetLineColor(2);
+  hEff6Pt10->SetMarkerColor(2);
+
+  TH1F *hEffSPDPt02 = new TH1F("hEffSPDPt02","Efficiency; run number; TPC+ITS / TPC",nruns,firstrun-0.5,lastrun+0.5);
+  hEffSPDPt02->SetLineWidth(2);
+  hEffSPDPt02->SetLineColor(9);
+  hEffSPDPt02->SetMarkerColor(9);
+  TH1F *hEffSPDPt1 = new TH1F("hEffSPDPt1","Efficiency; run number; TPC+ITS / TPC",nruns,firstrun-0.5,lastrun+0.5);
+  hEffSPDPt1->SetLineWidth(2);
+  hEffSPDPt1->SetLineColor(9);
+  hEffSPDPt1->SetMarkerColor(9);
+  TH1F *hEffSPDPt10 = new TH1F("hEffSPDPt10","Efficiency; run number; TPC+ITS / TPC",nruns,firstrun-0.5,lastrun+0.5);
+  hEffSPDPt10->SetLineWidth(2);
+  hEffSPDPt10->SetLineColor(9);
+  hEffSPDPt10->SetMarkerColor(9);
+
+  TH1F *hEffoneSPDPt02 = new TH1F("hEffoneSPDPt02","Efficiency; run number; TPC+ITS / TPC",nruns,firstrun-0.5,lastrun+0.5);
+  hEffoneSPDPt02->SetLineWidth(2);
+  hEffoneSPDPt02->SetLineColor(15);
+  hEffoneSPDPt02->SetMarkerColor(15);
+  TH1F *hEffoneSPDPt1 = new TH1F("hEffoneSPDPt1","Efficiency; run number; TPC+ITS / TPC",nruns,firstrun-0.5,lastrun+0.5);
+  hEffoneSPDPt1->SetLineWidth(2);
+  hEffoneSPDPt1->SetLineColor(15);
+  hEffoneSPDPt1->SetMarkerColor(15);
+  TH1F *hEffoneSPDPt10 = new TH1F("hEffoneSPDPt10","Efficiency; run number; TPC+ITS / TPC",nruns,firstrun-0.5,lastrun+0.5);
+  hEffoneSPDPt10->SetLineWidth(2);
+  hEffoneSPDPt10->SetLineColor(15);
+  hEffoneSPDPt10->SetMarkerColor(15);
+
+  // loop on runs
+  for(Int_t irun=firstrun; irun<=lastrun; irun++) {
+    if(!KeepRun(irun)) continue;
+
+    TString path=pathBeforeRun;
+    path+=irun;
+    path.Append(pathAfterRun.Data());
+    path.Prepend("alien://");
+
+    if(!PlotITSTrackingHists(path.Data(),ioValues,ioErrors)) {
+      if(pathAfterRun2.Data()=="") continue;
+      TString path2=pathBeforeRun;
+      path2+=irun;
+      path2.Append(pathAfterRun2.Data());
+      path2.Prepend("alien://");
+      if(!PlotITSTrackingHists(path2.Data(),ioValues,ioErrors)) continue;
+    }
+
+    Int_t bin=hEffge2Pt1->FindBin(irun);
+
+
+    // fill histos
+    index=0;
+    hFracSPD1->SetBinContent(bin,ioValues[index]);
+    hFracSPD1->SetBinError(bin,.01);
+    index=1;
+    hFracSPD2->SetBinContent(bin,ioValues[index]);
+    hFracSPD2->SetBinError(bin,.01);
+
+    index=2;
+    hEffge2Pt02->SetBinContent(bin,ioValues[index]);
+    hEffge2Pt02->SetBinError(bin,ioErrors[index]);
+    index=3;
+    hEffge2Pt1->SetBinContent(bin,ioValues[index]);
+    hEffge2Pt1->SetBinError(bin,ioErrors[index]);
+    index=4;
+    hEffge2Pt10->SetBinContent(bin,ioValues[index]);
+    hEffge2Pt10->SetBinError(bin,ioErrors[index]);
+
+    index=5;
+    hEff6Pt02->SetBinContent(bin,ioValues[index]);
+    hEff6Pt02->SetBinError(bin,ioErrors[index]);
+    index=6;
+    hEff6Pt1->SetBinContent(bin,ioValues[index]);
+    hEff6Pt1->SetBinError(bin,ioErrors[index]);
+    index=7;
+    hEff6Pt10->SetBinContent(bin,ioValues[index]);
+    hEff6Pt10->SetBinError(bin,ioErrors[index]);
+
+    index=8;
+    hEffSPDPt02->SetBinContent(bin,ioValues[index]);
+    hEffSPDPt02->SetBinError(bin,ioErrors[index]);
+    index=9;
+    hEffSPDPt1->SetBinContent(bin,ioValues[index]);
+    hEffSPDPt1->SetBinError(bin,ioErrors[index]);
+    index=10;
+    hEffSPDPt10->SetBinContent(bin,ioValues[index]);
+    hEffSPDPt10->SetBinError(bin,ioErrors[index]);
+
+    index=11;
+    hEffoneSPDPt02->SetBinContent(bin,ioValues[index]);
+    hEffoneSPDPt02->SetBinError(bin,ioErrors[index]);
+    index=12;
+    hEffoneSPDPt1->SetBinContent(bin,ioValues[index]);
+    hEffoneSPDPt1->SetBinError(bin,ioErrors[index]);
+    index=13;
+    hEffoneSPDPt10->SetBinContent(bin,ioValues[index]);
+    hEffoneSPDPt10->SetBinError(bin,ioErrors[index]);
+
+  }
+
+  TCanvas *cSPD = new TCanvas("cSPD","cSPD",0,0,1000,300);
+  cSPD->SetGridy();
+  hFracSPD1->SetMaximum(1.2);
+  hFracSPD1->SetMaximum(0);
+  hFracSPD1->Draw("p");
+  hFracSPD2->Draw("same,p");
+  TLegend* lSPD=new TLegend(0.9,0.8,1,1);
+  lSPD->AddEntry(hFracSPD1,"Frac. SPD1 ON","l");
+  lSPD->AddEntry(hFracSPD2,"Frac. SPD2 ON","l");
+  lSPD->Draw();
+
+  TCanvas *cPt02 = new TCanvas("cPt02","cPt02",0,0,1000,300);
+  cPt02->SetGridy();
+  hEffge2Pt02->SetMaximum(1.2);
+  hEffge2Pt02->SetMaximum(0);
+  hEffge2Pt02->Draw();
+  hEff6Pt02->Draw("same");
+  hEffSPDPt02->Draw("same");
+  hEffoneSPDPt02->Draw("same");
+  TLegend* lPt02=new TLegend(0.9,0.8,1,1);
+  lPt02->AddEntry(hEffge2Pt02,">=2 cls","l");
+  lPt02->AddEntry(hEffoneSPDPt02,">=1 SPD + any","l");
+  lPt02->AddEntry(hEffSPDPt02,"2 SPD + any","l");
+  lPt02->AddEntry(hEff6Pt02,"6 cls","l");
+  lPt02->Draw();
+
+  TCanvas *cPt1 = new TCanvas("cPt1","cPt1",0,0,1000,300);
+  cPt1->SetGridy();
+  hEffge2Pt1->SetMaximum(1.2);
+  hEffge2Pt1->SetMaximum(0);
+  hEffge2Pt1->Draw();
+  hEff6Pt1->Draw("same");
+  hEffSPDPt1->Draw("same");
+  hEffoneSPDPt1->Draw("same");
+  lPt02->Draw();
+
+  TCanvas *cPt10 = new TCanvas("cPt10","cPt10",0,0,1000,300);
+  cPt10->SetGridy();
+  hEffge2Pt10->SetMaximum(1.2);
+  hEffge2Pt10->SetMaximum(0);
+  hEffge2Pt10->Draw("p");
+  hEff6Pt10->Draw("same,p");
+  hEffSPDPt10->Draw("same,p");
+  hEffoneSPDPt10->Draw("same,p");
+  lPt02->Draw();
+
+  return;
+}
+//------------------------------------------------------------------------
+Bool_t KeepRun(Int_t irun) {
+
+
+
+  // LHC10c good runs
+  Int_t nruns10b=33;
+  Int_t goodruns10b[33]={117222, 117220, 117116, 117112, 117109, 117099, 117092, 117086, 117077, 117065, 117063, 117060, 117059, 117054, 117053, 117052, 117050, 117048, 116645, 116643, 116574, 116571, 116562, 116403, 116402, 116288, 116102, 115414, 115401, 115393, 115193, 115186, 114931};
+
+  // LHC10c good runs
+  Int_t nruns10c=46;
+  Int_t goodruns10c[46]={121040, 121039, 120829, 120825, 120824, 120823, 120822, 120821, 120820, 120758, 120750, 120741, 120671, 120617, 120616, 120505, 120504, 120503, 120244, 120079, 120076, 120073, 120072, 120069, 120067, 119862, 119859, 119856, 119853, 119849, 119846, 119845, 119844, 119842, 119841, 119163, 119161, 119159, 118561, 118560, 118558, 118556, 118518, 118512, 118507, 118506};
+  //
+
+  // LHC10d good runs
+  Int_t nruns10d=80;
+  Int_t goodruns10d[80]={126437, 126432, 126425, 126424, 126422, 126409, 126408, 126407, 126406, 126405, 126404, 126403, 126359, 126352, 126351, 126350, 126285, 126284, 126283, 126168, 126167, 126160, 126158, 126097, 126090, 126088, 126082, 126081, 126078, 126073, 126008, 126007, 126004, 125855, 125851, 125850, 125849, 125848, 125847, 125844, 125843, 125842, 125633, 125632, 125630, 125628, 125296, 125295, 125186, 125156, 125140, 125139, 125134, 125133, 125101, 125100, 125097, 125085, 125083, 125023, 124751, 124750, 124746, 124702, 124608, 124607, 124606, 124605, 124604, 124381, 124380, 124378, 124367, 124362, 124358, 124355, 124191, 124187, 122375, 122374};
+  //
+
+  // LHC10e good runs
+  Int_t nruns10e=158;
+  Int_t goodruns10e[158]={130369, 130365, 130360, 130358, 130356, 130354, 130353, 130348, 130343, 130342, 130179, 130178, 130172, 130170, 130168, 130158, 130157, 130156, 130151, 130149, 130148, 129983, 129966, 129962, 129961, 129960, 129959, 129763, 129760, 129750, 129748, 129747, 129745, 129744, 129742, 129738, 129736, 129735, 129734, 129731, 129729, 129726, 129725, 129723, 129667, 129666, 129659, 129655, 129654, 129653, 129652, 129651, 129650, 129649, 129648, 129647, 129641, 129639, 129599, 129598, 129597, 129587, 129586, 129541, 129540, 129536, 129529, 129528, 129527, 129526, 129525, 129524, 129523, 129522, 129521, 129520, 129519, 129516, 129515, 129514, 129513, 129512, 129510, 129508, 129042, 129041, 128913, 128912, 128911, 128910, 128855, 128853, 128850, 128849, 128843, 128836, 128835, 128833, 128824, 128823, 128820, 128819, 128817, 128813, 128777, 128776, 128678, 128677, 128621, 128615, 128611, 128609, 128605, 128596, 128594, 128592, 128590, 128582, 128581, 128507, 128506, 128505, 128504, 128503, 128498, 128495, 128494, 128486, 128483, 128452, 128366, 128260, 128257, 128192, 128191, 128189, 128186, 128185, 128182, 128180, 128175, 128053, 127942, 127941, 127937, 127936, 127935, 127933, 127932, 127931, 127822, 127817, 127815, 127814, 127730, 127729, 127724, 127719};
+
+
+  Bool_t found=kFALSE;
+  Int_t i=0;
+
+  for(i=0; i<nruns10b; i++) {
+    if(irun==goodruns10b[i]) {found=kTRUE; break;}
+  }  
+  if(found) return kTRUE;
+
+  for(i=0; i<nruns10c; i++) {
+    if(irun==goodruns10c[i]) {found=kTRUE; break;}
+  }  
+  if(found) return kTRUE;
+
+  for(i=0; i<nruns10d; i++) {
+    if(irun==goodruns10d[i]) {found=kTRUE; break;}
+  }  
+  if(found) return kTRUE;
+
+  for(i=0; i<nruns10e; i++) {
+    if(irun==goodruns10e[i]) {found=kTRUE; break;}
+  }  
+  if(found) return kTRUE;
+
+
+  return kFALSE;
+}
+//-------------------------------------------------------------------------
+void FakesWithChi2Cut(TString fname) {
+
+  gStyle->SetOptStat(0);
+
+  TFile *f= TFile::Open(fname.Data());
+  if(!f) return kFALSE;
+
+  TList *list=(TList*)f->Get("cOutputITS");
+  TDirectoryFile *dir=0;
+  if(!list) {
+    dir=(TDirectoryFile*)f->GetDirectory("ITS_Performance");
+    if(dir) list = (TList*)dir->Get("cOutputITS");
+  }
+
+  if(!list) return kFALSE;
+
+
+
+
+  TH1F *fHistRedChi2AllPt02 = (TH1F*)list->FindObject("fHistITSRedChi2NonFakePt02");
+  TH1F *fHistRedChi2FakesPt02 = (TH1F*)list->FindObject("fHistITSRedChi2FakePt02");
+  TH1F *fHistRedChi2NonFakesPt02 = (TH1F*)fHistRedChi2AllPt02->Clone("fHistITSRedChi2NonFakePt02");
+  fHistRedChi2NonFakesPt02->Add(fHistRedChi2FakesPt02,-1.);
+
+  TH1F *fHistFakeFracVSChi2CutPt02 = (TH1F*)fHistRedChi2AllPt02->Clone("fHistFakeFracVSChi2CutPt02");
+  fHistFakeFracVSChi2CutPt02->SetLineColor(2);
+  fHistFakeFracVSChi2CutPt02->SetLineWidth(2);
+  TH1F *fHistNonFakeEffVSChi2CutPt02 = (TH1F*)fHistRedChi2AllPt02->Clone("fHistFakeEffVSChi2CutPt02");
+  fHistNonFakeEffVSChi2CutPt02->SetLineColor(4);
+  fHistNonFakeEffVSChi2CutPt02->SetLineWidth(2);
+
+  for(Int_t bin=1;bin<=fHistFakeFracVSChi2CutPt02->GetNbinsX();bin++) {
+    Float_t fakesBelowCut=fHistRedChi2FakesPt02->Integral(1,bin);
+    Float_t nonfakesBelowCut=fHistRedChi2NonFakesPt02->Integral(1,bin);
+    Float_t allBelowCut=fHistRedChi2AllPt02->Integral(1,bin);
+    Float_t nonfakesNoCut=fHistRedChi2NonFakesPt02->Integral();
+    fHistFakeFracVSChi2CutPt02->SetBinContent(bin,fakesBelowCut/allBelowCut);
+    fHistNonFakeEffVSChi2CutPt02->SetBinContent(bin,nonfakesBelowCut/nonfakesNoCut);
+  }
+
+  TH1F *fHistRedChi2AllPt05 = (TH1F*)list->FindObject("fHistITSRedChi2NonFakePt05");
+  TH1F *fHistRedChi2FakesPt05 = (TH1F*)list->FindObject("fHistITSRedChi2FakePt05");
+  TH1F *fHistRedChi2NonFakesPt05 = (TH1F*)fHistRedChi2AllPt05->Clone("fHistITSRedChi2NonFakePt05");
+  fHistRedChi2NonFakesPt05->Add(fHistRedChi2FakesPt05,-1.);
+
+  TH1F *fHistFakeFracVSChi2CutPt05 = (TH1F*)fHistRedChi2AllPt05->Clone("fHistFakeFracVSChi2CutPt05");
+  fHistFakeFracVSChi2CutPt05->SetLineColor(2);
+  fHistFakeFracVSChi2CutPt05->SetLineWidth(2);
+  TH1F *fHistNonFakeEffVSChi2CutPt05 = (TH1F*)fHistRedChi2AllPt05->Clone("fHistFakeEffVSChi2CutPt05");
+  fHistNonFakeEffVSChi2CutPt05->SetLineColor(4);
+  fHistNonFakeEffVSChi2CutPt05->SetLineWidth(2);
+
+  for(Int_t bin=1;bin<=fHistFakeFracVSChi2CutPt05->GetNbinsX();bin++) {
+    Float_t fakesBelowCut=fHistRedChi2FakesPt05->Integral(1,bin);
+    Float_t nonfakesBelowCut=fHistRedChi2NonFakesPt05->Integral(1,bin);
+    Float_t allBelowCut=fHistRedChi2AllPt05->Integral(1,bin);
+    Float_t nonfakesNoCut=fHistRedChi2NonFakesPt05->Integral();
+    fHistFakeFracVSChi2CutPt05->SetBinContent(bin,fakesBelowCut/allBelowCut);
+    fHistNonFakeEffVSChi2CutPt05->SetBinContent(bin,nonfakesBelowCut/nonfakesNoCut);
+  }
+
+  TH1F *fHistRedChi2AllPt1 = (TH1F*)list->FindObject("fHistITSRedChi2NonFakePt1");
+  TH1F *fHistRedChi2FakesPt1 = (TH1F*)list->FindObject("fHistITSRedChi2FakePt1");
+  TH1F *fHistRedChi2NonFakesPt1 = (TH1F*)fHistRedChi2AllPt1->Clone("fHistITSRedChi2NonFakePt1");
+  fHistRedChi2NonFakesPt1->Add(fHistRedChi2FakesPt1,-1.);
+
+  TH1F *fHistFakeFracVSChi2CutPt1 = (TH1F*)fHistRedChi2AllPt1->Clone("fHistFakeFracVSChi2CutPt1");
+  fHistFakeFracVSChi2CutPt1->SetLineColor(2);
+  fHistFakeFracVSChi2CutPt1->SetLineWidth(2);
+  TH1F *fHistNonFakeEffVSChi2CutPt1 = (TH1F*)fHistRedChi2AllPt1->Clone("fHistFakeEffVSChi2CutPt1");
+  fHistNonFakeEffVSChi2CutPt1->SetLineColor(4);
+  fHistNonFakeEffVSChi2CutPt1->SetLineWidth(2);
+
+  for(Int_t bin=1;bin<=fHistFakeFracVSChi2CutPt1->GetNbinsX();bin++) {
+    Float_t fakesBelowCut=fHistRedChi2FakesPt1->Integral(1,bin);
+    Float_t nonfakesBelowCut=fHistRedChi2NonFakesPt1->Integral(1,bin);
+    Float_t allBelowCut=fHistRedChi2AllPt1->Integral(1,bin);
+    Float_t nonfakesNoCut=fHistRedChi2NonFakesPt1->Integral();
+    fHistFakeFracVSChi2CutPt1->SetBinContent(bin,fakesBelowCut/allBelowCut);
+    fHistNonFakeEffVSChi2CutPt1->SetBinContent(bin,nonfakesBelowCut/nonfakesNoCut);
+  }
+
+
+  TCanvas *c=new TCanvas("c","c",0,0,1000,500);
+  c->Divide(3,1);
+  c->cd(1);
+  fHistRedChi2NonFakesPt02->Scale(1./fHistRedChi2NonFakesPt02->Integral());
+  fHistRedChi2NonFakesPt02->SetLineColor(4);
+  fHistRedChi2NonFakesPt02->Draw();
+  fHistRedChi2FakesPt02->Scale(1./fHistRedChi2FakesPt02->Integral());
+  fHistRedChi2FakesPt02->SetLineColor(2);
+  fHistRedChi2FakesPt02->Draw("same");
+  c->cd(2);
+  fHistRedChi2NonFakesPt05->Scale(1./fHistRedChi2NonFakesPt05->Integral());
+  fHistRedChi2NonFakesPt05->SetLineColor(4);
+  fHistRedChi2NonFakesPt05->Draw();
+  fHistRedChi2FakesPt05->Scale(1./fHistRedChi2FakesPt05->Integral());
+  fHistRedChi2FakesPt05->SetLineColor(2);
+  fHistRedChi2FakesPt05->Draw("same");
+  c->cd(3);
+  fHistRedChi2NonFakesPt1->Scale(1./fHistRedChi2NonFakesPt1->Integral());
+  fHistRedChi2NonFakesPt1->SetLineColor(4);
+  fHistRedChi2NonFakesPt1->Draw();
+  fHistRedChi2FakesPt1->Scale(1./fHistRedChi2FakesPt1->Integral());
+  fHistRedChi2FakesPt1->SetLineColor(2);
+  fHistRedChi2FakesPt1->Draw("same");
+
+  TCanvas *cc=new TCanvas("cc","cc",0,0,1000,500);
+  cc->Divide(3,1);
+  cc_1->SetLogx();
+  cc_2->SetLogx();
+  cc_3->SetLogx();
+  cc->cd(1);
+  fHistFakeFracVSChi2CutPt02->SetXTitle("maximum ITS #chi^{2}/nclusters");
+  fHistFakeFracVSChi2CutPt02->SetMinimum(0);
+  fHistFakeFracVSChi2CutPt02->SetMaximum(1);
+  fHistFakeFracVSChi2CutPt02->Draw();
+  fHistNonFakeEffVSChi2CutPt02->Draw("same");
+  cc->cd(2);
+  fHistFakeFracVSChi2CutPt05->SetXTitle("maximum ITS #chi^{2}/nclusters");
+  fHistFakeFracVSChi2CutPt05->SetMinimum(0);
+  fHistFakeFracVSChi2CutPt05->SetMaximum(1);
+  fHistFakeFracVSChi2CutPt05->Draw();
+  fHistNonFakeEffVSChi2CutPt05->Draw("same");
+  cc->cd(3);
+  fHistFakeFracVSChi2CutPt1->SetXTitle("maximum ITS #chi^{2}/nclusters");
+  fHistFakeFracVSChi2CutPt1->SetMinimum(0);
+  fHistFakeFracVSChi2CutPt1->SetMaximum(1);
+  fHistFakeFracVSChi2CutPt1->Draw();
+  fHistNonFakeEffVSChi2CutPt1->Draw("same");
+
+
+
   return;
 }