Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-06 08:12:54

0001 using namespace std;
0002 
0003 void
0004 FHCALInit()
0005 {
0006 }
0007 
0008 void FHCAL_Cells(int verbosity = 0) {
0009 
0010   gSystem->Load("libfun4all.so");
0011   gSystem->Load("libg4detectors.so");
0012   Fun4AllServer *se = Fun4AllServer::instance();
0013 
0014   PHG4ForwardCalCellReco *hc = new PHG4ForwardCalCellReco("FHCALCellReco");
0015   hc->Detector("FHCAL");
0016   se->registerSubsystem(hc);
0017   
0018   return;  
0019 }
0020 
0021 void
0022 FHCALSetup(PHG4Reco* g4Reco, const int absorberactive = 0)
0023 {
0024 
0025   gSystem->Load("libg4detectors.so");
0026 
0027   Fun4AllServer *se = Fun4AllServer::instance();
0028 
0029   /** Use dedicated FHCAL module */
0030   PHG4ForwardHcalSubsystem *hhcal = new PHG4ForwardHcalSubsystem("FHCAL");
0031 
0032   ostringstream mapping_hhcal;
0033 
0034   /* path to central copy of calibrations repositry */
0035   mapping_hhcal << getenv("CALIBRATIONROOT") ;
0036   mapping_hhcal << "/ForwardHcal/mapping/towerMap_FHCAL_v004.txt";
0037   cout << mapping_hhcal.str() << endl;
0038   //mapping_hhcal << "towerMap_FHCAL_latest.txt";
0039 
0040   hhcal->SetTowerMappingFile( mapping_hhcal.str() );
0041   hhcal->OverlapCheck(overlapcheck);
0042 
0043   if (absorberactive) hhcal->SetAbsorberActive();
0044 
0045   g4Reco->registerSubsystem( hhcal );
0046 
0047 }
0048 
0049 void FHCAL_Towers(int verbosity = 0) {
0050 
0051   gSystem->Load("libfun4all.so");
0052   gSystem->Load("libg4detectors.so");
0053   Fun4AllServer *se = Fun4AllServer::instance();
0054 
0055   ostringstream mapping_fhcal;
0056   mapping_fhcal << getenv("CALIBRATIONROOT") <<
0057     "/ForwardHcal/mapping/towerMap_FHCAL_v004.txt";
0058   //mapping_fhcal << "towerMap_FHCAL_latest.txt";
0059 
0060   RawTowerBuilderByHitIndex* tower_FHCAL = new RawTowerBuilderByHitIndex("TowerBuilder_FHCAL");
0061   tower_FHCAL->Detector("FHCAL");
0062   tower_FHCAL->set_sim_tower_node_prefix("SIM");
0063   tower_FHCAL->GeometryTableFile( mapping_fhcal.str() );
0064 
0065   se->registerSubsystem(tower_FHCAL);
0066 
0067   // const double FHCAL_photoelectron_per_GeV = 500;
0068 
0069   // RawTowerDigitizer *TowerDigitizer_FHCAL = new RawTowerDigitizer("FHCALRawTowerDigitizer");
0070 
0071   // TowerDigitizer_FHCAL->Detector("FHCAL");
0072   // TowerDigitizer_FHCAL->Verbosity(verbosity);
0073   // TowerDigitizer_FHCAL->set_raw_tower_node_prefix("RAW");
0074   // TowerDigitizer_FHCAL->set_digi_algorithm(RawTowerDigitizer::kSimple_photon_digitization);
0075   // TowerDigitizer_FHCAL->set_pedstal_central_ADC(0);
0076   // TowerDigitizer_FHCAL->set_pedstal_width_ADC(8);// eRD1 test beam setting
0077   // TowerDigitizer_FHCAL->set_photonelec_ADC(1);//not simulating ADC discretization error
0078   // TowerDigitizer_FHCAL->set_photonelec_yield_visible_GeV( FHCAL_photoelectron_per_GeV );
0079   // TowerDigitizer_FHCAL->set_zero_suppression_ADC(16); // eRD1 test beam setting
0080 
0081   // se->registerSubsystem( TowerDigitizer_FHCAL );
0082 
0083   // RawTowerCalibration *TowerCalibration_FHCAL = new RawTowerCalibration("FHCALRawTowerCalibration");
0084   // TowerCalibration_FHCAL->Detector("FHCAL");
0085   // TowerCalibration_FHCAL->Verbosity(verbosity);
0086   // TowerCalibration_FHCAL->set_calib_algorithm(RawTowerCalibration::kSimple_linear_calibration);
0087   // TowerCalibration_FHCAL->set_calib_const_GeV_ADC( 1. / FHCAL_photoelectron_per_GeV );
0088   // TowerCalibration_FHCAL->set_pedstal_ADC( 0 );
0089 
0090   // se->registerSubsystem( TowerCalibration_FHCAL );
0091 
0092   RawTowerDigitizer *TowerDigitizer = new RawTowerDigitizer("FHCALRawTowerDigitizer");
0093   TowerDigitizer->Detector("FHCAL");
0094   TowerDigitizer->Verbosity(verbosity);
0095   TowerDigitizer->set_digi_algorithm(RawTowerDigitizer::kNo_digitization);
0096   se->registerSubsystem( TowerDigitizer );
0097 
0098   RawTowerCalibration *TowerCalibration = new RawTowerCalibration("FHCALRawTowerCalibration");
0099   TowerCalibration->Detector("FHCAL");
0100   TowerCalibration->Verbosity(verbosity);
0101   TowerCalibration->set_calib_algorithm(RawTowerCalibration::kSimple_linear_calibration);
0102   TowerCalibration->set_calib_const_GeV_ADC(1./0.03898);  // calibrated with muons
0103   TowerCalibration->set_pedstal_ADC(0);
0104   se->registerSubsystem( TowerCalibration );
0105 
0106 
0107 }
0108 
0109 void FHCAL_Clusters(int verbosity = 0) {
0110 
0111   gSystem->Load("libfun4all.so");
0112   gSystem->Load("libg4detectors.so");
0113   Fun4AllServer *se = Fun4AllServer::instance();
0114   
0115   RawClusterBuilderFwd* ClusterBuilder = new RawClusterBuilderFwd("FHCALRawClusterBuilderFwd");
0116   ClusterBuilder->Detector("FHCAL");
0117   ClusterBuilder->Verbosity(verbosity);
0118   ClusterBuilder->set_threshold_energy(0.100);  
0119   se->registerSubsystem( ClusterBuilder );
0120   
0121   return;
0122 }
0123 
0124 void FHCAL_Eval(std::string outputfile, int verbosity = 0)
0125 {
0126   gSystem->Load("libfun4all.so");
0127   gSystem->Load("libg4eval.so");
0128   Fun4AllServer *se = Fun4AllServer::instance();
0129 
0130   CaloEvaluator *eval = new CaloEvaluator("FHCALEVALUATOR", "FHCAL", outputfile.c_str());
0131   eval->Verbosity(verbosity);
0132   se->registerSubsystem(eval);
0133 
0134   return;
0135 }