Back to home page

sPhenix code displayed by LXR

 
 

    


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;  // 120 - 80
0031   }
0032   else
0033   {
0034     TRACKING::reco_tpc_maxtime_sample = 420;
0035     TRACKING::reco_tpc_time_presample = 0;  // 80
0036   }
0037 }
0038 
0039 void TpcReadoutInit(const int RunNumber = 41989)
0040 {
0041   TRACKING::reco_tpc_is_configured = true;
0042   if (RunNumber < 45737)
0043   {
0044     // all Ar/CF4 runs
0045     G4TPC::tpc_drift_velocity_reco = (8.0 / 1000) * 107.0 / G4TPC::maxDriftLength;  // cm/ns
0046   }
0047   else if (RunNumber < 49515)
0048   {
0049     // Ar/CF4/N2 runs
0050     G4TPC::tpc_drift_velocity_reco = 0.007;  // cm/ns
0051   }
0052   else
0053   {
0054     // Ar/CF4/iC4H10
0055     /* default drift velocity from Xu-Dong's study */
0056     G4TPC::tpc_drift_velocity_reco = 0.00713;  // cm/ns
0057   }
0058 
0059   if (RunNumber >= 41624)
0060   {
0061     TRACKING::reco_tpc_maxtime_sample = 425;
0062     TRACKING::reco_tpc_time_presample = 40;  // 120 - 80
0063   }
0064   else
0065   {
0066     TRACKING::reco_tpc_maxtime_sample = 420;
0067     TRACKING::reco_tpc_time_presample = 0;  // 80
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   // either way
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