// To run root without logon screen and script use: root -l -n // To run a named macro in root use: //.L sr_tr.C // BeamSpot("data/sr1_1100.root") #include void plotBeamSpot(char* fname) { TFile* f1 = new TFile(fname); gStyle->SetPalette(1,0); TCanvas* c1 = new TCanvas("c1","Polarization and Transmission",60,40,600,800); c1->Divide(2,3); c1->SetGridx(); c1->SetGridy(); // Resulting polarization in the x direction c1->cd(1); t1->Draw("save_polx >> pol_x(128, -0.3, 0.3)","save_detID==900&&save_particleID==-13"); //0, 2 pol_x->SetTitle("Polarization X"); pol_x->GetXaxis()->SetNdivisions(405); pol_x->GetYaxis()->SetNdivisions(406); pol_x->GetXaxis()->SetTickLength(0.018); pol_x->GetYaxis()->SetTickLength(0.018); pol_x->Draw("F"); pol_x->SetFillStyle(1001); pol_x->SetFillColor(kGreen-5); pol_x->Draw(); //c1->SaveAs("data/sr_bspot_0.eps"); // Resulting polarization in the z direction c1->cd(2); t1->Draw("save_polz >> pol_z(128, -1, -0.9)","save_detID==900&&save_particleID==-13"); //-1., 1 pol_z->SetTitle("Polarization Z"); pol_z->GetXaxis()->SetNdivisions(405); pol_z->GetYaxis()->SetNdivisions(406); pol_z->GetXaxis()->SetTickLength(0.018); pol_z->GetYaxis()->SetTickLength(0.018); pol_z->Draw("F"); pol_z->SetFillStyle(1001); pol_z->SetFillColor(38); pol_z->Draw(); // Initial beam spot c1->cd(3)->SetGridx();c1->cd(3)->SetGridy(); // c2->cd(3); t1->Draw("muIniPosZ[0]:muIniPosY[0]>>ini_hist(64,-40,40,64,-1710,-1646)","muIniPolZ > -2"); ini_hist->SetTitle("Muon initial beam cross section [mm]"); ini_hist->Draw(); ini_hist->Draw("cont0 same"); ini_hist->ProjectionX("xisect",31,33); ini_hist->ProjectionY("yisect",31,33); // Resulting beam spot c1->cd(4)->SetGridx();c1->cd(4)->SetGridy(); // c1->cd(3); t1->Draw("save_y:save_x>>bspot_hist(64,-40,40,64,-40,40)","save_detID==900&&save_particleID==-13"); bspot_hist->SetTitle("Muon beam cross section [mm]"); bspot_hist->Draw(); bspot_hist->Draw("cont0 same"); bspot_hist->ProjectionX("xfsect",31,33); bspot_hist->ProjectionY("yfsect",31,33); // Initial beam spot cross section c1->cd(5); xisect->SetTitle("x initial cross section [mm]"); xisect->SetFillStyle(1001); xisect->SetFillColor(45); xisect->Draw(); // Resulting beam spot cross section c1->cd(6); xfsect->SetTitle("x cross section [mm]"); xfsect->SetFillStyle(1001); xfsect->SetFillColor(45); xfsect->Draw(); // I am not sure what this does, but it waits until canvas is closed c1->WaitPrimitive(" "); cout << endl << "Canvas Closed" << endl ; // Then quit root cleanly gApplication->Terminate(); }