46 |
|
#include "MuonSelection.h" |
47 |
|
#include "ElectronSelection.h" |
48 |
|
#include "IsolationSelection.h" |
49 |
< |
#include "Selection.h" |
49 |
> |
|
50 |
> |
//#include "Selection.h" |
51 |
> |
#include "ReferenceSelection.h" |
52 |
> |
|
53 |
|
#include "TriggerUtils.h" |
54 |
|
#include "PassHLT.h" |
55 |
|
#include "Angles.h" |
58 |
|
//#include "GenInfoStruct.h" |
59 |
|
#include "WeightStruct.h" |
60 |
|
#include "GlobalDataAndFuncs.h" |
61 |
+ |
|
62 |
|
#include "AngleTuple.h" |
63 |
+ |
#include "FOTuple.h" |
64 |
|
|
65 |
|
#include "SampleWeight.h" |
66 |
|
#include "EfficiencyWeightsInterface.h" |
71 |
|
|
72 |
|
using namespace mithep; |
73 |
|
|
74 |
+ |
#include "SimpleLepton.h" |
75 |
+ |
vector<SimpleLepton> failedLeptons; // for fake estimation |
76 |
|
|
77 |
|
//---------------------------------------------------------------------------- |
78 |
|
bool setPV(ControlFlags,const mithep::Array<mithep::Vertex>*, mithep::Vertex& ); |
103 |
|
return 1; |
104 |
|
} |
105 |
|
ctrl.dump(); |
99 |
– |
assert( ctrl.mH != 0 ); |
106 |
|
|
107 |
|
|
108 |
|
|
150 |
|
WeightStruct weights; |
151 |
|
// GenInfoStruct geninfo; |
152 |
|
|
153 |
+ |
|
154 |
|
AngleTuple nt( (const char*)ofname, (const char*)"zznt"); |
155 |
|
nt.makeAngleBranch(angles); |
156 |
|
nt.makeKinematicsBranch(kinematics); |
157 |
|
nt.makeInfoBranch(evtinfo); |
158 |
+ |
FOTuple foTree( nt.getFile(), (const char*)"fo"); |
159 |
+ |
foTree.makeSimpleLeptonBranch(failedLeptons); |
160 |
|
|
161 |
|
TH1F * h_w_hpt; |
162 |
|
if(ctrl.mc) { |
179 |
|
initRunLumiRangeMap(); |
180 |
|
} |
181 |
|
|
182 |
< |
initMuonIDMVA(); |
182 |
> |
// initMuonIDMVA(); |
183 |
|
initMuonIsoMVA(); |
184 |
|
initElectronIDMVA(); |
185 |
|
initElectronIsoMVA(); |
186 |
|
initTrigger(); |
187 |
|
|
188 |
+ |
|
189 |
|
|
190 |
|
//########################################################################## |
191 |
|
// Setup tree I/O |
289 |
|
// lepton/kinematic selection ... |
290 |
|
// |
291 |
|
EventData ret4l = |
292 |
< |
apply_HZZ4L_selection(ctrl, info, |
292 |
> |
apply_HZZ4L_reference_selection(ctrl, info, |
293 |
> |
vtx, |
294 |
> |
pfArr, |
295 |
> |
puArr, |
296 |
> |
electronArr, |
297 |
> |
&electronReferencePreSelection, |
298 |
> |
&electronReferenceIDMVASelection, |
299 |
> |
&electronReferenceIsoSelection, |
300 |
> |
muonArr, |
301 |
> |
&muonReferencePreSelection, |
302 |
> |
&muonIDPFSelection, |
303 |
> |
&muonReferenceIsoSelection); |
304 |
> |
/* |
305 |
> |
apply_HZZ4L_reference_selection(ctrl, info, |
306 |
|
vtx, |
307 |
|
pfArr, |
308 |
|
puArr, |
309 |
|
electronArr, |
310 |
|
&electronPreSelection, |
288 |
– |
// &electronBDTSelection, |
311 |
|
&electronIDMVASelection, |
290 |
– |
// &electronIsoSelection, |
312 |
|
&electronIsoMVASelection, |
313 |
|
muonArr, |
314 |
|
&muonPreSelection, |
315 |
|
&muonIDPFSelection, |
295 |
– |
// &muonIDMVASelection, |
296 |
– |
// &passMuonSelection, |
316 |
|
&muonIsoMVASelection); |
317 |
+ |
*/ |
318 |
+ |
|
319 |
|
if( ctrl.debug ) cout << endl; |
320 |
+ |
|
321 |
+ |
cout << "bits: " << ret4l.status.selectionBits << endl; |
322 |
|
|
323 |
|
if( ret4l.status.pass() ) { |
324 |
|
|
346 |
|
pass++; |
347 |
|
// if( pass > 3 ) break; |
348 |
|
|
349 |
< |
} |
349 |
> |
} else if( ret4l.status.selectionBits.test(8) ) { // save for fakes ... |
350 |
> |
cout << "failedLeptons : " << failedLeptons.size() << endl; |
351 |
> |
for( int f=0; f<failedLeptons.size(); f++ ) { |
352 |
> |
cout << "f: " << f << "\t" |
353 |
> |
<< "type: " << failedLeptons[f].type << "\t" |
354 |
> |
<< "pT: " << failedLeptons[f].vec->Pt() |
355 |
> |
<< endl; |
356 |
> |
} |
357 |
> |
cout << endl; |
358 |
> |
// foTree.Fill(); |
359 |
> |
// break; |
360 |
> |
} |
361 |
|
} |
362 |
|
|
363 |
+ |
// foTree.getTree()->Write(); |
364 |
|
nt.WriteClose(); |
365 |
|
} |
366 |
|
|