File indexing completed on 2025-12-17 09:20:16
0001 #ifndef KFPARTICLESPHENIX_KFPARTICLENTUPLE_H
0002 #define KFPARTICLESPHENIX_KFPARTICLENTUPLE_H
0003
0004 #include "KFParticle_truthAndDetTools.h"
0005 #include "KFParticle_triggerInfo.h"
0006
0007 #include <KFParticle.h>
0008
0009 #include <string> // for string
0010 #include <vector>
0011
0012 class PHCompositeNode;
0013 class TTree;
0014
0015 class KFParticle_nTuple : public KFParticle_truthAndDetTools, public KFParticle_triggerInfo
0016 {
0017 public:
0018
0019 KFParticle_nTuple() = default;
0020
0021
0022 ~KFParticle_nTuple() override = default;
0023
0024
0025 void initializeVariables();
0026
0027
0028 void initializeBranches(PHCompositeNode* topNode);
0029
0030
0031 void fillBranch(PHCompositeNode *topNode,
0032 KFParticle motherParticle,
0033 const KFParticle &vertex,
0034 std::vector<KFParticle> daughters,
0035 std::vector<KFParticle> intermediates);
0036
0037 float calc_secondary_vertex_mass_noPID(std::vector<KFParticle> kfp_daughters);
0038
0039 bool fillConditionMet();
0040
0041
0042 void GetDetailedTracking(bool set_variable = true) {
0043 m_get_detailed_tracking = set_variable;
0044 if(m_get_detailed_tracking){m_detector_info = true;}
0045 }
0046 void GetDetailedCalorimetry(bool set_variable = true) {
0047 m_get_detailed_calorimetry = set_variable;
0048 if(m_get_detailed_calorimetry){m_calo_info = true;}
0049 }
0050
0051 protected:
0052 bool m_has_intermediates_nTuple {false};
0053 bool m_extrapolateTracksToSV_nTuple{true};
0054 bool m_constrain_to_vertex_nTuple {false};
0055 bool m_get_all_PVs {false};
0056
0057
0058 std::vector<int> m_num_tracks_from_intermediate_nTuple;
0059 bool m_truth_matching {false};
0060 bool m_get_trigger_info {false};
0061 bool m_detector_info {false};
0062 bool m_calo_info {false};
0063 bool m_require_track_emcal_match {false};
0064 bool isTrackEMCalmatch {true};
0065 std::string m_mother_name;
0066
0067 bool m_use_intermediate_name {false};
0068 bool m_get_charge_conjugate_nTuple {false};
0069 bool m_use_fake_pv_nTuple {false};
0070 std::vector<std::string> m_intermediate_name_ntuple;
0071
0072 private:
0073 TTree *m_tree {nullptr};
0074
0075 float m_calculated_mother_mass = -1;
0076 float m_calculated_mother_mass_err = -1;
0077 float m_calculated_mother_decaytime = -1;
0078 float m_calculated_mother_decaytime_err = -1;
0079 float m_calculated_mother_decaylength = -1;
0080 float m_calculated_mother_decaylength_err = -1;
0081 float m_calculated_mother_decaylength_xy = -1;
0082 float m_calculated_mother_decaylength_xy_err = -1;
0083 float m_calculated_mother_dira = -1;
0084 float m_calculated_mother_dira_xy = -1;
0085 float m_calculated_mother_fdchi2 = -1;
0086 float m_calculated_mother_ip = -1;
0087 float m_calculated_mother_ip_xy = -1;
0088 float m_calculated_mother_ipchi2 = -1;
0089 float m_calculated_mother_ip_err = -1;
0090 float m_calculated_mother_x = -1;
0091 float m_calculated_mother_y = -1;
0092 float m_calculated_mother_z = -1;
0093 float m_calculated_mother_px = -1;
0094 float m_calculated_mother_py = -1;
0095 float m_calculated_mother_pz = -1;
0096 float m_calculated_mother_pe = -1;
0097 float m_calculated_mother_p = -1;
0098 float m_calculated_mother_p_err = -1;
0099 float m_calculated_mother_pt = -1;
0100 float m_calculated_mother_pt_err = -1;
0101 char m_calculated_mother_q = -1;
0102 float m_calculated_mother_eta = -1;
0103 float m_calculated_mother_rapidity = -1;
0104 float m_calculated_mother_theta = -1;
0105 float m_calculated_mother_phi = -1;
0106 float m_calculated_mother_v = -1;
0107 float m_calculated_mother_chi2 = -1;
0108 int m_calculated_mother_ndof = -1;
0109 int m_calculated_mother_pdgID = -1;
0110
0111 float m_calculated_mother_cov[21] = {0};
0112
0113 static const int max_intermediates = 8;
0114 float m_calculated_intermediate_mass[max_intermediates] = {0};
0115 float m_calculated_intermediate_mass_err[max_intermediates] = {0};
0116 float m_calculated_intermediate_decaytime[max_intermediates] = {0};
0117 float m_calculated_intermediate_decaytime_err[max_intermediates] = {0};
0118 float m_calculated_intermediate_decaylength[max_intermediates] = {0};
0119 float m_calculated_intermediate_decaylength_err[max_intermediates] = {0};
0120 float m_calculated_intermediate_decaylength_xy[max_intermediates] = {0};
0121 float m_calculated_intermediate_decaylength_xy_err[max_intermediates] = {0};
0122 float m_calculated_intermediate_dira[max_intermediates] = {0};
0123 float m_calculated_intermediate_fdchi2[max_intermediates] = {0};
0124 float m_calculated_intermediate_ip[max_intermediates] = {0};
0125 float m_calculated_intermediate_ip_xy[max_intermediates] = {0};
0126 float m_calculated_intermediate_ipchi2[max_intermediates] = {0};
0127 float m_calculated_intermediate_ip_err[max_intermediates] = {0};
0128 float m_calculated_intermediate_x[max_intermediates] = {0};
0129 float m_calculated_intermediate_y[max_intermediates] = {0};
0130 float m_calculated_intermediate_z[max_intermediates] = {0};
0131 float m_calculated_intermediate_px[max_intermediates] = {0};
0132 float m_calculated_intermediate_py[max_intermediates] = {0};
0133 float m_calculated_intermediate_pz[max_intermediates] = {0};
0134 float m_calculated_intermediate_pe[max_intermediates] = {0};
0135 float m_calculated_intermediate_p[max_intermediates] = {0};
0136 float m_calculated_intermediate_p_err[max_intermediates] = {0};
0137 float m_calculated_intermediate_pt[max_intermediates] = {0};
0138 float m_calculated_intermediate_pt_err[max_intermediates] = {0};
0139 char m_calculated_intermediate_q[max_intermediates] = {0};
0140 float m_calculated_intermediate_eta[max_intermediates] = {0};
0141 float m_calculated_intermediate_rapidity[max_intermediates] = {0};
0142 float m_calculated_intermediate_theta[max_intermediates] = {0};
0143 float m_calculated_intermediate_phi[max_intermediates] = {0};
0144 float m_calculated_intermediate_v[max_intermediates] = {0};
0145 float m_calculated_intermediate_chi2[max_intermediates] = {0};
0146 int m_calculated_intermediate_ndof[max_intermediates] = {0};
0147 int m_calculated_intermediate_pdgID[max_intermediates] = {0};
0148
0149 float m_calculated_intermediate_cov[max_intermediates][21] = {{0}, {0}};
0150
0151
0152 float m_calculated_daughter_mass[max_tracks] = {0};
0153 float m_calculated_daughter_ip[max_tracks] = {0};
0154 float m_calculated_daughter_ip_xy[max_tracks] = {0};
0155 float m_calculated_daughter_ipchi2[max_tracks] = {0};
0156 float m_calculated_daughter_ip_err[max_tracks] = {0};
0157 float m_calculated_daughter_x[max_tracks] = {0};
0158 float m_calculated_daughter_y[max_tracks] = {0};
0159 float m_calculated_daughter_z[max_tracks] = {0};
0160 float m_calculated_daughter_px[max_tracks] = {0};
0161 float m_calculated_daughter_py[max_tracks] = {0};
0162 float m_calculated_daughter_pz[max_tracks] = {0};
0163 float m_calculated_daughter_pe[max_tracks] = {0};
0164 float m_calculated_daughter_p[max_tracks] = {0};
0165 float m_calculated_daughter_p_err[max_tracks] = {0};
0166 float m_calculated_daughter_pt[max_tracks] = {0};
0167 float m_calculated_daughter_pt_err[max_tracks] = {0};
0168 float m_calculated_daughter_jt[max_tracks] = {0};
0169 char m_calculated_daughter_q[max_tracks] = {0};
0170 int m_calculated_daughter_bunch_crossing[max_tracks] = {0};
0171 float m_calculated_daughter_eta[max_tracks] = {0};
0172 float m_calculated_daughter_rapidity[max_tracks] = {0};
0173 float m_calculated_daughter_theta[max_tracks] = {0};
0174 float m_calculated_daughter_phi[max_tracks] = {0};
0175 float m_calculated_daughter_chi2[max_tracks] = {0};
0176 int m_calculated_daughter_ndof[max_tracks] = {0};
0177 int m_calculated_daughter_trid[max_tracks] = {0};
0178 int m_calculated_daughter_pdgID[max_tracks] = {0};
0179
0180 float m_calculated_daughter_cov[max_tracks][21] = {{0}, {0}};
0181 float m_calculated_daughter_dedx[max_tracks] = {0};
0182
0183
0184
0185
0186 float m_daughter_dca[99] = {0};
0187 float m_daughter_dca_xy[99] = {0};
0188
0189 float m_calculated_vertex_x = -1;
0190 float m_calculated_vertex_y = -1;
0191 float m_calculated_vertex_z = -1;
0192 float m_calculated_vertex_v = -1;
0193 float m_calculated_vertex_chi2 = -1;
0194 unsigned int m_calculated_vertex_ndof = -1;
0195 int m_calculated_vertex_ID = -1;
0196
0197 float m_calculated_vertex_cov[6] = {0};
0198
0199 float m_sv_mass = -1;
0200
0201 int m_nPVs = -1;
0202 int m_multiplicity = -1;
0203 int m_nTracksOfVertex = -1;
0204
0205 int m_runNumber = -1;
0206 int m_evtNumber = -1;
0207 int64_t m_bco = -1;
0208
0209 bool m_trigger_info_available {false};
0210 };
0211
0212 #endif