Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-12-16 09:24:04

0001 #ifndef MACRO_G4TOPOCLUSTERRECO_C
0002 #define MACRO_G4TOPOCLUSTERRECO_C
0003 
0004 #include <GlobalVariables.C>
0005 
0006 #include <caloreco/RawClusterBuilderTopo.h>
0007 
0008 #include <fun4all/Fun4AllServer.h>
0009 
0010 #include <Rtypes.h>  // resolves R__LOAD_LIBRARY for clang-tidy
0011 
0012 R__LOAD_LIBRARY(libcalo_reco.so)
0013 
0014 namespace Enable
0015 {
0016   bool TOPOCLUSTER = false;
0017   int TOPOCLUSTER_VERBOSITY = 0;
0018 }  // namespace Enable
0019 
0020 void TopoClusterReco()
0021 {
0022   int verbosity = std::max(Enable::VERBOSITY, Enable::TOPOCLUSTER_VERBOSITY);
0023 
0024   //---------------
0025   // Fun4All server
0026   //---------------
0027 
0028   Fun4AllServer* se = Fun4AllServer::instance();
0029 
0030   // topoClustering in all three layers
0031   RawClusterBuilderTopo* ClusterBuilder = new RawClusterBuilderTopo("HcalRawClusterBuilderTopo");
0032   ClusterBuilder->Verbosity(verbosity);
0033   ClusterBuilder->set_nodename("TOPOCLUSTER_ALLCALO");
0034   ClusterBuilder->set_enable_HCal(true);
0035   ClusterBuilder->set_enable_EMCal(true);
0036   ClusterBuilder->set_noise(0.0025, 0.006, 0.03);
0037   ClusterBuilder->set_significance(4.0, 2.0, 0.0);
0038   ClusterBuilder->allow_corner_neighbor(true);
0039   ClusterBuilder->set_do_split(true);
0040   ClusterBuilder->set_minE_local_max(1.0, 2.0, 0.5);
0041   ClusterBuilder->set_R_shower(0.025);
0042   ClusterBuilder->set_use_only_good_towers(true);
0043   ClusterBuilder->set_absE(true);
0044   se->registerSubsystem(ClusterBuilder);
0045 
0046   // topoClustering only in EMCal (needed for particle flow)
0047   RawClusterBuilderTopo* ClusterBuilder1 = new RawClusterBuilderTopo("HcalRawClusterBuilderTopo1");
0048   ClusterBuilder1->Verbosity(verbosity);
0049   ClusterBuilder1->set_nodename("TOPOCLUSTER_EMCAL");
0050   ClusterBuilder1->set_enable_HCal(false);
0051   ClusterBuilder1->set_enable_EMCal(true);
0052   ClusterBuilder1->set_noise(0.0025, 0.006, 0.03);
0053   ClusterBuilder1->set_significance(4.0, 2.0, 0.0);
0054   ClusterBuilder1->allow_corner_neighbor(true);
0055   ClusterBuilder1->set_do_split(true);
0056   ClusterBuilder1->set_minE_local_max(1.0, 2.0, 0.5);
0057   ClusterBuilder1->set_R_shower(0.025);
0058   ClusterBuilder1->set_use_only_good_towers(true);
0059   ClusterBuilder1->set_absE(true);
0060   se->registerSubsystem(ClusterBuilder1);
0061 
0062   // topoClustering only in I+OHCal (needed for particle flow)
0063   RawClusterBuilderTopo* ClusterBuilder2 = new RawClusterBuilderTopo("HcalRawClusterBuilderTopo2");
0064   ClusterBuilder2->Verbosity(verbosity);
0065   ClusterBuilder2->set_nodename("TOPOCLUSTER_HCAL");
0066   ClusterBuilder2->set_enable_HCal(true);
0067   ClusterBuilder2->set_enable_EMCal(false);
0068   ClusterBuilder2->set_noise(0.0025, 0.006, 0.03);
0069   ClusterBuilder2->set_significance(4.0, 2.0, 0.0);
0070   ClusterBuilder2->allow_corner_neighbor(true);
0071   ClusterBuilder2->set_do_split(true);
0072   ClusterBuilder2->set_minE_local_max(1.0, 2.0, 0.5);
0073   ClusterBuilder2->set_R_shower(0.025);
0074   ClusterBuilder2->set_use_only_good_towers(true);
0075   ClusterBuilder2->set_absE(true);
0076   se->registerSubsystem(ClusterBuilder2);
0077 
0078   return;
0079 }
0080 #endif