File indexing completed on 2026-10-15 08:21:04
0001 #ifndef G4EVAL_TOPOCLUSTEREVAL_H
0002 #define G4EVAL_TOPOCLUSTEREVAL_H
0003
0004 #include "CaloRawClusterEval.h"
0005
0006 #include <map>
0007 #include <set>
0008 #include <string>
0009 #include <utility>
0010 #include <vector>
0011
0012 #include <calobase/RawTowerDefs.h>
0013
0014 class PHCompositeNode;
0015 class PHG4Particle;
0016 class PHG4Shower;
0017 class RawCluster;
0018 class CaloRawClusterEval;
0019
0020 class TopoClusterEval
0021 {
0022 public:
0023
0024 TopoClusterEval(PHCompositeNode* topNode, const std::string &type);
0025 virtual ~TopoClusterEval();
0026
0027
0028 PHG4Particle* get_truth_particle(RawCluster *topo_cluster);
0029
0030
0031 void next_event(PHCompositeNode* topNode);
0032
0033 std::set<PHG4Shower*> all_truth_primary_showers();
0034 std::set<PHG4Shower*> all_truth_primary_showers_emcal();
0035 std::set<PHG4Shower*> all_truth_primary_showers_hcal();
0036 std::set<PHG4Shower*> all_truth_primary_showers_ihcal();
0037 std::set<PHG4Shower*> all_truth_primary_showers_ohcal();
0038
0039 PHG4Shower* max_truth_primary_shower_by_energy();
0040 PHG4Shower* max_truth_primary_shower_by_energy_emcal();
0041 PHG4Shower* max_truth_primary_shower_by_energy_hcal();
0042 PHG4Shower* max_truth_primary_shower_by_energy_ihcal();
0043 PHG4Shower* max_truth_primary_shower_by_energy_ohcal();
0044
0045 std::set<PHG4Particle*> all_truth_primary_particles();
0046 std::set<PHG4Particle*> all_truth_primary_particles_emcal();
0047 std::set<PHG4Particle*> all_truth_primary_particles_hcal();
0048 std::set<PHG4Particle*> all_truth_primary_particles_ihcal();
0049 std::set<PHG4Particle*> all_truth_primary_particles_ohcal();
0050
0051 PHG4Particle* max_truth_primary_particle_by_energy();
0052 PHG4Particle* max_truth_primary_particle_by_energy_emcal();
0053 PHG4Particle* max_truth_primary_particle_by_energy_hcal();
0054 PHG4Particle* max_truth_primary_particle_by_energy_ihcal();
0055 PHG4Particle* max_truth_primary_particle_by_energy_ohcal();
0056
0057 void set_usetowerinfo(bool b)
0058 {
0059 _clustereval_emcal.set_usetowerinfo(b);
0060 _clustereval_ihcal.set_usetowerinfo(b);
0061 _clustereval_ohcal.set_usetowerinfo(b);
0062 }
0063
0064 private:
0065
0066 void SeparateSubsystems(RawCluster *topo_cluster);
0067
0068 std::string _topocluster_type = "EMCAL_HCAL";
0069
0070 CaloRawClusterEval _clustereval_emcal;
0071 CaloRawClusterEval _clustereval_ihcal;
0072 CaloRawClusterEval _clustereval_ohcal;
0073
0074 RawCluster *_topo_emcal = nullptr;
0075 RawCluster *_topo_ihcal = nullptr;
0076 RawCluster *_topo_ohcal = nullptr;
0077
0078 };
0079
0080 #endif