ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/Jeng/scripts/NtupleSkim.cc
Revision: 1.1
Committed: Mon Jun 8 23:41:35 2009 UTC (15 years, 10 months ago) by jengbou
Content type: text/plain
Branch: MAIN
CVS Tags: HEAD
Log Message:
add file

File Contents

# User Rev Content
1 jengbou 1.1 #define NtupleSkim_cc
2     #include "NtupleSkim.h"
3     #include <TH2.h>
4     #include <TStyle.h>
5     #include <TCanvas.h>
6     #include <TMath.h>
7    
8    
9     TString fileName = "test.root";
10    
11     void NtupleSkim::Book()
12     {
13     int NBin = 400;
14     double XMin = -1.;
15     double XMax = 1.;
16     int dzBin = 80;
17     double dzMin = -20;
18     double dzMax = 20;
19    
20     int dxBin = 400;
21     double dxMin = -0.2;
22     double dxMax = 0.2;
23    
24     int phiBin = 63;
25     double phiMin = -3.15;
26     double phiMax = 3.15;
27    
28     int sigBin = 400;
29     double sigMin = 0.0;
30     double sigMax = 2.0;
31    
32     h_d0 = new TH1D("d0","d_{0}",NBin,XMin,XMax);
33     h_d0->GetXaxis()->SetTitle("Track d_{0} (cm)");
34     h_sigmad0 = new TH1D("sigmad0","#sigma_{d_{0}}",sigBin,sigMin,sigMax);
35     h_sigmad0->GetXaxis()->SetTitle("#sigma_{d_{0}}");
36     h_d0bs = new TH1D("d0_bs","d_{0} use beam spot",NBin,XMin,XMax);
37     h_d0bs->GetXaxis()->SetTitle("Track d_{0}^{bs} (cm)");
38     h_z0 = new TH1D("z0","z_{0}",dzBin,dzMin,dzMax);
39     h_z0->GetXaxis()->SetTitle("Track z_{0} (cm)");
40     h_pt = new TH1D("trk_pt","Track p_{T}",500,0,50);
41     h_pt->GetXaxis()->SetTitle("Track p_{T} (GeV/c)");
42     h_normChi2 = new TH1D("Normalized_chi2","#chi^{2}/n_{dof}",100,0,20);
43     h_normChi2->GetXaxis()->SetTitle("#chi^{2}/n_{dof}");
44     h_nPixelHit = new TH1D("nPixelHit","Num of Pixel Hits",8,0,8);
45     h_nPixelHit->GetXaxis()->SetTitle("# hits");
46     h_nStripHit = new TH1D("nStripHit","Num of Strip Hits",30,0,30);
47     h_nStripHit->GetXaxis()->SetTitle("# hits");
48     h_d0_phi = new TProfile("d0_phi0","d_{0} vs. #phi_{0}",phiBin,phiMin,phiMax,dxMin,dxMax,"");
49     h_d0_phi->GetXaxis()->SetTitle("#phi_{0} (rad)");
50     h_d0_phi->GetYaxis()->SetTitle("d_{0} (cm)");
51     h_d0bs_phi = new TProfile("d0_phi0_bs","d0(beam spot) vs. #phi0",phiBin,phiMin,phiMax,-0.01,0.01,"");
52     h_d0bs_phi->GetXaxis()->SetTitle("#phi_{0} (rad)");
53     h_d0bs_phi->GetYaxis()->SetTitle("d_{0}^{bs} (cm)");
54     h_vx_dz = new TProfile("vx_dz","v_{x} vs. dz",dzBin,dzMin,dzMax,dxMin,dxMax,"");
55     h_vx_dz->GetXaxis()->SetTitle("dz (cm)");
56     h_vx_dz->GetYaxis()->SetTitle("v_{x} (cm)");
57     h_vy_dz = new TProfile("vy_dz","v_{y} vs. dz",dzBin,dzMin,dzMax,dxMin,dxMax,"");
58     h_vy_dz->GetXaxis()->SetTitle("dz (cm)");
59     h_vy_dz->GetYaxis()->SetTitle("v_{y} (cm)");
60    
61     }
62    
63     void NtupleSkim::Loop(int maxEvents)
64     {
65     // In a ROOT session, you can do:
66     // Root > .L NtupleSkim.C++
67     // Root > NtupleSkim *t = new NtupleSkim("DQMsource.root")
68     // Root > t->Book();
69     // Root > t->GetEntry(12); // Fill t data members with entry number 12
70     // Root > t->Show(); // Show values of entry 12
71     // Root > t->Show(16); // Read and show values of entry 16
72     // Root > t->Loop(); // Loop on all entries
73     //
74    
75     // This is the loop skeleton where:
76     // jentry is the global entry number in the chain
77     // ientry is the entry number in the current Tree
78     // Note that the argument to GetEntry must be:
79     // jentry for TChain::GetEntry
80     // ientry for TTree::GetEntry and TBranch::GetEntry
81     //
82     // To read only selected branches, Insert statements like:
83     // METHOD1:
84     // fChain->SetBranchStatus("*",0); // disable all branches
85     // fChain->SetBranchStatus("branchname",1); // activate branchname
86     // METHOD2: replace line
87     // fChain->GetEntry(jentry); //read all branches
88     // by b_branchname->GetEntry(ientry); //read only this branch
89     // TH2F *hvxy = new TH2F("vxy","x vers. y vertex",100,-0.4,0.4,100,-0.4,0.4);
90     if (fChain == 0) return;
91    
92     Long64_t nentries = fChain->GetEntriesFast();
93    
94     Int_t nbytes = 0, nb = 0;
95     int theevent = 0;
96     for (Long64_t jentry=0; jentry<nentries;jentry++) {
97     Long64_t ientry = LoadTree(jentry);
98     if (ientry < 0) break;
99     nb = fChain->GetEntry(jentry);
100     nbytes += nb;
101    
102     if (nPixelHit > 4 && nStripHit > 8) {
103     h_nPixelHit->Fill(nPixelHit);
104     h_nStripHit->Fill(nStripHit);
105     h_pt->Fill(pt);
106     h_d0->Fill(d0);
107     h_sigmad0->Fill(sigmad0);
108     h_d0bs->Fill(d0bs);
109     h_normChi2->Fill(normchi2);
110     h_z0->Fill(z0);
111     h_vx_dz->Fill(z0,vx);
112     h_vy_dz->Fill(z0,vy);
113     h_d0_phi->Fill(phi0,d0);
114     h_d0bs_phi->Fill(phi0,d0bs);
115     theevent++;
116     }
117     }
118    
119     TFile *file0 = new TFile(fileName,"RECREATE");
120     h_d0->Write();
121     h_d0bs->Write();
122     h_z0->Write();
123     h_sigmad0->Write();
124     h_normChi2->Write();
125     h_nPixelHit->Write();
126     h_nStripHit->Write();
127     h_vx_dz->Write();
128     h_vy_dz->Write();
129     h_d0_phi->Write();
130     h_d0bs_phi->Write();
131    
132     file0->cd();
133     file0->Close();
134    
135     }