74 lines
1.6 KiB
C++
74 lines
1.6 KiB
C++
|
|
||
|
|
||
|
TGraph * DWBARatio(int id1, int id2, TString rootFile="DWBA.root", bool isPlot = true){
|
||
|
|
||
|
TGraph * gR = NULL;
|
||
|
|
||
|
TFile * file = new TFile(rootFile, "READ");
|
||
|
if( file != NULL ){
|
||
|
printf("----- Opening %s\n", rootFile.Data());
|
||
|
}else{
|
||
|
printf("----- Opening %s .... Fail.\n", rootFile.Data());
|
||
|
return gR;
|
||
|
}
|
||
|
|
||
|
///get the TGraph of the distribution.
|
||
|
TObjArray * gList = (TObjArray *) file->Get("qList");
|
||
|
int size = gList->GetLast()+1;
|
||
|
printf("----- found %d d.s.c\n", size);
|
||
|
|
||
|
if( id1 > size || id2 > size ) {
|
||
|
printf(" id1 > %d || id2 > %d \n", size, size);
|
||
|
return gR;
|
||
|
}
|
||
|
|
||
|
TGraph * g1 = (TGraph *) gList->At(id1);
|
||
|
TGraph * g2 = (TGraph *) gList->At(id2);
|
||
|
|
||
|
double g1MaxY = g1->GetHistogram()->GetMaximum();
|
||
|
double g2MaxY = g2->GetHistogram()->GetMaximum();
|
||
|
|
||
|
g2->SetLineColor(2);
|
||
|
|
||
|
|
||
|
TCanvas * cDWBA = NULL ;
|
||
|
|
||
|
if( isPlot ){
|
||
|
cDWBA= new TCanvas("cDWBA", "DWBA Ratio", 1000, 500);
|
||
|
cDWBA->Divide(2,1);
|
||
|
|
||
|
cDWBA->cd(1);
|
||
|
cDWBA->cd(1)->SetLogy();
|
||
|
|
||
|
if( g1MaxY > g2MaxY ) {
|
||
|
g1->Draw();
|
||
|
g2->Draw("same");
|
||
|
}else{
|
||
|
g2->Draw();
|
||
|
g1->Draw("same");
|
||
|
}
|
||
|
|
||
|
TLegend * legend = new TLegend( 0.1, 0.9, 0.9, 1.0);
|
||
|
legend->AddEntry(g1, g1->GetName());
|
||
|
legend->AddEntry(g2, g2->GetName());
|
||
|
|
||
|
legend->Draw();
|
||
|
|
||
|
cDWBA->cd(2);
|
||
|
|
||
|
}
|
||
|
gR = new TGraph();
|
||
|
double x, y1, y2;
|
||
|
for( int i = 0 ; i < g1->GetN(); i++){
|
||
|
g1->GetPoint(i, x, y1);
|
||
|
g2->GetPoint(i, x, y2);
|
||
|
gR->SetPoint(i, x, y1/y2);
|
||
|
}
|
||
|
|
||
|
if( isPlot) gR->Draw();
|
||
|
|
||
|
return gR;
|
||
|
|
||
|
}
|
||
|
|