File indexing completed on 2025-12-17 09:24:03
0001 #ifndef MACRO_TPCREADOUTINIT_C
0002 #define MACRO_TPCREADOUTINIT_C
0003
0004 #include <GlobalVariables.C>
0005
0006 #include <G4_TrkrVariables.C>
0007
0008 #pragma GCC diagnostic push
0009 #pragma GCC diagnostic ignored "-Wundefined-internal"
0010 #include <tpc/TpcClusterZCrossingCorrection.h>
0011 #pragma GCC diagnostic pop
0012
0013 #include <cdbobjects/CDBTTree.h>
0014
0015 #include <ffamodules/CDBInterface.h>
0016
0017 #include <fun4all/Fun4AllServer.h>
0018
0019 #include <Rtypes.h> // resolves R__LOAD_LIBRARY for clang-tidy
0020
0021 R__LOAD_LIBRARY(libtpc.so)
0022 R__LOAD_LIBRARY(libtrack_reco.so)
0023 R__LOAD_LIBRARY(libtpccalib.so)
0024
0025 void TpcSampleInit(const int RunNumber = 41989)
0026 {
0027 if (RunNumber >= 41624)
0028 {
0029 TRACKING::reco_tpc_maxtime_sample = 425;
0030 TRACKING::reco_tpc_time_presample = 40;
0031 }
0032 else
0033 {
0034 TRACKING::reco_tpc_maxtime_sample = 420;
0035 TRACKING::reco_tpc_time_presample = 0;
0036 }
0037 }
0038
0039 void TpcReadoutInit(const int RunNumber = 41989)
0040 {
0041 TRACKING::reco_tpc_is_configured = true;
0042 if (RunNumber < 45737)
0043 {
0044
0045 G4TPC::tpc_drift_velocity_reco = (8.0 / 1000) * 107.0 / G4TPC::maxDriftLength;
0046 }
0047 else if (RunNumber < 49515)
0048 {
0049
0050 G4TPC::tpc_drift_velocity_reco = 0.007;
0051 }
0052 else
0053 {
0054
0055
0056 G4TPC::tpc_drift_velocity_reco = 0.00713;
0057 }
0058
0059 if (RunNumber >= 41624)
0060 {
0061 TRACKING::reco_tpc_maxtime_sample = 425;
0062 TRACKING::reco_tpc_time_presample = 40;
0063 }
0064 else
0065 {
0066 TRACKING::reco_tpc_maxtime_sample = 420;
0067 TRACKING::reco_tpc_time_presample = 0;
0068 }
0069
0070 std::string tpc_dv_calib_dir = CDBInterface::instance()->getUrl("TPC_DRIFT_VELOCITY");
0071 if (tpc_dv_calib_dir.empty())
0072 {
0073 std::cout << "No calibrated TPC drift velocity for Run " << RunNumber << ". Use default value " << G4TPC::tpc_drift_velocity_reco << " cm/ns" << std::endl;
0074 }
0075 else
0076 {
0077 CDBTTree cdbttree(tpc_dv_calib_dir);
0078 cdbttree.LoadCalibrations();
0079 G4TPC::tpc_drift_velocity_reco = cdbttree.GetSingleFloatValue("tpc_drift_velocity");
0080 std::cout << "Use calibrated TPC drift velocity for Run " << RunNumber << ": " << G4TPC::tpc_drift_velocity_reco << " cm/ns" << std::endl;
0081 }
0082
0083 TpcClusterZCrossingCorrection::_vdrift = G4TPC::tpc_drift_velocity_reco;
0084
0085 std::string tpc_tzero_calib_dir = CDBInterface::instance()->getUrl("TPC_TZERO_OFFSET");
0086 if (tpc_tzero_calib_dir.empty())
0087 {
0088 std::cout << "No calibrated TPC time zero for Run " << RunNumber << ". Use default value " << G4TPC::tpc_tzero_reco << " ns" << std::endl;
0089 }
0090 else
0091 {
0092 CDBTTree cdbttree(tpc_tzero_calib_dir);
0093 cdbttree.LoadCalibrations();
0094 G4TPC::tpc_tzero_reco = cdbttree.GetSingleFloatValue("tpc_tzero");
0095 std::cout << "Use calibrated TPC time offset for Run " << RunNumber << ": " << G4TPC::tpc_tzero_reco << " ns" << std::endl;
0096 }
0097 }
0098
0099 #endif