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 FEMCInit()
0005 {
0006 }
0007 
0008 void FEMC_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("FEMCCellReco");
0015   hc->Detector("FEMC");
0016   se->registerSubsystem(hc);
0017 
0018   return;
0019 }
0020 
0021 void
0022 FEMCSetup(PHG4Reco* g4Reco, const int absorberactive = 0)
0023 {
0024 
0025   gSystem->Load("libg4detectors.so");
0026 
0027   Fun4AllServer *se = Fun4AllServer::instance();
0028 
0029   /** Use dedicated FEMC module */
0030   PHG4ForwardEcalSubsystem *femc = new PHG4ForwardEcalSubsystem("FEMC");
0031 
0032   ostringstream mapping_femc;
0033 
0034   // EIC ECAL
0035   femc->SetEICDetector();
0036   mapping_femc << getenv("CALIBRATIONROOT") << "/ForwardEcal/mapping/towerMap_FEMC_v005.txt";
0037 
0038   cout << mapping_femc.str() << endl;
0039 
0040   femc->SetTowerMappingFile( mapping_femc.str() );
0041   femc->OverlapCheck(overlapcheck);
0042 
0043   if (absorberactive)  femc->SetAbsorberActive();
0044 
0045   g4Reco->registerSubsystem( femc );
0046 
0047 }
0048 
0049 void FEMC_Towers(int verbosity = 0) {
0050 
0051   gSystem->Load("libfun4all.so");
0052   gSystem->Load("libg4detectors.so");
0053   Fun4AllServer *se = Fun4AllServer::instance();
0054 
0055   ostringstream mapping_femc;
0056   // EIC ECAL
0057   mapping_femc << getenv("CALIBRATIONROOT") << "/ForwardEcal/mapping/towerMap_FEMC_v005.txt";
0058 
0059   RawTowerBuilderByHitIndex* tower_FEMC = new RawTowerBuilderByHitIndex("TowerBuilder_FEMC");
0060   tower_FEMC->Detector("FEMC");
0061   tower_FEMC->set_sim_tower_node_prefix("SIM");
0062   tower_FEMC->GeometryTableFile( mapping_femc.str() );
0063 
0064   se->registerSubsystem(tower_FEMC);
0065 
0066   // PbSc towers
0067   RawTowerDigitizer *TowerDigitizer2 = new RawTowerDigitizer("FEMCRawTowerDigitizer2");
0068   TowerDigitizer2->Detector("FEMC");
0069   TowerDigitizer2->TowerType(2);
0070   TowerDigitizer2->Verbosity(verbosity);
0071   TowerDigitizer2->set_digi_algorithm(RawTowerDigitizer::kNo_digitization);
0072   se->registerSubsystem( TowerDigitizer2 );
0073 
0074   // PbSc towers
0075   RawTowerCalibration *TowerCalibration2 = new RawTowerCalibration("FEMCRawTowerCalibration2");
0076   TowerCalibration2->Detector("FEMC");
0077   TowerCalibration2->TowerType(2);
0078   TowerCalibration2->Verbosity(verbosity);
0079   TowerCalibration2->set_calib_algorithm(RawTowerCalibration::kSimple_linear_calibration);
0080   TowerCalibration2->set_calib_const_GeV_ADC(1.0/0.249);  // sampling fraction = 0.249 for e-
0081   TowerCalibration2->set_pedstal_ADC(0);
0082   se->registerSubsystem( TowerCalibration2 );
0083 
0084 }
0085 
0086 void FEMC_Clusters(int verbosity = 0) {
0087 
0088   gSystem->Load("libfun4all.so");
0089   gSystem->Load("libg4detectors.so");
0090   Fun4AllServer *se = Fun4AllServer::instance();
0091 
0092   RawClusterBuilderFwd* ClusterBuilder = new RawClusterBuilderFwd("FEMCRawClusterBuilderFwd");
0093   ClusterBuilder->Detector("FEMC");
0094   ClusterBuilder->Verbosity(verbosity);
0095   se->registerSubsystem( ClusterBuilder );
0096 
0097   return;
0098 }
0099 
0100 void FEMC_Eval(std::string outputfile, int verbosity = 0)
0101 {
0102   gSystem->Load("libfun4all.so");
0103   gSystem->Load("libg4eval.so");
0104   Fun4AllServer *se = Fun4AllServer::instance();
0105 
0106   CaloEvaluator *eval = new CaloEvaluator("FEMCEVALUATOR", "FEMC", outputfile.c_str());
0107   eval->Verbosity(verbosity);
0108   se->registerSubsystem(eval);
0109 
0110   return;
0111 }