00001
00002
00003
00004 void doVogelNew(int trig,const char *flag)
00005 {
00006 gSystem->Load("$HOME/gamma/analysis/lib/AnaCuts");
00007
00008 AnaCuts *cuts=new AnaCuts(flag);
00009
00010 char *gifout;
00011 Int_t nbins;
00012 TArrayD bins;
00013 TH1F *h;
00014
00015 if(trig==1){
00016 nbins=cuts->nPtBinsMB;
00017 bins=cuts->ptBinsMB;
00018 h=new TH1F("h","h",nbins,bins.GetArray());
00019 if(strcmp(flag,"pp05")==0) gifout="mbbincorrPP.gif";
00020 if(strcmp(flag,"dAu")==0) gifout="mbbincorrDAU.gif";
00021 }
00022 else if(trig==2){
00023 nbins=cuts->nPtBinsHT1;
00024 bins=cuts->ptBinsHT1;
00025 h=new TH1F("h","h",nbins,bins.GetArray());
00026 if(strcmp(flag,"pp05")==0) gifout="ht1bincorrPP.gif";
00027 if(strcmp(flag,"dAu")==0) gifout="ht1bincorrDAU.gif";
00028 }
00029 else if(trig==3){
00030 nbins=cuts->nPtBinsHT2;
00031 bins=cuts->ptBinsHT2;
00032 h=new TH1F("h","h",nbins,bins.GetArray());
00033 if(strcmp(flag,"pp05")==0) gifout="ht2bincorrPP.gif";
00034 if(strcmp(flag,"dAu")==0) gifout="ht2bincorrDAU.gif";
00035 }
00036 else
00037 cout<<"error"<<endl;
00038
00039
00040 for(Int_t b=1;b<=nbins;b++){
00041 Float_t xmin=bins[b-1];
00042 Float_t xmax=bins[b];
00043 Float_t dpT=xmax-xmin;
00044 Float_t pT=xmin + 0.5*dpT;
00045
00046
00047 TF1 *fit=new TF1("fit","[0]*pow(1.+x,[1])*pow(x,[2])",1.,15.);
00048 if(strcmp(flag,"pp05")==0) fit->SetParameters(1.,-9.3,0.);
00049 if(strcmp(flag,"dAu")==0) fit->SetParameters(1.,-9.5,0.);
00050
00051 cout<<"using exponent: "<<fit->GetParameter(1)<<endl;
00052
00053 TF1 *N=new TF1(*fit);
00054 N->SetParameter(2,1.);
00055
00056 cout<<xmin<<" "<<xmax<<" at "<<pT<<" and "<<dpT<<endl;
00057 Float_t ratio=fit->Eval(pT)/(N->Integral(xmin,xmax)/(pT*dpT));
00058 h->Fill(pT,ratio);
00059 }
00060
00061 h->SetBinContent(1,0);
00062 h->SetMaximum(1.2);
00063 h->SetMinimum(.6);
00064
00065 TCanvas *cc=new TCanvas("cc","cc",300,300);
00066 h->Draw();
00067 cc->SaveAs(gifout);
00068
00069 char *hname;
00070 if(trig==1) hname="h4mb";
00071 else if(trig==2) hname="h4ht1";
00072 else if(trig==3) hname="h4ht2";
00073 else return;
00074 TFile *outf;
00075 if(strcmp(flag,"pp05")==0) outf=new TFile("bincorrectionsPP.root","UPDATE");
00076 if(strcmp(flag,"dAu")==0) outf=new TFile("bincorrectionsDAU.root","UPDATE");
00077 h->Write(hname,2,0);
00078 outf->Close();
00079 }
00080
00081