Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-03 08:20:26

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