StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
plBtowGainPerCrate.C
1 TH2F *h2D;
2 TH1F *hg;
3 
4 void plBtowGainPerCrate() {
5  gStyle->SetPalette(1,0);
6  gStyle->SetOptStat(10);
7 
8  hg=new TH1F("hg","threshold ADC; crate ID",30,0.5,30.5);
9 
10  TFile *_file0 = TFile::Open("/star/data05/scratch/balewski/2009-Wana-outB4.3-bckgNoEtow/data/run9setABCD.wana.hist.root");
11 
12  c=new TCanvas();
13  c->Divide(2,1);
14  c->cd(1);
15  muTr2D1->Draw("colz");
16  c->cd(2);
17  h2D= pubCrR; h2D->Draw("colz");
18  //
19 gPad->SetLogz();
20 
21 
22 
23  int iEW=0;
24  for(iEW=0;iEW<2; iEW++) {
25  if(iEW==0)
26  c=new TCanvas("gainEastB" ,"gainEastB" ,600,1000);
27  else
28  c=new TCanvas("gainWestB" ,"gainWestB" ,600,1000);
29  c->Divide(2,8);
30  for(int i=1;i<=15;i++) {
31  c->cd(i);
32  int cr=i;
33  if(iEW)cr+=15;
34  TH1F *h=getSlice(cr);
35  h->Draw(); gPad->SetLogy();
36  h->SetAxisRange(0,2000); h->SetTitleSize(0.4);
37  float adc1=findFraction(h,0.06);
38  hg->Fill(cr,adc1);
39 
40  } // over 15 crates
41  } // over East/West
42  c=new TCanvas();
43  hg->Draw();
44  hg->Fit("pol0");
45 
46  h2D->Rebin2D(2,1);
47 
48 }
49 
50 
51 //======================
52 TH1F * getSlice( int crateID){
53  TAxis* axX=h2D->GetXaxis();
54  Taxis* axY=h2D->GetYaxis();
55  float x1=axX->GetXmin();
56  float x2=axX->GetXmax();
57  int nbX=axX->GetNbins();
58  char tit1[100];
59 
60  sprintf(tit1,"CR=%d; %s",crateID,axX->GetTitle());
61 
62  TH1F*h=new TH1F(tit1,tit1,nbX,x1,x2);
63  h->SetLineColor(kBlue); h->SetFillColor(18);
64  h->GetXaxis()->SetLabelSize(0.09);
65  h->SetTitleSize(0.4);
66 
67  // copy contecnt of 2D histo to 1D
68  for(int i=1;i<=nbX;i++) h->SetBinContent(i,h2D->GetBinContent(i,crateID));
69  h->SetEntries(h->Integral());
70  return h;
71 }
72 
73 
74 //======================
75 float findFraction( TH1F * h, float frac){
76  TAxis* axX=h->GetXaxis();
77  int nbX=axX->GetNbins();
78  float total=h->Integral();
79  float thres=total*(1-frac);
80  float sum=0;
81 
82 
83  for(int i=1;i<=nbX;i++) {
84  sum+=h->GetBinContent(i);
85  if(sum< thres) continue;
86  float adc1=h->GetBinCenter(i);
87  printf(" got sum=%.0f i=%d adc=%.0f\n",sum,i,adc1);
88  Lx=h->GetListOfFunctions();
89  ln=new TLine(adc1,0,adc1,1.e6); ln->SetLineColor(kRed); Lx->Add(ln);
90  return adc1;
91  }
92  retur -1;
93 }