Back to home page

sPhenix code displayed by LXR

 
 

    


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   /// example caloname: CEMC, HCALIN, HCALOUT
0024   TopoClusterEval(PHCompositeNode* topNode, const std::string &type);
0025   virtual ~TopoClusterEval();
0026 
0027   //Pass the particle to be evaluated, then get other information
0028   PHG4Particle* get_truth_particle(RawCluster *topo_cluster);
0029 
0030   /// reinitialize the eval for a new event
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   //Separate the HCal layers (inner and outer) in order to evaluate
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  // G4EVAL_TOPOCLUSTEREVAL_H