void FHCAL_Towers(int verbosity = 0) { gSystem->Load("libfun4all.so"); gSystem->Load("libg4detectors.so"); Fun4AllServer *se = Fun4AllServer::instance(); ostringstream mapping_fhcal; mapping_fhcal << getenv("CALIBRATIONROOT") << "/ForwardHcal/mapping/towerMap_FHCAL_v004.txt"; //mapping_fhcal << "towerMap_FHCAL_latest.txt"; RawTowerBuilderByHitIndex* tower_FHCAL = new RawTowerBuilderByHitIndex("TowerBuilder_FHCAL"); tower_FHCAL->Detector("FHCAL"); tower_FHCAL->set_sim_tower_node_prefix("SIM"); tower_FHCAL->GeometryTableFile( mapping_fhcal.str() ); se->registerSubsystem(tower_FHCAL); // const double FHCAL_photoelectron_per_GeV = 500; // RawTowerDigitizer *TowerDigitizer_FHCAL = new RawTowerDigitizer("FHCALRawTowerDigitizer"); // TowerDigitizer_FHCAL->Detector("FHCAL"); // TowerDigitizer_FHCAL->Verbosity(verbosity); // TowerDigitizer_FHCAL->set_raw_tower_node_prefix("RAW"); // TowerDigitizer_FHCAL->set_digi_algorithm(RawTowerDigitizer::kSimple_photon_digitization); // TowerDigitizer_FHCAL->set_pedstal_central_ADC(0); // TowerDigitizer_FHCAL->set_pedstal_width_ADC(8);// eRD1 test beam setting // TowerDigitizer_FHCAL->set_photonelec_ADC(1);//not simulating ADC discretization error // TowerDigitizer_FHCAL->set_photonelec_yield_visible_GeV( FHCAL_photoelectron_per_GeV ); // TowerDigitizer_FHCAL->set_zero_suppression_ADC(16); // eRD1 test beam setting // se->registerSubsystem( TowerDigitizer_FHCAL ); // RawTowerCalibration *TowerCalibration_FHCAL = new RawTowerCalibration("FHCALRawTowerCalibration"); // TowerCalibration_FHCAL->Detector("FHCAL"); // TowerCalibration_FHCAL->Verbosity(verbosity); // TowerCalibration_FHCAL->set_calib_algorithm(RawTowerCalibration::kSimple_linear_calibration); // TowerCalibration_FHCAL->set_calib_const_GeV_ADC( 1. / FHCAL_photoelectron_per_GeV ); // TowerCalibration_FHCAL->set_pedstal_ADC( 0 ); // se->registerSubsystem( TowerCalibration_FHCAL ); RawTowerDigitizer *TowerDigitizer = new RawTowerDigitizer("FHCALRawTowerDigitizer"); TowerDigitizer->Detector("FHCAL"); TowerDigitizer->Verbosity(verbosity); TowerDigitizer->set_digi_algorithm(RawTowerDigitizer::kNo_digitization); se->registerSubsystem( TowerDigitizer ); RawTowerCalibration *TowerCalibration = new RawTowerCalibration("FHCALRawTowerCalibration"); TowerCalibration->Detector("FHCAL"); TowerCalibration->Verbosity(verbosity); TowerCalibration->set_calib_algorithm(RawTowerCalibration::kSimple_linear_calibration); TowerCalibration->set_calib_const_GeV_ADC(1./0.03898); // calibrated with muons TowerCalibration->set_pedstal_ADC(0); se->registerSubsystem( TowerCalibration ); }
void CEMC_Towers(int verbosity = 0) { gSystem->Load("libfun4all.so"); gSystem->Load("libg4detectors.so"); Fun4AllServer *se = Fun4AllServer::instance(); RawTowerBuilder *TowerBuilder = new RawTowerBuilder("EmcRawTowerBuilder"); TowerBuilder->Detector("CEMC"); TowerBuilder->set_sim_tower_node_prefix("SIM"); TowerBuilder->Verbosity(verbosity); se->registerSubsystem( TowerBuilder ); double sampling_fraction = 1; if (Cemc_spacal_configuration == PHG4CylinderGeom_Spacalv1::k1DProjectiveSpacal) { sampling_fraction = 0.0234335; //from production:/gpfs02/phenix/prod/sPHENIX/preCDR/pro.1-beta.3/single_particle/spacal1d/zerofield/G4Hits_sPHENIX_e-_eta0_8GeV.root } else if (Cemc_spacal_configuration == PHG4CylinderGeom_Spacalv1::k2DProjectiveSpacal) { // sampling_fraction = 0.02244; //from production: /gpfs02/phenix/prod/sPHENIX/preCDR/pro.1-beta.3/single_particle/spacal2d/zerofield/G4Hits_sPHENIX_e-_eta0_8GeV.root sampling_fraction = 2.36081e-02;//from production: /gpfs02/phenix/prod/sPHENIX/preCDR/pro.1-beta.5/single_particle/spacal2d/zerofield/G4Hits_sPHENIX_e-_eta0_8GeV.root } else { std::cout << "G4_CEmc_Spacal.C::G4_CEmc_Spacal - Fatal Error - unrecognized SPACAL configuration #" << Cemc_spacal_configuration<<". Force exiting..." << std::endl; exit(-1); return ; } static const double photoelectron_per_GeV = 500;//500 photon per total GeV deposition RawTowerDigitizer *TowerDigitizer = new RawTowerDigitizer("EmcRawTowerDigitizer"); TowerDigitizer->Detector("CEMC"); TowerDigitizer->Verbosity(verbosity); TowerDigitizer->set_digi_algorithm(RawTowerDigitizer::kSimple_photon_digitalization); TowerDigitizer->set_pedstal_central_ADC(0); TowerDigitizer->set_pedstal_width_ADC(8);// eRD1 test beam setting TowerDigitizer->set_photonelec_ADC(1);//not simulating ADC discretization error TowerDigitizer->set_photonelec_yield_visible_GeV( photoelectron_per_GeV/sampling_fraction ); TowerDigitizer->set_zero_suppression_ADC(16); // eRD1 test beam setting se->registerSubsystem( TowerDigitizer ); RawTowerCalibration *TowerCalibration = new RawTowerCalibration("EmcRawTowerCalibration"); TowerCalibration->Detector("CEMC"); TowerCalibration->Verbosity(verbosity); TowerCalibration->set_calib_algorithm(RawTowerCalibration::kSimple_linear_calibration); TowerCalibration->set_calib_const_GeV_ADC(1./photoelectron_per_GeV); TowerCalibration->set_pedstal_ADC(0); se->registerSubsystem( TowerCalibration ); return; }
void CEMC_Towers(int verbosity = 0) { gSystem->Load("libfun4all.so"); gSystem->Load("libg4detectors.so"); Fun4AllServer *se = Fun4AllServer::instance(); RawTowerBuilder *TowerBuilder = new RawTowerBuilder("EmcRawTowerBuilder"); TowerBuilder->Detector("CEMC"); TowerBuilder->set_sim_tower_node_prefix("SIM"); TowerBuilder->Verbosity(verbosity); se->registerSubsystem(TowerBuilder); double sampling_fraction = 1; if (Cemc_spacal_configuration == PHG4CylinderGeom_Spacalv1::k1DProjectiveSpacal) { sampling_fraction = 0.0234335; //from production:/gpfs02/phenix/prod/sPHENIX/preCDR/pro.1-beta.3/single_particle/spacal1d/zerofield/G4Hits_sPHENIX_e-_eta0_8GeV.root } else if (Cemc_spacal_configuration == PHG4CylinderGeom_Spacalv1::k2DProjectiveSpacal) { // sampling_fraction = 0.02244; //from production: /gpfs02/phenix/prod/sPHENIX/preCDR/pro.1-beta.3/single_particle/spacal2d/zerofield/G4Hits_sPHENIX_e-_eta0_8GeV.root // sampling_fraction = 2.36081e-02; //from production: /gpfs02/phenix/prod/sPHENIX/preCDR/pro.1-beta.5/single_particle/spacal2d/zerofield/G4Hits_sPHENIX_e-_eta0_8GeV.root // sampling_fraction = 1.90951e-02; // 2017 Tilt porjective SPACAL, 8 GeV photon, eta = 0.3 - 0.4 sampling_fraction = 2e-02; // 2017 Tilt porjective SPACAL, tower-by-tower calibration } else { std::cout << "G4_CEmc_Spacal.C::CEMC_Towers - Fatal Error - unrecognized SPACAL configuration #" << Cemc_spacal_configuration << ". Force exiting..." << std::endl; exit(-1); return; } static const double photoelectron_per_GeV = 500; //500 photon per total GeV deposition RawTowerDigitizer *TowerDigitizer = new RawTowerDigitizer("EmcRawTowerDigitizer"); TowerDigitizer->Detector("CEMC"); TowerDigitizer->Verbosity(verbosity); TowerDigitizer->set_digi_algorithm(RawTowerDigitizer::kSimple_photon_digitization); TowerDigitizer->set_pedstal_central_ADC(0); TowerDigitizer->set_pedstal_width_ADC(8); // eRD1 test beam setting TowerDigitizer->set_photonelec_ADC(1); //not simulating ADC discretization error TowerDigitizer->set_photonelec_yield_visible_GeV(photoelectron_per_GeV / sampling_fraction); TowerDigitizer->set_zero_suppression_ADC(16); // eRD1 test beam setting se->registerSubsystem(TowerDigitizer); if (Cemc_spacal_configuration == PHG4CylinderGeom_Spacalv1::k1DProjectiveSpacal) { RawTowerCalibration *TowerCalibration = new RawTowerCalibration("EmcRawTowerCalibration"); TowerCalibration->Detector("CEMC"); TowerCalibration->Verbosity(verbosity); TowerCalibration->set_calib_algorithm(RawTowerCalibration::kSimple_linear_calibration); TowerCalibration->set_calib_const_GeV_ADC(1. / photoelectron_per_GeV); TowerCalibration->set_pedstal_ADC(0); se->registerSubsystem(TowerCalibration); } else if (Cemc_spacal_configuration == PHG4CylinderGeom_Spacalv1::k2DProjectiveSpacal) { RawTowerCalibration *TowerCalibration = new RawTowerCalibration("EmcRawTowerCalibration"); TowerCalibration->Detector("CEMC"); TowerCalibration->Verbosity(verbosity); TowerCalibration->set_calib_algorithm(RawTowerCalibration::kTower_by_tower_calibration); TowerCalibration->GetCalibrationParameters().ReadFromFile("CEMC","xml",0,0, string(getenv("CALIBRATIONROOT")) + string("/CEMC/TowerCalib_2017ProjTilted/")); // calibration database TowerCalibration->set_calib_const_GeV_ADC(1. / photoelectron_per_GeV / 0.9715 ); // overall energy scale based on 4-GeV photon simulations TowerCalibration->set_pedstal_ADC(0); se->registerSubsystem(TowerCalibration); } else { std::cout << "G4_CEmc_Spacal.C::CEMC_Towers - Fatal Error - unrecognized SPACAL configuration #" << Cemc_spacal_configuration << ". Force exiting..." << std::endl; exit(-1); return; } return; }