TChain *GetMeritFile(char *fname) { gROOT->SetStyle("Plain"); gStyle->SetPalette(1); if(gSystem->AccessPathName(fname, kFileExists)) return NULL; TChain *mytree = new TChain("MeritTuple"); mytree->Add(fname); return mytree; } int norm2d(TH2F *h) { int i,j; int nbinx = h->GetNbinsX(); int nbiny = h->GetNbinsY(); double normx = 0; double maxx = 0; for(i=1;i<=nbinx;++i) { maxx = 0; for(j=1;j<=nbiny;++j) { if(h->GetBinContent(i,j)>maxx) maxx = h->GetBinContent(i,j); normx += h->GetBinContent(i,j); } if(maxx==0) continue; for(j=1;j<=nbiny;++j) { h->SetBinContent(i,j,h->GetBinContent(i,j)/maxx); } } return 0; } int showcal(double xcenter, double dcut) { gROOT->SetStyle("Plain"); gStyle->SetPalette(1); TChain *merit = GetMeritFile("/disk2/recon-v1r030603p2_700000460_merit_merit.root"); char cutname[1000]; sprintf(cutname,"abs(Tkr1Y0+(-50-Tkr1Z0)/Tkr1ZDir*Tkr1YDir)<%4.1f && abs(Tkr1Y0+(-220-Tkr1Z0)/Tkr1ZDir*Tkr1YDir)<%4.1f",dcut,dcut); TCut calY=cutname; sprintf(cutname,"abs(Tkr1X0+(-50-Tkr1Z0)/Tkr1ZDir*Tkr1XDir-374.5*%2.1f)<%4.1f && abs(Tkr1X0+(-220-Tkr1Z0)/Tkr1ZDir*Tkr1XDir-374.5*%2.1f)<%4.1f",xcenter,dcut,xcenter,dcut); TCut calX=cutname; TCut calXY=calX&&calY; TCanvas *sc = new TCanvas("sc","sc",0,0,500,500); sc->cd(); TH1F *h = new TH1F("h","h",100,0,200); merit->Draw("-Tkr1ZDir*CalEnergyRaw>>h",calXY*"Tkr1Z0>0 && CalCsIRLn>0 && CalEnergyRaw<200"); TCanvas *scl = new TCanvas("scl","scl",0,0,1000,700); scl->Divide(4,2); TH1F *hl = new TH1F("hl","hl",100,0,30); scl->cd(1); merit->Draw("-Tkr1ZDir*CalELayer0>>hl",calXY*"Tkr1Z0>0 && CalCsIRLn>0 && CalEnergyRaw<200"); hl->DrawCopy(); scl->cd(2); merit->Draw("-Tkr1ZDir*CalELayer1>>hl",calXY*"Tkr1Z0>0 && CalCsIRLn>0 && CalEnergyRaw<200"); hl->DrawCopy(); scl->cd(3); merit->Draw("-Tkr1ZDir*CalELayer2>>hl",calXY*"Tkr1Z0>0 && CalCsIRLn>0 && CalEnergyRaw<200"); hl->DrawCopy(); scl->cd(4); merit->Draw("-Tkr1ZDir*CalELayer3>>hl",calXY*"Tkr1Z0>0 && CalCsIRLn>0 && CalEnergyRaw<200"); hl->DrawCopy(); scl->cd(5); merit->Draw("-Tkr1ZDir*CalELayer4>>hl",calXY*"Tkr1Z0>0 && CalCsIRLn>0 && CalEnergyRaw<200"); hl->DrawCopy(); scl->cd(6); merit->Draw("-Tkr1ZDir*CalELayer5>>hl",calXY*"Tkr1Z0>0 && CalCsIRLn>0 && CalEnergyRaw<200"); hl->DrawCopy(); scl->cd(7); merit->Draw("-Tkr1ZDir*CalELayer6>>hl",calXY*"Tkr1Z0>0 && CalCsIRLn>0 && CalEnergyRaw<200"); hl->DrawCopy(); scl->cd(8); merit->Draw("-Tkr1ZDir*CalELayer7>>hl",calXY*"Tkr1Z0>0 && CalCsIRLn>0 && CalEnergyRaw<200"); hl->DrawCopy(); return 0; } int showcal2(double dcut) { gROOT->SetStyle("Plain"); gStyle->SetPalette(1); TChain *merit = GetMeritFile("/disk2/recon-v1r030603p2_700000460_merit_merit.root"); char cutname[1000]; sprintf(cutname,"abs(Tkr1Y0+(-50-Tkr1Z0)/Tkr1ZDir*Tkr1YDir)<%4.1f && abs(Tkr1Y0+(-220-Tkr1Z0)/Tkr1ZDir*Tkr1YDir)<%4.1f",dcut,dcut); TCut calY=cutname; printf("TCut calY=\"%s\"\n",cutname); sprintf(cutname,"abs(Tkr1X0+(-50-Tkr1Z0)/Tkr1ZDir*Tkr1XDir-374.5*%2.1f)<%4.1f && abs(Tkr1X0+(-220-Tkr1Z0)/Tkr1ZDir*Tkr1XDir-374.5*%2.1f)<%4.1f", 0.5,dcut,0.5,dcut); TCut calX2=cutname; printf("TCut calX2=\"%s\"\n",cutname); sprintf(cutname,"abs(Tkr1X0+(-50-Tkr1Z0)/Tkr1ZDir*Tkr1XDir-374.5*%2.1f)<%4.1f && abs(Tkr1X0+(-220-Tkr1Z0)/Tkr1ZDir*Tkr1XDir-374.5*%2.1f)<%4.1f", 1.5,dcut,1.5,dcut); TCut calX3=cutname; printf("TCut calX3=\"%s\"\n",cutname); TCut calXY2=calX2&&calY; TCut calXY3=calX3&&calY; printf("TCut calXY2=calX2&&calY\n"); printf("TCut calXY3=calX3&&calY\n"); TCanvas *sc = new TCanvas("sc","sc",0,0,700,700); sc->Divide(2,2); sc->cd(1); TH1F *h2 = new TH1F("h2","-Tkr1ZDir*CalEnergyRaw",100,0,200); TH1F *h3 = new TH1F("h3","h3",100,0,200); merit->Draw("-Tkr1ZDir*CalEnergyRaw>>h2",calXY2*"Tkr1Z0>0 && TkrNumTracks==1 && CalCsIRLn>0 && CalEnergyRaw<200"); merit->Draw("-Tkr1ZDir*CalEnergyRaw>>h3",calXY3*"Tkr1Z0>0 && TkrNumTracks==1 && CalCsIRLn>0 && CalEnergyRaw<200"); h2->Draw(); h3->SetLineColor(2); h3->Draw("same"); sc->cd(2); gPad->SetLogy(); TH1F *hz2 = new TH1F("hz2","Tkr1ZDir",100,-1,0); TH1F *hz3 = new TH1F("hz3","Tkr1ZDir",100,-1,0); merit->Draw("Tkr1ZDir>>hz2",calXY2*"Tkr1Z0>0 && TkrNumTracks==1 && CalCsIRLn>0 && CalEnergyRaw<200"); merit->Draw("Tkr1ZDir>>hz3",calXY3*"Tkr1Z0>0 && TkrNumTracks==1 && CalCsIRLn>0 && CalEnergyRaw<200"); hz2->Draw(); hz3->SetLineColor(2); hz3->Draw("same"); sc->cd(3); TProfile *hcz2 = new TProfile("hcz2","CalEnergyRaw:Tkr1ZDir",20,-1,-0.5,0,200); hcz2->SetStats(0); merit->Draw("CalEnergyRaw:Tkr1ZDir>>hcz2",calXY2*"Tkr1Z0>0 && TkrNumTracks==1 && CalCsIRLn>0 && CalEnergyRaw<200"); sc->cd(4); TProfile *hcz3 = new TProfile("hcz3","CalEnergyRaw:Tkr1ZDir",20,-1,-0.5,0,200); hcz3->SetStats(0); hcz3->SetLineColor(2); merit->Draw("CalEnergyRaw:Tkr1ZDir>>hcz3",calXY3*"Tkr1Z0>0 && TkrNumTracks==1 && CalCsIRLn>0 && CalEnergyRaw<200"); // TCanvas *scl = new TCanvas("scl","scl",0,0,1000,700); scl->Divide(4,2); TH1F *hl2 = new TH1F("hl2","hl2",100,0,30); TH1F *hl3 = new TH1F("hl3","hl3",100,0,30); hl3->SetLineColor(2); scl->cd(1); merit->Draw("-Tkr1ZDir*CalELayer0>>hl2",calXY2*"Tkr1Z0>0 && TkrNumTracks==1 && CalCsIRLn>0 && CalEnergyRaw<200"); merit->Draw("-Tkr1ZDir*CalELayer0>>hl3",calXY3*"Tkr1Z0>0 && TkrNumTracks==1 && CalCsIRLn>0 && CalEnergyRaw<200"); hl2->SetTitle("-Tkr1ZDir*CalELayer0");hl2->DrawCopy();hl3->DrawCopy("same"); scl->cd(2); merit->Draw("-Tkr1ZDir*CalELayer1>>hl2",calXY2*"Tkr1Z0>0 && TkrNumTracks==1 && CalCsIRLn>0 && CalEnergyRaw<200"); merit->Draw("-Tkr1ZDir*CalELayer1>>hl3",calXY3*"Tkr1Z0>0 && TkrNumTracks==1 && CalCsIRLn>0 && CalEnergyRaw<200"); hl2->SetTitle("-Tkr1ZDir*CalELayer1");hl2->DrawCopy();hl3->DrawCopy("same"); scl->cd(3); merit->Draw("-Tkr1ZDir*CalELayer2>>hl2",calXY2*"Tkr1Z0>0 && TkrNumTracks==1 && CalCsIRLn>0 && CalEnergyRaw<200"); merit->Draw("-Tkr1ZDir*CalELayer2>>hl3",calXY3*"Tkr1Z0>0 && TkrNumTracks==1 && CalCsIRLn>0 && CalEnergyRaw<200"); hl2->SetTitle("-Tkr1ZDir*CalELayer2");hl2->DrawCopy();hl3->DrawCopy("same"); scl->cd(4); merit->Draw("-Tkr1ZDir*CalELayer3>>hl2",calXY2*"Tkr1Z0>0 && TkrNumTracks==1 && CalCsIRLn>0 && CalEnergyRaw<200"); merit->Draw("-Tkr1ZDir*CalELayer3>>hl3",calXY3*"Tkr1Z0>0 && TkrNumTracks==1 && CalCsIRLn>0 && CalEnergyRaw<200"); hl2->SetTitle("-Tkr1ZDir*CalELayer3");hl2->DrawCopy();hl3->DrawCopy("same"); scl->cd(5); merit->Draw("-Tkr1ZDir*CalELayer4>>hl2",calXY2*"Tkr1Z0>0 && TkrNumTracks==1 && CalCsIRLn>0 && CalEnergyRaw<200"); merit->Draw("-Tkr1ZDir*CalELayer4>>hl3",calXY3*"Tkr1Z0>0 && TkrNumTracks==1 && CalCsIRLn>0 && CalEnergyRaw<200"); hl2->SetTitle("-Tkr1ZDir*CalELayer4");hl2->DrawCopy();hl3->DrawCopy("same"); scl->cd(6); merit->Draw("-Tkr1ZDir*CalELayer5>>hl2",calXY2*"Tkr1Z0>0 && TkrNumTracks==1 && CalCsIRLn>0 && CalEnergyRaw<200"); merit->Draw("-Tkr1ZDir*CalELayer5>>hl3",calXY3*"Tkr1Z0>0 && TkrNumTracks==1 && CalCsIRLn>0 && CalEnergyRaw<200"); hl2->SetTitle("-Tkr1ZDir*CalELayer5");hl2->DrawCopy();hl3->DrawCopy("same"); scl->cd(7); merit->Draw("-Tkr1ZDir*CalELayer6>>hl2",calXY2*"Tkr1Z0>0 && TkrNumTracks==1 && CalCsIRLn>0 && CalEnergyRaw<200"); merit->Draw("-Tkr1ZDir*CalELayer6>>hl3",calXY3*"Tkr1Z0>0 && TkrNumTracks==1 && CalCsIRLn>0 && CalEnergyRaw<200"); hl2->SetTitle("-Tkr1ZDir*CalELayer6");hl2->DrawCopy();hl3->DrawCopy("same"); scl->cd(8); merit->Draw("-Tkr1ZDir*CalELayer7>>hl2",calXY2*"Tkr1Z0>0 && TkrNumTracks==1 && CalCsIRLn>0 && CalEnergyRaw<200"); merit->Draw("-Tkr1ZDir*CalELayer7>>hl3",calXY3*"Tkr1Z0>0 && TkrNumTracks==1 && CalCsIRLn>0 && CalEnergyRaw<200"); hl2->SetTitle("-Tkr1ZDir*CalELayer7");hl2->DrawCopy();hl3->DrawCopy("same"); return 0; } int showcal3(double dcut) { gROOT->SetStyle("Plain"); gStyle->SetPalette(1); TChain *merit = GetMeritFile("/disk2/recon-v1r030603p2_700000460_merit_merit.root"); char cutname[1000]; sprintf(cutname,"abs(Tkr1Y0+(-50-Tkr1Z0)/Tkr1ZDir*Tkr1YDir)<%4.1f && abs(Tkr1Y0+(-220-Tkr1Z0)/Tkr1ZDir*Tkr1YDir)<%4.1f",dcut,dcut); TCut calY=cutname; printf("TCut calY=\"%s\"\n",cutname); sprintf(cutname,"abs(Tkr1X0+(-50-Tkr1Z0)/Tkr1ZDir*Tkr1XDir-374.5*%2.1f)<%4.1f && abs(Tkr1X0+(-220-Tkr1Z0)/Tkr1ZDir*Tkr1XDir-374.5*%2.1f)<%4.1f", 0.5,dcut,0.5,dcut); TCut calX2=cutname; printf("TCut calX2=\"%s\"\n",cutname); sprintf(cutname,"abs(Tkr1X0+(-50-Tkr1Z0)/Tkr1ZDir*Tkr1XDir-374.5*%2.1f)<%4.1f && abs(Tkr1X0+(-220-Tkr1Z0)/Tkr1ZDir*Tkr1XDir-374.5*%2.1f)<%4.1f", 1.5,dcut,1.5,dcut); TCut calX3=cutname; printf("TCut calX3=\"%s\"\n",cutname); TCut calXY2=calX2&&calY; TCut calXY3=calX3&&calY; printf("TCut calXY2=calX2&&calY\n"); printf("TCut calXY3=calX3&&calY\n"); TCut layercut; // TCanvas *scl2 = new TCanvas("scl2","scl2",0,0,1000,700); scl2->Divide(4,2,0.001,0.001); TCanvas *scl3 = new TCanvas("scl3","scl3",0,0,1000,700); scl3->Divide(4,2,0.001,0.001); TH2F *hx2 = new TH2F("hx2","",12,374.5*0.5 - 6*27.84, 374.5*0.5 + 6*27.84,30,0,30); TH2F *hx3 = new TH2F("hx3","",12,374.5*1.5 - 6*27.84, 374.5*1.5 + 6*27.84,30,0,30); TH2F *hy = new TH2F("hy","",12,-6*27.84, 6*27.84,30,0,30); TH2F *h2var; char varname2[1000]; char varname3[1000]; char htitle[1000]; int icomp=0; int i; double zpos; for(i=0;i<8;++i) { zpos = -47.395-21.35*((double)i+0.5); if(i%2==icomp) { sprintf(varname2,"-Tkr1ZDir*CalELayer%d:Tkr1Y0+(%4.1f-Tkr1Z0)/Tkr1ZDir*Tkr1YDir>>hy",i,zpos); sprintf(varname3,"-Tkr1ZDir*CalELayer%d:Tkr1Y0+(%4.1f-Tkr1Z0)/Tkr1ZDir*Tkr1YDir>>hy",i,zpos); sprintf(htitle,"CalELayer%d:Y_layer",i); } else { sprintf(varname2,"-Tkr1ZDir*CalELayer%d:Tkr1X0+(%4.1f-Tkr1Z0)/Tkr1ZDir*Tkr1XDir>>hx2",i,zpos); sprintf(varname3,"-Tkr1ZDir*CalELayer%d:Tkr1X0+(%4.1f-Tkr1Z0)/Tkr1ZDir*Tkr1XDir>>hx3",i,zpos); sprintf(htitle,"CalELayer%d:X_layer",i); } sprintf(cutname,"Tkr1Z0>0 && TkrNumTracks==1 && CalCsIRLn>0 && CalEnergyRaw<200 && CalELayer%d>0 && Tkr1ZDir<0.9",i); layercut=cutname; scl2->cd(i+1); merit->Draw(varname2,calXY2&&layercut); if(i%2==icomp) h2var = hy; else h2var = hx2; norm2d(h2var); h2var->SetStats(0); h2var->SetTitle(htitle); h2var->DrawCopy("COL"); scl3->cd(i+1); merit->Draw(varname3,calXY3&&layercut); if(i%2==icomp) h2var = hy; else h2var = hx3; norm2d(h2var); h2var->SetStats(0); h2var->SetTitle(htitle); h2var->DrawCopy("COL"); } return 0; }