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;
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());
}
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++){
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;
h2dmodT4N->SetBinContent(iDet,iLad,tpsN);
}
}
+ if(nEvents<1) return;
gStyle->SetPalette(1);
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");
hnormOcc4->SetBinError(ilad+1,eocc);
}
-
+
if(tpok){
TCanvas* cn0=new TCanvas("cn0","Normalized Ladder Occupancy",1400,600);
cn0->Divide(2,1);
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("");
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){
}
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");
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("");
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);
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");
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)");
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)");