File indexing completed on 2026-04-06 08:12:03
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 <jetbase/JetCalib.h>
0019 #include <jetbackground/FastJetAlgoSub.h>
0020
0021 #include <g4jets/TruthJetInput.h>
0022
0023
0024
0025
0026
0027
0028 #include <jetbackground/TimingCut.h>
0029
0030 #include <vandyskimmer/VandyJetDSTSkimmer.h>
0031
0032
0033
0034 R__LOAD_LIBRARY(libfun4all.so)
0035 R__LOAD_LIBRARY(libfun4allraw.so)
0036 R__LOAD_LIBRARY(libcalo_io.so)
0037 R__LOAD_LIBRARY(libffamodules.so)
0038 R__LOAD_LIBRARY(libVandySkimmer.so)
0039 R__LOAD_LIBRARY(libjetbase.so)
0040 R__LOAD_LIBRARY(libjetbackground.so)
0041
0042 void Fun4All_VandySkimmer_segs(int segStart, const std::string caloDSTlist, const std::string jetDSTlist, const std::string outDir = "/sphenix/tg/tg01/jets/bkimelman/wEEC/")
0043 {
0044
0045 bool doSim = false;
0046
0047 Fun4AllServer* se=Fun4AllServer::instance();
0048 se->Verbosity(1);
0049
0050 int runnumber = 0;
0051
0052 std::ifstream ifs(caloDSTlist);
0053 std::string filepath;
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");
0089 TowerJetInput* ihtji = new TowerJetInput(Jet::HCALIN_TOWERINFO,"TOWERINFO_CALIB");
0090 TowerJetInput* ohtji = new TowerJetInput(Jet::HCALOUT_TOWERINFO,"TOWERINFO_CALIB");
0091 emtji->set_GlobalVertexType(GlobalVertex::MBD);
0092 ihtji->set_GlobalVertexType(GlobalVertex::MBD);
0093 ohtji->set_GlobalVertexType(GlobalVertex::MBD);
0094 towerjetreco->add_input(emtji);
0095 towerjetreco->add_input(ihtji);
0096 towerjetreco->add_input(ohtji);
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 JetCalib *jetCalib02 = new JetCalib("JetCalib02");
0107 jetCalib02->set_InputNode("AntiKt_r02");
0108 jetCalib02->set_OutputNode("AntiKt_r02_calib");
0109 jetCalib02->set_JetRadius(0.2);
0110 jetCalib02->set_ZvrtxNode("GlobalVertexMap");
0111 jetCalib02->set_ApplyZvrtxDependentCalib(true);
0112 jetCalib02->set_ApplyEtaDependentCalib(true);
0113 se->registerSubsystem(jetCalib02);
0114
0115 JetCalib *jetCalib03 = new JetCalib("JetCalib03");
0116 jetCalib03->set_InputNode("AntiKt_r03");
0117 jetCalib03->set_OutputNode("AntiKt_r03_calib");
0118 jetCalib03->set_JetRadius(0.3);
0119 jetCalib03->set_ZvrtxNode("GlobalVertexMap");
0120 jetCalib03->set_ApplyZvrtxDependentCalib(true);
0121 jetCalib03->set_ApplyEtaDependentCalib(true);
0122 se->registerSubsystem(jetCalib03);
0123
0124 JetCalib *jetCalib04 = new JetCalib("JetCalib04");
0125 jetCalib04->set_InputNode("AntiKt_r04");
0126 jetCalib04->set_OutputNode("AntiKt_r04_calib");
0127 jetCalib04->set_JetRadius(0.4);
0128 jetCalib04->set_ZvrtxNode("GlobalVertexMap");
0129 jetCalib04->set_ApplyZvrtxDependentCalib(true);
0130 jetCalib04->set_ApplyEtaDependentCalib(true);
0131 se->registerSubsystem(jetCalib04);
0132
0133 JetCalib *jetCalib05 = new JetCalib("JetCalib05");
0134 jetCalib05->set_InputNode("AntiKt_r05");
0135 jetCalib05->set_OutputNode("AntiKt_r05_calib");
0136 jetCalib05->set_JetRadius(0.5);
0137 jetCalib05->set_ZvrtxNode("GlobalVertexMap");
0138 jetCalib05->set_ApplyZvrtxDependentCalib(true);
0139 jetCalib05->set_ApplyEtaDependentCalib(true);
0140 se->registerSubsystem(jetCalib05);
0141
0142 if(doSim)
0143 {
0144 JetReco *truthjetreco = new JetReco("truthJetReco");
0145 truthjetreco->add_input(new TruthJetInput(Jet::PARTICLE));
0146 truthjetreco->add_algo(new FastJetAlgoSub(Jet::ANTIKT, 0.2), "AntiKt_Truth_r02");
0147 truthjetreco->add_algo(new FastJetAlgoSub(Jet::ANTIKT, 0.3), "AntiKt_Truth_r03");
0148 truthjetreco->add_algo(new FastJetAlgoSub(Jet::ANTIKT, 0.4), "AntiKt_Truth_r04");
0149 truthjetreco->add_algo(new FastJetAlgoSub(Jet::ANTIKT, 0.5), "AntiKt_Truth_r05");
0150 truthjetreco->set_algo_node("ANTIKT");
0151 truthjetreco->set_input_node("TRUTH");
0152 truthjetreco->Verbosity(0);
0153 se->registerSubsystem(truthjetreco);
0154 }
0155
0156 TimingCut* tc = new TimingCut("AntiKt_r04","TimingCutModule",false);
0157 tc->Verbosity(0);
0158 se->registerSubsystem(tc);
0159
0160 VandyJetDSTSkimmer *vs = new VandyJetDSTSkimmer("VandyJetDSTSkimmer");
0161 vs->SetRunnumber(runnumber);
0162 vs->SetOutfileName(std::format("{}/VandyDSTs_run2pp_ana521_2025p007_v001-{:08}-{}_{}.root",outDir, runnumber,25*segStart,25*segStart+24).c_str());
0163 vs->SetDoSim(doSim);
0164 vs->SetDoCalib(true);
0165 vs->Verbosity(0);
0166 se->registerSubsystem(vs);
0167
0168 se->run(-1);
0169 se->End();
0170 se->PrintTimer();
0171
0172 delete se;
0173 gSystem->Exit(0);
0174 }