Hi,Rooter,
I make 3 2D array to hold the event count which i get it from
a root file. But i found if i make the size of 2D array a little
bit large, for example 20X20. Root crash quietly. I use Root 3.03
on OSF1.
My code is as below, if necessary, i also can prove the root file, which
is a little bit large, 400k byte
Thank you
Gong Datao
===========================================
//.x loadmass.C
//void test_ks_sen()
{
Int_t i,j;
TFile *f = new TFile("../mc/c3kskpmass2.root");
TH2F *kssen,*mcs,*bkg;
if(mcs = (TH2F*)(gROOT->FindObject("mcs")))delete mcs;
if(bkg = (TH2F*)(gROOT->FindObject("bkg")))delete bkg;
if(kssen = (TH2F*)(gROOT->FindObject("kssen")))delete kssen;
Int_t times = 20;
Float_t step = 0.5/times;
Int_t mc[20][20],bk[20][20];
Int_t b1,b2,sb,b,s;
Int_t b_b1,b_b2,b_sb,b_b,b_s;
char cut[100];
mcs = new TH2F("mcs","MC etac signal events
number",times,0.1,0.6,times,0.1,0.6);
bkg = new TH2F("bkg","Events number in sideband (from 2.6 to 2.8
Gev)",times,0.1,0.6,times,0.1,0.6);
kssen = new TH2F("kssen","Pt cut signal
sensitivity",times,0.1,0.6,times,0.1,0.6);
cout<<"MC...."<<endl;
for(i = 0;i<times;++i){
Float_t th1 = i*step+0.1;
for(j=0;j<times;++j){
Float_t th2 = j*step+0.1;
sprintf(cut,"Evis<6&&Ksfltch2>0.5&&Ksspt2ch>-0.5&&abs(Ksmass-0.497672)<0.010&&Ccen<%f&&Pt<%f",th1,th2);
TCut ptcut(cut);
sb = (kskp2->Query("Ksmass",ptcut))->GetRowCount();
cout<<i<<" "<<j<<" "<<sb<<endl;
mcs->SetBinContent(i+1,j+1,sb);
mc[i][j]=sb;
}
}
mcs->SetZTitle("MC Signal Count");
mcs->SetYTitle("Pt cut threshold");
mcs->SetXTitle("Ccen cut threshold");
mcs->Draw("Lego");
c1->SetGrid();
cout<<"Bkg...."<<endl;
TFile *f2 = new TFile("c3kskpmass.root");
for(i = 0;i<times;i++){
Float_t th1 = i*step+0.1;
for(j=0;j<times;++j){
Float_t th2 = j*step+0.1;
sprintf(cut,"Evis<6&&Ksfltch2>0.5&&Ksspt2ch>-0.5&&((Mass>2.6&&Mass<2.8))&&abs(Ksmass-0.497672)<0.010&&Ccen<%f&&Pt<%f",th1,th2);
TCut ptcut2(cut);
sb = (kskp->Query("Ksmass",ptcut2))->GetRowCount();
cout<<i<<" "<<j<<" "<<sb<<endl;
bkg->SetBinContent(i+1,j+1,sb);
bk[i][j]=sb;
}
}
bkg->SetZTitle("Background events");
bkg->SetYTitle("Pt cut threshold");
bkg->SetXTitle("Ccen cut threshold");
bkg->Draw("Lego");
c1->SetGrid();
for(i = 0; i<times; i++){
for(j=0;j<times;++j){
Float_t sen = mc[i][j]*mc[i][j]*1.0/bk[i][j];
kssen->SetBinContent(i+1,j+1,sen);
}
}
kssen->SetZTitle("S^2/B");
kssen->SetYTitle("Pt cut threshold");
kssen->SetXTitle("Cc cut threshold");
kssen->Draw("Lego");
}
This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:10 MET