File indexing completed on 2025-12-17 09:14:37
0001 using namespace std;
0002
0003 void
0004 EEMCInit()
0005 {
0006 }
0007
0008 void EEMC_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("EEMCCellReco");
0015 hc->Detector("EEMC");
0016 se->registerSubsystem(hc);
0017
0018 return;
0019 }
0020
0021 void
0022 EEMCSetup(PHG4Reco* g4Reco, const int absorberactive = 0)
0023 {
0024
0025 gSystem->Load("libg4detectors.so");
0026
0027
0028 PHG4CrystalCalorimeterSubsystem *eemc = new PHG4CrystalCalorimeterSubsystem("EEMC");
0029
0030
0031 ostringstream mapping_eemc;
0032
0033
0034 mapping_eemc << getenv("CALIBRATIONROOT") << "/CrystalCalorimeter/mapping/towerMap_EEMC_v004.txt";
0035 cout << mapping_eemc.str() << endl;
0036
0037 eemc->SetTowerMappingFile( mapping_eemc.str() );
0038 eemc->OverlapCheck(overlapcheck);
0039
0040 if (absorberactive) eemc->SetAbsorberActive();
0041
0042
0043 g4Reco->registerSubsystem( eemc );
0044
0045 }
0046
0047 void EEMC_Towers(int verbosity = 0) {
0048
0049 gSystem->Load("libfun4all.so");
0050 gSystem->Load("libg4detectors.so");
0051 Fun4AllServer *se = Fun4AllServer::instance();
0052
0053 ostringstream mapping_eemc;
0054 mapping_eemc << getenv("CALIBRATIONROOT") <<
0055 "/CrystalCalorimeter/mapping/towerMap_EEMC_v004.txt";
0056
0057 RawTowerBuilderByHitIndex* tower_EEMC = new RawTowerBuilderByHitIndex("TowerBuilder_EEMC");
0058 tower_EEMC->Detector("EEMC");
0059 tower_EEMC->set_sim_tower_node_prefix("SIM");
0060 tower_EEMC->GeometryTableFile( mapping_eemc.str() );
0061
0062 se->registerSubsystem(tower_EEMC);
0063
0064
0065
0066
0067
0068 const double EEMC_photoelectron_per_GeV = 4500;
0069
0070 RawTowerDigitizer *TowerDigitizer_EEMC = new RawTowerDigitizer("EEMCRawTowerDigitizer");
0071 TowerDigitizer_EEMC->Detector("EEMC");
0072 TowerDigitizer_EEMC->Verbosity(verbosity);
0073 TowerDigitizer_EEMC->set_raw_tower_node_prefix("RAW");
0074 TowerDigitizer_EEMC->set_digi_algorithm(RawTowerDigitizer::kSimple_photon_digitization);
0075 TowerDigitizer_EEMC->set_pedstal_central_ADC(0);
0076 TowerDigitizer_EEMC->set_pedstal_width_ADC(8);
0077 TowerDigitizer_EEMC->set_photonelec_ADC(1);
0078 TowerDigitizer_EEMC->set_photonelec_yield_visible_GeV( EEMC_photoelectron_per_GeV );
0079 TowerDigitizer_EEMC->set_zero_suppression_ADC(16);
0080
0081 se->registerSubsystem( TowerDigitizer_EEMC );
0082
0083
0084
0085
0086 RawTowerCalibration *TowerCalibration_EEMC = new RawTowerCalibration("EEMCRawTowerCalibration");
0087 TowerCalibration_EEMC->Detector("EEMC");
0088 TowerCalibration_EEMC->Verbosity(verbosity);
0089 TowerCalibration_EEMC->set_calib_algorithm(RawTowerCalibration::kSimple_linear_calibration);
0090 TowerCalibration_EEMC->set_calib_const_GeV_ADC( 1. / EEMC_photoelectron_per_GeV );
0091 TowerCalibration_EEMC->set_pedstal_ADC( 0 );
0092
0093 se->registerSubsystem( TowerCalibration_EEMC );
0094
0095 }
0096
0097 void EEMC_Clusters(int verbosity = 0) {
0098
0099 gSystem->Load("libfun4all.so");
0100 gSystem->Load("libg4detectors.so");
0101 Fun4AllServer *se = Fun4AllServer::instance();
0102
0103 RawClusterBuilderFwd* ClusterBuilder = new RawClusterBuilderFwd("EEMCRawClusterBuilderFwd");
0104 ClusterBuilder->Detector("EEMC");
0105 ClusterBuilder->Verbosity(verbosity);
0106 se->registerSubsystem( ClusterBuilder );
0107
0108 return;
0109 }
0110
0111 void EEMC_Eval(std::string outputfile, int verbosity = 0)
0112 {
0113 gSystem->Load("libfun4all.so");
0114 gSystem->Load("libg4eval.so");
0115 Fun4AllServer *se = Fun4AllServer::instance();
0116
0117 CaloEvaluator *eval = new CaloEvaluator("EEMCEVALUATOR", "EEMC", outputfile.c_str());
0118 eval->Verbosity(verbosity);
0119 se->registerSubsystem(eval);
0120
0121 return;
0122 }