/*=========================================================*/ void d2d(Char_t *matn) { TH2F *hist; Axis_t axmax=axmin+numchx; Axis_t aymax=aymin+numchy; setcanvas(1); gStyle->SetPalette(1); gPad->SetLogz(1); hist=(TH2F*)f1->Get(matn); hist->SetAxisRange(axmin,axmax,"X"); hist->SetAxisRange(aymin,aymax,"Y"); hist->Draw("COLZ"); return; }
drawThePlot(TString nom){ TH2F *theHisto = (TH2F*) myFile->Get(nom); TCanvas *c0 = new TCanvas("c0","coucou",600,600); c0->SetFillColor(0); theHisto->GetXaxis()->SetTitle("muon |#eta|"); theHisto->GetYaxis()->SetTitle("muon p_{T} (GeV/c)"); theHisto->GetZaxis()->SetLabelSize(0.02); theHisto->SetAxisRange(0.9,1.1,"Z"); theHisto->Draw("COLZTEXTE"); c0->SetLogy(); c0->Print("effPlots/"+nom+".png"); //c0->Print("effPlots/"+nom+"_log.png"); }
drawMyPlot(TString nom, TString title){ /*UInt_t Number = 2; Double_t Red[2] = { 1.00, 0.00}; Double_t Green[2] = { 1.00, 0.00}; Double_t Blue[2] = { 1.00, 1.00}; Double_t Length[2] = { 0.00, 1.0}; Int_t nb=50; TColor::CreateGradientColorTable(Number,Length,Red,Green,Blue,nb);*/ TH2F *theHisto = (TH2F*) myFile->Get(nom); TCanvas *c0 = new TCanvas("c0","coucou",600,600); c0->SetFillColor(0); theHisto->SetTitle(title); theHisto->GetXaxis()->SetTitle("#mu_{1} p_{T} (GeV/c)"); theHisto->GetXaxis()->SetNoExponent(); theHisto->GetXaxis()->SetMoreLogLabels(); theHisto->GetYaxis()->SetNoExponent(); theHisto->GetYaxis()->SetMoreLogLabels(); theHisto->GetYaxis()->SetTitle("#mu_{2} p_{T} (GeV/c)"); theHisto->GetZaxis()->SetTitle(""); theHisto->GetZaxis()->SetLabelSize(0.01); theHisto->SetAxisRange(0.5,1.5,"Z"); theHisto->SetMarkerSize(1.7); theHisto->SetMarkerColor(kBlack); theHisto->Draw("COLZTEXTE"); /*TLatex t; t.SetNDC(); t.SetTextSize(0.04); t.DrawLatex(0.3,0.93,title);*/ //c0->Print("effPlots/"+nom+".pdf"); c0->SetLogy(); c0->SetLogx(); c0->Print("SFplots/"+nom+"_log.pdf"); }
void cetaflatHFP12(int nIterN=1, double Ethr1=10, double Ethr2=150) { gStyle->SetOptLogz(0); gStyle->SetMarkerSize(0.7); gStyle->SetMarkerStyle(20); gStyle->SetPadGridX(0); gStyle->SetPadGridY(0); gStyle->SetTitleOffset(1.7,"Y"); gStyle->SetTitleOffset(0.9,"X"); //gStyle->SetPadRightMargin(0.12); gStyle->SetPadRightMargin(0.03); gStyle->SetPadLeftMargin(0.18); //gStyle->SetNdivisions(516); gStyle->SetStatH(0.025); gStyle->SetStatW(0.3); gStyle->SetTitleW(0.4); gStyle->SetTitleX(0.28); gStyle->SetOptStat(0); gROOT->ForceStyle(); char ctit[245],ftit[245]; float etaBounds[14] = {2.853,2.964,3.139,3.314,3.489,3.664,3.839,4.013,4.191,4.363,4.538,4.716,4.889,5.205}; // ------Histos input: spectra of all channels----------------------------------- //sprintf(ftit,"%s","phi43val2012A"); //sprintf(ftit,"%s","phi2012A_May"); //sprintf(ftit,"%s","phiSym524_2012AB"); //sprintf(ftit,"%s","phiSym524newGain_2012AB"); //sprintf(ftit,"%s","phiSym524newGain_2012ABC"); //sprintf(ftit,"%s","phisymNewCond2012Cval"); //sprintf(ftit,"%s","phisymOldCond2012Cval"); //sprintf(ftit,"%s","phiSym533Gain507_2012D"); sprintf(ftit,"%s","phiSym533Corr45Gain507_2012D"); sprintf(ctit,"/home/vodib/beam12/intercal/%s.root",ftit); TFile *fila = new TFile (ctit); cout<<"File= "<<ctit<<endl; TH1F *hcounter = new TH1F(*((TH1F*)fila->Get("phaseHF/hcounter"))); cout<<"Stat= "<<hcounter->GetBinContent(2)<<endl; cout<<"E within: "<<Ethr1<<" - "<<Ethr2<<endl; TH2F* hLmapP = new TH2F("hLmapP","E L HFP;i#eta;i#phi",13,28.5,41.5,36,0,72); TH2F* hSmapP = new TH2F("hSmapP","E S HFP;i#eta;i#phi",13,28.5,41.5,36,0,72); TH2F* hLmapP0 = new TH2F("hLmapP0","E0 L HFP;i#eta;i#phi",13,28.5,41.5,36,0,72); TH2F* hSmapP0 = new TH2F("hSmapP0","E0 S HFP;i#eta;i#phi",13,28.5,41.5,36,0,72); TH2F* hLmapPc = new TH2F("hLmapPc","corr L HFP;i#eta;i#phi",13,28.5,41.5,36,0,72); TH2F* hSmapPc = new TH2F("hSmapPc","corr S HFP;i#eta;i#phi",13,28.5,41.5,36,0,72); hLmapPc->Sumw2(); hSmapPc->Sumw2(); //TH1F *hLcorr1D = new TH1F("hLcorr1D","Corr L",300,0.5,2); //TH1F *hScorr1D = new TH1F("hScorr1D","Corr S",300,0.5,2); TH1F *hLcorr1D = new TH1F("hLcorr1D","Corr L",180,0.7,1.5); TH1F *hScorr1D = new TH1F("hScorr1D","Corr S",180,0.7,1.5); TH1F *hLdatP[13][36], *hSdatP[13][36], *hLdatPx[13][36], *hSdatPx[13][36]; for (int ii=0;ii<13;ii++) for (int jj=0;jj<36;jj++) { sprintf(ctit,"hL%d_%d",ii+29,2*jj+1); hLdatP[ii][jj] = new TH1F(ctit,ctit,8000,0,250); sprintf(ctit,"hS%d_%d",ii+29,2*jj+1); hSdatP[ii][jj] = new TH1F(ctit,ctit,8000,0,250); } TH1F *htL = new TH1F("htL","htL",20000,0,7e8/3.); TH1F *htS = new TH1F("htS","htS",20000,0,5e8/3.); //TH1F *htL = new TH1F("htL","htL",20000,0,4e8/40); //TH1F *htS = new TH1F("htS","htS",20000,0,2e8/40); TH1F *hLdatPx[13][36], *hSdatPx[13][36]; TCanvas *cLx[200],*cSx[200]; TSpline5 *ttL,*ttS; Double_t x,y,rPL,rPS,drPL,drPS,mLE,mSE,ermean,rms; Double_t xxL[1000],yyL[1000]; Double_t xxS[1000],yyS[1000]; Int_t nELP, nESP, nIter=0; Double_t mcorrL,scorrL,mcorrS,scorrS,erLP,erSP,rLP,drLP,rSP,drSP,corrL,corrS,dcorrL,dcorrS; double mLEphi[13],mSEphi[13],dmLEphi[13],dmSEphi[13]; TCanvas *ccxx = new TCanvas("ccxx","ccxx",100,300,900,500); ccxx->Divide(2,1); for (int ii=0;ii<13;ii++) { //for (int ii=1;ii<2;ii++) { int ieta=ii+29; mLE=mSE=0; // ------------------for initial condition int nmLE=0, nmSE=0; htL->Reset(); htS->Reset(); for (int ll=1;ll<=72;ll+=2) { int iphi=ll; if (abs(ieta)>39 && (iphi-1)%4==0) continue; hSmapPc->SetBinContent(ii+1,ll/2+1,1); hLmapPc->SetBinContent(ii+1,ll/2+1,1); hSmapPc->SetBinError(ii+1,ll/2+1,1.e-6); hLmapPc->SetBinError(ii+1,ll/2+1,1.e-6); sprintf(ctit,"phaseHF/espec/E_+%d_%d_1",ieta,iphi); hLdatPx[ii][ll/2] = new TH1F(*((TH1F*)fila->Get(ctit))); hLdatPx[ii][ll/2]->SetAxisRange(Ethr1,Ethr2); rLP = hLdatPx[ii][ll/2]->Integral()*hLdatPx[ii][ll/2]->GetMean(); hLmapP0->SetBinContent(ii+1,ll/2+1,rLP); sprintf(ctit,"phaseHF/espec/E_+%d_%d_2",ieta,iphi); hSdatPx[ii][ll/2] = new TH1F(*((TH1F*)fila->Get(ctit))); hSdatPx[ii][ll/2]->SetAxisRange(Ethr1,Ethr2); rSP = hSdatPx[ii][ll/2]->Integral()*hSdatPx[ii][ll/2]->GetMean(); hSmapP0->SetBinContent(ii+1,ll/2+1,rSP); if (ieta<=32 && iphi==67) continue; if (rLP>0) { htL->Fill(rLP); mLE += rLP; nmLE++; } if (rSP>0) { htS->Fill(rSP); mSE += rSP; nmSE++; } } if (nmLE>0) mLE /= nmLE; else continue; if (nmSE>0) mSE /= nmSE; else continue; ccxx->cd(1); htL->Draw("hist"); ccxx->cd(2); htS->Draw("hist"); ccxx->Update(); //histspec(htL,mLE,ermean,rms,4,3); //histspec(htS,mSE,ermean,rms,4,3); mLEphi[ii]=mLE; mSEphi[ii]=mSE; dmLEphi[ii]=htL->GetRMS(); dmSEphi[ii]=htS->GetRMS(); printf("ieta %2d : <E>L= %8.1f (%6.1f) x %d <E>S= %8.1f (%6.1f) x %d \n", ieta,mLE,dmLEphi[ii],nmLE,mSE,dmSEphi[ii],nmSE); for (int jj=1;jj<=72;jj+=2) { int iphi=jj; if (abs(ieta)>39 && (iphi-1)%4==0) continue; if (ieta<=32 && iphi==67) { hLmapP->SetBinContent(ii+1,jj/2+1,hLmapP0->GetBinContent(ii+1,jj/2+1)); hSmapP->SetBinContent(ii+1,jj/2+1,hSmapP0->GetBinContent(ii+1,jj/2+1)); continue; } for (nIter=1;nIter<nIterN;nIter++) { //cout<<nIter<<" | "; corrL=hLmapPc->GetBinContent(ii+1,jj/2+1); hLdatP[ii][jj/2]->Reset(); for (int kk=1;kk<=hLdatPx[ii][jj/2]->GetNbinsX();kk++) { xxL[kk-1]=hLdatPx[ii][jj/2]->GetBinCenter(kk); yyL[kk-1]=hLdatPx[ii][jj/2]->GetBinContent(kk); } ttL = new TSpline5("tt",xxL,yyL,1000,"",10,20); for (int kk=1;kk<=hLdatP[ii][jj/2]->GetNbinsX();kk++) { x=hLdatP[ii][jj/2]->GetBinCenter(kk); y=hLdatP[ii][jj/2]->GetBinContent(kk); hLdatP[ii][jj/2]->Fill(x*corrL,ttL->Eval(x)/8.0); } ttL->Delete(); hLdatP[ii][jj/2]->SetAxisRange(Ethr1,Ethr2); rLP = hLdatP[ii][jj/2]->Integral()*hLdatP[ii][jj/2]->GetMean(); dcorrL=(rLP-mLE)/mLE; if (rLP>0) drLP= sqrt(pow(hLdatP[ii][jj/2]->GetMeanError()/hLdatP[ii][jj/2]->GetMean(),2)+ 1.f/hLdatP[ii][jj/2]->Integral()+ pow(dcorrL/(1.0+sqrt((float) nIter)),2)); else drLP=1.e-6; if (fabs(dcorrL)>0.001) { corrL*=1-dcorrL/(1.0+sqrt((float) nIter)); //printf("%2d : %2d / %2d / 1 %7.3f %7.3f\n",nIter,ieta,iphi,dcorrL,corrL); hLmapPc->SetBinContent(ii+1,jj/2+1,corrL); hLmapPc->SetBinError(ii+1,jj/2+1,corrL*drLP); hLmapP->SetBinContent(ii+1,jj/2+1,rLP); } else { printf("%2d : %2d / %2d / 1 %7.3f %8.4f %8.4f\n",nIter,ieta,iphi,dcorrL,corrL,corrL*drLP); hLmapP->SetBinContent(ii+1,jj/2+1,rLP); hLmapPc->SetBinError(ii+1,jj/2+1,corrL*drLP); break; } if (nIter==nIterN-1) { printf("%2d : %2d / %2d / 1 %7.3f %8.4f %8.4f\n",nIter,ieta,iphi,dcorrL,corrL,corrL*drLP); } } for (nIter=1;nIter<nIterN;nIter++) { //cout<<nIter<<" | "; corrS=hSmapPc->GetBinContent(ii+1,jj/2+1); hSdatP[ii][jj/2]->Reset(); for (int kk=1;kk<=hSdatPx[ii][jj/2]->GetNbinsX();kk++) { xxS[kk-1]=hSdatPx[ii][jj/2]->GetBinCenter(kk); yyS[kk-1]=hSdatPx[ii][jj/2]->GetBinContent(kk); } ttS = new TSpline5("tt",xxS,yyS,1000,"",10,20); for (int kk=1;kk<=hSdatP[ii][jj/2]->GetNbinsX();kk++) { x=hSdatP[ii][jj/2]->GetBinCenter(kk); y=hSdatP[ii][jj/2]->GetBinContent(kk); hSdatP[ii][jj/2]->Fill(x*corrS,ttS->Eval(x)/8.0); } ttS->Delete(); hSdatP[ii][jj/2]->SetAxisRange(Ethr1,Ethr2); rSP = hSdatP[ii][jj/2]->Integral()*hSdatP[ii][jj/2]->GetMean(); dcorrS=(rSP-mSE)/mSE; if (rSP>0) drSP=sqrt(pow(hSdatP[ii][jj/2]->GetMeanError()/hSdatP[ii][jj/2]->GetMean(),2)+ 1.f/hSdatP[ii][jj/2]->Integral()+ pow(dcorrS/(1.0+sqrt((float) nIter)),2)); else drSP=1.e-6; if (fabs(dcorrS)>0.001) { corrS*=1-dcorrS/(1.0+sqrt((float) nIter)); //printf("%2d : %2d / %2d / 1 %7.3f %7.3f\n",nIter,ieta,iphi,dcorrS,corrS); hSmapPc->SetBinContent(ii+1,jj/2+1,corrS); hSmapPc->SetBinError(ii+1,jj/2+1,corrS*drSP); hSmapP->SetBinContent(ii+1,jj/2+1,rSP); } else { printf("%2d : %2d / %2d / 2 %7.3f %8.4f %8.4f\n",nIter,ieta,iphi,dcorrS,corrS,corrS*drSP); hSmapP->SetBinContent(ii+1,jj/2+1,rSP); hSmapPc->SetBinError(ii+1,jj/2+1,corrS*drSP); break; } if (nIter==nIterN-1) { printf("%2d : %2d / %2d / 2 %7.3f %8.4f %8.4f\n",nIter,ieta,iphi,dcorrS,corrS,corrS*drSP); } } } } //fila->Close(); cout<<endl<<"Rings : "<<endl; cout<<" E L "<<"E S "<<"eta "<<"delta eta"<<endl; double xeta[13], weta[13], reta[13]; for (int i=29;i<=41;i++) { xeta[i-29]=(etaBounds[i-28]+etaBounds[i-29])/2; weta[i-29]=(etaBounds[i-28]-etaBounds[i-29]); mLEphi[i-29]=mLEphi[i-29]*36/weta[i-29]; mSEphi[i-29]=mSEphi[i-29]*36/weta[i-29]; dmLEphi[i-29]=dmLEphi[i-29]*36/weta[i-29]; dmSEphi[i-29]=dmSEphi[i-29]*36/weta[i-29]; if (i>39) { mLEphi[i-29]/=2; mSEphi[i-29]/=2; dmLEphi[i-29]/=2; dmSEphi[i-29]/=2; } reta[i-29] = mSEphi[i-29]/mLEphi[i-29]; cout<<i<<" : "<<mLEphi[i-29]<<" "<<mSEphi[i-29]<<" "<<xeta[i-29]<<" "<<weta[i-29]<<endl; } TCanvas *cgL = new TCanvas("cgL","cgL",300,300,600,600); TGraphErrors *grL = new TGraphErrors(13,xeta,mLEphi,0,dmLEphi); grL->SetTitle("HFP L;#eta;E_{Ring} / #Delta#eta_{Ring} , GeV"); grL->SetMinimum(0); grL->SetMarkerStyle(20); grL->Draw("1+PAl"); cgL->Print("pictHFplot/etaProfHFPL.gif"); mSEphi[12]/=2; mSEphi[11]/=2; TCanvas *cgS = new TCanvas("cgS","cgS",300,300,600,600); TGraphErrors *grS = new TGraphErrors(13,xeta,mSEphi,0,dmSEphi); grS->SetTitle("HFP S;#eta;E_{Ring} / #Delta#eta_{Ring} , GeV"); grS->SetMinimum(0); grS->SetMarkerStyle(20); grS->Draw("1+PAl"); cgS->Print("pictHFplot/etaProfHFPS.gif"); TCanvas *crg = new TCanvas("crg","crg",300,300,600,600); TGraphErrors *rg = new TGraphErrors(13,xeta,reta,0,0); rg->SetTitle("HFP;#eta;E(S) / E(L)"); rg->SetMinimum(0); rg->Draw("1+PAl"); crg->Print("pictHFplot/SoverLetaHFP.gif"); TCanvas *cL0 = new TCanvas("cL0","cL0",0,0,650,600); hLmapP0->Draw("colz"); cL0->Update(); TCanvas *cS = new TCanvas("cS0","cS0",1000,0,650,600); hSmapP0->Draw("colz"); cS0->Update(); //TFile *histf = new TFile("HFPmc.root","RECREATE"); FILE *ft1; //sprintf(ctit,"corrHFPmc_%d_%d.txt",((int) Ethr1),((int) Ethr2)); sprintf(ctit,"corrHFP_%s_%d_%d.txt",ftit,((int) Ethr1),((int) Ethr2)); if ((ft1 = fopen(ctit,"w"))==NULL){ // Open new file printf("\nNo file %s open => EXIT\n\n",file); return; } printf("\n\n File '%s' open \n\n",ctit); TH1D *hprL[13],*hprS[13],*hprL0[13],*hprS0[13]; TH1D *hprcL[13],*hprcS[13]; TCanvas *cpr[13],*ccc[13]; TLine *lin1 = new TLine(0,1,71,1); lin1->SetLineWidth(1); int noff=0; for (int ii=0;ii<13;ii++) { sprintf(ctit,"HFPcorr_%d_L",ii+29); // draw corrections hprcL[ii] = hLmapPc->ProjectionY(ctit,ii+1,ii+1); hprcL[ii]->SetTitle(ctit); sprintf(ctit,"HFPcorr_%d_S",ii+29); hprcS[ii] = hSmapPc->ProjectionY(ctit,ii+1,ii+1); hprcS[ii]->SetTitle(ctit); ccc[ii] = new TCanvas(ctit,ctit,800,100,500,900); ccc[ii]->Divide(1,2); ccc[ii]->cd(1); if (ii+29>39) { hprcL[ii]->Rebin(2); hprcS[ii]->Rebin(2); } hprcL[ii]->SetMinimum(0); hprcL[ii]->SetTitleOffset(0.9,"X"); hprcL[ii]->Draw("e"); lin1->Draw(); ccc[ii]->cd(2); hprcS[ii]->SetMinimum(0); hprcS[ii]->SetTitleOffset(0.9,"X"); hprcS[ii]->Draw("e"); lin1->Draw(); sprintf(ctit,"pictHFplot/HFPcorr_%d.gif",ii+29); ccc[ii]->Update(); ccc[ii]->Print(ctit); //hprcL[ii]->Write(); //hprcS[ii]->Write(); sprintf(ctit,"HFP_%d_L",ii+29); // draw E depositions hprL0[ii] = hLmapP0->ProjectionY(ctit,ii+1,ii+1); sprintf(ctit,"HFP_%d_L;i#phi;GeV;",29+ii); // draw E depositions hprL0[ii]->SetTitle(ctit); sprintf(ctit,"HFP_L_%d",ii+29); hprL[ii] = hLmapP->ProjectionY(ctit,ii+1,ii+1); sprintf(ctit,"HFP_%d_S",ii+29); hprS0[ii] = hSmapP0->ProjectionY(ctit,ii+1,ii+1); sprintf(ctit,"HFP_%d_S;i#phi;GeV;",29+ii); // draw E depositions hprS0[ii]->SetTitle(ctit); sprintf(ctit,"HFP_S_%d",ii+29); hprS[ii] = hSmapP->ProjectionY(ctit,ii+1,ii+1); cpr[ii] = new TCanvas(ctit,ctit,800,100,500,900); cpr[ii]->Divide(1,2); cpr[ii]->cd(1); if (ii+29>39) { hprL0[ii]->Rebin(2); hprL[ii]->Rebin(2); hprS0[ii]->Rebin(2); hprS[ii]->Rebin(2); } hprL0[ii]->SetFillColor(3);hprL0[ii]->SetLineColor(3);hprL0[ii]->SetLineWidth(3); hprL0[ii]->SetMinimum(0); hprL0[ii]->SetTitleOffset(0.9,"X"); hprL0[ii]->Draw("hist"); hprL[ii]->Draw("samehist"); cpr[ii]->cd(2); hprS0[ii]->SetMinimum(0); hprS0[ii]->SetTitleOffset(0.9,"X"); hprS0[ii]->SetFillColor(3);hprS0[ii]->SetLineColor(3);hprS0[ii]->SetLineWidth(3); hprS0[ii]->Draw("hist"); hprS[ii]->Draw("samehist"); sprintf(ctit,"pictHFplot/HFP_%d.gif",ii+29); cpr[ii]->Print(ctit); //hprS0[ii]->Write(); //hprL0[ii]->Write(); cout<<"Results : "<<endl; for (int jj=1;jj<=72;jj+=2) { int ieta=ii+29; int iphi=jj; if (abs(ieta)>39 && (iphi-1)%4==0) continue; //if (ieta==29 && iphi==67) continue; corrL=hLmapPc->GetBinContent(ii+1,jj/2+1); corrS=hSmapPc->GetBinContent(ii+1,jj/2+1); dcorrL=hLmapPc->GetBinError(ii+1,jj/2+1); dcorrS=hSmapPc->GetBinError(ii+1,jj/2+1); hLcorr1D->Fill(corrL); hScorr1D->Fill(corrS); noff++; //printf("%2d : %2d / %2d / 1 %9.4f %9.4f\n",noff,ieta,iphi,corrL,dcorrL); fprintf(ft1,"%2d %2d 1 %9.4f %9.4f\n",ieta,iphi,corrL,dcorrL); noff++; //printf("%2d : %2d / %2d / 2 %9.4f %9.4f\n",noff,ieta,iphi,corrS,dcorrS); fprintf(ft1,"%2d %2d 2 %9.4f %9.4f\n",ieta,iphi,corrS,dcorrS); } } fclose(ft1); for (int ii=0;ii<13;ii++) for (int jj=1;jj<=72;jj+=2) { int ieta=ii+29; int iphi=jj; if (abs(ieta)>39 && (iphi-1)%4==0) continue; if (ieta==29 && iphi==67) continue; corrL=hLmapPc->GetBinContent(ii+1,jj/2+1); if (fabs(corrL-1)>0.16) printf("%2d / %2d / 1 %9.4f %9.4f\n",ieta,iphi,corrL,dcorrL); corrS=hSmapPc->GetBinContent(ii+1,jj/2+1); if (fabs(corrS-1)>0.16) printf("%2d / %2d / 2 %9.4f %9.4f\n",ieta,iphi,corrS,dcorrS); } TCanvas *cLcorr =new TCanvas("cLcorr","cLcorr",30,30,600,600); cLcorr->SetRightMargin(0.12); hLmapPc->SetAxisRange(0.6,1.6,"Z"); hLmapPc->Draw("colz"); TCanvas *cScorr =new TCanvas("cScorr","cScorr",30,300,600,600); cScorr->SetRightMargin(0.12); hSmapPc->SetAxisRange(0.6,1.6,"Z"); hSmapPc->Draw("colz"); TCanvas *cL = new TCanvas("cL","cL",0,0,650,600); hLmapP->Draw("colz"); cL->Update(); TCanvas *cS = new TCanvas("cS","cS",1000,0,650,600); hSmapP->Draw("colz"); cS->Update(); TCanvas *c1corr =new TCanvas("c1corr","c1corr",30,30,900,500); c1corr->Divide(2,1); c1corr->cd(1); hLcorr1D->Draw("hist"); histStat(hLcorr1D,1); c1corr->cd(2); hScorr1D->Draw("hist"); histStat(hScorr1D,1); //hLcorr1D->Write(); hScorr1D->Write(); c1corr->Print("pictHFplot/corrHFP.gif"); //c1corr->Print("pictHFmc/corrHFP.gif"); c1corr->Update(); //fila->Close(); //histf->Close(); sprintf(ctit,"HFPo_%s_%d_%d.root",ftit,((int) Ethr1),((int) Ethr2)); TFile *histf = new TFile(ctit,"RECREATE"); hLcorr1D->Write(); hScorr1D->Write(); hLmapP->Write(); hLmapP0->Write(); hLmapPc->Write(); hSmapP->Write(); hSmapP0->Write(); hSmapPc->Write(); grL->Write(); grS->Write(); histf->Close(); }
void cetaflatHEM3t(int nIterN=1, double Ethr1=4, double Ethr2=150) { gStyle->SetOptLogz(0); gStyle->SetMarkerSize(0.7); gStyle->SetMarkerStyle(20); gStyle->SetPadGridX(0); gStyle->SetPadGridY(0); gStyle->SetTitleOffset(1.7,"Y"); gStyle->SetTitleOffset(0.9,"X"); //gStyle->SetPadRightMargin(0.12); gStyle->SetPadTopMargin(0.06); gStyle->SetPadRightMargin(0.03); gStyle->SetPadLeftMargin(0.2); //gStyle->SetNdivisions(516); gStyle->SetStatH(0.09); gStyle->SetStatW(0.3); gStyle->SetTitleW(0.4); gStyle->SetTitleX(0.3); gStyle->SetOptStat(0); //gStyle->SetOptStat(1111111); gROOT->ForceStyle(); char ctit[145]; static const double theHBHEEtaBounds[] = { 0.000, 0.087, 0.087*2, 0.087*3, 0.087*4, 0.087*5, 0.087*6, 0.087*7, 0.087*8, 0.087*9, 0.087*10, 0.087*11, 0.087*12, 0.087*13, 0.087*14, 0.087*15, 0.087*16, 0.087*17, 0.087*18, 0.087*19, 1.74, 1.83, 1.93, 2.043, 2.172, 2.332, 2.5, 2.65, 2.868, 3.000 }; static const double theHFEtaBounds[] = { 2.853, 2.964, 3.139, 3.314, 3.489, 3.664, 3.839, 4.013, 4.191, 4.363, 4.538, 4.716, 4.889, 5.191 }; // ---------------- Histos input -------------------------------------- char ftit[145]; //sprintf(ftit,"%s","phi43val2012A"); //sprintf(ftit,"%s","phi2012A_May"); //sprintf(ftit,"%s","phiSym524_2012AB"); //sprintf(ftit,"%s","phiSym524newGain_2012AB"); //sprintf(ftit,"%s","phiSym524newGain_2012ABC"); sprintf(ftit,"%s","phiSym533Corr45Gain507_2012D"); sprintf(ctit,"/home/vodib/beam12/intercal/%s.root",ftit); TFile *fila = new TFile (ctit); cout<<"File= "<<ctit<<endl; TH1F *hcounter = new TH1F(*((TH1F*)fila->Get("phaseHF/hcounter"))); cout<<"Stat= "<<hcounter->GetBinContent(2)<<endl; cout<<"E within: "<<Ethr1<<" - "<<Ethr2<<endl; TH2F* hmapP = new TH2F("hmapP","E HEM;i#eta;i#phi",14,-29.5,-15.5,72,0,72); TH2F* hmapP0 = new TH2F("hmapP0","E0 HEM;i#eta;i#phi",14,-29.5,-15.5,72,0,72); TH2F* hmapPc = new TH2F("hmapPc","corr HEM;i#eta;i#phi",14,-29.5,-15.5,72,0,72); hmapPc->Sumw2(); TH1F *hcorr1D = new TH1F("hcorr1D","Corr",150,0.5,2); TH1F *ht = new TH1F("ht","ht",20000,0,5e7); TH1F *htx = new TH1F("htx","htx",20000,0,5e5); TH1F *htr = new TH1F("htr","htr",5000,0,3); /* HE mapping: if (ieta==16 && depth<3) continue; if (ieta==17 && depth>1) continue; if (ieta>17 && ieta<27 && depth==3) continue; if (ieta==29 && depth==3) continue; if (ieta>20 && iphi%2==0) continue; */ TH1F *hdatP[14][72], *hdatPx[14][72]; for (int ii=0; ii<14; ii++) for (int jj=0; jj<72; jj++) { sprintf(ctit,"h%d_%d",ii+16,jj+1); hdatP[ii][jj] = new TH1F(ctit,ctit,10000,0,250); } TCanvas *cx[400]; TSpline5 *tt; Double_t x,y,rPL,rPS,mLE,mSE,ermean,rms; Double_t xx[4000],yy[4000]; Int_t nELP, nESP, nIter=0; Double_t mcorrL,scorrL,mcorrS,scorrS,erLP,erSP,rLP,drLP,rSP,corrL,corrS,dcorrL,dcorrS; double mLEphi[14]; TCanvas *ccxx = new TCanvas("ccxx","ccxx",0,400,800,400); ccxx->Divide(2,1); for (int ii=0; ii<14; ii++) { int ieta=-(ii+16); mLE=mSE=0; // ------------------for initial condition int nmLE=0, nmSE=0; ht->Reset(); htx->Reset(); for (int ll=0; ll<72; ll++) { int iphi=ll+1; if (abs(ieta)!=16 && abs(ieta)!=27 && abs(ieta)!=28) continue; if (abs(ieta)>20 && iphi%2==0) continue; hmapPc->SetBinContent(14-ii,ll+1,1); hmapPc->SetBinError(14-ii,ll+1,1.e-6); sprintf(ctit,"phaseHF/eHEspec/E_-%d_%d_3",abs(ieta),iphi); hdatPx[ii][ll] = new TH1F(*((TH1F*)fila->Get(ctit))); hdatPx[ii][ll]->SetAxisRange(Ethr1,Ethr2); rLP = hdatPx[ii][ll]->Integral()*hdatPx[ii][ll]->GetMean(); hmapP0->SetBinContent(14-ii,ll+1,rLP); if (skipHEChannel(iphi,ieta)) continue; if (rLP>0) { ht->Fill(rLP); htx->Fill(rLP); mLE += rLP; nmLE++; drLP=rLP*sqrt(pow(1./hdatPx[ii][ll]->Integral(),2)+ pow(hdatPx[ii][ll]->GetMeanError()/hdatPx[ii][ll]->GetMean(),2)); hmapP0->SetBinError(14-ii,ll+1,drLP); } else hmapP0->SetBinError(14-ii,ll+1,0); } if (nmLE>0) mLE /= nmLE; else mLE=0; ccxx->cd(1); ht->Draw("hist"); ccxx->cd(2); htx->Draw("hist"); ccxx->Update(); if (htx->GetBinContent(20001)>1) histspec(ht,mLE,ermean,rms,4,-5); else histspec(htx,mLE,ermean,rms,4,-5); //histspec(ht,mLE,ermean,rms); mLEphi[ii]=mLE; printf("ieta %2d : <E>= %8.1f \n",ieta,mLE); if (ht->GetMean()>0) htr->Fill(ht->GetRMS()/ht->GetMean()); for (int jj=0; jj<72; jj++) { int iphi=jj+1; if (abs(ieta)!=16 && abs(ieta)!=27 && abs(ieta)!=28) continue; if (abs(ieta)>20 && iphi%2==0) continue; if (skipHEChannel(iphi,ieta)) { hmapP->SetBinContent(14-ii,jj+1,hmapP0->GetBinContent(14-ii,jj+1,rLP)); continue; } for (nIter=1; nIter<nIterN; nIter++) { //cout<<nIter<<" | "; if (hmapP0->GetBinContent(14-ii,jj+1)<=0) continue; corrL=hmapPc->GetBinContent(14-ii,jj+1); hdatP[ii][jj]->Reset(); for (int kk=1; kk<=hdatPx[ii][jj]->GetNbinsX(); kk++) { xx[kk-1]=hdatPx[ii][jj]->GetBinCenter(kk); yy[kk-1]=hdatPx[ii][jj]->GetBinContent(kk); } tt = new TSpline5("tt",xx,yy,1000,"",10,20); for (int kk=1; kk<=hdatP[ii][jj]->GetNbinsX(); kk++) { x=hdatP[ii][jj]->GetBinCenter(kk); y=hdatP[ii][jj]->GetBinContent(kk); hdatP[ii][jj]->Fill(x*corrL,tt->Eval(x)/10.0); } tt->Delete(); hdatP[ii][jj]->SetAxisRange(Ethr1,Ethr2); rLP = hdatP[ii][jj]->Integral()*hdatP[ii][jj]->GetMean(); dcorrL=(rLP-mLE)/mLE; if (fabs(dcorrL)>0.5) dcorrL=0.5*dcorrL/fabs(dcorrL); if (rLP>0) drLP= sqrt(pow(hdatP[ii][jj]->GetMeanError()/hdatP[ii][jj]->GetMean(),2)+ 1.f/hdatP[ii][jj]->Integral()+ pow(dcorrL/(1.0+sqrt((float) nIter)),2)); else drLP=1.e-6; if (fabs(dcorrL)>0.001) { //corrL*=1-20*dcorrL/(40+nIter*nIter); //corrL*=1-dcorrL/(2+nIter); corrL*=1-dcorrL/(1.0+sqrt((float) nIter)); //printf("%2d : %2d / %2d / 1 %7.3f %7.3f\n",nIter,ieta,iphi,dcorrL,corrL); hmapPc->SetBinContent(14-ii,jj+1,corrL); hmapPc->SetBinError(14-ii,jj+1,corrL*drLP); hmapP->SetBinContent(14-ii,jj+1,rLP); } else { printf("%2d : %2d / %2d / 3 %7.3f %8.4f %8.4f\n", nIter,ieta,iphi,dcorrL,corrL,corrL*drLP); hmapP->SetBinContent(14-ii,jj+1,rLP); hmapPc->SetBinError(14-ii,jj+1,corrL*drLP); break; } if (nIter==nIterN-1) printf("%2d : %2d / %2d / 3 %8.4f %8.4f %8.4f\n",nIter,ieta,iphi,dcorrL,corrL,corrL*drLP); } } } printf("\nieta eta width dE/dPhidEta\n"); double xeta[14], weta[14], yield[14]; int ind=0; for (int i=0; i<14; i++) { int ieta=-(i+16); if (abs(ieta)!=16 && abs(ieta)!=27 && abs(ieta)!=28) continue; xeta[ind]=-(theHBHEEtaBounds[i+15]+theHBHEEtaBounds[i+16])/2; weta[ind]=(theHBHEEtaBounds[i+16]-theHBHEEtaBounds[i+15]); yield[ind]=mLEphi[i]; if (abs(ieta)<21) yield[ind]*=72/weta[ind]; else yield[ind]*=36/weta[ind]; printf("%3d 3 %7.3f%7.3f %g\n",ieta,xeta[ind],weta[ind],yield[ind]); ind++; } TCanvas *cgL = new TCanvas("cgL","cgL",300,300,600,600); TGraphErrors *grL = new TGraphErrors(ind,xeta,yield,0,0); grL->SetTitle("HEM ;#eta;E / #Delta#eta , GeV"); grL->Draw("1+PAl"); cgL->Print("pictHEplot/phiProfHEM3.gif"); //cgL->Print("HEmc/phiProfM3.gif"); //TFile *histf = new TFile("HEM3mc.root","RECREATE"); FILE *ft1; sprintf(ctit,"corrHEM3_%s_%d_%d.txt",ftit,((int) Ethr1),((int) Ethr2)); //sprintf(ctit,"corrHEM3_MC_%d_%d.txt",((int) Ethr1),((int) Ethr2)); if ((ft1 = fopen(ctit,"w"))==NULL) { // Open new file printf("\nNo file %s open => EXIT\n\n",file); return; } printf("\n\n File '%s' open \n\n",ctit); TH1D *hprL[14],*hprL0[14],*hprcL[16]; TCanvas *cpr[14],*ccc[16]; TLine *lin1 = new TLine(0,1,71,1); lin1->SetLineWidth(1); int noff=0; for (int ii=0; ii<14; ii++) { int ieta=-(ii+16); if (abs(ieta)!=16 && abs(ieta)!=27 && abs(ieta)!=28) continue; sprintf(ctit,"HEMcorr_%d_3",ieta); // draw corrections hprcL[ii] = hmapPc->ProjectionY(ctit,14-ii,14-ii); hprcL[ii]->SetTitle(ctit); ccc[ii] = new TCanvas(ctit,ctit,800,100,500,500); hprcL[ii]->SetMinimum(0.41); hprcL[ii]->SetMaximum(hprcL[ii]->GetMaximum()*1.1); hprcL[ii]->SetTitleOffset(0.9,"X"); hprcL[ii]->Draw("e"); lin1->Draw(); sprintf(ctit,"pictHEplot/HEM3corr_%d.gif",ieta); //sprintf(ctit,"HEmc/HEM3c_4_100G_%d.gif",ieta); ccc[ii]->Print(ctit); //hprcL[ii]->Write(); sprintf(ctit,"HEM_E_%d_3;i#phi;GeV",ieta); hprL0[ii] = hmapP0->ProjectionY(ctit,14-ii,14-ii); hprL0[ii]->SetTitle(ctit); sprintf(ctit,"HEM__%d",ieta); hprL[ii] = hmapP->ProjectionY(ctit,14-ii,14-ii); if (abs(ieta)>20) { hprL[ii]->Rebin(); hprL0[ii]->Rebin(); } cpr[ii] = new TCanvas(ctit,ctit,800,100,500,500); hprL0[ii]->SetFillColor(3); hprL0[ii]->SetLineColor(3); hprL0[ii]->SetLineWidth(1); hprL0[ii]->SetTitleOffset(0.9,"X"); hprL0[ii]->SetMinimum(0); hprL0[ii]->Draw("hist"); hprL[ii]->Draw("samehist"); sprintf(ctit,"pictHEplot/HEM_E_%d_3.gif",ieta); //sprintf(ctit,"HEmc/HEM_E_%d_3.gif",ieta); cpr[ii]->Print(ctit); //hprL0[ii]->Write(); for (int jj=0; jj<72; jj++) { int ieta=-(ii+16); int iphi=jj+1; if (abs(ieta)>20 && iphi%2==0) continue; corrL=hmapPc->GetBinContent(14-ii,jj+1); dcorrL=hmapPc->GetBinError(14-ii,jj+1); hcorr1D->Fill(corrL); noff++; //printf("%2d : %2d / %2d / 3 %8.4f %8.4f\n",noff,ieta,iphi,corrL,dcorrL); fprintf(ft1,"%2d %2d 3 %8.4f %8.4f\n",ieta,iphi,corrL,dcorrL); } } fclose(ft1); TCanvas *c1corr =new TCanvas("c1corr","c1corr",30,30,600,600); hcorr1D->Draw("hist"); histStat(hcorr1D,1); c1corr->Print("pictHEplot/corrHEM3.gif"); //c1corr->Print("HEmc/corrHEM3.gif"); TCanvas *ctr = new TCanvas("ctr","ctr",0,0,650,600); htr->Draw("hist"); ctr->Update(); TCanvas *chmapP = new TCanvas("chmapP","chmapP",0,0,650,600); chmapP->cd(); chmapP->SetRightMargin(0.12); chmapP->SetLogz(); hmapP->SetAxisRange(hmapP->GetBinContent(14,1)/2,-1111,"Z"); hmapP->Draw("colz"); chmapP->Print("pictHEplot/hmapHEM3.gif"); chmapP->Update(); TCanvas *chmapP0 = new TCanvas("chmapP0","chmapP0",0,0,650,600); chmapP0->cd(); chmapP0->SetRightMargin(0.12); chmapP0->SetLogz(); hmapP0->SetAxisRange(hmapP0->GetBinContent(14,1)/2,-1111,"Z"); hmapP0->Draw("colz"); chmapP0->Print("pictHEplot/hmap0HEM3.gif"); chmapP0->Update(); TCanvas *chmapPc = new TCanvas("chmapPc","chmapPc",0,0,650,600); chmapPc->cd(); chmapPc->SetRightMargin(0.12); hmapPc->SetAxisRange(0.6,2,"Z"); hmapPc->Draw("colz"); chmapPc->Print("pictHEplot/hmapcHEM3.gif"); chmapPc->Update(); sprintf(ctit,"HEM3o_%s_%d_%d.root",ftit,((int) Ethr1),((int) Ethr2)); TFile *histf = new TFile(ctit,"RECREATE"); hmapP->Write(); hmapP0->Write(); hmapPc->Write(); histf->Close(); }