File indexing completed on 2025-08-03 08:20:27
0001 #ifndef MACRO_TRKRRECO_COSMICS_C
0002 #define MACRO_TRKRRECO_COSMICS_C
0003
0004 #include <G4_TrkrVariables.C>
0005
0006 #include <g4eval/SvtxTruthRecoTableEval.h>
0007 #include <trackingdiagnostics/TrackSeedTrackMapConverter.h>
0008
0009 #include <trackreco/MakeActsGeometry.h>
0010 #include <trackreco/PHActsTrkFitter.h>
0011 #include <trackreco/PHActsVertexPropagator.h>
0012 #include <trackreco/PHCosmicSeeder.h>
0013 #include <trackreco/PHCosmicSiliconPropagator.h>
0014 #include <trackreco/PHCosmicTrackMerger.h>
0015 #include <trackreco/PHCosmicsTrkFitter.h>
0016 #include <trackreco/PHMicromegasTpcTrackMatching.h>
0017 #include <trackreco/PHSiliconHelicalPropagator.h>
0018 #include <trackreco/PHSimpleVertexFinder.h>
0019 #include <trackreco/PHTpcDeltaZCorrection.h>
0020 #include <trackreco/PHTrackCleaner.h>
0021 #include <trackreco/SecondaryVertexFinder.h>
0022
0023 #include <tpc/TpcLoadDistortionCorrection.h>
0024
0025 #include <tpccalib/PHTpcResiduals.h>
0026
0027 #include <trackermillepedealignment/HelicalFitter.h>
0028 #include <trackermillepedealignment/MakeMilleFiles.h>
0029
0030 #include <fun4all/Fun4AllServer.h>
0031
0032 #include <string>
0033
0034 R__LOAD_LIBRARY(libtrack_reco.so)
0035 R__LOAD_LIBRARY(libtpccalib.so)
0036 R__LOAD_LIBRARY(libtpc.so)
0037 R__LOAD_LIBRARY(libtrackeralign.so)
0038 R__LOAD_LIBRARY(libTrackingDiagnostics.so)
0039 void convert_seeds()
0040 {
0041 Fun4AllServer *se = Fun4AllServer::instance();
0042 int verbosity = std::max(Enable::VERBOSITY, Enable::TRACKING_VERBOSITY);
0043
0044 TrackSeedTrackMapConverter *converter = new TrackSeedTrackMapConverter();
0045
0046
0047 converter->setTrackSeedName("SvtxTrackSeedContainer");
0048 converter->Verbosity(verbosity);
0049 converter->cosmics();
0050 converter->setFieldMap(G4MAGNET::magfield_tracking);
0051 se->registerSubsystem(converter);
0052 }
0053
0054 void Tracking_Reco_TrackSeed()
0055 {
0056
0057 int verbosity = std::max(Enable::VERBOSITY, Enable::TRACKING_VERBOSITY);
0058
0059
0060 auto se = Fun4AllServer::instance();
0061
0062 PHCosmicSeeder *seeder = new PHCosmicSeeder;
0063 seeder->adcCut(175.);
0064 seeder->Verbosity(verbosity);
0065 se->registerSubsystem(seeder);
0066
0067 PHCosmicSiliconPropagator *hprop = new PHCosmicSiliconPropagator("HelicalPropagator");
0068 hprop->Verbosity(verbosity);
0069 double fieldstrength = std::numeric_limits<double>::quiet_NaN();
0070 bool ConstField = isConstantField(G4MAGNET::magfield_tracking,fieldstrength);
0071 if (ConstField && fieldstrength < 0.1)
0072 {
0073 hprop->zero_field();
0074 }
0075 hprop->set_dca_z_cut(2);
0076 hprop->set_dca_xy_cut(1.);
0077 se->registerSubsystem(hprop);
0078
0079
0080
0081 auto merger = new PHCosmicTrackMerger("PHCosmicMerger");
0082 merger->Verbosity(verbosity);
0083 if (ConstField && fieldstrength < 0.1)
0084 {
0085 merger->zero_field();
0086 }
0087 se->registerSubsystem(merger);
0088
0089 PHCosmicSiliconPropagator *hprop2 = new PHCosmicSiliconPropagator("HelicalPropagator2");
0090 hprop2->Verbosity(verbosity);
0091 hprop2->resetSvtxSeedContainer();
0092 if (ConstField && fieldstrength < 0.1)
0093 {
0094 hprop2->zero_field();
0095 }
0096 hprop2->set_dca_z_cut(2.);
0097 hprop2->set_dca_xy_cut(0.5);
0098
0099 se->registerSubsystem(hprop2);
0100
0101 auto merger2 = new PHCosmicTrackMerger("PHCosmicMerger2");
0102 merger2->Verbosity(0);
0103 merger2->dca_xycut(0.5);
0104 merger2->dca_rzcut(1);
0105 if (ConstField && fieldstrength < 0.1)
0106 {
0107 merger2->zero_field();
0108 }
0109 se->registerSubsystem(merger2);
0110 }
0111
0112 void vertexing()
0113 {
0114 Fun4AllServer *se = Fun4AllServer::instance();
0115 int verbosity = std::max(Enable::VERBOSITY, Enable::TRACKING_VERBOSITY);
0116
0117 auto vtxfinder = new PHSimpleVertexFinder;
0118 vtxfinder->Verbosity(verbosity);
0119 se->registerSubsystem(vtxfinder);
0120 }
0121
0122 void Tracking_Reco_TrackFit()
0123 {
0124 int verbosity = std::max(Enable::VERBOSITY, Enable::TRACKING_VERBOSITY);
0125 auto se = Fun4AllServer::instance();
0126
0127
0128 auto deltazcorr = new PHTpcDeltaZCorrection;
0129 deltazcorr->Verbosity(verbosity);
0130 se->registerSubsystem(deltazcorr);
0131
0132
0133 auto actsFit = new PHCosmicsTrkFitter;
0134 actsFit->Verbosity(verbosity);
0135
0136
0137
0138 actsFit->useActsEvaluator(true);
0139 actsFit->useOutlierFinder(false);
0140 actsFit->setFieldMap(G4MAGNET::magfield_tracking);
0141 se->registerSubsystem(actsFit);
0142 }
0143
0144 void alignment(std::string datafilename = "mille_output_data_file",
0145 std::string steeringfilename = "mille_steer")
0146 {
0147 Fun4AllServer *se = Fun4AllServer::instance();
0148 int verbosity = std::max(Enable::VERBOSITY, Enable::TRACKING_VERBOSITY);
0149
0150 auto mille = new MakeMilleFiles;
0151 mille->Verbosity(verbosity);
0152 mille->set_datafile_name(datafilename + ".bin");
0153 mille->set_steeringfile_name(steeringfilename + ".txt");
0154
0155 se->registerSubsystem(mille);
0156
0157 auto helical = new HelicalFitter;
0158 helical->Verbosity(0);
0159 helical->set_datafile_name(datafilename + "_helical.bin");
0160 helical->set_steeringfile_name(steeringfilename + "_helical.txt");
0161
0162 se->registerSubsystem(helical);
0163 }
0164
0165 void Tracking_Reco()
0166 {
0167 Tracking_Reco_TrackSeed();
0168 if (G4TRACKING::convert_seeds_to_svtxtracks)
0169 {
0170 convert_seeds();
0171 }
0172 else
0173 {
0174 Tracking_Reco_TrackFit();
0175 }
0176
0177 vertexing();
0178
0179 if (G4TRACKING::use_alignment)
0180 {
0181 alignment();
0182 }
0183 }
0184
0185 #endif