source: huonglan/SPLOT/NEWREALEASE/MERGEFILES/MakeFakeData.C @ 21

Last change on this file since 21 was 21, checked in by huonglan, 13 years ago

Add efficiency test folder

File size: 22.4 KB
Line 
1#include "WJetSF_EPS_ttbar_withLF.h"
2
3void MakeFakeData(TString TheTreeName = "T") {
4  TChain *tdn = new TChain(TheTreeName);
5
6  //Signal :
7  //200 GeV/c2 : 115411
8  //250 GeV/c2 : 115414
9  //300 GeV/c2 : 115417
10  //350 GeV/c2 : 115420
11  //400 GeV/c2 : 115423
12  //450 GeV/c2 : 115426
13  //500 GeV/c2 : 115429
14
15  //MC@NLO   : 105200
16  //Top PoPy : 105861
17  //Top PoJi : 105860
18  TString s1 = "/data/atlas/huonglan/FROMLYON/MC/VER3/res";
19  TString s2[78] = {"115423","105200",
20                    "107680","107681","107682","107683","107684","107685",
21                    "107690","107691","107692","107693","107694","107695",
22                    "107700","107701","107702","107703","107704","107705",
23                    "107280","107281","107282","107283","117284","117285",
24                    "117286","117287","117293","117294","117295","117296","117297",
25                    "108340","108341","108342","108343","108344","108345","108346",
26                    "107650","107651","107652","107653","107654","107655",
27                    "107660","107661","107662","107663","107664","107665",
28                    "107670","107671","107672","107673","107674","107675",
29                    "109300","109301","109302","109303","109305","109306",
30                    "109307","109308","109310","109311","109312","109313",
31                    "105010","105011","105012","105013","105014","105015","105016","105017"};
32  //Signal, TTbar : 0,1
33  //Wjets    (3 lines) : From 2 to 19
34  //W+heavy  (2 lines) : From 20 to 32
35  //SingT    (1 line)  : From 33 to 39
36  //Zjets    (3 lines) : From 40 to 57
37  //Z+heavy  (2 lines) : From 58 to 69
38  //QCD      (1 line)  : From 70 to 77         
39
40  TString s3 = "v3.root";
41  TString ver = "ToTestEfficiency";
42
43  //set the name of 78 files
44  TString fname[78];
45  for (int i = 0; i < 78; i++){
46    fname[i] = s1;
47    fname[i] += s2[i];
48    fname[i] += s3;
49  }
50
51  float cx[78] = {1.43,   164.6,
52                  6922,   1034,   378,    101.4,   25.9,    7.0,
53                  6920,   1304,   377.8,  101.9,   25.7,    6.9,
54                  6919,   1303,   378,    101.5,   25.6,    7.0,
55                  47.345, 35.777, 17.381, 7.6129, 127.80, 104.67, 52.180,
56                  20.514, 644.36, 204.99, 50.877, 11.415, 2.773,
57                  7.1168, 7.1084, 7.1044, 0.46927, 0.46890, 0.46886, 14.593,
58                  669.67, 134.41, 40.724, 11.298,  2.8570,  0.75883,
59                  669.68, 134.64, 40.749, 11.274,  2.8462,  0.76319,
60                  669.56, 134.65, 40.762, 11.274,  2.8390,  0.76125,
61                  6.5682, 2.4752, 0.88544, 0.39202, 6.5639, 2.4739,
62                  0.88713, 0.39008, 6.5745, 2.4878, 0.89293, 0.38872,
63                  6.7818e8, 4.0982e7, 2.1929e6, 8.7701e4, 2.3501e3, 33.614, 0.13744, 6.2099e-6};
64
65  float effFilt[78] = {0.68467,0.55551,
66                       1, 1, 1, 1, 1, 1,
67                       1, 1, 1, 1, 1, 1,
68                       1, 1, 1, 1, 1, 1,
69                       0.3500, 0.5086, 0.5323, 0.5525, 0.3018, 0.4910, 
70                       0.5223, 0.5424, 0.4236, 0.5455, 0.5794, 0.5934, 0.6019,
71                       1.,1.,1.,1.,1.,1.,1.,
72                       0.6776, 0.8453, 0.8739, 0.8906, 0.8989, 1.,
73                       0.4683, 0.8499, 0.8982, 0.9169, 0.9262, 0.9318,
74                       0.1546, 0.2441, 0.2805, 0.3095, 0.3290, 0.3560,
75                       0.8508, 0.8965, 0.9039, 0.9114, 0.6959, 0.9070,
76                       0.9242, 0.9336, 0.2221, 0.2889, 0.3206, 0.3547,
77                       1, 1, 1, 1, 1, 1, 1, 1};
78
79
80  //compute the weights corresponding
81  float Wei[78];
82  for (int i = 0; i < 78; i++){
83    TFile *f = TFile::Open(fname[i]);
84    TTree *t = (TTree*)f->Get("T");
85    TH1F *hloose = (TH1F*)f->Get("loose");
86
87    double nevtIn  = 0.;
88    double nevtOut = 0.;
89    int nbin = hloose->GetNbinsX();
90    for (int ib = 1; ib < 21; ib++){
91      double bv = hloose->GetBinContent(ib);
92      double bc = hloose->GetBinCenter(ib) - 0.5;
93      if (bc==0)
94        nevtIn = bv;
95      if (bc==17)
96        nevtOut = bv;
97    }
98    Wei[i]   = cx[i]*1035*effFilt[i]/nevtIn;
99  }
100
101  TChain *tData   = new TChain(TheTreeName);
102  TChain *tSig    = new TChain(TheTreeName);
103  TChain *tAllBkg = new TChain(TheTreeName);
104  TChain *tTop    = new TChain(TheTreeName);
105  TChain *tAllW   = new TChain(TheTreeName);
106  TChain *tSingT  = new TChain(TheTreeName);
107  TChain *tAllZ   = new TChain(TheTreeName);
108  TChain *tQCD    = new TChain(TheTreeName);
109 
110  //Add files to TChain
111  for (int i = 0; i < 78; i++){
112    cout << "Copying file " << fname[i] << endl;
113    TFile *f = TFile::Open(fname[i]);
114    TTree *t = (TTree*)f->Get("T");
115    cout << "Entries number of " << fname[i] << " = " << t->GetEntries() << endl;
116    tData->Add(fname[i]);
117    if (i==0)
118      tSig->Add(fname[i]);
119    if (i==1)
120      tTop->Add(fname[i]);
121    if (i>=1 && i<=69)//i don't want to add the QCD into background file
122      tAllBkg->Add(fname[i]);
123    if (i>=2 && i<=32)
124      tAllW->Add(fname[i]);
125    if (i>=33 && i<=39)
126      tSingT->Add(fname[i]);
127    if (i>=40 && i<=69)
128      tAllZ->Add(fname[i]);
129    if (i>=70 && i<=77)
130      tQCD->Add(fname[i]);
131  }
132
133  cout << "Entries of Data file   = " << tData->GetEntries() << endl;
134  cout << "Entries of Sig  file   = " << tSig->GetEntries() << endl;
135  cout << "Entries of AllBkg file = " << tAllBkg->GetEntries() << endl;
136  cout << "Entries of Top file    = " << tTop->GetEntries() << endl;
137  cout << "Entries of AllW file   = " << tAllW->GetEntries() << endl;
138  cout << "Entries of SingT file  = " << tSingT->GetEntries() << endl;
139  cout << "Entries of AllZ file   = " << tAllZ->GetEntries() << endl;
140  cout << "Entries of QCD file    = " << tQCD->GetEntries() << endl;
141
142  //###################################
143  //************ File Data  ***********
144  //###################################
145
146  TFile *fData    = new TFile("res_Data"+ver+".root","RECREATE");
147  TTree *tWeiD   = new TTree("T","T");
148  float b_weiD  = -100;
149  float b_mtophad= -100;   
150  float b_HT= -100;         
151  float b_cos1= -100;       
152  float b_cos2= -100;       
153  float b_MinLep1= -100;   
154  short b_hfor= -100;       
155  short b_hasBadJet= -100; 
156  short b_isEleEvent= -100; 
157  int b_RunNumber= -100; 
158  tWeiD->Branch("wei",        &b_weiD,               "wei/F");
159  tWeiD->Branch("mtophad",    &b_mtophad,        "mtophad/F");
160  tWeiD->Branch("HT",         &b_HT,                  "HT/F");
161  tWeiD->Branch("cos1",       &b_cos1,              "cos1/F");
162  tWeiD->Branch("cos2",       &b_cos2,              "cos2/F");
163  tWeiD->Branch("MinLep1",    &b_MinLep1,        "MinLep1/F");
164  tWeiD->Branch("hfor",       &b_hfor,              "hfor/S");
165  tWeiD->Branch("hasBadJet",  &b_hasBadJet,    "hasBadJet/S");
166  tWeiD->Branch("isEleEvent", &b_isEleEvent,  "isEleEvent/S");
167  tWeiD->Branch("RunNumber",  &b_RunNumber,    "RunNumber/I");
168  gROOT->cd();
169 
170  int countD = 0;
171  for (int ifi = 0; ifi < tData->GetEntries(); ifi++){
172    countD++;
173    tData->GetEntry(ifi);
174    b_mtophad = tSig->GetLeaf("mtophad")->GetValue();
175    b_HT = tSig->GetLeaf("HT")->GetValue();
176
177    //if (b_mtophad<250 || b_HT<620) continue;
178    if (ifi%1000==0) cout << "Reading event " << ifi << " from Signal tree" << endl;
179
180    //TString currentFile = tSig->GetTree()->GetCurrentFile()->GetName();
181
182    b_weiS = Wei[0]*tSig->GetLeaf("WeiEvent")->GetValue();
183    b_cos1 = tSig->GetLeaf("cos_tlepCMtpair")->GetValue();
184    b_cos2 = tSig->GetLeaf("cosWqq")->GetValue();
185    b_MinLep1 = tSig->GetLeaf("MinLep1")->GetValue();           
186    b_hfor = (short)tSig->GetLeaf("hfor")->GetValue();
187    b_isEleEvent = (short)tSig->GetLeaf("isEleEvent")->GetValue();
188    b_hasBadJet = (short)tSig->GetLeaf("hasBadJet")->GetValue();
189    b_RunNumber = (int)tSig->GetLeaf("RunNumber_ana")->GetValue();
190
191    tWeiS->Fill();
192  }
193
194  fSig->cd();
195  tWeiS->Write();
196  fSig->Close();
197
198
199  //###################################
200  //********** File Signal  ***********
201  //###################################
202
203  TFile *fSig    = new TFile("res_Signal"+ver+".root","RECREATE");
204  TTree *tWeiS   = new TTree("T","T");
205  float b_weiS  = -100;
206  float b_mtophad= -100;   
207  float b_HT= -100;         
208  float b_cos1= -100;       
209  float b_cos2= -100;       
210  float b_MinLep1= -100;   
211  short b_hfor= -100;       
212  short b_hasBadJet= -100; 
213  short b_isEleEvent= -100; 
214  int b_RunNumber= -100; 
215  tWeiS->Branch("wei",        &b_weiS,               "wei/F");
216  tWeiS->Branch("mtophad",    &b_mtophad,        "mtophad/F");
217  tWeiS->Branch("HT",         &b_HT,                  "HT/F");
218  tWeiS->Branch("cos1",       &b_cos1,              "cos1/F");
219  tWeiS->Branch("cos2",       &b_cos2,              "cos2/F");
220  tWeiS->Branch("MinLep1",    &b_MinLep1,        "MinLep1/F");
221  tWeiS->Branch("hfor",       &b_hfor,              "hfor/S");
222  tWeiS->Branch("hasBadJet",  &b_hasBadJet,    "hasBadJet/S");
223  tWeiS->Branch("isEleEvent", &b_isEleEvent,  "isEleEvent/S");
224  tWeiS->Branch("RunNumber",  &b_RunNumber,    "RunNumber/I");
225  gROOT->cd();
226 
227  int countS = 0;
228  for (int ifi = 0; ifi < tSig->GetEntries(); ifi++){
229    countS++;
230    tSig->GetEntry(ifi);
231    b_mtophad = tSig->GetLeaf("mtophad")->GetValue();
232    b_HT = tSig->GetLeaf("HT")->GetValue();
233
234    //if (b_mtophad<250 || b_HT<620) continue;
235    if (ifi%1000==0) cout << "Reading event " << ifi << " from Signal tree" << endl;
236
237    //TString currentFile = tSig->GetTree()->GetCurrentFile()->GetName();
238
239    b_weiS = Wei[0]*tSig->GetLeaf("WeiEvent")->GetValue();
240    b_cos1 = tSig->GetLeaf("cos_tlepCMtpair")->GetValue();
241    b_cos2 = tSig->GetLeaf("cosWqq")->GetValue();
242    b_MinLep1 = tSig->GetLeaf("MinLep1")->GetValue();           
243    b_hfor = (short)tSig->GetLeaf("hfor")->GetValue();
244    b_isEleEvent = (short)tSig->GetLeaf("isEleEvent")->GetValue();
245    b_hasBadJet = (short)tSig->GetLeaf("hasBadJet")->GetValue();
246    b_RunNumber = (int)tSig->GetLeaf("RunNumber_ana")->GetValue();
247
248    tWeiS->Fill();
249  }
250
251  fSig->cd();
252  tWeiS->Write();
253  fSig->Close();
254
255  //##############################################
256  //*************** File AllBkg  *****************
257  //##############################################
258  TFile *fAllBkg; 
259  if (s2[1]=="105200"){
260    fAllBkg   = new TFile("res_AllBkgTopMCAtNLO"+ver+".root","RECREATE");
261  }
262  else if (s2[1]=="105861"){
263    fAllBkg   = new TFile("res_AllBkgTopPoPy"+ver+".root","RECREATE");
264  }
265  else if (s2[1]=="105860"){
266    fAllBkg   = new TFile("res_AllBkgTopPoJi"+ver+".root","RECREATE");
267  } else {
268    cout << "Wrong top sample ! Put T1 as default" << endl;
269    fAllBkg   = new TFile("res_AllBkgTopMCAtNLO"+ver+".root","RECREATE");
270  }
271
272  TTree *tWeiB   = new TTree("T","T");
273  tWeiB->Branch("wei",        &b_weiS,               "wei/F");
274  tWeiB->Branch("mtophad",    &b_mtophad,        "mtophad/F");
275  tWeiB->Branch("HT",         &b_HT,                  "HT/F");
276  tWeiB->Branch("cos1",       &b_cos1,              "cos1/F");
277  tWeiB->Branch("cos2",       &b_cos2,              "cos2/F");
278  tWeiB->Branch("MinLep1",    &b_MinLep1,        "MinLep1/F");
279  tWeiB->Branch("hfor",       &b_hfor,              "hfor/S");
280  tWeiB->Branch("hasBadJet",  &b_hasBadJet,    "hasBadJet/S");
281  tWeiB->Branch("isEleEvent", &b_isEleEvent,  "isEleEvent/S");
282  tWeiB->Branch("RunNumber",  &b_RunNumber,    "RunNumber/I");
283  gROOT->cd();
284
285  int countB = 0;
286  for (int ifi = 0; ifi < tAllBkg->GetEntries(); ifi++){
287    countB++;
288    tAllBkg->GetEntry(ifi);
289    double mt = tAllBkg->GetLeaf("mtophad")->GetValue();
290    double ht = tAllBkg->GetLeaf("HT")->GetValue();
291    b_mtophad = mt;
292    b_HT = ht;
293
294    //if (mt<250 || ht<620) continue;
295    if (ifi%1000==0) cout << "Reading event " << ifi << " from AllBkg tree" << endl;
296
297    TString currentFile = tAllBkg->GetTree()->GetCurrentFile()->GetName();
298    b_hfor       = (short)tAllBkg->GetLeaf("hfor")->GetValue();
299    for (int i = 0; i < 78; i++){
300      double kfac = 1, ksE = 1, ksM = 1;
301      if (i>=2 && i<=32)  {kfac = 1.2; ksE = 0.906; ksM = 0.814;}//k factor for W+jets
302      if (i>=40 && i<=69) {kfac = 1.25;}//Zjets
303
304      if (fname[i]==currentFile)
305        b_weiS = Wei[i]*(tAllBkg->GetLeaf("WeiEvent")->GetValue())*WJet_SF(b_hfor)*kfac*ksE*ksM;
306    }
307    b_cos1       = tAllBkg->GetLeaf("cos_tlepCMtpair")->GetValue();
308    b_cos2       = tAllBkg->GetLeaf("cosWqq")->GetValue();
309    b_MinLep1    = tAllBkg->GetLeaf("MinLep1")->GetValue();           
310    b_isEleEvent = (short)tAllBkg->GetLeaf("isEleEvent")->GetValue();
311    b_hasBadJet  = (short)tAllBkg->GetLeaf("hasBadJet")->GetValue();
312    b_RunNumber  = (int)tAllBkg->GetLeaf("RunNumber_ana")->GetValue();
313    tWeiB->Fill();
314  }
315
316  fAllBkg->cd();
317  tWeiB->Write();
318  fAllBkg->Close();
319
320
321  //##############################################
322  //***************** File Top  ******************
323  //##############################################
324  TFile *fTop; 
325  if (s2[1]=="105200"){
326    fTop   = new TFile("res_TopMCAtNLO"+ver+".root","RECREATE");
327  }
328  else if (s2[1]=="105861"){
329    fTop   = new TFile("res_TopPoPy"+ver+".root","RECREATE");
330  }
331  else if (s2[1]=="105860"){
332    fTop   = new TFile("res_TopPoJi"+ver+".root","RECREATE");
333  } else {
334    cout << "Wrong top sample ! Put T1 as default" << endl;
335    fTop   = new TFile("res_TopMCAtNLO"+ver+".root","RECREATE");
336  }
337
338  TTree *tWeiT   = new TTree("T","T");
339  tWeiT->Branch("wei",        &b_weiS,               "wei/F");
340  tWeiT->Branch("mtophad",    &b_mtophad,        "mtophad/F");
341  tWeiT->Branch("HT",         &b_HT,                  "HT/F");
342  tWeiT->Branch("cos1",       &b_cos1,              "cos1/F");
343  tWeiT->Branch("cos2",       &b_cos2,              "cos2/F");
344  tWeiT->Branch("MinLep1",    &b_MinLep1,        "MinLep1/F");
345  tWeiT->Branch("hfor",       &b_hfor,              "hfor/S");
346  tWeiT->Branch("hasBadJet",  &b_hasBadJet,    "hasBadJet/S");
347  tWeiT->Branch("isEleEvent", &b_isEleEvent,  "isEleEvent/S");
348  tWeiT->Branch("RunNumber",  &b_RunNumber,    "RunNumber/I");
349  gROOT->cd();
350
351  int countB = 0;
352  for (int ifi = 0; ifi < tTop->GetEntries(); ifi++){
353    countB++;
354    tTop->GetEntry(ifi);
355    double mt = tTop->GetLeaf("mtophad")->GetValue();
356    double ht = tTop->GetLeaf("HT")->GetValue();
357    b_mtophad = mt;
358    b_HT = ht;
359
360    //if (mt<250 || ht<620) continue;
361    if (ifi%1000==0) cout << "Reading event " << ifi << " from Top tree" << endl;
362
363    TString currentFile = tTop->GetTree()->GetCurrentFile()->GetName();
364    for (int i = 0; i < 78; i++){
365      if (fname[i]==currentFile)
366        b_weiS = Wei[i]*(tTop->GetLeaf("WeiEvent")->GetValue());
367    }
368    b_cos1       = tTop->GetLeaf("cos_tlepCMtpair")->GetValue();
369    b_hfor       = (short)tTop->GetLeaf("hfor")->GetValue();
370    b_cos2       = tTop->GetLeaf("cosWqq")->GetValue();
371    b_MinLep1    = tTop->GetLeaf("MinLep1")->GetValue();           
372    b_isEleEvent = (short)tTop->GetLeaf("isEleEvent")->GetValue();
373    b_hasBadJet  = (short)tTop->GetLeaf("hasBadJet")->GetValue();
374    b_RunNumber  = (int)tTop->GetLeaf("RunNumber_ana")->GetValue();
375    tWeiT->Fill();
376  }
377
378  fTop->cd();
379  tWeiT->Write();
380  fTop->Close();
381
382  //##############################################
383  //*************** File AllW    *****************
384  //##############################################
385  TFile *fAllW = new TFile("res_AllW"+ver+".root","RECREATE");
386
387  TTree *tWeiW   = new TTree("T","T");
388  tWeiW->Branch("wei",        &b_weiS,               "wei/F");
389  tWeiW->Branch("mtophad",    &b_mtophad,        "mtophad/F");
390  tWeiW->Branch("HT",         &b_HT,                  "HT/F");
391  tWeiW->Branch("cos1",       &b_cos1,              "cos1/F");
392  tWeiW->Branch("cos2",       &b_cos2,              "cos2/F");
393  tWeiW->Branch("MinLep1",    &b_MinLep1,        "MinLep1/F");
394  tWeiW->Branch("hfor",       &b_hfor,              "hfor/S");
395  tWeiW->Branch("hasBadJet",  &b_hasBadJet,    "hasBadJet/S");
396  tWeiW->Branch("isEleEvent", &b_isEleEvent,  "isEleEvent/S");
397  tWeiW->Branch("RunNumber",  &b_RunNumber,    "RunNumber/I");
398  gROOT->cd();
399
400  int countB = 0;
401  for (int ifi = 0; ifi < tAllW->GetEntries(); ifi++){
402    countB++;
403    tAllW->GetEntry(ifi);
404    double mt = tAllW->GetLeaf("mtophad")->GetValue();
405    double ht = tAllW->GetLeaf("HT")->GetValue();
406    b_mtophad = mt;
407    b_HT = ht;
408
409    //if (mt<250 || ht<620) continue;
410    if (ifi%1000==0) cout << "Reading event " << ifi << " from AllW tree" << endl;
411
412    TString currentFile = tAllW->GetTree()->GetCurrentFile()->GetName();
413    b_hfor       = (short)tAllW->GetLeaf("hfor")->GetValue();
414    for (int i = 0; i < 78; i++){
415      double kfac = 1, ksE = 1, ksM = 1;
416      if (i>=2 && i<=32)  {kfac = 1.2; ksE = 0.906; ksM = 0.814;}//k factor for W+jets
417
418      if (fname[i]==currentFile)
419        b_weiS = Wei[i]*(tAllW->GetLeaf("WeiEvent")->GetValue())*WJet_SF(b_hfor)*kfac*ksE*ksM;
420    }
421    b_cos1       = tAllW->GetLeaf("cos_tlepCMtpair")->GetValue();
422    b_cos2       = tAllW->GetLeaf("cosWqq")->GetValue();
423    b_MinLep1    = tAllW->GetLeaf("MinLep1")->GetValue();           
424    b_isEleEvent = (short)tAllW->GetLeaf("isEleEvent")->GetValue();
425    b_hasBadJet  = (short)tAllW->GetLeaf("hasBadJet")->GetValue();
426    b_RunNumber  = (int)tAllW->GetLeaf("RunNumber_ana")->GetValue();
427    tWeiW->Fill();
428  }
429
430  fAllW->cd();
431  tWeiW->Write();
432  fAllW->Close();
433
434  //##############################################
435  //*********** File Single Top  *****************
436  //##############################################
437  TFile *fSingT   = new TFile("res_SingleTop"+ver+".root","RECREATE");
438
439  TTree *tWeiST   = new TTree("T","T");
440  tWeiST->Branch("wei",        &b_weiS,               "wei/F");
441  tWeiST->Branch("mtophad",    &b_mtophad,        "mtophad/F");
442  tWeiST->Branch("HT",         &b_HT,                  "HT/F");
443  tWeiST->Branch("cos1",       &b_cos1,              "cos1/F");
444  tWeiST->Branch("cos2",       &b_cos2,              "cos2/F");
445  tWeiST->Branch("MinLep1",    &b_MinLep1,        "MinLep1/F");
446  tWeiST->Branch("hfor",       &b_hfor,              "hfor/S");
447  tWeiST->Branch("hasBadJet",  &b_hasBadJet,    "hasBadJet/S");
448  tWeiST->Branch("isEleEvent", &b_isEleEvent,  "isEleEvent/S");
449  tWeiST->Branch("RunNumber",  &b_RunNumber,    "RunNumber/I");
450  gROOT->cd();
451
452  int countB = 0;
453  for (int ifi = 0; ifi < tSingT->GetEntries(); ifi++){
454    countB++;
455    tSingT->GetEntry(ifi);
456    double mt = tSingT->GetLeaf("mtophad")->GetValue();
457    double ht = tSingT->GetLeaf("HT")->GetValue();
458    b_mtophad = mt;
459    b_HT = ht;
460
461    //if (mt<250 || ht<620) continue;
462    if (ifi%1000==0) cout << "Reading event " << ifi << " from SingT tree" << endl;
463
464    TString currentFile = tSingT->GetTree()->GetCurrentFile()->GetName();
465    for (int i = 0; i < 78; i++){
466      if (fname[i]==currentFile)
467        b_weiS = Wei[i]*(tSingT->GetLeaf("WeiEvent")->GetValue());
468    }
469    b_hfor       = (short)tSingT->GetLeaf("hfor")->GetValue();
470    b_cos1       = tSingT->GetLeaf("cos_tlepCMtpair")->GetValue();
471    b_cos2       = tSingT->GetLeaf("cosWqq")->GetValue();
472    b_MinLep1    = tSingT->GetLeaf("MinLep1")->GetValue();           
473    b_isEleEvent = (short)tSingT->GetLeaf("isEleEvent")->GetValue();
474    b_hasBadJet  = (short)tSingT->GetLeaf("hasBadJet")->GetValue();
475    b_RunNumber  = (int)tSingT->GetLeaf("RunNumber_ana")->GetValue();
476    tWeiST->Fill();
477  }
478
479  fSingT->cd();
480  tWeiST->Write();
481  fSingT->Close();
482
483  //##############################################
484  //*************** File AllZ    *****************
485  //##############################################
486  TFile *fAllZ = new TFile("res_AllZ"+ver+".root","RECREATE");
487
488  TTree *tWeiZ   = new TTree("T","T");
489  tWeiZ->Branch("wei",        &b_weiS,               "wei/F");
490  tWeiZ->Branch("mtophad",    &b_mtophad,        "mtophad/F");
491  tWeiZ->Branch("HT",         &b_HT,                  "HT/F");
492  tWeiZ->Branch("cos1",       &b_cos1,              "cos1/F");
493  tWeiZ->Branch("cos2",       &b_cos2,              "cos2/F");
494  tWeiZ->Branch("MinLep1",    &b_MinLep1,        "MinLep1/F");
495  tWeiZ->Branch("hfor",       &b_hfor,              "hfor/S");
496  tWeiZ->Branch("hasBadJet",  &b_hasBadJet,    "hasBadJet/S");
497  tWeiZ->Branch("isEleEvent", &b_isEleEvent,  "isEleEvent/S");
498  tWeiZ->Branch("RunNumber",  &b_RunNumber,    "RunNumber/I");
499  gROOT->cd();
500
501  int countB = 0;
502  for (int ifi = 0; ifi < tAllZ->GetEntries(); ifi++){
503    countB++;
504    tAllZ->GetEntry(ifi);
505    double mt = tAllZ->GetLeaf("mtophad")->GetValue();
506    double ht = tAllZ->GetLeaf("HT")->GetValue();
507    b_mtophad = mt;
508    b_HT = ht;
509
510    //if (mt<250 || ht<620) continue;
511    if (ifi%1000==0) cout << "Reading event " << ifi << " from AllZ tree" << endl;
512
513    TString currentFile = tAllZ->GetTree()->GetCurrentFile()->GetName();
514    b_hfor       = (short)tAllZ->GetLeaf("hfor")->GetValue();
515    for (int i = 0; i < 78; i++){
516      double kfac = 1, ksE = 1, ksM = 1;
517      if (i>=40 && i<=69) {kfac = 1.25;}//Zjets
518
519      if (fname[i]==currentFile)
520        b_weiS = Wei[i]*(tAllZ->GetLeaf("WeiEvent")->GetValue())*WJet_SF(b_hfor)*kfac*ksE*ksM;
521    }
522    b_cos1       = tAllZ->GetLeaf("cos_tlepCMtpair")->GetValue();
523    b_cos2       = tAllZ->GetLeaf("cosWqq")->GetValue();
524    b_MinLep1    = tAllZ->GetLeaf("MinLep1")->GetValue();           
525    b_isEleEvent = (short)tAllZ->GetLeaf("isEleEvent")->GetValue();
526    b_hasBadJet  = (short)tAllZ->GetLeaf("hasBadJet")->GetValue();
527    b_RunNumber  = (int)tAllZ->GetLeaf("RunNumber_ana")->GetValue();
528    tWeiZ->Fill();
529  }
530
531  fAllZ->cd();
532  tWeiZ->Write();
533  fAllZ->Close();
534
535  //##############################################
536  //**************** File QCD  *******************
537  //##############################################
538  TFile *fQCD   = new TFile("res_QCD"+ver+".root","RECREATE");
539
540  TTree *tWeiQCD   = new TTree("T","T");
541  tWeiQCD->Branch("wei",        &b_weiS,               "wei/F");
542  tWeiQCD->Branch("mtophad",    &b_mtophad,        "mtophad/F");
543  tWeiQCD->Branch("HT",         &b_HT,                  "HT/F");
544  tWeiQCD->Branch("cos1",       &b_cos1,              "cos1/F");
545  tWeiQCD->Branch("cos2",       &b_cos2,              "cos2/F");
546  tWeiQCD->Branch("MinLep1",    &b_MinLep1,        "MinLep1/F");
547  tWeiQCD->Branch("hfor",       &b_hfor,              "hfor/S");
548  tWeiQCD->Branch("hasBadJet",  &b_hasBadJet,    "hasBadJet/S");
549  tWeiQCD->Branch("isEleEvent", &b_isEleEvent,  "isEleEvent/S");
550  tWeiQCD->Branch("RunNumber",  &b_RunNumber,    "RunNumber/I");
551  gROOT->cd();
552
553  int countB = 0;
554  for (int ifi = 0; ifi < tQCD->GetEntries(); ifi++){
555    countB++;
556    tQCD->GetEntry(ifi);
557    double mt = tQCD->GetLeaf("mtophad")->GetValue();
558    double ht = tQCD->GetLeaf("HT")->GetValue();
559    b_mtophad = mt;
560    b_HT = ht;
561
562    //if (mt<250 || ht<620) continue;
563    if (ifi%1000==0) cout << "Reading event " << ifi << " from QCD tree" << endl;
564
565    TString currentFile = tQCD->GetTree()->GetCurrentFile()->GetName();
566    for (int i = 0; i < 78; i++){
567      if (fname[i]==currentFile)
568        b_weiS = Wei[i]*(tQCD->GetLeaf("WeiEvent")->GetValue());
569    }
570    b_cos1       = tQCD->GetLeaf("cos_tlepCMtpair")->GetValue();
571    b_hfor       = (short)tQCD->GetLeaf("hfor")->GetValue();
572    b_cos2       = tQCD->GetLeaf("cosWqq")->GetValue();
573    b_MinLep1    = tQCD->GetLeaf("MinLep1")->GetValue();           
574    b_isEleEvent = (short)tQCD->GetLeaf("isEleEvent")->GetValue();
575    b_hasBadJet  = (short)tQCD->GetLeaf("hasBadJet")->GetValue();
576    b_RunNumber  = (int)tQCD->GetLeaf("RunNumber_ana")->GetValue();
577    tWeiQCD->Fill();
578  }
579
580  fQCD->cd();
581  tWeiQCD->Write();
582  fQCD->Close();
583
584}
Note: See TracBrowser for help on using the repository browser.