Back to home page

sPhenix code displayed by LXR

 
 

    


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   /** Use dedicated EEMC module */
0028   PHG4CrystalCalorimeterSubsystem *eemc = new PHG4CrystalCalorimeterSubsystem("EEMC");
0029 
0030   /* path to central copy of calibrations repositry */
0031   ostringstream mapping_eemc;
0032 
0033   /* Use non-projective geometry */
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   /* register Ecal module */
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   /* Calorimeter digitization */
0066 
0067   // CMS lead tungstate barrel ECAL at 18 degree centrigrade: 4.5 photoelectrons per MeV
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);// eRD1 test beam setting
0077   TowerDigitizer_EEMC->set_photonelec_ADC(1);//not simulating ADC discretization error
0078   TowerDigitizer_EEMC->set_photonelec_yield_visible_GeV( EEMC_photoelectron_per_GeV );
0079   TowerDigitizer_EEMC->set_zero_suppression_ADC(16); // eRD1 test beam setting
0080 
0081   se->registerSubsystem( TowerDigitizer_EEMC );
0082 
0083 
0084   /* Calorimeter calibration */
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 }