File indexing completed on 2025-08-06 08:17:57
0001 #ifndef PARTICLEFLOWRECO_H
0002 #define PARTICLEFLOWRECO_H
0003
0004
0005
0006
0007
0008
0009
0010 #include <fun4all/SubsysReco.h>
0011
0012 #include <gsl/gsl_rng.h>
0013
0014 #include <string>
0015 #include <vector>
0016
0017 class PHCompositeNode;
0018 class SvtxTrack;
0019 class RawCluster;
0020
0021 class ParticleFlowReco : public SubsysReco
0022 {
0023 public:
0024 ParticleFlowReco(const std::string &name = "ParticleFlowReco");
0025
0026 ~ParticleFlowReco() override = default;
0027
0028 int InitRun(PHCompositeNode *topNode) override;
0029
0030 int process_event(PHCompositeNode *topNode) override;
0031
0032 void set_energy_match_Nsigma(float Nsigma)
0033 {
0034 _energy_match_Nsigma = Nsigma;
0035 }
0036 void set_track_map_name(std::string &name) { _track_map_name = name; }
0037
0038 void set_only_crossing_zero(bool b) { _only_crossing_zero = b; }
0039
0040 private:
0041 static int CreateNode(PHCompositeNode *topNode);
0042
0043 static float calculate_dR(float, float, float, float);
0044 std::pair<float, float> get_expected_signature(int);
0045
0046 bool _only_crossing_zero {true};
0047
0048 float _energy_match_Nsigma {1.5};
0049
0050 std::vector<float> _pflow_TRK_p;
0051 std::vector<float> _pflow_TRK_eta;
0052 std::vector<float> _pflow_TRK_phi;
0053 std::vector<float> _pflow_TRK_EMproj_phi;
0054 std::vector<float> _pflow_TRK_EMproj_eta;
0055 std::vector<float> _pflow_TRK_HADproj_phi;
0056 std::vector<float> _pflow_TRK_HADproj_eta;
0057 std::vector<SvtxTrack *> _pflow_TRK_trk;
0058 std::vector<std::vector<int> > _pflow_TRK_match_EM;
0059 std::vector<std::vector<int> > _pflow_TRK_match_HAD;
0060
0061
0062 std::vector<std::vector<std::pair<int, float> > > _pflow_TRK_addtl_match_EM;
0063
0064 std::vector<float> _pflow_EM_E;
0065 std::vector<float> _pflow_EM_eta;
0066 std::vector<float> _pflow_EM_phi;
0067 std::vector<RawCluster *> _pflow_EM_cluster;
0068 std::vector<std::vector<float> > _pflow_EM_tower_eta;
0069 std::vector<std::vector<float> > _pflow_EM_tower_phi;
0070 std::vector<std::vector<int> > _pflow_EM_match_HAD;
0071 std::vector<std::vector<int> > _pflow_EM_match_TRK;
0072
0073 std::vector<float> _pflow_HAD_E;
0074 std::vector<float> _pflow_HAD_eta;
0075 std::vector<float> _pflow_HAD_phi;
0076 std::vector<RawCluster *> _pflow_HAD_cluster;
0077 std::vector<std::vector<float> > _pflow_HAD_tower_eta;
0078 std::vector<std::vector<float> > _pflow_HAD_tower_phi;
0079 std::vector<std::vector<int> > _pflow_HAD_match_EM;
0080 std::vector<std::vector<int> > _pflow_HAD_match_TRK;
0081
0082 std::string _track_map_name {"SvtxTrackMap"};
0083 };
0084
0085 #endif