32 namespace JetConstituentsUtils {
33 namespace rv = ROOT::VecOps;
38 rv::RVec<FCCAnalysesJetConstituents>
build_constituents(
const rv::RVec<edm4hep::ReconstructedParticleData>&,
39 const rv::RVec<edm4hep::ReconstructedParticleData>&);
42 const std::vector<std::vector<int>>& indices);
47 rv::RVec<FCCAnalysesJetConstituents>
get_constituents(
const rv::RVec<FCCAnalysesJetConstituents>&,
48 const rv::RVec<int>&);
52 ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData>
jets_sorting_on_nconst(
const rv::RVec<edm4hep::ReconstructedParticleData>&);
53 ROOT::VecOps::RVec<edm4hep::ReconstructedParticleData>
jets_sorting_on_energy(
const rv::RVec<edm4hep::ReconstructedParticleData>&);
56 rv::RVec<FCCAnalysesJetConstituentsData>
get_Bz(
const rv::RVec<FCCAnalysesJetConstituents>& jcs,
57 const ROOT::VecOps::RVec<edm4hep::TrackState>& tracks);
59 rv::RVec<FCCAnalysesJetConstituentsData>
get_pt(
const rv::RVec<FCCAnalysesJetConstituents>&);
60 rv::RVec<FCCAnalysesJetConstituentsData>
get_p(
const rv::RVec<FCCAnalysesJetConstituents>&);
61 rv::RVec<FCCAnalysesJetConstituentsData>
get_e(
const rv::RVec<FCCAnalysesJetConstituents>&);
62 rv::RVec<FCCAnalysesJetConstituentsData>
get_theta(
const rv::RVec<FCCAnalysesJetConstituents>&);
63 rv::RVec<FCCAnalysesJetConstituentsData>
get_phi(
const rv::RVec<FCCAnalysesJetConstituents>&);
64 rv::RVec<FCCAnalysesJetConstituentsData>
get_type(
const rv::RVec<FCCAnalysesJetConstituents>&);
65 rv::RVec<FCCAnalysesJetConstituentsData>
get_charge(
const rv::RVec<FCCAnalysesJetConstituents>&);
68 rv::RVec<FCCAnalysesJetConstituentsData>
get_d0(
const rv::RVec<FCCAnalysesJetConstituents>&,
69 const ROOT::VecOps::RVec<edm4hep::TrackState>&);
71 rv::RVec<FCCAnalysesJetConstituentsData>
get_z0(
const rv::RVec<FCCAnalysesJetConstituents>& ,
72 const ROOT::VecOps::RVec<edm4hep::TrackState>&);
74 rv::RVec<FCCAnalysesJetConstituentsData>
get_phi0(
const rv::RVec<FCCAnalysesJetConstituents>& jcs,
75 const ROOT::VecOps::RVec<edm4hep::TrackState>& tracks);
77 rv::RVec<FCCAnalysesJetConstituentsData>
get_omega(
const rv::RVec<FCCAnalysesJetConstituents>& jcs,
78 const ROOT::VecOps::RVec<edm4hep::TrackState>& tracks);
80 rv::RVec<FCCAnalysesJetConstituentsData>
get_tanLambda(
const rv::RVec<FCCAnalysesJetConstituents>& jcs,
81 const ROOT::VecOps::RVec<edm4hep::TrackState>& tracks);
84 rv::RVec<FCCAnalysesJetConstituentsData>
XPtoPar_dxy(
const rv::RVec<FCCAnalysesJetConstituents>&,
85 const ROOT::VecOps::RVec<edm4hep::TrackState>&,
86 const TLorentzVector& V,
88 rv::RVec<FCCAnalysesJetConstituentsData>
XPtoPar_dz(
const rv::RVec<FCCAnalysesJetConstituents>&,
89 const ROOT::VecOps::RVec<edm4hep::TrackState>&,
90 const TLorentzVector& V,
92 rv::RVec<FCCAnalysesJetConstituentsData>
XPtoPar_phi(
const rv::RVec<FCCAnalysesJetConstituents>&,
93 const ROOT::VecOps::RVec<edm4hep::TrackState>&,
94 const TLorentzVector& V,
96 rv::RVec<FCCAnalysesJetConstituentsData>
XPtoPar_C(
const rv::RVec<FCCAnalysesJetConstituents>&,
97 const ROOT::VecOps::RVec<edm4hep::TrackState>&,
99 rv::RVec<FCCAnalysesJetConstituentsData>
XPtoPar_ct(
const rv::RVec<FCCAnalysesJetConstituents>&,
100 const ROOT::VecOps::RVec<edm4hep::TrackState>&,
105 rv::RVec<FCCAnalysesJetConstituentsData>
get_omega_cov(
const rv::RVec<FCCAnalysesJetConstituents>&,
106 const ROOT::VecOps::RVec<edm4hep::TrackState>&);
108 rv::RVec<FCCAnalysesJetConstituentsData>
get_d0_cov(
const rv::RVec<FCCAnalysesJetConstituents>&,
109 const ROOT::VecOps::RVec<edm4hep::TrackState>& );
111 rv::RVec<FCCAnalysesJetConstituentsData>
get_z0_cov(
const rv::RVec<FCCAnalysesJetConstituents>& jcs,
112 const ROOT::VecOps::RVec<edm4hep::TrackState>& tracks);
114 rv::RVec<FCCAnalysesJetConstituentsData>
get_phi0_cov(
const rv::RVec<FCCAnalysesJetConstituents>& jcs,
115 const ROOT::VecOps::RVec<edm4hep::TrackState>& tracks);
117 rv::RVec<FCCAnalysesJetConstituentsData>
get_tanlambda_cov(
const rv::RVec<FCCAnalysesJetConstituents>& jcs,
118 const ROOT::VecOps::RVec<edm4hep::TrackState>& tracks);
120 rv::RVec<FCCAnalysesJetConstituentsData>
get_d0_z0_cov(
const rv::RVec<FCCAnalysesJetConstituents>& jcs,
121 const ROOT::VecOps::RVec<edm4hep::TrackState>& tracks);
123 rv::RVec<FCCAnalysesJetConstituentsData>
get_phi0_d0_cov(
const rv::RVec<FCCAnalysesJetConstituents>& jcs,
124 const ROOT::VecOps::RVec<edm4hep::TrackState>& tracks);
126 rv::RVec<FCCAnalysesJetConstituentsData>
get_phi0_z0_cov(
const rv::RVec<FCCAnalysesJetConstituents>& jcs,
127 const ROOT::VecOps::RVec<edm4hep::TrackState>& tracks);
129 rv::RVec<FCCAnalysesJetConstituentsData>
get_tanlambda_phi0_cov(
const rv::RVec<FCCAnalysesJetConstituents>& jcs,
130 const ROOT::VecOps::RVec<edm4hep::TrackState>& tracks);
132 rv::RVec<FCCAnalysesJetConstituentsData>
get_tanlambda_d0_cov(
const rv::RVec<FCCAnalysesJetConstituents>& jcs,
133 const ROOT::VecOps::RVec<edm4hep::TrackState>& tracks);
135 rv::RVec<FCCAnalysesJetConstituentsData>
get_tanlambda_z0_cov(
const rv::RVec<FCCAnalysesJetConstituents>& jcs,
136 const ROOT::VecOps::RVec<edm4hep::TrackState>& tracks);
138 rv::RVec<FCCAnalysesJetConstituentsData>
get_omega_tanlambda_cov(
const rv::RVec<FCCAnalysesJetConstituents>& jcs,
139 const ROOT::VecOps::RVec<edm4hep::TrackState>& tracks);
141 rv::RVec<FCCAnalysesJetConstituentsData>
get_omega_phi0_cov(
const rv::RVec<FCCAnalysesJetConstituents>& jcs,
142 const ROOT::VecOps::RVec<edm4hep::TrackState>& tracks);
144 rv::RVec<FCCAnalysesJetConstituentsData>
get_omega_d0_cov(
const rv::RVec<FCCAnalysesJetConstituents>& jcs,
145 const ROOT::VecOps::RVec<edm4hep::TrackState>& tracks);
147 rv::RVec<FCCAnalysesJetConstituentsData>
get_omega_z0_cov(
const rv::RVec<FCCAnalysesJetConstituents>& jcs,
148 const ROOT::VecOps::RVec<edm4hep::TrackState>& tracks);
165 rv::RVec<FCCAnalysesJetConstituentsData>
get_dndx(
166 const rv::RVec<FCCAnalysesJetConstituents> &jetConstituents,
168 const rv::RVec<edm4hep::TrackData> &trackColl,
169 const rv::RVec<FCCAnalysesJetConstituentsData> isJetConstChargedHad);
171 rv::RVec<FCCAnalysesJetConstituentsData>
get_Sip2dVal(
const rv::RVec<edm4hep::ReconstructedParticleData>& jets,
172 const rv::RVec<FCCAnalysesJetConstituents>& jcs,
173 const ROOT::VecOps::RVec<edm4hep::TrackState>& tracks);
175 rv::RVec<FCCAnalysesJetConstituentsData>
get_Sip2dVal_cluster(
const rv::RVec<fastjet::PseudoJet>& jets,
176 const rv::RVec<FCCAnalysesJetConstituents>& jcs,
177 const ROOT::VecOps::RVec<edm4hep::TrackState>& tracks);
180 rv::RVec<FCCAnalysesJetConstituentsData>
get_Sip2dVal_clusterV(
const rv::RVec<fastjet::PseudoJet>& jets,
181 const rv::RVec<FCCAnalysesJetConstituentsData>& D0,
182 const rv::RVec<FCCAnalysesJetConstituentsData>& phi0,
186 rv::RVec<FCCAnalysesJetConstituentsData>
get_Sip2dSig(
const rv::RVec<FCCAnalysesJetConstituentsData>& Sip2dVals,
187 const rv::RVec<FCCAnalysesJetConstituentsData>& err2_D0);
189 rv::RVec<FCCAnalysesJetConstituentsData>
get_Sip3dVal(
const rv::RVec<edm4hep::ReconstructedParticleData>& jets,
190 const rv::RVec<FCCAnalysesJetConstituents>& jcs,
191 const ROOT::VecOps::RVec<edm4hep::TrackState>& tracks);
194 rv::RVec<FCCAnalysesJetConstituentsData>
get_Sip3dVal_cluster(
const rv::RVec<fastjet::PseudoJet>& jets,
195 const rv::RVec<FCCAnalysesJetConstituents>& jcs,
196 const ROOT::VecOps::RVec<edm4hep::TrackState>& tracks);
198 rv::RVec<FCCAnalysesJetConstituentsData>
get_Sip3dVal_clusterV(
const rv::RVec<fastjet::PseudoJet>& jets,
199 const rv::RVec<FCCAnalysesJetConstituentsData>& D0,
200 const rv::RVec<FCCAnalysesJetConstituentsData>& Z0,
201 const rv::RVec<FCCAnalysesJetConstituentsData>& phi0,
204 rv::RVec<FCCAnalysesJetConstituentsData>
get_Sip3dSig(
const rv::RVec<FCCAnalysesJetConstituentsData>& Sip3dVals,
205 const rv::RVec<FCCAnalysesJetConstituentsData>& err2_D0,
206 const rv::RVec<FCCAnalysesJetConstituentsData>& err2_Z0);
208 rv::RVec<FCCAnalysesJetConstituentsData>
get_JetDistVal(
const rv::RVec<edm4hep::ReconstructedParticleData>& jets,
209 const rv::RVec<FCCAnalysesJetConstituents>& jcs,
210 const ROOT::VecOps::RVec<edm4hep::TrackState>& tracks);
213 const rv::RVec<FCCAnalysesJetConstituents>& jcs,
214 const ROOT::VecOps::RVec<edm4hep::TrackState>& tracks);
217 const rv::RVec<FCCAnalysesJetConstituents>& jcs,
218 const rv::RVec<FCCAnalysesJetConstituentsData>& D0,
219 const rv::RVec<FCCAnalysesJetConstituentsData>& Z0,
220 const rv::RVec<FCCAnalysesJetConstituentsData>& phi0,
223 rv::RVec<FCCAnalysesJetConstituentsData>
get_JetDistSig(
const rv::RVec<FCCAnalysesJetConstituentsData>& JetDistVal,
224 const rv::RVec<FCCAnalysesJetConstituentsData>& err2_D0,
225 const rv::RVec<FCCAnalysesJetConstituentsData>& err2_Z0);
227 rv::RVec<FCCAnalysesJetConstituentsData>
get_mtof(
const rv::RVec<FCCAnalysesJetConstituents>& jcs,
228 const rv::RVec<float>& track_L,
229 const rv::RVec<edm4hep::TrackData>& trackdata,
230 const rv::RVec<edm4hep::TrackerHit3DData>& trackerhits,
231 const rv::RVec<edm4hep::ClusterData>& gammadata,
232 const rv::RVec<edm4hep::ClusterData>& nhdata,
233 const rv::RVec<edm4hep::CalorimeterHitData>& calohits,
234 const TLorentzVector& V
238 rv::RVec<FCCAnalysesJetConstituentsData>
get_PIDs(
const ROOT::VecOps::RVec< int > recin,
239 const ROOT::VecOps::RVec< int > mcin,
240 const rv::RVec<edm4hep::ReconstructedParticleData>& RecPart,
241 const rv::RVec<edm4hep::MCParticleData>& Particle,
242 const rv::RVec<edm4hep::ReconstructedParticleData>& Jets);
244 rv::RVec<FCCAnalysesJetConstituentsData>
get_PIDs_cluster(
const ROOT::VecOps::RVec< int > recin,
245 const ROOT::VecOps::RVec< int > mcin,
246 const rv::RVec<edm4hep::ReconstructedParticleData>& RecPart,
247 const rv::RVec<edm4hep::MCParticleData>& Particle,
248 const std::vector<std::vector<int>>& indices);
250 rv::RVec<FCCAnalysesJetConstituentsData>
get_isMu(
const rv::RVec<FCCAnalysesJetConstituents>& jcs);
251 rv::RVec<FCCAnalysesJetConstituentsData>
get_isEl(
const rv::RVec<FCCAnalysesJetConstituents>& jcs);
252 rv::RVec<FCCAnalysesJetConstituentsData>
get_isChargedHad(
const rv::RVec<FCCAnalysesJetConstituents>& jcs);
253 rv::RVec<FCCAnalysesJetConstituentsData>
get_isGamma(
const rv::RVec<FCCAnalysesJetConstituents>& jcs);
254 rv::RVec<FCCAnalysesJetConstituentsData>
get_isNeutralHad(
const rv::RVec<FCCAnalysesJetConstituents>& jcs);
257 int count_jets(rv::RVec<FCCAnalysesJetConstituents> jets);
258 rv::RVec<int>
count_consts(rv::RVec<FCCAnalysesJetConstituents> jets);
259 rv::RVec<int>
count_type(
const rv::RVec<FCCAnalysesJetConstituentsData>& isType);
263 rv::RVec<FCCAnalysesJetConstituentsData>
get_erel(
const rv::RVec<edm4hep::ReconstructedParticleData>& jets,
264 const rv::RVec<FCCAnalysesJetConstituents>& jcs);
265 rv::RVec<FCCAnalysesJetConstituentsData>
get_erel_cluster(
const rv::RVec<fastjet::PseudoJet>& jets,
266 const rv::RVec<FCCAnalysesJetConstituents>& jcs);
268 rv::RVec<FCCAnalysesJetConstituentsData>
get_erel_log(
const rv::RVec<edm4hep::ReconstructedParticleData>& jets,
269 const rv::RVec<FCCAnalysesJetConstituents>& jcs);
270 rv::RVec<FCCAnalysesJetConstituentsData>
get_erel_log_cluster(
const rv::RVec<fastjet::PseudoJet>& jets,
271 const rv::RVec<FCCAnalysesJetConstituents>& jcs);
273 rv::RVec<FCCAnalysesJetConstituentsData>
get_thetarel(
const rv::RVec<edm4hep::ReconstructedParticleData>& jets,
274 const rv::RVec<FCCAnalysesJetConstituents>& jcs);
275 rv::RVec<FCCAnalysesJetConstituentsData>
get_thetarel_cluster(
const rv::RVec<fastjet::PseudoJet>& jets,
276 const rv::RVec<FCCAnalysesJetConstituents>& jcs);
278 rv::RVec<FCCAnalysesJetConstituentsData>
get_phirel(
const rv::RVec<edm4hep::ReconstructedParticleData>& jets,
279 const rv::RVec<FCCAnalysesJetConstituents>& jcs);
280 rv::RVec<FCCAnalysesJetConstituentsData>
get_phirel_cluster(
const rv::RVec<fastjet::PseudoJet>& jets,
281 const rv::RVec<FCCAnalysesJetConstituents>& jcs);
284 rv::RVec<TLorentzVector>
compute_tlv_jets(
const rv::RVec<fastjet::PseudoJet>& jets);
285 rv::RVec<TLorentzVector>
sum_tlv_constituents(
const rv::RVec<FCCAnalysesJetConstituents>& jets);
286 float InvariantMass(
const TLorentzVector& tlv1,
const TLorentzVector& tlv2);
293 const rv::RVec<TLorentzVector>& sum_tlv_jcs);
295 const rv::RVec<TLorentzVector>& sum_tlv_jcs);
297 const rv::RVec<TLorentzVector>& sum_tlv_jcs);
299 const rv::RVec<TLorentzVector>& sum_tlv_jcs);
300 rv::RVec<double>
compute_residue_px(
const rv::RVec<TLorentzVector>& tlv_jet,
const rv::RVec<TLorentzVector>& sum_tlv_jcs);
301 rv::RVec<double>
compute_residue_py(
const rv::RVec<TLorentzVector>& tlv_jet,
const rv::RVec<TLorentzVector>& sum_tlv_jcs);
302 rv::RVec<double>
compute_residue_pz(
const rv::RVec<TLorentzVector>& tlv_jet,
const rv::RVec<TLorentzVector>& sum_tlv_jcs);