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
0046
0047 gSystem->Load("libg4dst.so");
0048
0049
0050 Fun4AllServer *se = Fun4AllServer::instance();
0051 se->Verbosity(0);
0052 CDBInterface::instance()->Verbosity(1);
0053
0054
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
0075
0076
0077 CaloTowerStatus *statusEMC = new CaloTowerStatus("TowerStatusEMC");
0078
0079 statusEMC->set_detector_type(CaloTowerDefs::CEMC);
0080 statusEMC->set_doAbortNoHotMap(true);
0081 statusEMC->set_inputNodePrefix("TOWERINFO_CALIB_");
0082
0083 se->registerSubsystem(statusEMC);
0084
0085
0086
0087
0088
0089
0090
0091
0092 RawClusterBuilderTemplate *ClusterBuilder = new RawClusterBuilderTemplate("EmcRawClusterBuilderTemplate");
0093 ClusterBuilder->Detector("CEMC");
0094 ClusterBuilder->set_threshold_energy(0.03);
0095 std::string emc_prof = getenv("CALIBRATIONROOT");
0096 emc_prof += "/EmcProfile/CEMCprof_Thresh30MeV.root";
0097 ClusterBuilder->LoadProfile(emc_prof);
0098 ClusterBuilder->set_UseTowerInfo(1);
0099
0100 se->registerSubsystem(ClusterBuilder);
0101
0102
0103 neutralMesonTSSA *eval = new neutralMesonTSSA("neutralMesonTSSA", outname_hists, outname_trees, isMC);
0104
0105
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