void make_plots_dimuons(){ ////////////////////////////////////////////////////////// // This file has been automatically generated // (Mon Aug 27 13:26:41 2012 by ROOT version5.30/03) // from TTree dimuons/dimuoos // found on file: pdst_pp510_dy_m2.root // // plot dimuons kinematics for pp510 Drell-Yan MXL ////////////////////////////////////////////////////////// //Reset ROOT and connect tree file gROOT->Reset(); TFile *f = (TFile*)gROOT->GetListOfFiles()->FindObject("pdst_pp510_dy_m2.root"); if (!f) { f = new TFile("pdst_pp510_dy_m2.root"); } TTree *dimuons = (TTree*)gDirectory->Get("dimuons"); //Declaration of leaves types Float_t Run_Number; Float_t Evt_Number; Float_t Evt_Nmu; Float_t Evt_bbcZ; Float_t Evt_bbcCentrality; Float_t mass; Float_t charge; Float_t rapidity; Float_t pT; Float_t p; Float_t xF; Float_t x1; Float_t x2; Float_t costhCS; Float_t Tr0_chi2; Float_t Tr1_chi2; Float_t Tr0_px; Float_t Tr0_py; Float_t Tr0_pz; Float_t Tr1_px; Float_t Tr1_py; Float_t Tr1_pz; Float_t Tr0_idhits; Float_t Tr1_idhits; Float_t Tr0_idquad; Float_t Tr1_idquad; Float_t Tr0_trhits; Float_t Tr1_trhits; Float_t Tr0_DS3; Float_t Tr1_DS3; Float_t Tr0_DS3ctp; Float_t Tr1_DS3ctp; Float_t Evt_vtxchi2; Float_t Evt_vtxooz; Float_t Tr0_idchi2; Float_t Tr1_idchi2; Float_t Tr0_DG0; Float_t Tr1_DG0; Float_t Tr0_DDG0; Float_t Tr1_DDG0; Float_t Evt_vtxoor; Float_t Evt_l2S; Float_t Evt_l2N; Float_t dca; Float_t xvtxbp; Float_t yvtxbp; Float_t zvtxbp; Float_t Tr0_DG0x; Float_t Tr0_DG0y; Float_t Tr1_DG0x; Float_t Tr1_DG0y; Float_t MuIDlevel2ok; Float_t MuIDl2primitiveok; Float_t Evt_ll1_S2D; Float_t Evt_ll1_N2D; Float_t Evt_pseudoll1_S2D; Float_t Evt_pseudoll1_N2D; Float_t mutr_hits_south; Float_t mutr_hits_north; Float_t zvtx_dimu; Float_t Evt_ll1_S1D; Float_t Evt_ll1_N1D; Float_t Evt_pseudoll1_S1D; Float_t Evt_pseudoll1_N1D; Float_t SpinX_ID; // Set branch addresses. dimuons->SetBranchAddress("Run_Number",&Run_Number); dimuons->SetBranchAddress("Evt_Number",&Evt_Number); dimuons->SetBranchAddress("Evt_Nmu",&Evt_Nmu); dimuons->SetBranchAddress("Evt_bbcZ",&Evt_bbcZ); dimuons->SetBranchAddress("Evt_bbcCentrality",&Evt_bbcCentrality); dimuons->SetBranchAddress("mass",&mass); dimuons->SetBranchAddress("charge",&charge); dimuons->SetBranchAddress("rapidity",&rapidity); dimuons->SetBranchAddress("pT",&pT); dimuons->SetBranchAddress("p",&p); dimuons->SetBranchAddress("xF",&xF); dimuons->SetBranchAddress("x1",&x1); dimuons->SetBranchAddress("x2",&x2); dimuons->SetBranchAddress("costhCS",&costhCS); dimuons->SetBranchAddress("Tr0_chi2",&Tr0_chi2); dimuons->SetBranchAddress("Tr1_chi2",&Tr1_chi2); dimuons->SetBranchAddress("Tr0_px",&Tr0_px); dimuons->SetBranchAddress("Tr0_py",&Tr0_py); dimuons->SetBranchAddress("Tr0_pz",&Tr0_pz); dimuons->SetBranchAddress("Tr1_px",&Tr1_px); dimuons->SetBranchAddress("Tr1_py",&Tr1_py); dimuons->SetBranchAddress("Tr1_pz",&Tr1_pz); dimuons->SetBranchAddress("Tr0_idhits",&Tr0_idhits); dimuons->SetBranchAddress("Tr1_idhits",&Tr1_idhits); dimuons->SetBranchAddress("Tr0_idquad",&Tr0_idquad); dimuons->SetBranchAddress("Tr1_idquad",&Tr1_idquad); dimuons->SetBranchAddress("Tr0_trhits",&Tr0_trhits); dimuons->SetBranchAddress("Tr1_trhits",&Tr1_trhits); dimuons->SetBranchAddress("Tr0_DS3",&Tr0_DS3); dimuons->SetBranchAddress("Tr1_DS3",&Tr1_DS3); dimuons->SetBranchAddress("Tr0_DS3ctp",&Tr0_DS3ctp); dimuons->SetBranchAddress("Tr1_DS3ctp",&Tr1_DS3ctp); dimuons->SetBranchAddress("Evt_vtxchi2",&Evt_vtxchi2); dimuons->SetBranchAddress("Evt_vtxooz",&Evt_vtxooz); dimuons->SetBranchAddress("Tr0_idchi2",&Tr0_idchi2); dimuons->SetBranchAddress("Tr1_idchi2",&Tr1_idchi2); dimuons->SetBranchAddress("Tr0_DG0",&Tr0_DG0); dimuons->SetBranchAddress("Tr1_DG0",&Tr1_DG0); dimuons->SetBranchAddress("Tr0_DDG0",&Tr0_DDG0); dimuons->SetBranchAddress("Tr1_DDG0",&Tr1_DDG0); dimuons->SetBranchAddress("Evt_vtxoor",&Evt_vtxoor); dimuons->SetBranchAddress("Evt_l2S",&Evt_l2S); dimuons->SetBranchAddress("Evt_l2N",&Evt_l2N); dimuons->SetBranchAddress("dca",&dca); dimuons->SetBranchAddress("xvtxbp",&xvtxbp); dimuons->SetBranchAddress("yvtxbp",&yvtxbp); dimuons->SetBranchAddress("zvtxbp",&zvtxbp); dimuons->SetBranchAddress("Tr0_DG0x",&Tr0_DG0x); dimuons->SetBranchAddress("Tr0_DG0y",&Tr0_DG0y); dimuons->SetBranchAddress("Tr1_DG0x",&Tr1_DG0x); dimuons->SetBranchAddress("Tr1_DG0y",&Tr1_DG0y); dimuons->SetBranchAddress("MuIDlevel2ok",&MuIDlevel2ok); dimuons->SetBranchAddress("MuIDl2primitiveok",&MuIDl2primitiveok); dimuons->SetBranchAddress("Evt_ll1_S2D",&Evt_ll1_S2D); dimuons->SetBranchAddress("Evt_ll1_N2D",&Evt_ll1_N2D); dimuons->SetBranchAddress("Evt_pseudoll1_S2D",&Evt_pseudoll1_S2D); dimuons->SetBranchAddress("Evt_pseudoll1_N2D",&Evt_pseudoll1_N2D); dimuons->SetBranchAddress("mutr_hits_south",&mutr_hits_south); dimuons->SetBranchAddress("mutr_hits_north",&mutr_hits_north); dimuons->SetBranchAddress("zvtx_dimu",&zvtx_dimu); dimuons->SetBranchAddress("Evt_ll1_S1D",&Evt_ll1_S1D); dimuons->SetBranchAddress("Evt_ll1_N1D",&Evt_ll1_N1D); dimuons->SetBranchAddress("Evt_pseudoll1_S1D",&Evt_pseudoll1_S1D); dimuons->SetBranchAddress("Evt_pseudoll1_N1D",&Evt_pseudoll1_N1D); dimuons->SetBranchAddress("SpinX_ID",&SpinX_ID); // This is the loop skeleton // To read only selected branches, Insert statements like: // dimuons->SetBranchStatus("*",0); // disable all branches // TTreePlayer->SetBranchStatus("branchname",1); // activate branchname //---- define historgrams here ---- TCanvas * c1 = new TCanvas("c1","dimuons: mass and y", 10,20, 1000, 400); TCanvas * c2 = new TCanvas("c2","dimuons:x1 and x2", 100,200, 1000, 400); TCanvas * c3 = new TCanvas("c3","dimuons:rapidity and pT", 200,300, 1000, 400); TCut xxN="charge==0&&mass>4&&mass<8&&Tr0_pz>0&&Tr1_pz>0"; TCut xxS="charge==0&&mass>4&&mass<8&&Tr0_pz<0&&Tr1_pz<0"; TCut xx="charge==0&&mass>4&&mass<8&&Tr0_pz*Tr1_pz>0"; TH1F * hx1 = new TH1F("hx1","x1",50, 0.0, 0.2); TH1F * hx2 = new TH1F("hx2","x2",50, 0.0, 0.005); TH1F * hmass = new TH1F("hmass","Dimuon Mass",40, 2, 10); TH1F * hy1 = new TH1F("hy1","Drell-Yan Rapidity",30, 0, 3); TH1F * hpT = new TH1F("hpT","Drell-Yan pT",50, 0, 10); // --- define variables Double_t dy_x1=0, dy_x2=0, dy_pT=0; // ------------ Long64_t nentries = dimuons->GetEntries(); Long64_t nbytes = 0; for (Long64_t i=0; iGetEntry(i); if (Tr0_pz*Tr1_pz<0) continue ; // only same arm dimuons if (charge!=0) continue ; // if (mass < 4 || mass > 8) continue ; // x1 = x1*200/510; // rescale for pp510 x2 = x2*200/510; // rescale for pp510 dy_pT = sqrt((Tr0_px+Tr1_px)**2 + (Tr0_py+Tr1_py)**2 ); if (x1 > x2){ dy_x1 = x1; dy_x2 = x2; } else { dy_x1 = x2; dy_x2 = x1; } //-- fill hitrograms hmass->Fill(mass); hy->Fill(rapidity); hy1->Fill(fabs(rapidity)); hpT->Fill(dy_pT); hx1->Fill(dy_x1); hx2->Fill(dy_x2); } // end of loop //--- make plots c1->Clear(); c2->Clear(); c3->Clear(); c1->cd()->Divide(2,1); c2->cd()->Divide(2,1); c3->cd()->Divide(2,1); //--- c1->cd(1)->Clear(); hmass->Draw(); c1->cd(2)->Clear(); hy->Draw(); // --- c2->cd(1); hx1->Draw(); c2->cd(2); hx2->Draw(); //--- c3->cd(1); hy1->Draw(); c3->cd(2); hpT->Draw(); }