@@ -54,32 +54,37 @@ void LocalOpenDataTreeProducer::Loop()
54
54
if (fChain_ak4 == 0 ) return ;
55
55
56
56
TDirectory * currDir = gDirectory ;
57
- TFile * fout = new TFile ("./OpenDataTree.root" , "RECREATE" );
57
+
58
+ std ::string outName = "./OpenDataTree.root" ;
59
+ TFile * fout = new TFile (outName .c_str (), "RECREATE" );
60
+
61
+ std ::cout << "Output will be saved in file: " << outName << std ::endl ;
62
+
58
63
TTree * tree = new TTree ("OpenDataTree" , "OpenDataTree" );
59
64
currDir -> cd ();
60
65
61
66
const UInt_t kMaxNjet = 64 ;
62
67
const UInt_t kMaxNtrg = 64 ;
63
68
64
69
// PF AK5 jets
65
- UInt_t ak4_njet ;
66
- Float_t ak4_pt [kMaxNjet ];
67
- Float_t ak4_eta [kMaxNjet ];
68
- Float_t ak4_phi [kMaxNjet ];
69
- Float_t ak4_E [kMaxNjet ];
70
- Bool_t ak4_tightID [kMaxNjet ];
71
- Float_t ak4_area [kMaxNjet ];
72
- Float_t ak4_jes [kMaxNjet ];
73
- Int_t ak4_igen [kMaxNjet ];
70
+ UInt_t njet ;
71
+ Float_t jet_pt [kMaxNjet ];
72
+ Float_t jet_eta [kMaxNjet ];
73
+ Float_t jet_phi [kMaxNjet ];
74
+ Float_t jet_E [kMaxNjet ];
75
+ Bool_t jet_tightID [kMaxNjet ];
76
+ Float_t jet_area [kMaxNjet ];
77
+ Float_t jet_jes [kMaxNjet ];
78
+ Int_t jet_igen [kMaxNjet ];
74
79
75
80
// PF AK7 jets
76
- UInt_t ak7_njet ;
77
- Float_t ak7_pt [kMaxNjet ];
78
- Float_t ak7_eta [kMaxNjet ];
79
- Float_t ak7_phi [kMaxNjet ];
80
- Float_t ak7_E [kMaxNjet ];
81
- Float_t ak7_area [kMaxNjet ];
82
- Float_t ak7_jes [kMaxNjet ];
81
+ UInt_t njet_ak7 ;
82
+ Float_t jet_pt_ak7 [kMaxNjet ];
83
+ Float_t jet_eta_ak7 [kMaxNjet ];
84
+ Float_t jet_phi_ak7 [kMaxNjet ];
85
+ Float_t jet_E_ak7 [kMaxNjet ];
86
+ Float_t jet_area_ak7 [kMaxNjet ];
87
+ Float_t jet_jes_ak7 [kMaxNjet ];
83
88
Int_t ak7_to_ak4 [kMaxNjet ];
84
89
85
90
// Jet composition
@@ -132,45 +137,45 @@ void LocalOpenDataTreeProducer::Loop()
132
137
133
138
Bool_t isMC = false;
134
139
135
- TBranch * b_ak4_njet = tree -> Branch ("ak4_njet " , & ak4_njet , "ak4_njet /i" );
136
- TBranch * b_ak4_pt = tree -> Branch ("ak4_pt " , ak4_pt , "ak4_pt[ak4_njet ]/F" );
137
- TBranch * b_ak4_eta = tree -> Branch ("ak4_eta " , ak4_eta , "ak4_eta[ak4_njet ]/F" );
138
- TBranch * b_ak4_phi = tree -> Branch ("ak4_phi " , ak4_phi , "ak4_phi[ak4_njet ]/F" );
139
- TBranch * b_ak4_E = tree -> Branch ("ak4_E " , ak4_E , "ak4_E[ak4_njet ]/F" );
140
- TBranch * b_ak4_tightID = tree -> Branch ("ak4_tightID " , ak4_tightID , "ak4_tightID[ak4_njet ]/O" );
141
- TBranch * b_ak4_area = tree -> Branch ("ak4_area " , ak4_area , "ak4_area[ak4_njet ]/F" );
142
- TBranch * b_ak4_jes = tree -> Branch ("ak4_jes " , ak4_jes , "ak4_jes[ak4_njet ]/F" );
140
+ TBranch * b_njet = tree -> Branch ("njet " , & njet , "njet /i" );
141
+ TBranch * b_jet_pt = tree -> Branch ("jet_pt " , jet_pt , "jet_pt[njet ]/F" );
142
+ TBranch * b_jet_eta = tree -> Branch ("jet_eta " , jet_eta , "jet_eta[njet ]/F" );
143
+ TBranch * b_jet_phi = tree -> Branch ("jet_phi " , jet_phi , "jet_phi[njet ]/F" );
144
+ TBranch * b_jet_E = tree -> Branch ("jet_E " , jet_E , "jet_E[njet ]/F" );
145
+ TBranch * b_jet_tightID = tree -> Branch ("jet_tightID " , jet_tightID , "jet_tightID[njet ]/O" );
146
+ TBranch * b_jet_area = tree -> Branch ("jet_area " , jet_area , "jet_area[njet ]/F" );
147
+ TBranch * b_jet_jes = tree -> Branch ("jet_jes " , jet_jes , "jet_jes[njet ]/F" );
143
148
144
- TBranch * b_ak7_njet = tree -> Branch ("ak7_njet " , & ak7_njet , "ak7_njet /i" );
145
- TBranch * b_ak7_pt = tree -> Branch ("ak7_pt " , ak7_pt , "ak7_pt[ak7_njet ]/F" );
146
- TBranch * b_ak7_eta = tree -> Branch ("ak7_eta " , ak7_eta , "ak7_eta[ak7_njet ]/F" );
147
- TBranch * b_ak7_phi = tree -> Branch ("ak7_phi " , ak7_phi , "ak7_phi[ak7_njet ]/F" );
148
- TBranch * b_ak7_E = tree -> Branch ("ak7_E " , ak7_E , "ak7_E[ak7_njet ]/F" );
149
- TBranch * b_ak7_area = tree -> Branch ("ak7_area " , ak7_area , "ak7_area[ak7_njet ]/F" );
150
- TBranch * b_ak7_jes = tree -> Branch ("ak7_jes " , ak7_jes , "ak7_jes[ak7_njet ]/F" );
151
- TBranch * b_ak7_to_ak4 = tree -> Branch ("ak7_to_ak4" , ak7_to_ak4 , "ak7_to_ak4[ak7_njet ]/I" );
152
-
153
- TBranch * b_chf = tree -> Branch ("chf" , chf , "chf[ak4_njet ]/F" );
154
- TBranch * b_nhf = tree -> Branch ("nhf" , nhf , "nhf[ak4_njet ]/F" );
155
- TBranch * b_phf = tree -> Branch ("phf" , phf , "phf[ak4_njet ]/F" );
156
- TBranch * b_elf = tree -> Branch ("elf" , elf , "elf[ak4_njet ]/F" );
157
- TBranch * b_muf = tree -> Branch ("muf" , muf , "muf[ak4_njet ]/F" );
158
-
159
- TBranch * b_hf_hf = tree -> Branch ("hf_hf" , hf_hf , "hf_hf[ak4_njet ]/F" );
160
- TBranch * b_hf_phf = tree -> Branch ("hf_phf" , hf_phf , "hf_phf[ak4_njet ]/F" );
161
- TBranch * b_hf_hm = tree -> Branch ("hf_hm" , hf_hm , "hf_hm[ak4_njet ]/i" );
162
- TBranch * b_hf_phm = tree -> Branch ("hf_phm" , hf_phm , "hf_phm[ak4_njet ]/i" );
149
+ TBranch * b_njet_ak7 = tree -> Branch ("njet_ak7 " , & njet_ak7 , "njet_ak7 /i" );
150
+ TBranch * b_jet_pt_ak7 = tree -> Branch ("jet_pt_ak7 " , jet_pt_ak7 , "jet_pt_ak7[njet_ak7 ]/F" );
151
+ TBranch * b_jet_eta_ak7 = tree -> Branch ("jet_eta_ak7 " , jet_eta_ak7 , "jet_eta_ak7[njet_ak7 ]/F" );
152
+ TBranch * b_jet_phi_ak7 = tree -> Branch ("jet_phi_ak7 " , jet_phi_ak7 , "jet_phi_ak7[njet_ak7 ]/F" );
153
+ TBranch * b_jet_E_ak7 = tree -> Branch ("jet_E_ak7 " , jet_E_ak7 , "jet_E_ak7[njet_ak7 ]/F" );
154
+ TBranch * b_jet_area_ak7 = tree -> Branch ("jet_area_ak7 " , jet_area_ak7 , "jet_area_ak7[njet_ak7 ]/F" );
155
+ TBranch * b_jet_jes_ak7 = tree -> Branch ("jet_jes_ak7 " , jet_jes_ak7 , "jet_jes_ak7[njet_ak7 ]/F" );
156
+ TBranch * b_ak7_to_ak4 = tree -> Branch ("ak7_to_ak4" , ak7_to_ak4 , "ak7_to_ak4[njet_ak7 ]/I" );
157
+
158
+ TBranch * b_chf = tree -> Branch ("chf" , chf , "chf[njet ]/F" );
159
+ TBranch * b_nhf = tree -> Branch ("nhf" , nhf , "nhf[njet ]/F" );
160
+ TBranch * b_phf = tree -> Branch ("phf" , phf , "phf[njet ]/F" );
161
+ TBranch * b_elf = tree -> Branch ("elf" , elf , "elf[njet ]/F" );
162
+ TBranch * b_muf = tree -> Branch ("muf" , muf , "muf[njet ]/F" );
163
+
164
+ TBranch * b_hf_hf = tree -> Branch ("hf_hf" , hf_hf , "hf_hf[njet ]/F" );
165
+ TBranch * b_hf_phf = tree -> Branch ("hf_phf" , hf_phf , "hf_phf[njet ]/F" );
166
+ TBranch * b_hf_hm = tree -> Branch ("hf_hm" , hf_hm , "hf_hm[njet ]/i" );
167
+ TBranch * b_hf_phm = tree -> Branch ("hf_phm" , hf_phm , "hf_phm[njet ]/i" );
163
168
164
- TBranch * b_chm = tree -> Branch ("chm" , chm , "chm[ak4_njet ]/i" );
165
- TBranch * b_nhm = tree -> Branch ("nhm" , nhm , "nhm[ak4_njet ]/i" );
166
- TBranch * b_phm = tree -> Branch ("phm" , phm , "phm[ak4_njet ]/i" );
167
- TBranch * b_elm = tree -> Branch ("elm" , elm , "elm[ak4_njet ]/i" );
168
- TBranch * b_mum = tree -> Branch ("mum" , mum , "mum[ak4_njet ]/i" );
169
+ TBranch * b_chm = tree -> Branch ("chm" , chm , "chm[njet ]/i" );
170
+ TBranch * b_nhm = tree -> Branch ("nhm" , nhm , "nhm[njet ]/i" );
171
+ TBranch * b_phm = tree -> Branch ("phm" , phm , "phm[njet ]/i" );
172
+ TBranch * b_elm = tree -> Branch ("elm" , elm , "elm[njet ]/i" );
173
+ TBranch * b_mum = tree -> Branch ("mum" , mum , "mum[njet ]/i" );
169
174
170
- TBranch * b_hof = tree -> Branch ("hof" , hof , "hof[ak4_njet ]/F" );
171
- TBranch * b_beta = tree -> Branch ("beta" , beta , "beta[ak4_njet ]/F" );
172
- TBranch * b_bstar = tree -> Branch ("bstar" , bstar , "bstar[ak4_njet ]/F" );
173
- TBranch * b_qgl = tree -> Branch ("qgl" , qgl , "qgl[ak4_njet ]/F" );
175
+ TBranch * b_hof = tree -> Branch ("hof" , hof , "hof[njet ]/F" );
176
+ TBranch * b_beta = tree -> Branch ("beta" , beta , "beta[njet ]/F" );
177
+ TBranch * b_bstar = tree -> Branch ("bstar" , bstar , "bstar[njet ]/F" );
178
+ TBranch * b_qgl = tree -> Branch ("qgl" , qgl , "qgl[njet ]/F" );
174
179
175
180
if (isMC ) {
176
181
TBranch * b_ngen = tree -> Branch ("ngen" , & ngen , "ngen/i" );
@@ -201,9 +206,7 @@ void LocalOpenDataTreeProducer::Loop()
201
206
fChain_ak7 -> SetBranchStatus ("*" ,0 );
202
207
203
208
204
- // AK7
205
-
206
- // To begin, read only these 3 variables
209
+ // To begin, read only these 3 variables (AK7)
207
210
fChain_ak7 -> SetBranchStatus ("EvtHdr_.mRun" ,1 ); // run
208
211
fChain_ak7 -> SetBranchStatus ("EvtHdr_.mLumi" ,1 ); // lumi
209
212
fChain_ak7 -> SetBranchStatus ("EvtHdr_.mEvent" ,1 ); // event
@@ -219,12 +222,11 @@ void LocalOpenDataTreeProducer::Loop()
219
222
assert (ak7entry [EvtHdr__mRun_ak7 ][EvtHdr__mLumi_ak7 ][EvtHdr__mEvent_ak7 ] == 0 );
220
223
ak7entry [EvtHdr__mRun_ak7 ][EvtHdr__mLumi_ak7 ][EvtHdr__mEvent_ak7 ] = jentry7 ;
221
224
}
222
-
223
225
std ::cout << "Found mapping for " << ak7entry .size () << " runs" << std ::endl ;
224
226
225
227
// Enable the remaining variables
226
228
227
- fChain_ak4 -> SetBranchStatus ("PFJets_" ,1 ); // ak4_njet
229
+ fChain_ak4 -> SetBranchStatus ("PFJets_" ,1 ); // njet
228
230
fChain_ak4 -> SetBranchStatus ("PFJets_.P4_.fCoordinates.f*" ,1 ); // Four-momentum
229
231
230
232
fChain_ak4 -> SetBranchStatus ("PFJets_.tightID_" ,1 ); // jet_tightID
@@ -281,7 +283,8 @@ void LocalOpenDataTreeProducer::Loop()
281
283
std ::cout << "Total entries: " << nentries << std ::endl ;
282
284
283
285
// DEBUG!!
284
- //nentries = 1000000;
286
+ // Change number of events here
287
+ nentries = 100000 ;
285
288
286
289
// Convert set into vector
287
290
std ::vector < std ::string > trg_vec ;
@@ -304,21 +307,19 @@ void LocalOpenDataTreeProducer::Loop()
304
307
s .insert (removeTrgVersion (trg_name ));
305
308
}
306
309
310
+ // Assign the set of names to a vector
307
311
trg_vec .assign ( s .begin (), s .end () );
308
- // And sort the vector wrt. the trigger momentum
309
- //sort(trg_vec.begin(), trg_vec.end(), compareTrgNames);
310
-
312
+
311
313
// Number of triggers
312
314
ntrg = trg_vec .size ();
313
315
314
- // Shorter trigger names for output
316
+ // Shorten trigger names
315
317
for (auto i : trg_vec ) {
316
318
triggernames .push_back (transformName (i ));
317
319
}
318
320
}
319
321
320
322
321
-
322
323
// Iterating over the events
323
324
for (Long64_t jentry = 0 ; jentry != nentries ; ++ jentry ) {
324
325
@@ -327,26 +328,27 @@ void LocalOpenDataTreeProducer::Loop()
327
328
328
329
fChain_ak4 -> GetEntry (jentry );
329
330
331
+ // Jet index in the output (after pT cut)
330
332
int i_out = 0 ;
333
+
331
334
for (int i = 0 ; i != PFJets__ ; ++ i ) {
332
335
333
336
p4 .SetPxPyPzE ( PFJets__P4__fCoordinates_fX [i ], PFJets__P4__fCoordinates_fY [i ],
334
337
PFJets__P4__fCoordinates_fZ [i ], PFJets__P4__fCoordinates_fT [i ]);
335
338
336
339
// pT selection
337
340
Float_t minPt = 15 ;
338
-
339
341
if (p4 .Pt () > minPt ) {
340
342
341
- ak4_pt [i_out ] = p4 .Pt ();
342
- ak4_eta [i_out ] = p4 .Eta ();
343
- ak4_phi [i_out ] = p4 .Phi ();
344
- ak4_E [i_out ] = p4 .E ();
343
+ jet_pt [i_out ] = p4 .Pt ();
344
+ jet_eta [i_out ] = p4 .Eta ();
345
+ jet_phi [i_out ] = p4 .Phi ();
346
+ jet_E [i_out ] = p4 .E ();
345
347
346
348
347
- ak4_tightID [i_out ] = PFJets__tightID_ [i ];
348
- ak4_area [i_out ] = PFJets__area_ [i ];
349
- ak4_jes [i_out ] = PFJets__cor_ [i ];
349
+ jet_tightID [i_out ] = PFJets__tightID_ [i ];
350
+ jet_area [i_out ] = PFJets__area_ [i ];
351
+ jet_jes [i_out ] = PFJets__cor_ [i ];
350
352
351
353
352
354
// Jet composition
@@ -369,66 +371,59 @@ void LocalOpenDataTreeProducer::Loop()
369
371
beta [i_out ] = PFJets__beta_ [i ];
370
372
bstar [i_out ] = PFJets__betaStar_ [i ];
371
373
hof [i_out ] = PFJets__hof_ [i ];
372
-
373
-
374
+
374
375
++ i_out ;
375
376
}
376
377
}
377
- ak4_njet = i_out ;
378
-
379
- // Using the entry mapping (AK4 to AK7)
378
+ njet = i_out ;
380
379
380
+ // Read corresponding AK7 event using the entry mapping
381
381
fChain_ak7 -> GetEntry (ak7entry [EvtHdr__mRun ][EvtHdr__mLumi ][EvtHdr__mEvent ]);
382
382
383
-
384
-
385
383
// Safety check
386
384
if (EvtHdr__mRun != EvtHdr__mRun_ak7 ||
387
385
EvtHdr__mEvent != EvtHdr__mEvent_ak7 ||
388
386
EvtHdr__mLumi != EvtHdr__mLumi_ak7 ) {
389
387
390
388
assert (false && "Mismatch between AK4 and AK7 events!!" );
391
- }
392
-
393
-
389
+ }
394
390
395
391
// Keep only four leading jets
396
- ak7_njet = min (PFJets_ak7__ , 4 );
397
- for (int i = 0 ; i != ak7_njet ; ++ i ) {
392
+ njet_ak7 = min (PFJets_ak7__ , 4 );
393
+ for (int i = 0 ; i != njet_ak7 ; ++ i ) {
398
394
399
395
p4_ak7 .SetPxPyPzE ( PFJets__P4__fCoordinates_fX_ak7 [i ], PFJets__P4__fCoordinates_fY_ak7 [i ],
400
396
PFJets__P4__fCoordinates_fZ_ak7 [i ], PFJets__P4__fCoordinates_fT_ak7 [i ]);
401
397
402
- ak7_pt [i ] = p4_ak7 .Pt ();
403
- ak7_eta [i ] = p4_ak7 .Eta ();
404
- ak7_phi [i ] = p4_ak7 .Phi ();
405
- ak7_E [i ] = p4_ak7 .E ();
398
+ // 4-momentum (corrected!)
399
+ jet_pt_ak7 [i ] = p4_ak7 .Pt ();
400
+ jet_eta_ak7 [i ] = p4_ak7 .Eta ();
401
+ jet_phi_ak7 [i ] = p4_ak7 .Phi ();
402
+ jet_E_ak7 [i ] = p4_ak7 .E ();
406
403
407
-
408
- ak7_area [i ] = PFJets__area_ak7_ [i ];
409
- ak7_jes [i ] = PFJets__cor_ak7_ [i ];
404
+ // Area and jet energy correction
405
+ jet_area_ak7 [i ] = PFJets__area_ak7_ [i ];
406
+ jet_jes_ak7 [i ] = PFJets__cor_ak7_ [i ];
410
407
411
408
// Matching AK7 jet to AK4
412
409
ak7_to_ak4 [i ] = -1 ;
413
410
414
411
// Search AK4 jet with minimum distance to this PFjet
415
412
float rMin (999 );
416
- for (unsigned int ak4_i = 0 ; ak4_i != ak4_njet ; ++ ak4_i ) {
413
+ for (unsigned int ak4_i = 0 ; ak4_i != njet ; ++ ak4_i ) {
417
414
418
-
419
415
// Initialize AK4 jet
420
- p4_ak4 .SetPtEtaPhiE ( ak4_pt [ak4_i ], ak4_eta [ak4_i ],
421
- ak4_phi [ak4_i ], ak4_E [ak4_i ]);
416
+ p4_ak4 .SetPtEtaPhiE ( jet_pt [ak4_i ], jet_eta [ak4_i ],
417
+ jet_phi [ak4_i ], jet_E [ak4_i ]);
418
+
422
419
// Distance between jets
423
420
double deltaR = p4_ak7 .DeltaR (p4_ak4 );
424
421
425
-
426
422
if (deltaR < rMin ) {
427
423
rMin = deltaR ;
428
424
ak7_to_ak4 [i ] = ak4_i ;
429
425
}
430
426
}
431
-
432
427
}
433
428
434
429
// MC jets
@@ -453,7 +448,7 @@ void LocalOpenDataTreeProducer::Loop()
453
448
auto trg_list = TriggerNames -> GetXaxis ()-> GetLabels ();
454
449
for (int itrg = 0 ; itrg != trg_list -> GetSize (); ++ itrg ) {
455
450
456
- int pass = TriggerDecision_ [itrg ]; // -1, 0, 1
451
+ int pass = TriggerDecision_ [itrg ]; // -1, 0 or 1
457
452
if (pass == -1 ) {
458
453
continue ;
459
454
}
@@ -471,7 +466,6 @@ void LocalOpenDataTreeProducer::Loop()
471
466
event = EvtHdr__mEvent ;
472
467
lumi = EvtHdr__mLumi ;
473
468
474
-
475
469
// MET, SuMET, rho
476
470
met = PFMet__et_ ;
477
471
sumet = PFMet__sumEt_ ;
0 commit comments