void Svtx_Reco(int verbosity = 0) { // reconstructs the Svtx with ITS innner detector (7 layers) // requires Svtx setup and Svtx cell routines // prefers calorimeter reconstruction prior (once projections are working) //--------------- // Load libraries //--------------- gSystem->Load("libfun4all.so"); gSystem->Load("libg4hough.so"); //--------------- // Fun4All server //--------------- Fun4AllServer *se = Fun4AllServer::instance(); //---------------------------------- // Digitize the cell energy into ADC //---------------------------------- // defaults to 8-bit ADC with MIP at 0.25% dynamic range PHG4SvtxDigitizer* digi = new PHG4SvtxDigitizer(); digi->Verbosity(verbosity); digi->set_adc_scale(0, 255, 1.0e-6); // 1.0 keV / bit digi->set_adc_scale(1, 255, 1.0e-6); // 1.0 keV / bit digi->set_adc_scale(2, 255, 1.6e-6); // 1.6 keV / bit digi->set_adc_scale(3, 255, 1.6e-6); // 1.6 keV / bit digi->set_adc_scale(4, 255, 1.6e-6); // 1.6 keV / bit digi->set_adc_scale(5, 255, 1.6e-6); // 1.6 keV / bit digi->set_adc_scale(6, 255, 1.6e-6); // 1.6 keV / bit se->registerSubsystem( digi ); //------------------------------------------ // Apply Live Area Inefficiency to Hit Cells //------------------------------------------ // defaults to 1.0 (fully active) PHG4SvtxDeadArea* deadarea = new PHG4SvtxDeadArea(); deadarea->Verbosity(verbosity); deadarea->set_hit_efficiency(0,0.99); // Leo says use 1% inefficiency deadarea->set_hit_efficiency(1,0.99); deadarea->set_hit_efficiency(2,0.99); deadarea->set_hit_efficiency(3,0.99); deadarea->set_hit_efficiency(4,0.99); deadarea->set_hit_efficiency(5,0.99); deadarea->set_hit_efficiency(6,0.99); se->registerSubsystem( deadarea ); //---------------------------------- // Apply MIP thresholds to Hit Cells //---------------------------------- PHG4SvtxThresholds* thresholds = new PHG4SvtxThresholds(); thresholds->Verbosity(verbosity); thresholds->set_threshold(0,0.25); thresholds->set_threshold(1,0.25); thresholds->set_threshold(2,0.25); thresholds->set_threshold(3,0.25); thresholds->set_threshold(4,0.25); thresholds->set_threshold(5,0.25); thresholds->set_threshold(6,0.25); //thresholds->set_use_thickness_mip(0, true); se->registerSubsystem( thresholds ); //--------------------- // Make SVTX clusters //--------------------- PHG4SvtxClusterizer* clusterizer = new PHG4SvtxClusterizer(); clusterizer->Verbosity(verbosity); clusterizer->set_threshold(0.33); se->registerSubsystem( clusterizer ); //--------------------- // Track reconstruction //--------------------- PHG4HoughTransform* hough = new PHG4HoughTransform(7,7); hough->set_mag_field(1.4); hough->Verbosity(verbosity); // ALICE ITS upgrade values for total thickness in X_0 hough->set_material(0, 0.003); hough->set_material(1, 0.003); hough->set_material(2, 0.003); hough->set_material(3, 0.008); hough->set_material(4, 0.008); hough->set_material(5, 0.008); hough->set_material(6, 0.008); hough->setPtRescaleFactor(0.9972/1.00117); hough->set_chi2_cut_init(5.0); //hough->set_chi2_cut_fast(60.0,0.0,100.0); // 10.0, 50.0, 75.0 hough->set_chi2_cut_fast(10.0,50.0,75.0); // 10.0, 50.0, 75.0 hough->set_chi2_cut_full(5.0); hough->set_ca_chi2_cut(5.0); //hough->setMaxClusterError(3.0); hough->setRejectGhosts(false); hough->setRemoveHits(false); hough->setCutOnDCA(true); se->registerSubsystem( hough ); //--------------------- // Ghost rejection //--------------------- PHG4TrackGhostRejection* rejection = new PHG4TrackGhostRejection(7); rejection->Verbosity(verbosity); rejection->set_max_shared_hits(3); se->registerSubsystem( rejection ); //------------------ // Track Projections //------------------ PHG4SvtxTrackProjection* projection = new PHG4SvtxTrackProjection(); projection->Verbosity(verbosity); se->registerSubsystem( projection ); //---------------------- // Beam Spot Calculation //---------------------- PHG4SvtxBeamSpotReco* beamspot = new PHG4SvtxBeamSpotReco(); beamspot->Verbosity(verbosity); se->registerSubsystem( beamspot ); return; }
void Svtx_Reco(int verbosity = 0) { //--------------- // Load libraries //--------------- gSystem->Load("libfun4all.so"); gSystem->Load("libg4hough.so"); //--------------- // Fun4All server //--------------- Fun4AllServer *se = Fun4AllServer::instance(); //---------------------------------- // Digitize the cell energy into ADC //---------------------------------- PHG4SvtxDigitizer* digi = new PHG4SvtxDigitizer(); digi->Verbosity(0); for (int i=0;i<n_svx_layer;++i) { digi->set_adc_scale(i, 255, 1.0e-6); } for (int i=n_svx_layer;i<63;++i) { digi->set_adc_scale(i, 10000, 1.0e-1); } se->registerSubsystem( digi ); //------------------------------------- // Apply Live Area Inefficiency to Hits //------------------------------------- // defaults to 1.0 (fully active) PHG4SvtxDeadArea* deadarea = new PHG4SvtxDeadArea(); deadarea->Verbosity(verbosity); deadarea->set_hit_efficiency(0,0.998); deadarea->set_hit_efficiency(1,0.998); deadarea->set_hit_efficiency(2,0.998); se->registerSubsystem( deadarea ); //----------------------------- // Apply MIP thresholds to Hits //----------------------------- PHG4SvtxThresholds* thresholds = new PHG4SvtxThresholds(); thresholds->Verbosity(verbosity); thresholds->set_threshold(0,0.33); thresholds->set_threshold(1,0.33); thresholds->set_threshold(2,0.33); thresholds->set_use_thickness_mip(0, true); se->registerSubsystem( thresholds ); //------------- // Cluster Hits //------------- PHG4TPCClusterizer* clusterizer = new PHG4TPCClusterizer("PHG4SvtxClusterizer",4,1);; se->registerSubsystem( clusterizer ); //--------------------- // Track reconstruction //--------------------- PHG4HoughTransformTPC* hough = new PHG4HoughTransformTPC(63,56); hough->set_mag_field(1.4); hough->set_use_vertex(true); hough->setRemoveHits(true); hough->setRejectGhosts(true); hough->set_min_pT(0.2); hough->set_chi2_cut_full( 3.0 ); hough->set_chi2_cut_init( 3.0 ); hough->setBinScale(1.0); hough->setZBinScale(1.0); hough->Verbosity(0); double mat_scale = 1.0; hough->set_material(0, mat_scale*0.003); hough->set_material(1, mat_scale*0.003); hough->set_material(2, mat_scale*0.003); for (int i=3;i<63;++i) { hough->set_material(i, mat_scale*0.06/60.); } hough->setUseCellSize(false); for (int i=3;i<63;++i) { hough->setFitErrorScale(i, 1./sqrt(12.)); } for (int i=3;i<63;++i) { hough->setVoteErrorScale(i, 0.2); } se->registerSubsystem( hough ); //------------------ // Track Projections //------------------ PHG4SvtxTrackProjection* projection = new PHG4SvtxTrackProjection(); projection->Verbosity(verbosity); se->registerSubsystem( projection ); //---------------------- // Beam Spot Calculation //---------------------- PHG4SvtxBeamSpotReco* beamspot = new PHG4SvtxBeamSpotReco(); beamspot->Verbosity(verbosity); se->registerSubsystem( beamspot ); return; }