Back to home page

sPhenix code displayed by LXR

 
 

    


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

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