StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
diffLcpMuDst_Geant.C
1 TChain *chainG = new TChain("G-LCP"); // Geant
2 TChain *chainR = new TChain("T-LCP"); // muDst
3 float ptR,ptG,phiG,phiR,etaG,etaR;
4 
5 int idG,idR;
6 int nPrimR,qR;
7 float vzR;
8 
9 TH1F *hr[4];
10 TH1F *h1[4];
11 TH2F *h2[4];
12 
13 TFile *fd=0;
14 
15 diffLcpMuDst_Geant(int cut=2){
16  // f=TFile("./MC7777,tree.root");
17  // f->ls();
18  // return;
19  //TH1F *h=f->Get("hpx");
20  // h->Draw();
21 
22  TString histF="mcLcp_cut";
23  histF+=cut;
24  histF+=".hist.root";
25  initHisto(histF);
26 
27  TString fItem="recoEffStudy/G2032.tree.root";
28  TString evePath="/star/data04/sim/balewski/LcpRun2/MCrcf1200/";
29 
30  int subSet;
31  for(subSet=2032;subSet<=2167;subSet++) {
32  fItem=evePath+"G";
33  fItem+=subSet;
34  fItem+=".tree.root";
35  chainG->AddFile(fItem, -1);
36  fItem.ReplaceAll("G","R");
37  chainR->AddFile(fItem, -1);
38  }
39 
40 
41 
42 #if 0
43  fItem=evePath+"G2033.tree.root";
44  chainG->AddFile(fItem, -1);
45  fItem.ReplaceAll("G","R");
46  chainR->AddFile(fItem, -1);
47 #endif
48 
49  chainG->ls();
50  chainR->ls();
51 
52  chainR->SetBranchAddress("nPrim",&nPrimR);
53  chainR->SetBranchAddress("vz",&vzR);
54  chainR->SetBranchAddress("q",&qR);
55 
56  chainG->SetBranchAddress("pt",&ptG);
57  chainR->SetBranchAddress("pt",&ptR);
58 
59  chainG->SetBranchAddress("id",&idG);
60  chainR->SetBranchAddress("id",&idR);
61 
62  chainG->SetBranchAddress("phi",&phiG);
63  chainR->SetBranchAddress("phi",&phiR);
64 
65  chainG->SetBranchAddress("eta",&etaG);
66  chainR->SetBranchAddress("eta",&etaR);
67 
68  int N=chainG->GetEntries();
69  printf("N=%d\n",N);
70  system("date");
71  int k;
72  for(k=0;k<N;k++) {
73  int ret=-1;
74  ret=chainG->GetEntry(k);
75  assert(ret);
76  ret=chainR->GetEntry(k);
77  assert(ret);
78  assert(idG==idR);
79  // if(k>30) break;
80  if(nPrimR<=2) continue;
81  if(fabs(vzR)>100.) continue;
82  if(ptR>5.) continue;
83  if(k%1000==0)
84  printf("%d ptG=%f ptR=%f phi %f=%f eta %f=%f\n",k,ptG,ptR,phiG,phiR,etaG,etaR);
85 
86  //printf("nPrim=%d vz=%f q=%d\n",nPrimR,vzR,qR);
87 
88 
89  if(cut==1 & ptR>=1) continue;
90  else if(cut==2 && (ptR<1. || ptR>=2)) continue;
91  else if(cut==3 && (ptR<2. || ptR>=3)) continue;
92  else if(cut==4 && (ptR<3. || ptR>=4)) continue;
93 
94  else if(cut==11 && (etaR<0. || etaR>0.5)) continue;
95  else if(cut==12 && (etaR<0.5 || etaR>1.0)) continue;
96 
97  else if(cut==21 &qR!=1) continue;
98  else if(cut==22 &qR!=-1) continue;
99 
100  fillHisto();
101 
102  }
103 
104  system("date");
105  gStyle->SetPalette(1,0);
106 
107  gStyle->SetOptStat(1111111);
108  c=new TCanvas();
109  c->Divide(2,2);
110 
111  int i;
112  for(i=1;i<4;i++){
113  c->cd(i+1);
114  hr[i]->Draw();
115  //h2[i]->Draw("colz"); gPad->SetLogz();
116  }
117 
118  fd->Write();
119  fd->ls();
120 }
121 
122 //====================================
123 //====================================
124 initHisto(TString fname){
125  fd=new TFile(fname,"recreate");
126  assert(fd->IsOpen());
127  int npt=20;
128  float ptMax=5;
129  h1[0]=new TH1F("GvR","type of reco event; 0=noG*noR 1=G*noR 2=noG*R 3=G*R",5,-0.5,4.5);
130 
131  hr[1]=new TH1F("PhiR","Reco phi/deg",100,0,400);
132  hr[2]=new TH1F("EtaR","Reco eta",100,-2,2);
133  hr[3]=new TH1F("PtR","Reco pT/(GeV/c)",100,0,ptMax);
134 
135  h1[1]=new TH1F("dPhi","diff phi ; G-R phi/deg",100,-200,200);
136  h1[2]=new TH1F("dEta","diff eta ; G-R eta",100,-2,2);
137  h1[3]=new TH1F("dPt","diff pt ; G-R pT/(GeV/c)",100,-2,2);
138 
139  h2[0]=0;
140 
141  h2[1]=new TH2F("dPhiPT","diff phi; G-R diff phi/deg; G pT/GeV/c",50,-200,200,npt,0,ptMax);
142  h2[2]=new TH2F("dEtaPT","diff eta; G-R diff eta; pTG/GeV/c",50,-2,2,npt,0,ptMax);
143  h2[3]=new TH2F("dPtPT","diff pT; G-R diff pT/GeV/c; pTG/GeV/c",50,-1,1,npt,0,ptMax);
144 }
145 
146 //====================================
147 //====================================
148 fillHisto(){
149  int mType=0;
150  if(ptG>0.3) mType+=1;
151  if(ptR>0.3) mType+=2;
152  h1[0]->Fill(mType);
153 
154  if(mType!=3) continue;
155 
156 
157 
158  //.... only both Lcp exist
159  float phi1=phiG/3.1416*180;
160  if(phi1<0) phi1+=360;
161  float phi2=phiR/3.1416*180;
162  if(phi2<0) phi2+=360;
163  float dPhi=phi1-phi2;
164  if(dPhi>180) dPhi-=360;
165  if(dPhi<-180) dPhi+=360;
166 
167  hr[1]->Fill(phi1);
168  hr[2]->Fill(etaR);
169  hr[3]->Fill(ptR);
170 
171  h1[1]->Fill(dPhi);
172  h1[2]->Fill(etaG-etaR);
173  h1[3]->Fill(ptG-ptR);
174 
175  h2[1]->Fill(dPhi,ptG);
176  h2[2]->Fill(etaG-etaR,ptG);
177  h2[3]->Fill(ptG-ptR,ptG);
178 
179 
180 }