Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-05 08:13:32

0001 #pragma once
0002 
0003 #include <fun4all/Fun4AllDstInputManager.h>
0004 #include <fun4all/Fun4AllInputManager.h>
0005 #include <fun4all/Fun4AllServer.h>
0006 #include <fun4all/Fun4AllUtils.h>
0007 #include <ffamodules/CDBInterface.h>
0008 #include <phool/recoConsts.h>
0009 
0010 #include <GlobalVariables.C>
0011 #include <G4_Global.C>
0012 #include <G4_Mbd.C>
0013 
0014 #include <neutralmesontssa/neutralMesonTSSA.h>
0015 
0016 #include <caloreco/CaloTowerCalib.h>
0017 #include <caloreco/RawClusterBuilderTemplate.h>
0018 #include <caloreco/RawClusterPositionCorrection.h>
0019 
0020 #include <Calo_Calib.C>
0021 
0022 R__LOAD_LIBRARY(libfun4all.so)
0023 R__LOAD_LIBRARY(libcalo_reco.so)
0024 R__LOAD_LIBRARY(libneutralMesonTSSA.so)
0025 
0026 std::string GetFirstFile(const char* filelist)
0027 {
0028   std::string firstfile = "";
0029   ifstream in(filelist);
0030   if (in.good())
0031   {
0032     std::getline(in, firstfile);
0033   }
0034   return firstfile;
0035 }
0036 
0037 void Fun4All_neutralMesonTSSA(
0038                      int nEvents = 1,
0039                      const char *filelist1 = "dst_calo_cluster.list",
0040                      const char *filelist2 = "dst_truth.list",
0041              const string outname_hists = "neutralMesonTSSA_hists.root",
0042              const string outname_trees = "neutralMesonTSSA_trees.root",
0043              bool isMC = false)
0044 {
0045   // this convenience library knows all our i/o objects so you don't
0046   // have to figure out what is in each dst type
0047   gSystem->Load("libg4dst.so");
0048   /* gSystem->Load("libneutralMesonTSSA.so"); */
0049 
0050   Fun4AllServer *se = Fun4AllServer::instance();
0051   se->Verbosity(0);  // set it to 1 if you want event printouts
0052   CDBInterface::instance()->Verbosity(1);
0053 
0054   // conditions DB flags and timestamp
0055   recoConsts *rc = recoConsts::instance();
0056   rc->set_StringFlag("CDB_GLOBALTAG", "ProdA_2024");
0057   std::string firstfile = GetFirstFile(filelist1);
0058   pair<int, int> runseg = Fun4AllUtils::GetRunSegment(firstfile);
0059   int runnumber = runseg.first;
0060   rc->set_uint64Flag("TIMESTAMP", runnumber);
0061 
0062   Fun4AllInputManager *inCluster = new Fun4AllDstInputManager("DSTCaloCluster");
0063   std::cout << "Adding file list " << filelist1 << std::endl;
0064   inCluster->AddListFile(filelist1,1);
0065   se->registerInputManager(inCluster);
0066 
0067   Fun4AllInputManager *inTruth = new Fun4AllDstInputManager("DSTTruth");
0068   if (isMC) {
0069       std::cout << "Adding file list " << filelist2 << std::endl;
0070       inTruth -> AddListFile(filelist2,1);
0071       se -> registerInputManager(inTruth);
0072   }
0073 
0074   // Tower calibrations & masking
0075   /* Process_Calo_Calib();  // this line handles the calibrations, dead/hot tower masking and reruns the clusterizer */
0076 
0077   CaloTowerStatus *statusEMC = new CaloTowerStatus("TowerStatusEMC");
0078   /* statusEMC->Verbosity(1); */
0079   statusEMC->set_detector_type(CaloTowerDefs::CEMC);
0080   statusEMC->set_doAbortNoHotMap(true);
0081   statusEMC->set_inputNodePrefix("TOWERINFO_CALIB_");
0082   /* statusEMC->set_time_cut(1); */
0083   se->registerSubsystem(statusEMC);
0084 
0085   /* CaloTowerCalib *calibEMC = new CaloTowerCalib("CEMCCALIB"); */
0086   /* calibEMC->set_detector_type(CaloTowerDefs::CEMC); */
0087   /* calibEMC->set_directURL("/sphenix/u/bseidlitz/work/temp24Calib/emcalCalib_withMask_may25.root"); */
0088   /* se->registerSubsystem(calibEMC); */
0089 
0090   // Clusterizer
0091   /*/1* */
0092   RawClusterBuilderTemplate *ClusterBuilder = new RawClusterBuilderTemplate("EmcRawClusterBuilderTemplate");
0093   ClusterBuilder->Detector("CEMC");
0094   ClusterBuilder->set_threshold_energy(0.03);  // for when using basic calibration
0095   std::string emc_prof = getenv("CALIBRATIONROOT");
0096   emc_prof += "/EmcProfile/CEMCprof_Thresh30MeV.root";
0097   ClusterBuilder->LoadProfile(emc_prof);
0098   ClusterBuilder->set_UseTowerInfo(1);  // to use towerinfo objects rather than old RawTower
0099   /* ClusterBuilder->setOutputClusterNodeName("CLUSTERINFO_CEMC2"); */
0100   se->registerSubsystem(ClusterBuilder);
0101   /* *1/ */
0102 
0103   neutralMesonTSSA *eval = new neutralMesonTSSA("neutralMesonTSSA", outname_hists, outname_trees, isMC);
0104   /* eval->set_min_clusterE(0.5); */
0105   /* eval->set_max_clusterChi2(4.0); */
0106   se -> registerSubsystem(eval);
0107   
0108   se->run(nEvents);
0109   se->End();
0110   
0111   delete se;
0112   cout << "Analysis Completed" << endl;
0113   
0114   gSystem->Exit(0);
0115 }
0116