File indexing completed on 2025-12-17 09:24:03
0001 #ifndef MACRO_TRKRLASERCLUS_C
0002 #define MACRO_TRKRLASERCLUS_C
0003
0004 #include <GlobalVariables.C>
0005
0006 #include <G4_ActsGeom.C>
0007 #include <G4_TrkrVariables.C>
0008
0009 #include <tpc/LaserClusterizer.h>
0010
0011 #include <tpccalib/TpcDirectLaserReconstruction.h>
0012 #include <tpccalib/TpcLaminationFitting.h>
0013
0014 #include <fun4all/Fun4AllServer.h>
0015
0016 R__LOAD_LIBRARY(libtpc.so)
0017 R__LOAD_LIBRARY(libtpccalib.so)
0018
0019 void TPC_LaserClustering()
0020 {
0021
0022 if (G4TPC::ENABLE_CENTRAL_MEMBRANE_CLUSTERING)
0023 {
0024 int verbosity = std::max(Enable::VERBOSITY, Enable::TPC_VERBOSITY);
0025 ACTSGEOM::ActsGeomInit();
0026 Fun4AllServer *se = Fun4AllServer::instance();
0027
0028 LaserClusterizer *laserClusterizer = new LaserClusterizer;
0029 laserClusterizer->Verbosity(verbosity);
0030 laserClusterizer->set_max_time_samples(TRACKING::reco_tpc_maxtime_sample);
0031 laserClusterizer->set_adc_threshold(G4TPC::laser_adc_threshold);
0032 laserClusterizer->set_do_sequential(G4TPC::LaserClusteringSequential);
0033 laserClusterizer->set_do_fitting(G4TPC::laserClusterFitting);
0034 se->registerSubsystem(laserClusterizer);
0035 }
0036
0037
0038 if (G4TPC::ENABLE_DIRECT_LASER_HITS)
0039 {
0040 Fun4AllServer *se = Fun4AllServer::instance();
0041 auto *directLaserReconstruction = new TpcDirectLaserReconstruction;
0042 directLaserReconstruction->set_outputfile(G4TPC::DIRECT_LASER_ROOTOUTPUT_FILENAME);
0043 directLaserReconstruction->set_savehistograms(G4TPC::DIRECT_LASER_SAVEHISTOGRAMS);
0044 directLaserReconstruction->set_histogram_outputfile(G4TPC::DIRECT_LASER_HISTOGRAMOUTPUT_FILENAME);
0045 se->registerSubsystem(directLaserReconstruction);
0046 }
0047 }
0048
0049 void TPC_LaminationClustering()
0050 {
0051
0052 if (G4TPC::ENABLE_CENTRAL_MEMBRANE_CLUSTERING)
0053 {
0054 int verbosity = std::max(Enable::VERBOSITY, Enable::TPC_VERBOSITY);
0055 ACTSGEOM::ActsGeomInit();
0056 Fun4AllServer *se = Fun4AllServer::instance();
0057
0058 LaserClusterizer *laminationClusterizer = new LaserClusterizer;
0059 laminationClusterizer->Verbosity(verbosity);
0060 laminationClusterizer->set_max_time_samples(TRACKING::reco_tpc_maxtime_sample);
0061 laminationClusterizer->set_adc_threshold(G4TPC::laser_adc_threshold);
0062 laminationClusterizer->set_do_sequential(G4TPC::LaserClusteringSequential);
0063 laminationClusterizer->set_do_fitting(G4TPC::laserClusterFitting);
0064 laminationClusterizer->set_lamination(true);
0065 se->registerSubsystem(laminationClusterizer);
0066 }
0067 }
0068
0069 void TPC_LaminationFitting()
0070 {
0071 if (G4TPC::ENABLE_CENTRAL_MEMBRANE_CLUSTERING)
0072 {
0073 int verbosity = std::max(Enable::VERBOSITY, Enable::TPC_VERBOSITY);
0074 ACTSGEOM::ActsGeomInit();
0075 Fun4AllServer *se = Fun4AllServer::instance();
0076
0077 TpcLaminationFitting *laminations = new TpcLaminationFitting;
0078 laminations->Verbosity(verbosity);
0079 laminations->set_nLayerCut(2);
0080 laminations->set_ppMode(TRACKING::pp_mode);
0081 laminations->setOutputfile(G4TPC::LaminationOutputName);
0082 if (!G4TPC::LaminationQAName.empty())
0083 {
0084 laminations->set_QAFileName(G4TPC::LaminationQAName);
0085 }
0086 se->registerSubsystem(laminations);
0087 }
0088 }
0089
0090 #endif