File indexing completed on 2025-08-05 08:13:28
0001 #ifndef MIXEDJETANALYSIS_H
0002 #define MIXEDJETANALYSIS_H
0003
0004 #include <fun4all/SubsysReco.h>
0005 #include <string>
0006 #include <vector>
0007 #include <ffarawobjects/Gl1Packet.h>
0008 #include <ffarawobjects/Gl1Packetv1.h>
0009 #include <ffarawobjects/Gl1Packetv2.h>
0010
0011 #include <calobase/TowerInfoContainer.h>
0012 #include <calobase/TowerInfoContainerv1.h>
0013 #include <calobase/TowerInfoContainerv2.h>
0014 #include <calobase/TowerInfoContainerv3.h>
0015 #include <calobase/TowerInfo.h>
0016 #include <calobase/TowerInfov1.h>
0017 #include <calobase/TowerInfov2.h>
0018 #include <calobase/TowerInfov3.h>
0019 #include <calobase/RawTowerGeom.h>// jet includes
0020 #include <calobase/RawCluster.h>
0021 #include <calobase/RawClusterContainer.h>
0022 #include <calobase/RawClusterUtility.h>
0023 #include <calobase/RawTowerGeomContainer.h>
0024 #include <calobase/RawTower.h>
0025 #include <calobase/RawTowerContainer.h>
0026 #include <calotrigger/MinimumBiasInfov1.h>
0027 #include <jetbase/Jet.h>
0028 #include <jetbase/JetContainer.h>
0029 #include <jetbase/JetContainerv1.h>
0030 #include <jetbase/Jetv2.h>
0031
0032 #include "TTree.h"
0033 #include "TFile.h"
0034 #include "TVector3.h"
0035
0036 class Gl1Packet;
0037 class CentralityInfo;
0038 class EventplaneinfoMap;
0039 class TowerBackground;
0040 class MinimumBiasInfo;
0041 class TVector3;
0042 class PHCompositeNode;
0043 class Jet;
0044 class JetContainer;
0045 class MixedJetAnalysis : public SubsysReco
0046 {
0047 public:
0048
0049 MixedJetAnalysis(const std::string &name = "MixedJetAnalysis", const std::string &outfilename = "trees_caloemulator.root");
0050
0051 virtual ~MixedJetAnalysis();
0052
0053 int Init(PHCompositeNode *) override;
0054
0055 int process_event(PHCompositeNode *topNode) override;
0056
0057 int process_jets(int cone_index, PHCompositeNode *topNode);
0058
0059 int store_mixed_events(int cone_index);
0060
0061 int get_mixed_events(int cone_index);
0062
0063 int show_queue(int cone_index);
0064
0065 int End(PHCompositeNode * ) override;
0066
0067 void SetPtCut(float pt) {pt_cut = pt;}
0068 void SetMaxPtCut(float pt) {signal_pt_cut = pt;}
0069 void usePsi(bool use) { m_use_psi = use; }
0070
0071 void addConeSize(int conesize, bool bkg = false) { m_cone_sizes[m_n_cone_sizes++] = std::make_pair(conesize, bkg); }
0072
0073 void setRunnumber(int run){b_runnumber = run;}
0074
0075 void setSegment(int seg){b_segment = seg;}
0076
0077 struct mixedjet
0078 {
0079 float pt = 0;
0080 float eta = 0;
0081 float phi = 0;
0082 };
0083
0084 private:
0085
0086 int m_n_cone_sizes = 0;
0087 std::map<int, std::pair<int, bool>> m_cone_sizes{};
0088
0089 void reset_tree_vars();
0090
0091 float m_higheta = 1.1;
0092 float m_loweta = -1.1;
0093 bool m_use_psi{false};
0094 float pt_cut = 3;
0095 float signal_pt_cut = 20;
0096
0097 float vertex_cut = 60;
0098 float vertex_bin_width = 5;
0099 TFile *_f;
0100 TTree *_tree;
0101 TTree *_tree_end;
0102
0103 std::string _foutname;
0104 std::string _nodename;
0105 std::string m_calo_nodename;
0106
0107 int _i_event;
0108
0109 TowerBackground *m_towback = nullptr;
0110 CentralityInfo *m_central = nullptr;
0111 MinimumBiasInfo *m_minimumbiasinfo = nullptr;
0112 EventplaneinfoMap *m_evpmap = nullptr;
0113
0114 int b_centrality = 0;
0115 float b_psi = 0;
0116 float b_v2 = 0;
0117 int b_flow_fail = 0;
0118 int b_ismb = 0;
0119 unsigned int m_total_bin = 0;
0120
0121 int b_runnumber = 0;
0122 int b_segment = 0;
0123 ULong64_t first_scaled[64];
0124 ULong64_t first_live[64];
0125 ULong64_t first_raw[64];
0126 ULong64_t last_scaled[64];
0127 ULong64_t last_live[64];
0128 ULong64_t last_raw[64];
0129 ULong64_t b_scaled_scalers[64];
0130 ULong64_t b_live_scalers[64];
0131 ULong64_t b_raw_scalers[64];
0132
0133 float b_vertex_z;
0134
0135 float b_time_zero;
0136
0137 int b_mbd_npmt;
0138 std::vector<float> b_mbd_charge;
0139 std::vector<float> b_mbd_time;
0140 std::vector<short> b_mbd_ipmt;
0141 std::vector<short> b_mbd_side;
0142
0143 std::vector<int> b_njet{};
0144 std::vector<std::vector<float>*> b_jet_pt;
0145 std::vector<std::vector<float>*> b_jet_eta;
0146 std::vector<std::vector<float>*> b_jet_phi;
0147
0148 std::vector<int> b_njet_mix{};
0149 std::vector<std::vector<float>*> b_jet_mix_pt;
0150 std::vector<std::vector<float>*> b_jet_mix_eta;
0151 std::vector<std::vector<float>*> b_jet_mix_phi;
0152
0153 std::vector<std::map<unsigned int, std::vector<std::vector<struct mixedjet>>*>> m_mixed_jet_bank;
0154
0155 ULong64_t b_gl1_scaled{0};
0156 ULong64_t b_gl1_live{0};
0157 ULong64_t b_gl1_raw{0};
0158 unsigned int m_nbin_vertex = 10;
0159 unsigned int m_nbin_psi = 8;
0160 float m_vertex_bin_edges[11] = {-60, -30, -20, -10, -5, 0, 5, 10, 20, 30 , 60};
0161
0162 unsigned int m_max_length_buffer = 20;
0163 };
0164
0165 #endif