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 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   // fsPHENIX ECAL
0035   femc->SetfsPHENIXDetector(); 
0036   mapping_femc<< getenv("CALIBRATIONROOT") << "/ForwardEcal/mapping/towerMap_FEMC_fsPHENIX_v002.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 
0057   // fsPHENIX ECAL
0058   mapping_femc << getenv("CALIBRATIONROOT") <<
0059     "/ForwardEcal/mapping/towerMap_FEMC_fsPHENIX_v002.txt";
0060 
0061   RawTowerBuilderByHitIndex* tower_FEMC = new RawTowerBuilderByHitIndex("TowerBuilder_FEMC");
0062   tower_FEMC->Detector("FEMC");
0063   tower_FEMC->set_sim_tower_node_prefix("SIM");
0064   tower_FEMC->GeometryTableFile( mapping_femc.str() );
0065 
0066   se->registerSubsystem(tower_FEMC);
0067 
0068   // PbW crystals
0069   RawTowerDigitizer *TowerDigitizer1 = new RawTowerDigitizer("FEMCRawTowerDigitizer1");
0070   TowerDigitizer1->Detector("FEMC");
0071   TowerDigitizer1->TowerType(1); 
0072   TowerDigitizer1->Verbosity(verbosity);
0073   TowerDigitizer1->set_digi_algorithm(RawTowerDigitizer::kNo_digitization);
0074   se->registerSubsystem( TowerDigitizer1 );
0075 
0076   // PbSc towers
0077   RawTowerDigitizer *TowerDigitizer2 = new RawTowerDigitizer("FEMCRawTowerDigitizer2");
0078   TowerDigitizer2->Detector("FEMC");
0079   TowerDigitizer2->TowerType(2); 
0080   TowerDigitizer2->Verbosity(verbosity);
0081   TowerDigitizer2->set_digi_algorithm(RawTowerDigitizer::kNo_digitization);
0082   se->registerSubsystem( TowerDigitizer2 );
0083 
0084   // PbW crystals
0085   RawTowerCalibration *TowerCalibration1 = new RawTowerCalibration("FEMCRawTowerCalibration1");
0086   TowerCalibration1->Detector("FEMC");
0087   TowerCalibration1->TowerType(1);
0088   TowerCalibration1->Verbosity(verbosity);
0089   TowerCalibration1->set_calib_algorithm(RawTowerCalibration::kSimple_linear_calibration);
0090   TowerCalibration1->set_calib_const_GeV_ADC(1.0);  // sampling fraction = 1.0
0091   TowerCalibration1->set_pedstal_ADC(0);
0092   se->registerSubsystem( TowerCalibration1 );
0093 
0094   // PbSc towers
0095   RawTowerCalibration *TowerCalibration2 = new RawTowerCalibration("FEMCRawTowerCalibration2");
0096   TowerCalibration2->Detector("FEMC");
0097   TowerCalibration2->TowerType(2);
0098   TowerCalibration2->Verbosity(verbosity);
0099   TowerCalibration2->set_calib_algorithm(RawTowerCalibration::kSimple_linear_calibration);
0100   TowerCalibration2->set_calib_const_GeV_ADC(1.0/0.249);  // sampling fraction = 0.249 for e-
0101   TowerCalibration2->set_pedstal_ADC(0);
0102   se->registerSubsystem( TowerCalibration2 );
0103 
0104 }
0105 
0106 void FEMC_Clusters(int verbosity = 0) {
0107 
0108   gSystem->Load("libfun4all.so");
0109   gSystem->Load("libg4detectors.so");
0110   Fun4AllServer *se = Fun4AllServer::instance();
0111   
0112   RawClusterBuilderFwd* ClusterBuilder = new RawClusterBuilderFwd("FEMCRawClusterBuilderFwd");
0113   ClusterBuilder->Detector("FEMC");
0114   ClusterBuilder->Verbosity(verbosity);
0115   ClusterBuilder->set_threshold_energy(0.100);  
0116   se->registerSubsystem( ClusterBuilder );
0117   
0118   return;
0119 }
0120 
0121 void FEMC_Eval(std::string outputfile, int verbosity = 0)
0122 {
0123   gSystem->Load("libfun4all.so");
0124   gSystem->Load("libg4eval.so");
0125   Fun4AllServer *se = Fun4AllServer::instance();
0126 
0127   CaloEvaluator *eval = new CaloEvaluator("FEMCEVALUATOR", "FEMC", outputfile.c_str());
0128   eval->Verbosity(verbosity);
0129   se->registerSubsystem(eval);
0130 
0131   return;
0132 }