Back to home page

sPhenix code displayed by LXR

 
 

    


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   // central membrane reconstruction
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   // direct laser reconstruction
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   // central membrane reconstruction
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