00001 TH2F *h2D;
00002 TH1F *hg;
00003
00004 void plBtowGainPerCrate() {
00005 gStyle->SetPalette(1,0);
00006 gStyle->SetOptStat(10);
00007
00008 hg=new TH1F("hg","threshold ADC; crate ID",30,0.5,30.5);
00009
00010 TFile *_file0 = TFile::Open("/star/data05/scratch/balewski/2009-Wana-outB4.3-bckgNoEtow/data/run9setABCD.wana.hist.root");
00011
00012 c=new TCanvas();
00013 c->Divide(2,1);
00014 c->cd(1);
00015 muTr2D1->Draw("colz");
00016 c->cd(2);
00017 h2D= pubCrR; h2D->Draw("colz");
00018
00019 gPad->SetLogz();
00020
00021
00022
00023 int iEW=0;
00024 for(iEW=0;iEW<2; iEW++) {
00025 if(iEW==0)
00026 c=new TCanvas("gainEastB" ,"gainEastB" ,600,1000);
00027 else
00028 c=new TCanvas("gainWestB" ,"gainWestB" ,600,1000);
00029 c->Divide(2,8);
00030 for(int i=1;i<=15;i++) {
00031 c->cd(i);
00032 int cr=i;
00033 if(iEW)cr+=15;
00034 TH1F *h=getSlice(cr);
00035 h->Draw(); gPad->SetLogy();
00036 h->SetAxisRange(0,2000); h->SetTitleSize(0.4);
00037 float adc1=findFraction(h,0.06);
00038 hg->Fill(cr,adc1);
00039
00040 }
00041 }
00042 c=new TCanvas();
00043 hg->Draw();
00044 hg->Fit("pol0");
00045
00046 h2D->Rebin2D(2,1);
00047
00048 }
00049
00050
00051
00052 TH1F * getSlice( int crateID){
00053 TAxis* axX=h2D->GetXaxis();
00054 Taxis* axY=h2D->GetYaxis();
00055 float x1=axX->GetXmin();
00056 float x2=axX->GetXmax();
00057 int nbX=axX->GetNbins();
00058 char tit1[100];
00059
00060 sprintf(tit1,"CR=%d; %s",crateID,axX->GetTitle());
00061
00062 TH1F*h=new TH1F(tit1,tit1,nbX,x1,x2);
00063 h->SetLineColor(kBlue); h->SetFillColor(18);
00064 h->GetXaxis()->SetLabelSize(0.09);
00065 h->SetTitleSize(0.4);
00066
00067
00068 for(int i=1;i<=nbX;i++) h->SetBinContent(i,h2D->GetBinContent(i,crateID));
00069 h->SetEntries(h->Integral());
00070 return h;
00071 }
00072
00073
00074
00075 float findFraction( TH1F * h, float frac){
00076 TAxis* axX=h->GetXaxis();
00077 int nbX=axX->GetNbins();
00078 float total=h->Integral();
00079 float thres=total*(1-frac);
00080 float sum=0;
00081
00082
00083 for(int i=1;i<=nbX;i++) {
00084 sum+=h->GetBinContent(i);
00085 if(sum< thres) continue;
00086 float adc1=h->GetBinCenter(i);
00087 printf(" got sum=%.0f i=%d adc=%.0f\n",sum,i,adc1);
00088 Lx=h->GetListOfFunctions();
00089 ln=new TLine(adc1,0,adc1,1.e6); ln->SetLineColor(kRed); Lx->Add(ln);
00090 return adc1;
00091 }
00092 retur -1;
00093 }