File indexing completed on 2025-08-05 08:11:11
0001
0002 #ifndef CALOEMULATORTREEMAKER_H
0003 #define CALOEMULATORTREEMAKER_H
0004
0005 #include <fun4all/SubsysReco.h>
0006 #include <calotrigger/TriggerAnalyzer.h>
0007 #include <string>
0008 #include <vector>
0009 #include <ffarawobjects/Gl1Packet.h>
0010 #include <ffarawobjects/Gl1Packetv1.h>
0011 #include <ffarawobjects/Gl1Packetv2.h>
0012 #include <calotrigger/LL1Out.h>
0013 #include <calotrigger/LL1Outv1.h>
0014 #include <calotrigger/TriggerPrimitive.h>
0015 #include <calotrigger/TriggerPrimitivev1.h>
0016 #include <calotrigger/TriggerPrimitiveContainer.h>
0017 #include <calotrigger/TriggerPrimitiveContainerv1.h>
0018 #include <calotrigger/TriggerDefs.h>
0019 #include <calobase/TowerInfoContainer.h>
0020 #include <calobase/TowerInfoContainerv1.h>
0021 #include <calobase/TowerInfoContainerv2.h>
0022 #include <calobase/TowerInfoContainerv3.h>
0023 #include <calobase/TowerInfo.h>
0024 #include <calobase/TowerInfov1.h>
0025 #include <calobase/TowerInfov2.h>
0026 #include <calobase/TowerInfov3.h>
0027
0028 #include <jetbase/Jet.h>
0029 #include <jetbase/JetContainer.h>
0030 #include <jetbase/JetContainerv1.h>
0031 #include <jetbase/Jetv2.h>
0032
0033 #include "TTree.h"
0034 #include "TFile.h"
0035
0036
0037 class PHCompositeNode;
0038 class TriggerPrimitive;
0039 class TriggerPrimitiveContainer;
0040 class LL1Out;
0041 class TowerInfoContainer;
0042 class JetContainer;
0043 class PHG4TruthInfoContainer;
0044 class CaloEmulatorTreeMaker : public SubsysReco
0045 {
0046 public:
0047
0048 CaloEmulatorTreeMaker(const std::string &name = "CaloEmulatorTreeMaker", const std::string &outfilename = "trees_caloemulator.root");
0049
0050 virtual ~CaloEmulatorTreeMaker();
0051
0052 int Init(PHCompositeNode *topNode) override;
0053
0054 int InitRun(PHCompositeNode *topNode) override;
0055
0056 int process_event(PHCompositeNode *topNode) override;
0057
0058 void GetNodes (PHCompositeNode *topNode);
0059
0060 int ResetEvent(PHCompositeNode *topNode) override;
0061
0062 int EndRun(const int runnumber) override;
0063
0064 int End(PHCompositeNode *topNode) override;
0065
0066 int Reset(PHCompositeNode * ) override;
0067
0068 void SetVerbosity(int verbo) ;
0069 void SetTrigger(const std::string trigger) {_trigger = trigger;}
0070 void UseCaloTowerBuilder(bool use) {useCaloTowerBuilder = use;}
0071 void CaloTowerBuilderNodename(const std::string nodename) {m_calo_nodename = nodename;}
0072 void UseLL1(bool use) {useLL1 = use;}
0073 void SaveCalo(bool use) {save_calo = use;}
0074 void SetIsSim(bool use) {isSim = use;}
0075 void SetPtCut(float pt) {pt_cut = pt;}
0076 Double_t getDPHI(Double_t phi1, Double_t phi2);
0077 private:
0078 TriggerAnalyzer *triggeranalyzer;
0079 void reset_tree_vars();
0080
0081 int _verbosity;
0082
0083 float pt_cut = 4;
0084 float pt_cut_truth = 4;
0085 bool save_calo = true;
0086 TFile *_f;
0087 TTree *_tree;
0088 std::string _trigger;
0089 std::string _foutname;
0090 std::string _nodename;
0091 std::string m_ll1_nodename;
0092 std::string m_ll1_raw_nodename;
0093 std::string m_calo_nodename;
0094 int _i_event;
0095 bool useCaloTowerBuilder;
0096 bool useLL1;
0097 bool isSim{0};
0098 LL1Out *_ll1out_pair_trigger;
0099 LL1Out *_ll1out_photon_trigger;
0100 LL1Out *_ll1out_jet_trigger;
0101 LL1Out *_ll1out_raw_trigger;
0102 Gl1Packet *_gl1_packet;
0103 TriggerPrimitive *_trigger_primitive;
0104 TriggerPrimitiveContainer *_trigger_primitives_raw_emcal;
0105 TriggerPrimitiveContainer *_trigger_primitives_raw_emcal_ll1;
0106 TriggerPrimitiveContainer *_trigger_primitives_raw_trigger;
0107 TriggerPrimitiveContainer *_trigger_primitives_emcal;
0108 TriggerPrimitiveContainer *_trigger_primitives_emcal_ll1;
0109 TriggerPrimitiveContainer *_trigger_primitives_hcalin;
0110 TriggerPrimitiveContainer *_trigger_primitives_hcalout;
0111 TriggerPrimitiveContainer *_trigger_primitives_hcal_ll1;
0112 TriggerPrimitiveContainer *_trigger_primitives_trigger;
0113
0114 TowerInfo *_tower;
0115 TowerInfoContainer* _towers;
0116
0117
0118
0119
0120
0121
0122 unsigned int b_trigger_sum_smpl_emcal[6144];
0123 unsigned int b_trigger_sumkey_emcal[6144];
0124 unsigned int b_trigger_sum_emcal[6144];
0125 unsigned int b_trigger_sum_smpl_hcalin[384];
0126 unsigned int b_trigger_sumkey_hcalin[384];
0127 unsigned int b_trigger_sum_hcalin[384];
0128 unsigned int b_trigger_sum_smpl_hcalout[384];
0129 unsigned int b_trigger_sumkey_hcalout[384];
0130 unsigned int b_trigger_sum_hcalout[384];
0131
0132 std::vector<unsigned int> b_triggered_sums_jet;
0133 std::vector<unsigned int> b_triggered_sums_photon;
0134 std::vector<unsigned int> b_triggered_sums_pair;
0135 uint64_t b_gl1_rawvec;
0136 uint64_t b_gl1_livevec;
0137 uint64_t b_gl1_scaledvec;
0138 uint64_t b_gl1_clock;
0139 uint64_t b_gl1_raw[64];
0140 uint64_t b_gl1_live[64];
0141 uint64_t b_gl1_scaled[64];
0142 unsigned int b_trigger_sum_smpl_emcal_ll1[384];
0143 unsigned int b_trigger_sumkey_emcal_ll1[384];
0144 unsigned int b_trigger_sum_emcal_ll1[384];
0145 unsigned int b_trigger_sum_smpl_hcal_ll1[384];
0146 unsigned int b_trigger_sumkey_hcal_ll1[384];
0147 unsigned int b_trigger_sum_hcal_ll1[384];
0148
0149 unsigned int b_trigger_sum_smpl_jet[288];
0150 unsigned int b_trigger_sumkey_jet[288];
0151 unsigned int b_trigger_sum_jet[288];
0152
0153 unsigned int b_trigger_sum_smpl_jet_input[384];
0154 unsigned int b_trigger_sumkey_jet_input[384];
0155 unsigned int b_trigger_sum_jet_input[384];
0156
0157 unsigned int b_trigger_raw_sum_smpl_emcal[6144];
0158 unsigned int b_trigger_raw_sumkey_emcal[6144];
0159 unsigned int b_trigger_raw_sum_emcal[6144];
0160
0161 unsigned int b_trigger_raw_sum_smpl_emcal_ll1[384];
0162 unsigned int b_trigger_raw_sumkey_emcal_ll1[384];
0163 unsigned int b_trigger_raw_sum_emcal_ll1[384];
0164
0165 unsigned int b_trigger_raw_sum_smpl_jet[288];
0166 unsigned int b_trigger_raw_sumkey_jet[288];
0167 unsigned int b_trigger_raw_sum_jet[288];
0168
0169 unsigned int b_trigger_raw_sum_smpl_jet_input[384];
0170 unsigned int b_trigger_raw_sumkey_jet_input[384];
0171 unsigned int b_trigger_raw_sum_jet_input[384];
0172 unsigned int b_trigger_bits_photon;
0173 unsigned int b_trigger_bits_jet;
0174 unsigned int b_trigger_bits_pair;
0175 unsigned int b_trigger_raw_bits;
0176
0177 float b_vertex_x;
0178 float b_vertex_y;
0179 float b_vertex_z;
0180
0181 int b_cluster_n;
0182 std::vector<float> b_cluster_prob;
0183 std::vector<float> b_cluster_chi2;
0184 std::vector<float> b_cluster_ecore;
0185 std::vector<float> b_cluster_pt;
0186 std::vector<float> b_cluster_phi;
0187 std::vector<float> b_cluster_eta;
0188 std::vector<float> b_cluster_z;
0189 std::vector<float> b_cluster_y;
0190 std::vector<float> b_cluster_x;
0191 std::vector<float> b_cluster_iso;
0192
0193 std::vector<short> b_emcal_good;
0194 std::vector<float> b_emcal_energy;
0195 std::vector<float> b_emcal_time;
0196 std::vector<float> b_emcal_etabin;
0197 std::vector<float> b_emcal_phibin;
0198
0199 std::vector<short> b_emcalre_good;
0200 std::vector<float> b_emcalre_energy;
0201 std::vector<float> b_emcalre_time;
0202 std::vector<float> b_emcalre_etabin;
0203 std::vector<float> b_emcalre_phibin;
0204
0205 std::vector<short> b_hcalin_good;
0206 std::vector<float> b_hcalin_energy;
0207 std::vector<float> b_hcalin_time;
0208 std::vector<float> b_hcalin_etabin;
0209 std::vector<float> b_hcalin_phibin;
0210
0211 std::vector<short> b_hcalout_good;
0212 std::vector<float> b_hcalout_energy;
0213 std::vector<float> b_hcalout_time;
0214 std::vector<float> b_hcalout_etabin;
0215 std::vector<float> b_hcalout_phibin;
0216
0217 std::vector<short> b_emcalresub_good;
0218 std::vector<float> b_emcalresub_energy;
0219 std::vector<float> b_emcalresub_time;
0220 std::vector<float> b_emcalresub_etabin;
0221 std::vector<float> b_emcalresub_phibin;
0222
0223 std::vector<short> b_hcalinsub_good;
0224 std::vector<float> b_hcalinsub_energy;
0225 std::vector<float> b_hcalinsub_time;
0226 std::vector<float> b_hcalinsub_etabin;
0227 std::vector<float> b_hcalinsub_phibin;
0228
0229 std::vector<short> b_hcaloutsub_good;
0230 std::vector<float> b_hcaloutsub_energy;
0231 std::vector<float> b_hcaloutsub_time;
0232 std::vector<float> b_hcaloutsub_etabin;
0233 std::vector<float> b_hcaloutsub_phibin;
0234
0235 float b_mbd_charge[128];
0236 float b_mbd_time[128];
0237 int b_mbd_ipmt[128];
0238 int b_mbd_side[128];
0239 int b_truth_particle_n = 0;
0240 std::vector<int> b_truth_particle_pid = {};
0241 std::vector<float> b_truth_particle_pt = {};
0242 std::vector<float> b_truth_particle_eta = {};
0243 std::vector<float> b_truth_particle_phi = {};
0244
0245
0246 int b_njet_2 = 0;
0247 std::vector<float> b_jet_pt_2 = {};
0248 std::vector<float> b_jet_et_2 = {};
0249 std::vector<float> b_jet_eta_2 = {};
0250 std::vector<float> b_jet_phi_2 = {};
0251 std::vector<float> b_jet_emcal_2 = {};
0252 std::vector<float> b_jet_hcalin_2 = {};
0253 std::vector<float> b_jet_hcalout_2 = {};
0254 std::vector<float> b_jet_eccen_2 = {};
0255
0256 int b_njet_4 = 0;
0257 std::vector<float> b_jet_pt_4 = {};
0258 std::vector<float> b_jet_et_4 = {};
0259 std::vector<float> b_jet_eta_4 = {};
0260 std::vector<float> b_jet_phi_4 = {};
0261 std::vector<float> b_jet_emcal_4 = {};
0262 std::vector<float> b_jet_hcalin_4 = {};
0263 std::vector<float> b_jet_hcalout_4 = {};
0264 std::vector<float> b_jet_eccen_4 = {};
0265
0266 int b_njet_6 = 0;
0267 std::vector<float> b_jet_pt_6 = {};
0268 std::vector<float> b_jet_et_6 = {};
0269 std::vector<float> b_jet_eta_6 = {};
0270 std::vector<float> b_jet_phi_6 = {};
0271 std::vector<float> b_jet_emcal_6 = {};
0272 std::vector<float> b_jet_hcalin_6 = {};
0273 std::vector<float> b_jet_hcalout_6 = {};
0274 std::vector<float> b_jet_eccen_6 = {};
0275 int b_ntruth_jet_2 = 0;
0276 std::vector<float> b_truth_jet_pt_2 = {};
0277 std::vector<float> b_truth_jet_eta_2 = {};
0278 std::vector<float> b_truth_jet_phi_2 = {};
0279
0280 int b_ntruth_jet_4 = 0;
0281 std::vector<float> b_truth_jet_pt_4 = {};
0282 std::vector<float> b_truth_jet_eta_4 = {};
0283 std::vector<float> b_truth_jet_phi_4 = {};
0284
0285 int b_ntruth_jet_6 = 0;
0286 std::vector<float> b_truth_jet_pt_6 = {};
0287 std::vector<float> b_truth_jet_eta_6 = {};
0288 std::vector<float> b_truth_jet_phi_6 = {};
0289
0290 int trash{0};
0291 };
0292
0293 #endif