File indexing completed on 2026-04-04 08:12:07
0001 #include <string>
0002 #include <iostream>
0003 #include <format>
0004
0005 #include <fun4all/Fun4AllBase.h>
0006 #include <fun4all/Fun4AllUtils.h>
0007 #include <fun4all/Fun4AllServer.h>
0008 #include <fun4all/Fun4AllInputManager.h>
0009 #include <fun4all/Fun4AllDstInputManager.h>
0010 #include <fun4all/SubsysReco.h>
0011 #include <ffamodules/CDBInterface.h>
0012 #include <Calo_Calib.C>
0013
0014 #include <caloreco/RawClusterBuilderTopo.h>
0015
0016 #include <jetbase/JetReco.h>
0017 #include <jetbase/TowerJetInput.h>
0018 #include <jetbackground/FastJetAlgoSub.h>
0019
0020 #include <g4jets/TruthJetInput.h>
0021
0022
0023
0024
0025
0026
0027 #include <jetbackground/TimingCut.h>
0028
0029 #include <vandyskimmer/VandyJetDSTSkimmer.h>
0030
0031
0032
0033 R__LOAD_LIBRARY(libfun4all.so)
0034 R__LOAD_LIBRARY(libfun4allraw.so)
0035 R__LOAD_LIBRARY(libcalo_io.so)
0036 R__LOAD_LIBRARY(libffamodules.so)
0037 R__LOAD_LIBRARY(libVandySkimmer.so)
0038 R__LOAD_LIBRARY(libjetbase.so)
0039 R__LOAD_LIBRARY(libjetbackground.so)
0040
0041 void Fun4All_VandySkimmer(const std::string caloDSTlist, const std::string jetDSTlist, const std::string outDir = "/sphenix/tg/tg01/jets/bkimelman/wEEC/")
0042 {
0043
0044 bool doSim = false;
0045
0046 Fun4AllServer* se=Fun4AllServer::instance();
0047 se->Verbosity(0);
0048
0049 std::ifstream ifs(caloDSTlist);
0050 std::string filepath;
0051
0052 int runnumber = 0;
0053
0054 std::getline(ifs,filepath);
0055 std::pair<int,int> runseg = Fun4AllUtils::GetRunSegment(filepath);
0056 runnumber = runseg.first;
0057
0058 Fun4AllInputManager *inCalo = new Fun4AllDstInputManager("InputManagerCalo");
0059 inCalo->AddListFile(caloDSTlist);
0060 se->registerInputManager(inCalo);
0061
0062 Fun4AllInputManager *inJet = new Fun4AllDstInputManager("InputManagerJet");
0063 inJet->AddListFile(jetDSTlist);
0064 se->registerInputManager(inJet);
0065
0066 auto rc = recoConsts::instance();
0067 rc->set_StringFlag("CDB_GLOBALTAG", "ProdA_2024");
0068 rc->set_uint64Flag("TIMESTAMP", runnumber);
0069 CDBInterface::instance()->Verbosity(0);
0070 Process_Calo_Calib();
0071
0072 RawClusterBuilderTopo* ClusterBuilder = new RawClusterBuilderTopo("HcalRawClusterBuilderTopo");
0073 ClusterBuilder->Verbosity(0);
0074 ClusterBuilder->set_nodename("TOPOCLUSTER_ALLCALO");
0075 ClusterBuilder->set_enable_HCal(true);
0076 ClusterBuilder->set_enable_EMCal(true);
0077 ClusterBuilder->set_noise(0.0053, 0.0351, 0.0684);
0078 ClusterBuilder->set_significance(4.0, 2.0, 1.0);
0079 ClusterBuilder->allow_corner_neighbor(true);
0080 ClusterBuilder->set_do_split(true);
0081 ClusterBuilder->set_minE_local_max(1.0, 2.0, 0.5);
0082 ClusterBuilder->set_R_shower(0.025);
0083 ClusterBuilder->set_use_only_good_towers(true);
0084 ClusterBuilder->set_absE(true);
0085 se->registerSubsystem(ClusterBuilder);
0086
0087 JetReco *towerjetreco = new JetReco("towerJetReco");
0088 TowerJetInput* emtji = new TowerJetInput(Jet::CEMC_TOWERINFO_RETOWER,"TOWERINFO_CALIB_RETOWER");
0089 TowerJetInput* ohtji = new TowerJetInput(Jet::HCALIN_TOWERINFO,"TOWERINFO_CALIB");
0090 TowerJetInput* ihtji = new TowerJetInput(Jet::HCALOUT_TOWERINFO,"TOWERINFO_CALIB");
0091 emtji->set_GlobalVertexType(GlobalVertex::VTXTYPE::MBD);
0092 zzohtji->set_GlobalVertexType(GlobalVertex::VTXTYPE::MBD);
0093 ihtji->set_GlobalVertexType(GlobalVertex::VTXTYPE::MBD);
0094 towerjetreco->add_input(emtji);
0095 towerjetreco->add_input(ohtji);
0096 towerjetreco->add_input(ihtji);
0097 towerjetreco->add_algo(new FastJetAlgoSub(Jet::ANTIKT, 0.2), "AntiKt_r02");
0098 towerjetreco->add_algo(new FastJetAlgoSub(Jet::ANTIKT, 0.3), "AntiKt_r03");
0099 towerjetreco->add_algo(new FastJetAlgoSub(Jet::ANTIKT, 0.4), "AntiKt_r04");
0100 towerjetreco->add_algo(new FastJetAlgoSub(Jet::ANTIKT, 0.5), "AntiKt_r05");
0101 towerjetreco->set_algo_node("ANTIKT");
0102 towerjetreco->set_input_node("TOWER");
0103 towerjetreco->Verbosity(0);
0104 se->registerSubsystem(towerjetreco);
0105
0106 if(doSim)
0107 {
0108 JetReco *truthjetreco = new JetReco("truthJetReco");
0109 truthjetreco->add_input(new TruthJetInput(Jet::PARTICLE));
0110 truthjetreco->add_algo(new FastJetAlgoSub(Jet::ANTIKT, 0.2), "AntiKt_Truth_r02");
0111 truthjetreco->add_algo(new FastJetAlgoSub(Jet::ANTIKT, 0.3), "AntiKt_Truth_r03");
0112 truthjetreco->add_algo(new FastJetAlgoSub(Jet::ANTIKT, 0.4), "AntiKt_Truth_r04");
0113 truthjetreco->add_algo(new FastJetAlgoSub(Jet::ANTIKT, 0.5), "AntiKt_Truth_r05");
0114 truthjetreco->set_algo_node("ANTIKT");
0115 truthjetreco->set_input_node("TRUTH");
0116 truthjetreco->Verbosity(0);
0117 se->registerSubsystem(truthjetreco);
0118 }
0119
0120 TimingCut* tc = new TimingCut("AntiKt_r04","TimingCutModule",false);
0121 tc->Verbosity(0);
0122 se->registerSubsystem(tc);
0123
0124 VandyJetDSTSkimmer *vs = new VandyJetDSTSkimmer("VandyJetDSTSkimmer");
0125 vs->SetRunnumber(runnumber);
0126 vs->SetOutfileName(std::format("{}/VandyDSTs_run2pp_ana521_2025p007_v001-{}.root",outDir, runnumber).c_str());
0127 vs->SetDoSim(doSim);
0128 se->registerSubsystem(vs);
0129
0130 se->run(-1);
0131 se->End();
0132 se->PrintTimer();
0133
0134 delete se;
0135 gSystem->Exit(0);
0136 }