-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");
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");
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);
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);
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");
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);
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);
l3->Draw();
-
+ if(!plotAlignmentChecks) return kTRUE;
// PLOT ALIGNMENT CHECKS
//
l6->Draw();
- return;
+ return kTRUE;
}
//-----------------------------------------------------------------------------
void PlotEffRatio() {
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");
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");
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;
}