FCCAnalyses
Loading...
Searching...
No Matches
Analysis_FCChh.h
Go to the documentation of this file.
1// library with extra functions needed by custom FCC-hh analysis, such as
2// HHbbZZ(llvv) analysis
3
4#ifndef ANALYSIS_FCCHH_ANALYZERS_H
5#define ANALYSIS_FCCHH_ANALYZERS_H
6
7#include "ROOT/RVec.hxx"
8#include "TLorentzVector.h"
9#include "TString.h"
10
11#include "edm4hep/MCParticleData.h"
12#include "edm4hep/ParticleIDData.h"
13#include "edm4hep/ReconstructedParticleData.h"
14#include "podio/ObjectID.h"
15
16#include <iostream>
17
18namespace AnalysisFCChh {
19
21// ROOT::VecOps::RVec<float>
22// get_pt_test(ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> in);
23
24// helpers for reco particles:
25TLorentzVector getTLV_reco(edm4hep::ReconstructedParticleData reco_part);
26TLorentzVector getTLV_MC(edm4hep::MCParticleData MC_part);
27
28// struct to use for a pair of two reco particles, to make sure the correct ones
29// stay together
31 edm4hep::ReconstructedParticleData particle_1;
32 edm4hep::ReconstructedParticleData particle_2;
33 TLorentzVector merged_TLV() {
34 TLorentzVector tlv_1 = getTLV_reco(particle_1);
35 TLorentzVector tlv_2 = getTLV_reco(particle_2);
36 return tlv_1 + tlv_2;
37 }
38 void sort_by_pT() {
39 double pT_1 = sqrt(particle_1.momentum.x * particle_1.momentum.x +
40 particle_1.momentum.y * particle_1.momentum.y);
41 double pT_2 = sqrt(particle_2.momentum.x * particle_2.momentum.x +
42 particle_2.momentum.y * particle_2.momentum.y);
43
44 if (pT_1 >= pT_2) {
45 return;
46 } // nothing to do if already sorted corrected
47 else {
48 edm4hep::ReconstructedParticleData sublead = particle_1;
49
51 particle_2 = sublead;
52 return;
53 }
54 }
55};
56
57// same for MC particle
59 edm4hep::MCParticleData particle_1;
60 edm4hep::MCParticleData particle_2;
61 TLorentzVector merged_TLV() {
62 TLorentzVector tlv_1 = getTLV_MC(particle_1);
63 TLorentzVector tlv_2 = getTLV_MC(particle_2);
64 return tlv_1 + tlv_2;
65 }
66 void sort_by_pT() {
67 double pT_1 = sqrt(particle_1.momentum.x * particle_1.momentum.x +
68 particle_1.momentum.y * particle_1.momentum.y);
69 double pT_2 = sqrt(particle_2.momentum.x * particle_2.momentum.x +
70 particle_2.momentum.y * particle_2.momentum.y);
71
72 if (pT_1 >= pT_2) {
73 return;
74 } // nothing to do if already sorted corrected
75 else {
76 edm4hep::MCParticleData sublead = particle_1;
77
79 particle_2 = sublead;
80 return;
81 }
82 }
83};
84
85// merge the particles in such a pair into one edm4hep:RecoParticle to use with
86// other functions (in a vector)
87ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData>
88merge_pairs(ROOT::VecOps::RVec<RecoParticlePair> pairs);
89int get_n_pairs(ROOT::VecOps::RVec<RecoParticlePair> pairs);
90ROOT::VecOps::RVec<RecoParticlePair>
91get_first_pair(ROOT::VecOps::RVec<RecoParticlePair>
92 pairs); // can use to get leading pair if the inputs to pair
93 // finding fct were pT sorted
94
95// functions to separate the pair again - ONLY DOES THIS FOR THE FIRST PAIR IN
96// THE VECTOR
97ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData>
98get_first_from_pair(ROOT::VecOps::RVec<RecoParticlePair> pairs);
99ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData>
100get_second_from_pair(ROOT::VecOps::RVec<RecoParticlePair> pairs);
101
102// truth filter used to get ZZ(llvv) events from the ZZ(llvv+4l+4v) inclusive
103// signal samples
104bool ZZllvvFilter(ROOT::VecOps::RVec<edm4hep::MCParticleData> truth_particles,
105 ROOT::VecOps::RVec<podio::ObjectID> daughter_ids);
106bool WWlvlvFilter(ROOT::VecOps::RVec<edm4hep::MCParticleData> truth_particles,
107 ROOT::VecOps::RVec<podio::ObjectID> daughter_ids,
108 ROOT::VecOps::RVec<podio::ObjectID> parent_ids);
109
110// helper functions for the ZZllv truth filter:
111bool isStablePhoton(edm4hep::MCParticleData truth_part);
112bool isPhoton(edm4hep::MCParticleData truth_part);
113bool isLep(edm4hep::MCParticleData truth_part);
114bool isLightLep(edm4hep::MCParticleData truth_part);
115bool isNeutrino(edm4hep::MCParticleData truth_part);
116bool isQuark(edm4hep::MCParticleData truth_part);
117bool isZ(edm4hep::MCParticleData truth_part);
118bool isW(edm4hep::MCParticleData truth_part);
119bool isTau(edm4hep::MCParticleData truth_part);
120bool isH(edm4hep::MCParticleData truth_part);
121bool isb(edm4hep::MCParticleData truth_part);
122bool isHadron(edm4hep::MCParticleData truth_part);
123bool isTop(edm4hep::MCParticleData truth_part);
124bool isGluon(edm4hep::MCParticleData truth_part);
125bool isc(edm4hep::MCParticleData truth_part);
126bool iss(edm4hep::MCParticleData truth_part);
127bool isMuon(edm4hep::MCParticleData truth_part);
128int checkZDecay(edm4hep::MCParticleData truth_Z,
129 ROOT::VecOps::RVec<podio::ObjectID> daughter_ids,
130 ROOT::VecOps::RVec<edm4hep::MCParticleData> truth_particles);
131int checkWDecay(edm4hep::MCParticleData truth_W,
132 ROOT::VecOps::RVec<podio::ObjectID> daughter_ids,
133 ROOT::VecOps::RVec<edm4hep::MCParticleData> truth_particles);
135 ROOT::VecOps::RVec<edm4hep::MCParticleData> truth_particles,
136 ROOT::VecOps::RVec<podio::ObjectID> daughter_ids);
138 ROOT::VecOps::RVec<edm4hep::MCParticleData> truth_particles,
139 ROOT::VecOps::RVec<podio::ObjectID> daughter_ids);
140
141// truth level fct to get a Z->ll truth decay
142ROOT::VecOps::RVec<edm4hep::MCParticleData>
143getTruthZll(ROOT::VecOps::RVec<edm4hep::MCParticleData> truth_particles,
144 ROOT::VecOps::RVec<podio::ObjectID> daughter_ids);
145
146// find the SFOS pair of reconstructed leptons (electrons or muons)
147ROOT::VecOps::RVec<RecoParticlePair>
148getOSPairs(ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> leptons_in);
149ROOT::VecOps::RVec<RecoParticlePair> getDFOSPairs(
150 ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> electrons_in,
151 ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> muons_in);
152// ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData>
153// getOSPair(ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> leptons_in);
154ROOT::VecOps::RVec<RecoParticlePair> getBestOSPair(
155 ROOT::VecOps::RVec<RecoParticlePair> electron_pairs,
156 ROOT::VecOps::RVec<RecoParticlePair> muon_pairs); // closest to Z mass
157ROOT::VecOps::RVec<RecoParticlePair>
158getLeadingPair(ROOT::VecOps::RVec<RecoParticlePair> electron_pairs,
159 ROOT::VecOps::RVec<RecoParticlePair>
160 muon_pairs); // pair with leading pT(pair)
161
162// make a general pair, not caring about charges, e.g. the two b-jets
163ROOT::VecOps::RVec<RecoParticlePair>
164getPairs(ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> particles_in);
165ROOT::VecOps::RVec<RecoParticlePair> getPair_sublead(
166 ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> particles_in);
167ROOT::VecOps::RVec<MCParticlePair>
168getPairs(ROOT::VecOps::RVec<edm4hep::MCParticleData> particles_in);
169
170// SORT OBJ COLLECTION
171ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> SortParticleCollection(
172 ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> particles_in);
173
174// btags
175ROOT::VecOps::RVec<bool>
176getJet_tag(ROOT::VecOps::RVec<int> index,
177 ROOT::VecOps::RVec<edm4hep::ParticleIDData> pid,
178 ROOT::VecOps::RVec<float> values, int algoIndex);
179ROOT::VecOps::RVec<edm4hep::MCParticleData>
180getBhadron(ROOT::VecOps::RVec<edm4hep::MCParticleData> truth_particles,
181 ROOT::VecOps::RVec<podio::ObjectID> parent_ids);
182ROOT::VecOps::RVec<edm4hep::MCParticleData>
183getChadron(ROOT::VecOps::RVec<edm4hep::MCParticleData> truth_particles,
184 ROOT::VecOps::RVec<podio::ObjectID> parent_ids);
185ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData>
186get_tagged_jets(ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> jets,
187 ROOT::VecOps::RVec<edm4hep::ParticleIDData> jet_tags,
188 ROOT::VecOps::RVec<podio::ObjectID> jet_tags_indices,
189 ROOT::VecOps::RVec<float> jet_tags_values, int algoIndex);
190ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData>
191get_untagged_jets(ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> jets,
192 ROOT::VecOps::RVec<int> index,
193 ROOT::VecOps::RVec<edm4hep::ParticleIDData> pid,
194 ROOT::VecOps::RVec<float> values, int algoIndex);
195
196// tau jets
197ROOT::VecOps::RVec<edm4hep::MCParticleData> find_truth_matches(
198 ROOT::VecOps::RVec<edm4hep::MCParticleData> truth_parts,
199 ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> reco_particles,
200 float dR_thres);
201ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData>
202get_tau_jets(ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> jets,
203 ROOT::VecOps::RVec<int> index,
204 ROOT::VecOps::RVec<edm4hep::ParticleIDData> pid,
205 ROOT::VecOps::RVec<float> tag_values, int algoIndex);
206ROOT::VecOps::RVec<edm4hep::MCParticleData>
207getTruthTauHads(ROOT::VecOps::RVec<edm4hep::MCParticleData> truth_particles,
208 ROOT::VecOps::RVec<podio::ObjectID> daughter_ids,
209 ROOT::VecOps::RVec<podio::ObjectID> parent_ids, TString type);
210ROOT::VecOps::RVec<edm4hep::MCParticleData>
211getTruthTau(ROOT::VecOps::RVec<edm4hep::MCParticleData> truth_particles,
212 ROOT::VecOps::RVec<podio::ObjectID> daughter_ids,
213 ROOT::VecOps::RVec<podio::ObjectID> parent_ids, TString type);
214ROOT::VecOps::RVec<edm4hep::MCParticleData>
215getTruthTauLeps(ROOT::VecOps::RVec<edm4hep::MCParticleData> truth_particles,
216 ROOT::VecOps::RVec<podio::ObjectID> daughter_ids,
217 ROOT::VecOps::RVec<podio::ObjectID> parent_ids, TString type);
218// isolation: select only those particles of sel_parts that are isolated by the
219// given dR from the check_parts
220ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData>
221sel_isolated(ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> sel_parts,
222 ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> check_parts,
223 float dR_thres = 0.4);
224
225// merge two four vectors into one to create a new particle (follow vector
226// structure to be able to use with other RecoParticle fcts easily like get_pt
227// etc.)
228ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> merge_parts_TLVs(
229 ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> particle_1,
230 ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> particle_2);
231ROOT::VecOps::RVec<edm4hep::MCParticleData>
232merge_parts_TLVs(ROOT::VecOps::RVec<edm4hep::MCParticleData> particle_1,
233 ROOT::VecOps::RVec<edm4hep::MCParticleData> particle_2);
234
235// reco level quantities
236// transverse masses:
237ROOT::VecOps::RVec<float>
238get_mT(ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> particle_1,
239 ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> particle_2);
240ROOT::VecOps::RVec<float>
241get_mT_new(ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> particle_1,
242 ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> particle_2);
243ROOT::VecOps::RVec<float>
244get_m_pseudo(ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> Z_ll_pair,
245 ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> MET_obj);
246ROOT::VecOps::RVec<float>
247get_mT_pseudo(ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> Z_ll_pair,
248 ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> MET_obj);
249TLorentzVector getTLV_MET(edm4hep::ReconstructedParticleData met_object);
250
251// stransverse mass mT2 :
252// https://www.hep.phy.cam.ac.uk/~lester/mt2/#Alternatives
253// ROOT::VecOps::RVec<float>
254// get_mT2(ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> particle_1,
255// ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> particle_2,
256// ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> MET_obj);
257// ROOT::VecOps::RVec<float>
258// get_mT2_125(ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData>
259// particle_1, ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData>
260// particle_2, ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> MET_obj);
261
262// angular distances:function can return dR, dEta, dPhi for any two fully
263// reconstructed particles that have a full 4 vector
264ROOT::VecOps::RVec<float> get_angularDist(
265 ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> particle_1,
266 ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> particle_2,
267 TString type = "dR");
268ROOT::VecOps::RVec<float> get_angularDist_MET(
269 ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> particle_1,
270 ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> MET_obj,
271 TString type = "dR");
272
273ROOT::VecOps::RVec<float>
274get_angularDist_pair(ROOT::VecOps::RVec<RecoParticlePair> pairs,
275 TString type = "dR");
276ROOT::VecOps::RVec<float>
277get_angularDist_pair(ROOT::VecOps::RVec<MCParticlePair> pairs,
278 TString type = "dR");
279
280// HT variables
281ROOT::VecOps::RVec<float>
282get_HT2(ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> particle_1,
283 ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> particle_2);
284ROOT::VecOps::RVec<float>
285get_HT_wInv(ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> MET,
286 ROOT::VecOps::RVec<RecoParticlePair> ll_pair,
287 ROOT::VecOps::RVec<RecoParticlePair> bb_pair);
288ROOT::VecOps::RVec<float>
289get_HT_true(ROOT::VecOps::RVec<RecoParticlePair> ll_pair,
290 ROOT::VecOps::RVec<RecoParticlePair> bb_pair);
291ROOT::VecOps::RVec<float> get_HT2_ratio(ROOT::VecOps::RVec<float> HT2,
292 ROOT::VecOps::RVec<float> HT_wInv);
293ROOT::VecOps::RVec<float>
294get_MET_significance(ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> MET,
295 ROOT::VecOps::RVec<float> HT_true, bool doSqrt = true);
296
297// reco mass of lepton+b-jet, to try suppress ttbar processes
298ROOT::VecOps::RVec<RecoParticlePair>
299make_lb_pairing(ROOT::VecOps::RVec<RecoParticlePair> lepton_pair,
300 ROOT::VecOps::RVec<RecoParticlePair> bb_pair);
301ROOT::VecOps::RVec<float>
302get_mlb_reco(ROOT::VecOps::RVec<RecoParticlePair> lb_pairs);
303ROOT::VecOps::RVec<float>
304get_mlb_MET_reco(ROOT::VecOps::RVec<RecoParticlePair> lb_pairs,
305 ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> MET);
306
307// for separating bbWW and bbtautau?
308ROOT::VecOps::RVec<float>
309get_pzeta_vis(ROOT::VecOps::RVec<RecoParticlePair> lepton_pair);
310ROOT::VecOps::RVec<float>
311get_pzeta_miss(ROOT::VecOps::RVec<RecoParticlePair> lepton_pair,
312 ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> MET);
313ROOT::VecOps::RVec<float> get_dzeta(ROOT::VecOps::RVec<float> pzeta_miss,
314 ROOT::VecOps::RVec<float> pzeta_vis,
315 float factor = 0.85);
316
317// combine particles:
318ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData>
319build_HZZ(ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> Z_ll_pair,
320 ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> MET_obj);
321
322// retrieve children from a given truth particle
323ROOT::VecOps::RVec<edm4hep::MCParticleData> get_immediate_children(
324 edm4hep::MCParticleData truth_part,
325 ROOT::VecOps::RVec<edm4hep::MCParticleData> truth_particles,
326 ROOT::VecOps::RVec<podio::ObjectID> daughter_ids);
327
328// select the truth Higgs, depending on which particles it decays to:
329ROOT::VecOps::RVec<edm4hep::MCParticleData>
330get_truth_Higgs(ROOT::VecOps::RVec<edm4hep::MCParticleData> truth_particles,
331 ROOT::VecOps::RVec<podio::ObjectID> daughter_ids,
332 TString decay = "ZZ");
333ROOT::VecOps::RVec<edm4hep::MCParticleData>
334get_truth_Z_decay(ROOT::VecOps::RVec<edm4hep::MCParticleData> truth_particles,
335 ROOT::VecOps::RVec<podio::ObjectID> daughter_ids,
336 TString decay = "ZZ");
337
338// Filters and specifics for the bbtautau analysis:
339bool isFromHadron(edm4hep::MCParticleData truth_part,
340 ROOT::VecOps::RVec<podio::ObjectID> parent_ids,
341 ROOT::VecOps::RVec<edm4hep::MCParticleData> truth_particles);
342bool hasHiggsParent(
343 edm4hep::MCParticleData truth_part,
344 ROOT::VecOps::RVec<podio::ObjectID> parent_ids,
345 ROOT::VecOps::RVec<edm4hep::MCParticleData> truth_particles);
347 edm4hep::MCParticleData truth_part,
348 ROOT::VecOps::RVec<podio::ObjectID> parent_ids,
349 ROOT::VecOps::RVec<edm4hep::MCParticleData> truth_particles);
351 edm4hep::MCParticleData truth_part,
352 ROOT::VecOps::RVec<podio::ObjectID> parent_ids,
353 ROOT::VecOps::RVec<edm4hep::MCParticleData> truth_particles);
355 edm4hep::MCParticleData truth_part,
356 ROOT::VecOps::RVec<podio::ObjectID> parent_ids,
357 ROOT::VecOps::RVec<edm4hep::MCParticleData> truth_particles);
359 edm4hep::MCParticleData truth_part,
360 ROOT::VecOps::RVec<podio::ObjectID> parent_ids,
361 ROOT::VecOps::RVec<edm4hep::MCParticleData> truth_particles);
362ROOT::VecOps::RVec<edm4hep::MCParticleData>
363getLepsFromTau(ROOT::VecOps::RVec<edm4hep::MCParticleData> truth_particles,
364 ROOT::VecOps::RVec<podio::ObjectID> parent_ids);
365ROOT::VecOps::RVec<edm4hep::MCParticleData>
366getLepsFromW(ROOT::VecOps::RVec<edm4hep::MCParticleData> truth_particles,
367 ROOT::VecOps::RVec<podio::ObjectID> parent_ids);
368ROOT::VecOps::RVec<edm4hep::MCParticleData>
369getLepsFromZ(ROOT::VecOps::RVec<edm4hep::MCParticleData> truth_particles,
370 ROOT::VecOps::RVec<podio::ObjectID> parent_ids);
371ROOT::VecOps::RVec<edm4hep::MCParticleData>
372getPhotonsFromH(ROOT::VecOps::RVec<edm4hep::MCParticleData> truth_particles,
373 ROOT::VecOps::RVec<podio::ObjectID> parent_ids);
374ROOT::VecOps::RVec<int> getTruthLepLepFlavour(
375 ROOT::VecOps::RVec<edm4hep::MCParticleData> leps_from_tau);
376ROOT::VecOps::RVec<edm4hep::MCParticleData>
377getTruthEle(ROOT::VecOps::RVec<edm4hep::MCParticleData> leps_from_tau);
378ROOT::VecOps::RVec<edm4hep::MCParticleData>
379getTruthMu(ROOT::VecOps::RVec<edm4hep::MCParticleData> leps_from_tau);
380
381// tautau specific masses/variables
382ROOT::VecOps::RVec<float> get_x_fraction(
383 ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> visible_particle,
384 ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> MET);
385ROOT::VecOps::RVec<float> get_x_fraction_truth(
386 ROOT::VecOps::RVec<edm4hep::MCParticleData> visible_particle,
387 ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> MET);
388ROOT::VecOps::RVec<float> get_mtautau_col(
389 ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> ll_pair_merged,
390 ROOT::VecOps::RVec<float> x1, ROOT::VecOps::RVec<float> x2);
391ROOT::VecOps::RVec<float> get_mbbtautau_col(
392 ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> bb_pair_merged,
393 ROOT::VecOps::RVec<float> mtautau_col);
394
395// truth matching:
396// old function that can match only 1 particle -> TO REMOVE?
397ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> find_reco_matched(
398 ROOT::VecOps::RVec<edm4hep::MCParticleData> truth_parts_to_match,
399 ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> reco_parts_all,
400 float dR_thres = 0.1);
401
402// isolation criterion, delphes style. flag exclude_light_leps does not check
403// for isolation of test_parts vs electrons or muons (using the mass) as seems
404// to be done in FCC-hh delphes sim
405ROOT::VecOps::RVec<float> get_IP_delphes(
406 ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> test_parts,
407 ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> reco_parts_all,
408 float dR_min = 0.3, float pT_min = 0.5, bool exclude_light_leps = true);
409
410ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData>
411filter_lightLeps(ROOT::VecOps::RVec<int> recind, ROOT::VecOps::RVec<int> mcind,
412 ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> reco,
413 ROOT::VecOps::RVec<edm4hep::MCParticleData> mc);
414
415// truth MET
416ROOT::VecOps::RVec<edm4hep::MCParticleData>
417getNusFromW(ROOT::VecOps::RVec<edm4hep::MCParticleData> truth_particles,
418 ROOT::VecOps::RVec<podio::ObjectID> parent_ids);
419ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData>
420getTruthMETObj(ROOT::VecOps::RVec<edm4hep::MCParticleData> truth_particles,
421 ROOT::VecOps::RVec<podio::ObjectID> parent_ids,
422 TString type = "hww_only");
423
424// for checking signal efficiencies in delphes card validation
425ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> find_reco_matches(
426 ROOT::VecOps::RVec<edm4hep::MCParticleData> truth_parts,
427 ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> reco_particles,
428 float dR_thres = 0.1);
429ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData>
431 ROOT::VecOps::RVec<edm4hep::MCParticleData> truth_parts,
432 ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> reco_particles,
433 float dR_thres = 0.1);
434ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData>
436 ROOT::VecOps::RVec<edm4hep::MCParticleData> truth_parts,
437 ROOT::VecOps::RVec<edm4hep::MCParticleData> truth_parts_exc,
438 ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> reco_particles,
439 float dR_thres = 0.1);
440ROOT::VecOps::RVec<int> find_reco_match_indices(
441 ROOT::VecOps::RVec<edm4hep::MCParticleData> truth_parts,
442 ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> reco_particles,
443 float dR_thres = 0.1);
444ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData>
446 edm4hep::MCParticleData truth_part_to_match,
447 ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> check_reco_parts,
448 float dR_thres = 0.1);
449ROOT::VecOps::RVec<edm4hep::MCParticleData> find_mc_matched_particle(
450 edm4hep::ReconstructedParticleData reco_part_to_match,
451 ROOT::VecOps::RVec<edm4hep::MCParticleData> check_mc_parts,
452 float dR_thres = 0.1);
453ROOT::VecOps::RVec<int> find_reco_matched_index(
454 edm4hep::MCParticleData truth_part_to_match,
455 ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> check_reco_parts,
456 float dR_thres = 0.1);
457ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData>
459 ROOT::VecOps::RVec<edm4hep::MCParticleData> truth_leps_to_match,
460 ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> reco_electrons,
461 ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> reco_muons,
462 float dR_thres = 0.1);
463ROOT::VecOps::RVec<int> find_truth_to_reco_matches_indices(
464 ROOT::VecOps::RVec<edm4hep::MCParticleData> truth_leps_to_match,
465 ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData> reco_parts,
466 int pdg_ID, float dR_thres = 0.1);
467
468// retrieving isoVar from delphes:
469// ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData>
470// get_isoVar(ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData>
471// reco_parts_to_check, ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData>
472// all_reco_parts);
473
474// template function for getting vector via indices - needed to read e.g.
475// UserDataCollections
476template <typename T>
477ROOT::VecOps::RVec<T> get(const ROOT::VecOps::RVec<int> &index,
478 const ROOT::VecOps::RVec<T> &in) {
479 ROOT::VecOps::RVec<T> result;
480 result.reserve(index.size());
481 for (size_t i = 0; i < index.size(); ++i) {
482 if (index[i] > -1)
483 result.push_back(in[index[i]]);
484 }
485 return result;
486}
487
488} // namespace AnalysisFCChh
489
490#endif
Definition Analysis_FCChh.h:18
bool iss(edm4hep::MCParticleData truth_part)
Definition Analysis_FCChh.cc:161
ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > get_untagged_jets(ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > jets, ROOT::VecOps::RVec< int > index, ROOT::VecOps::RVec< edm4hep::ParticleIDData > pid, ROOT::VecOps::RVec< float > values, int algoIndex)
Definition Analysis_FCChh.cc:1004
ROOT::VecOps::RVec< RecoParticlePair > getPair_sublead(ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > particles_in)
Definition Analysis_FCChh.cc:1392
bool isW(edm4hep::MCParticleData truth_part)
Definition Analysis_FCChh.cc:81
ROOT::VecOps::RVec< edm4hep::MCParticleData > getBhadron(ROOT::VecOps::RVec< edm4hep::MCParticleData > truth_particles, ROOT::VecOps::RVec< podio::ObjectID > parent_ids)
Definition Analysis_FCChh.cc:876
ROOT::VecOps::RVec< edm4hep::MCParticleData > getTruthEle(ROOT::VecOps::RVec< edm4hep::MCParticleData > leps_from_tau)
Definition Analysis_FCChh.cc:2423
bool isH(edm4hep::MCParticleData truth_part)
Definition Analysis_FCChh.cc:101
ROOT::VecOps::RVec< float > get_HT2(ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > particle_1, ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > particle_2)
Definition Analysis_FCChh.cc:1641
bool isNeutrino(edm4hep::MCParticleData truth_part)
Definition Analysis_FCChh.cc:51
ROOT::VecOps::RVec< int > find_reco_match_indices(ROOT::VecOps::RVec< edm4hep::MCParticleData > truth_parts, ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > reco_particles, float dR_thres=0.1)
Definition Analysis_FCChh.cc:3391
ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > find_reco_matches_exclusive(ROOT::VecOps::RVec< edm4hep::MCParticleData > truth_parts, ROOT::VecOps::RVec< edm4hep::MCParticleData > truth_parts_exc, ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > reco_particles, float dR_thres=0.1)
Definition Analysis_FCChh.cc:3306
ROOT::VecOps::RVec< float > get_mlb_MET_reco(ROOT::VecOps::RVec< RecoParticlePair > lb_pairs, ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > MET)
Definition Analysis_FCChh.cc:1909
ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > find_reco_matched_particle(edm4hep::MCParticleData truth_part_to_match, ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > check_reco_parts, float dR_thres=0.1)
Definition Analysis_FCChh.cc:3123
ROOT::VecOps::RVec< edm4hep::MCParticleData > getNusFromW(ROOT::VecOps::RVec< edm4hep::MCParticleData > truth_particles, ROOT::VecOps::RVec< podio::ObjectID > parent_ids)
Definition Analysis_FCChh.cc:2983
ROOT::VecOps::RVec< int > find_truth_to_reco_matches_indices(ROOT::VecOps::RVec< edm4hep::MCParticleData > truth_leps_to_match, ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > reco_parts, int pdg_ID, float dR_thres=0.1)
Definition Analysis_FCChh.cc:3517
ROOT::VecOps::RVec< edm4hep::MCParticleData > getLepsFromTau(ROOT::VecOps::RVec< edm4hep::MCParticleData > truth_particles, ROOT::VecOps::RVec< podio::ObjectID > parent_ids)
Definition Analysis_FCChh.cc:2458
ROOT::VecOps::RVec< RecoParticlePair > getLeadingPair(ROOT::VecOps::RVec< RecoParticlePair > electron_pairs, ROOT::VecOps::RVec< RecoParticlePair > muon_pairs)
Definition Analysis_FCChh.cc:1209
int checkZDecay(edm4hep::MCParticleData truth_Z, ROOT::VecOps::RVec< podio::ObjectID > daughter_ids, ROOT::VecOps::RVec< edm4hep::MCParticleData > truth_particles)
Definition Analysis_FCChh.cc:369
ROOT::VecOps::RVec< RecoParticlePair > getOSPairs(ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > leptons_in)
Definition Analysis_FCChh.cc:1073
ROOT::VecOps::RVec< edm4hep::MCParticleData > getLepsFromW(ROOT::VecOps::RVec< edm4hep::MCParticleData > truth_particles, ROOT::VecOps::RVec< podio::ObjectID > parent_ids)
Definition Analysis_FCChh.cc:2680
bool isQuark(edm4hep::MCParticleData truth_part)
Definition Analysis_FCChh.cc:61
ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > merge_parts_TLVs(ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > particle_1, ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > particle_2)
Definition Analysis_FCChh.cc:1760
ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > merge_pairs(ROOT::VecOps::RVec< RecoParticlePair > pairs)
Definition Analysis_FCChh.cc:777
ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > find_reco_matches_no_remove(ROOT::VecOps::RVec< edm4hep::MCParticleData > truth_parts, ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > reco_particles, float dR_thres=0.1)
Definition Analysis_FCChh.cc:3274
ROOT::VecOps::RVec< float > get_HT2_ratio(ROOT::VecOps::RVec< float > HT2, ROOT::VecOps::RVec< float > HT_wInv)
Definition Analysis_FCChh.cc:1720
ROOT::VecOps::RVec< RecoParticlePair > getBestOSPair(ROOT::VecOps::RVec< RecoParticlePair > electron_pairs, ROOT::VecOps::RVec< RecoParticlePair > muon_pairs)
Definition Analysis_FCChh.cc:1154
ROOT::VecOps::RVec< edm4hep::MCParticleData > getTruthTau(ROOT::VecOps::RVec< edm4hep::MCParticleData > truth_particles, ROOT::VecOps::RVec< podio::ObjectID > daughter_ids, ROOT::VecOps::RVec< podio::ObjectID > parent_ids, TString type)
Definition Analysis_FCChh.cc:2482
ROOT::VecOps::RVec< edm4hep::MCParticleData > getChadron(ROOT::VecOps::RVec< edm4hep::MCParticleData > truth_particles, ROOT::VecOps::RVec< podio::ObjectID > parent_ids)
Definition Analysis_FCChh.cc:861
ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > find_reco_matches(ROOT::VecOps::RVec< edm4hep::MCParticleData > truth_parts, ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > reco_particles, float dR_thres=0.1)
Definition Analysis_FCChh.cc:3230
bool isTau(edm4hep::MCParticleData truth_part)
Definition Analysis_FCChh.cc:91
ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > get_tau_jets(ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > jets, ROOT::VecOps::RVec< int > index, ROOT::VecOps::RVec< edm4hep::ParticleIDData > pid, ROOT::VecOps::RVec< float > tag_values, int algoIndex)
Definition Analysis_FCChh.cc:971
ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > filter_lightLeps(ROOT::VecOps::RVec< int > recind, ROOT::VecOps::RVec< int > mcind, ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > reco, ROOT::VecOps::RVec< edm4hep::MCParticleData > mc)
Definition Analysis_FCChh.cc:2955
ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > find_reco_matched(ROOT::VecOps::RVec< edm4hep::MCParticleData > truth_parts_to_match, ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > reco_parts_all, float dR_thres=0.1)
Definition Analysis_FCChh.cc:2864
ROOT::VecOps::RVec< float > get_mT_pseudo(ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > Z_ll_pair, ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > MET_obj)
Definition Analysis_FCChh.cc:1535
ROOT::VecOps::RVec< float > get_IP_delphes(ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > test_parts, ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > reco_parts_all, float dR_min=0.3, float pT_min=0.5, bool exclude_light_leps=true)
Definition Analysis_FCChh.cc:2905
ROOT::VecOps::RVec< float > get_mtautau_col(ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > ll_pair_merged, ROOT::VecOps::RVec< float > x1, ROOT::VecOps::RVec< float > x2)
Definition Analysis_FCChh.cc:2814
ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > sel_isolated(ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > sel_parts, ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > check_parts, float dR_thres=0.4)
Definition Analysis_FCChh.cc:1037
bool isLightLep(edm4hep::MCParticleData truth_part)
Definition Analysis_FCChh.cc:39
TLorentzVector getTLV_MET(edm4hep::ReconstructedParticleData met_object)
Definition Analysis_FCChh.cc:754
ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > get_tagged_jets(ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > jets, ROOT::VecOps::RVec< edm4hep::ParticleIDData > jet_tags, ROOT::VecOps::RVec< podio::ObjectID > jet_tags_indices, ROOT::VecOps::RVec< float > jet_tags_values, int algoIndex)
Definition Analysis_FCChh.cc:912
ROOT::VecOps::RVec< int > getTruthLepLepFlavour(ROOT::VecOps::RVec< edm4hep::MCParticleData > leps_from_tau)
Definition Analysis_FCChh.cc:2377
int checkWDecay(edm4hep::MCParticleData truth_W, ROOT::VecOps::RVec< podio::ObjectID > daughter_ids, ROOT::VecOps::RVec< edm4hep::MCParticleData > truth_particles)
Definition Analysis_FCChh.cc:409
ROOT::VecOps::RVec< T > get(const ROOT::VecOps::RVec< int > &index, const ROOT::VecOps::RVec< T > &in)
Definition Analysis_FCChh.h:477
ROOT::VecOps::RVec< float > get_MET_significance(ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > MET, ROOT::VecOps::RVec< float > HT_true, bool doSqrt=true)
Definition Analysis_FCChh.cc:1736
ROOT::VecOps::RVec< float > get_mT_new(ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > particle_1, ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > particle_2)
Definition Analysis_FCChh.cc:1466
bool isHadron(edm4hep::MCParticleData truth_part)
Definition Analysis_FCChh.cc:121
ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > getTruthMETObj(ROOT::VecOps::RVec< edm4hep::MCParticleData > truth_particles, ROOT::VecOps::RVec< podio::ObjectID > parent_ids, TString type="hww_only")
Definition Analysis_FCChh.cc:3009
ROOT::VecOps::RVec< float > get_x_fraction(ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > visible_particle, ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > MET)
Definition Analysis_FCChh.cc:2753
ROOT::VecOps::RVec< edm4hep::MCParticleData > getTruthMu(ROOT::VecOps::RVec< edm4hep::MCParticleData > leps_from_tau)
Definition Analysis_FCChh.cc:2440
bool ZZllvvFilter(ROOT::VecOps::RVec< edm4hep::MCParticleData > truth_particles, ROOT::VecOps::RVec< podio::ObjectID > daughter_ids)
Definition Analysis_FCChh.cc:652
bool isZ(edm4hep::MCParticleData truth_part)
Definition Analysis_FCChh.cc:71
ROOT::VecOps::RVec< RecoParticlePair > make_lb_pairing(ROOT::VecOps::RVec< RecoParticlePair > lepton_pair, ROOT::VecOps::RVec< RecoParticlePair > bb_pair)
Definition Analysis_FCChh.cc:1828
ROOT::VecOps::RVec< edm4hep::MCParticleData > get_truth_Higgs(ROOT::VecOps::RVec< edm4hep::MCParticleData > truth_particles, ROOT::VecOps::RVec< podio::ObjectID > daughter_ids, TString decay="ZZ")
Definition Analysis_FCChh.cc:2271
bool isStablePhoton(edm4hep::MCParticleData truth_part)
Definition Analysis_FCChh.cc:9
ROOT::VecOps::RVec< float > get_pzeta_vis(ROOT::VecOps::RVec< RecoParticlePair > lepton_pair)
Definition Analysis_FCChh.cc:1936
bool isChildOfWFromHiggs(edm4hep::MCParticleData truth_part, ROOT::VecOps::RVec< podio::ObjectID > parent_ids, ROOT::VecOps::RVec< edm4hep::MCParticleData > truth_particles)
Definition Analysis_FCChh.cc:337
ROOT::VecOps::RVec< float > get_pzeta_miss(ROOT::VecOps::RVec< RecoParticlePair > lepton_pair, ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > MET)
Definition Analysis_FCChh.cc:1980
ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > get_first_from_pair(ROOT::VecOps::RVec< RecoParticlePair > pairs)
Definition Analysis_FCChh.cc:812
TLorentzVector getTLV_MC(edm4hep::MCParticleData MC_part)
Definition Analysis_FCChh.cc:769
bool isLep(edm4hep::MCParticleData truth_part)
Definition Analysis_FCChh.cc:29
TLorentzVector getTLV_reco(edm4hep::ReconstructedParticleData reco_part)
TESTER: return the transverse momenta of the input ReconstructedParticles.
Definition Analysis_FCChh.cc:745
ROOT::VecOps::RVec< int > find_reco_matched_index(edm4hep::MCParticleData truth_part_to_match, ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > check_reco_parts, float dR_thres=0.1)
Definition Analysis_FCChh.cc:3172
ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > SortParticleCollection(ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > particles_in)
Definition Analysis_FCChh.cc:1305
ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > find_true_signal_leps_reco_matches(ROOT::VecOps::RVec< edm4hep::MCParticleData > truth_leps_to_match, ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > reco_electrons, ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > reco_muons, float dR_thres=0.1)
Definition Analysis_FCChh.cc:3423
ROOT::VecOps::RVec< edm4hep::MCParticleData > find_truth_matches(ROOT::VecOps::RVec< edm4hep::MCParticleData > truth_parts, ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > reco_particles, float dR_thres)
Definition Analysis_FCChh.cc:3358
bool isFromHiggsDirect(edm4hep::MCParticleData truth_part, ROOT::VecOps::RVec< podio::ObjectID > parent_ids, ROOT::VecOps::RVec< edm4hep::MCParticleData > truth_particles)
Definition Analysis_FCChh.cc:241
ROOT::VecOps::RVec< RecoParticlePair > getDFOSPairs(ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > electrons_in, ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > muons_in)
Definition Analysis_FCChh.cc:1256
ROOT::VecOps::RVec< float > get_m_pseudo(ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > Z_ll_pair, ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > MET_obj)
Definition Analysis_FCChh.cc:1511
bool isMuon(edm4hep::MCParticleData truth_part)
Definition Analysis_FCChh.cc:171
bool hasHiggsParent(edm4hep::MCParticleData truth_part, ROOT::VecOps::RVec< podio::ObjectID > parent_ids, ROOT::VecOps::RVec< edm4hep::MCParticleData > truth_particles)
Definition Analysis_FCChh.cc:211
ROOT::VecOps::RVec< edm4hep::MCParticleData > getTruthTauHads(ROOT::VecOps::RVec< edm4hep::MCParticleData > truth_particles, ROOT::VecOps::RVec< podio::ObjectID > daughter_ids, ROOT::VecOps::RVec< podio::ObjectID > parent_ids, TString type)
Definition Analysis_FCChh.cc:2603
int findHiggsDecayChannel(ROOT::VecOps::RVec< edm4hep::MCParticleData > truth_particles, ROOT::VecOps::RVec< podio::ObjectID > daughter_ids)
Definition Analysis_FCChh.cc:548
ROOT::VecOps::RVec< float > get_angularDist(ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > particle_1, ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > particle_2, TString type="dR")
Definition Analysis_FCChh.cc:2079
ROOT::VecOps::RVec< float > get_HT_true(ROOT::VecOps::RVec< RecoParticlePair > ll_pair, ROOT::VecOps::RVec< RecoParticlePair > bb_pair)
Definition Analysis_FCChh.cc:1694
ROOT::VecOps::RVec< edm4hep::MCParticleData > get_truth_Z_decay(ROOT::VecOps::RVec< edm4hep::MCParticleData > truth_particles, ROOT::VecOps::RVec< podio::ObjectID > daughter_ids, TString decay="ZZ")
Definition Analysis_FCChh.cc:2333
ROOT::VecOps::RVec< edm4hep::MCParticleData > getPhotonsFromH(ROOT::VecOps::RVec< edm4hep::MCParticleData > truth_particles, ROOT::VecOps::RVec< podio::ObjectID > parent_ids)
Definition Analysis_FCChh.cc:2730
ROOT::VecOps::RVec< float > get_dzeta(ROOT::VecOps::RVec< float > pzeta_miss, ROOT::VecOps::RVec< float > pzeta_vis, float factor=0.85)
Definition Analysis_FCChh.cc:2026
ROOT::VecOps::RVec< float > get_x_fraction_truth(ROOT::VecOps::RVec< edm4hep::MCParticleData > visible_particle, ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > MET)
Definition Analysis_FCChh.cc:2784
bool isc(edm4hep::MCParticleData truth_part)
Definition Analysis_FCChh.cc:151
int get_n_pairs(ROOT::VecOps::RVec< RecoParticlePair > pairs)
Definition Analysis_FCChh.cc:840
bool isGluon(edm4hep::MCParticleData truth_part)
Definition Analysis_FCChh.cc:141
ROOT::VecOps::RVec< RecoParticlePair > get_first_pair(ROOT::VecOps::RVec< RecoParticlePair > pairs)
Definition Analysis_FCChh.cc:799
ROOT::VecOps::RVec< float > get_angularDist_MET(ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > particle_1, ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > MET_obj, TString type="dR")
Definition Analysis_FCChh.cc:2121
ROOT::VecOps::RVec< float > get_mbbtautau_col(ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > bb_pair_merged, ROOT::VecOps::RVec< float > mtautau_col)
Definition Analysis_FCChh.cc:2842
bool isChildOfTauFromHiggs(edm4hep::MCParticleData truth_part, ROOT::VecOps::RVec< podio::ObjectID > parent_ids, ROOT::VecOps::RVec< edm4hep::MCParticleData > truth_particles)
Definition Analysis_FCChh.cc:271
ROOT::VecOps::RVec< float > get_mT(ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > particle_1, ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > particle_2)
Definition Analysis_FCChh.cc:1422
ROOT::VecOps::RVec< float > get_mlb_reco(ROOT::VecOps::RVec< RecoParticlePair > lb_pairs)
Definition Analysis_FCChh.cc:1888
bool isFromHadron(edm4hep::MCParticleData truth_part, ROOT::VecOps::RVec< podio::ObjectID > parent_ids, ROOT::VecOps::RVec< edm4hep::MCParticleData > truth_particles)
Definition Analysis_FCChh.cc:183
ROOT::VecOps::RVec< float > get_HT_wInv(ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > MET, ROOT::VecOps::RVec< RecoParticlePair > ll_pair, ROOT::VecOps::RVec< RecoParticlePair > bb_pair)
Definition Analysis_FCChh.cc:1663
ROOT::VecOps::RVec< float > get_angularDist_pair(ROOT::VecOps::RVec< RecoParticlePair > pairs, TString type="dR")
Definition Analysis_FCChh.cc:2164
bool isChildOfZFromHiggs(edm4hep::MCParticleData truth_part, ROOT::VecOps::RVec< podio::ObjectID > parent_ids, ROOT::VecOps::RVec< edm4hep::MCParticleData > truth_particles)
Definition Analysis_FCChh.cc:304
ROOT::VecOps::RVec< RecoParticlePair > getPairs(ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > particles_in)
Definition Analysis_FCChh.cc:1320
ROOT::VecOps::RVec< bool > getJet_tag(ROOT::VecOps::RVec< int > index, ROOT::VecOps::RVec< edm4hep::ParticleIDData > pid, ROOT::VecOps::RVec< float > values, int algoIndex)
Definition Analysis_FCChh.cc:847
ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > build_HZZ(ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > Z_ll_pair, ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > MET_obj)
Definition Analysis_FCChh.cc:2045
ROOT::VecOps::RVec< edm4hep::MCParticleData > get_immediate_children(edm4hep::MCParticleData truth_part, ROOT::VecOps::RVec< edm4hep::MCParticleData > truth_particles, ROOT::VecOps::RVec< podio::ObjectID > daughter_ids)
Definition Analysis_FCChh.cc:2246
bool isTop(edm4hep::MCParticleData truth_part)
Definition Analysis_FCChh.cc:131
int findTopDecayChannel(ROOT::VecOps::RVec< edm4hep::MCParticleData > truth_particles, ROOT::VecOps::RVec< podio::ObjectID > daughter_ids)
Definition Analysis_FCChh.cc:475
bool isPhoton(edm4hep::MCParticleData truth_part)
Definition Analysis_FCChh.cc:19
bool WWlvlvFilter(ROOT::VecOps::RVec< edm4hep::MCParticleData > truth_particles, ROOT::VecOps::RVec< podio::ObjectID > daughter_ids, ROOT::VecOps::RVec< podio::ObjectID > parent_ids)
Definition Analysis_FCChh.cc:688
ROOT::VecOps::RVec< edm4hep::MCParticleData > getTruthZll(ROOT::VecOps::RVec< edm4hep::MCParticleData > truth_particles, ROOT::VecOps::RVec< podio::ObjectID > daughter_ids)
Definition Analysis_FCChh.cc:724
ROOT::VecOps::RVec< edm4hep::MCParticleData > getTruthTauLeps(ROOT::VecOps::RVec< edm4hep::MCParticleData > truth_particles, ROOT::VecOps::RVec< podio::ObjectID > daughter_ids, ROOT::VecOps::RVec< podio::ObjectID > parent_ids, TString type)
Definition Analysis_FCChh.cc:2526
ROOT::VecOps::RVec< edm4hep::MCParticleData > getLepsFromZ(ROOT::VecOps::RVec< edm4hep::MCParticleData > truth_particles, ROOT::VecOps::RVec< podio::ObjectID > parent_ids)
Definition Analysis_FCChh.cc:2705
ROOT::VecOps::RVec< edm4hep::ReconstructedParticleData > get_second_from_pair(ROOT::VecOps::RVec< RecoParticlePair > pairs)
Definition Analysis_FCChh.cc:826
ROOT::VecOps::RVec< edm4hep::MCParticleData > find_mc_matched_particle(edm4hep::ReconstructedParticleData reco_part_to_match, ROOT::VecOps::RVec< edm4hep::MCParticleData > check_mc_parts, float dR_thres=0.1)
Definition Analysis_FCChh.cc:3072
bool isb(edm4hep::MCParticleData truth_part)
Definition Analysis_FCChh.cc:111
Definition Analysis_FCChh.h:58
edm4hep::MCParticleData particle_1
Definition Analysis_FCChh.h:59
void sort_by_pT()
Definition Analysis_FCChh.h:66
edm4hep::MCParticleData particle_2
Definition Analysis_FCChh.h:60
TLorentzVector merged_TLV()
Definition Analysis_FCChh.h:61
Definition Analysis_FCChh.h:30
void sort_by_pT()
Definition Analysis_FCChh.h:38
edm4hep::ReconstructedParticleData particle_2
Definition Analysis_FCChh.h:32
edm4hep::ReconstructedParticleData particle_1
Definition Analysis_FCChh.h:31
TLorentzVector merged_TLV()
Definition Analysis_FCChh.h:33