File indexing completed on 2025-08-05 08:13:22
0001 #ifndef MACRO_HIJETRECO_C
0002 #define MACRO_HIJETRECO_C
0003
0004 #include <GlobalVariables.C>
0005
0006 #include <jetbase/FastJetAlgo.h>
0007 #include <jetbase/FastJetOptions.h>
0008 #include <jetbase/JetReco.h>
0009 #include <jetbase/TowerJetInput.h>
0010 #include <jetbase/ClusterJetInput.h>
0011 #include <g4jets/TruthJetInput.h>
0012
0013 #include <jetbackground/CopyAndSubtractJets.h>
0014 #include <jetbackground/DetermineTowerBackground.h>
0015 #include <jetbackground/FastJetAlgoSub.h>
0016 #include <jetbackground/RetowerCEMC.h>
0017 #include <jetbackground/SubtractTowers.h>
0018 #include <jetbackground/SubtractTowersCS.h>
0019
0020 #include <fun4all/Fun4AllServer.h>
0021
0022 R__LOAD_LIBRARY(libjetbase.so)
0023 R__LOAD_LIBRARY(libg4jets.so)
0024 R__LOAD_LIBRARY(libjetbackground.so)
0025
0026 namespace Enable
0027 {
0028 bool HIJETS = false;
0029 int HIJETS_VERBOSITY = 0;
0030 bool HIJETS_MC = true;
0031 bool HIJETS_TRUTH = false;
0032 }
0033
0034 namespace HIJETS
0035 {
0036 bool do_flow = false;
0037 bool do_CS = false;
0038 std::string tower_prefix = "TOWERINFO_CALIB";
0039 }
0040
0041
0042 void HIJetReco_softdrop()
0043 {
0044 int verbosity = std::max(Enable::VERBOSITY, Enable::HIJETS_VERBOSITY);
0045
0046
0047
0048
0049
0050 Fun4AllServer *se = Fun4AllServer::instance();
0051
0052 if (Enable::HIJETS_MC && Enable::HIJETS_TRUTH)
0053 {
0054 JetReco *truthjetreco = new JetReco();
0055 TruthJetInput *tji = new TruthJetInput(Jet::PARTICLE);
0056 tji->add_embedding_flag(0);
0057 truthjetreco->add_input(tji);
0058 truthjetreco->add_algo(new FastJetAlgo(Jet::ANTIKT, 0.2), "AntiKt_Truth_r02");
0059 truthjetreco->add_algo(new FastJetAlgo(Jet::ANTIKT, 0.3), "AntiKt_Truth_r03");
0060 truthjetreco->add_algo(new FastJetAlgo(Jet::ANTIKT, 0.4), "AntiKt_Truth_r04");
0061 truthjetreco->add_algo(new FastJetAlgo(Jet::ANTIKT, 0.5), "AntiKt_Truth_r05");
0062 truthjetreco->set_algo_node("ANTIKT");
0063 truthjetreco->set_input_node("TRUTH");
0064 truthjetreco->Verbosity(verbosity);
0065 se->registerSubsystem(truthjetreco);
0066 }
0067
0068 RetowerCEMC *rcemc = new RetowerCEMC();
0069 rcemc->Verbosity(verbosity);
0070 rcemc->set_towerinfo(true);
0071 rcemc->set_frac_cut(0.5);
0072 rcemc->set_towerNodePrefix(HIJETS::tower_prefix);
0073 se->registerSubsystem(rcemc);
0074
0075
0076 JetReco *towerjetreco = new JetReco();
0077 towerjetreco->add_input(new TowerJetInput(Jet::CEMC_TOWERINFO_RETOWER,HIJETS::tower_prefix));
0078 towerjetreco->add_input(new TowerJetInput(Jet::HCALIN_TOWERINFO,HIJETS::tower_prefix));
0079 towerjetreco->add_input(new TowerJetInput(Jet::HCALOUT_TOWERINFO,HIJETS::tower_prefix));
0080 towerjetreco->add_algo(new FastJetAlgo(Jet::ANTIKT, 0.2), "AntiKt_TowerInfo_HIRecoSeedsRaw_r02");
0081 towerjetreco->set_algo_node("ANTIKT");
0082 towerjetreco->set_input_node("TOWER");
0083 towerjetreco->Verbosity(verbosity);
0084 se->registerSubsystem(towerjetreco);
0085
0086 DetermineTowerBackground *dtb = new DetermineTowerBackground();
0087 dtb->SetBackgroundOutputName("TowerInfoBackground_Sub1");
0088 dtb->SetFlow(HIJETS::do_flow);
0089 dtb->SetSeedType(0);
0090 dtb->SetSeedJetD(3);
0091 dtb->set_towerinfo(true);
0092 dtb->Verbosity(verbosity);
0093 dtb->set_towerNodePrefix(HIJETS::tower_prefix);
0094 se->registerSubsystem(dtb);
0095
0096
0097
0098 CopyAndSubtractJets *casj = new CopyAndSubtractJets();
0099 casj->SetFlowModulation(HIJETS::do_flow);
0100 casj->Verbosity(verbosity);
0101 casj->set_towerinfo(true);
0102 casj->set_towerNodePrefix(HIJETS::tower_prefix);
0103 se->registerSubsystem(casj);
0104
0105
0106 DetermineTowerBackground *dtb2 = new DetermineTowerBackground();
0107 dtb2->SetBackgroundOutputName("TowerInfoBackground_Sub2");
0108 dtb2->SetFlow(HIJETS::do_flow);
0109 dtb2->SetSeedType(1);
0110 dtb2->SetSeedJetPt(7);
0111 dtb2->Verbosity(verbosity);
0112 dtb2->set_towerinfo(true);
0113 dtb2->set_towerNodePrefix(HIJETS::tower_prefix);
0114 se->registerSubsystem(dtb2);
0115
0116
0117 SubtractTowers *st = new SubtractTowers();
0118 st->SetFlowModulation(HIJETS::do_flow);
0119 st->Verbosity(verbosity);
0120 st->set_towerinfo(true);
0121 st->set_towerNodePrefix(HIJETS::tower_prefix);
0122 se->registerSubsystem(st);
0123
0124
0125
0126
0127
0128
0129
0130
0131
0132
0133
0134
0135
0136
0137
0138
0139
0140
0141
0142
0143
0144
0145
0146
0147
0148
0149
0150
0151
0152
0153
0154
0155
0156
0157
0158
0159
0160
0161
0162 JetReco *topocluster_jetreco = new JetReco();
0163 topocluster_jetreco->add_input(new ClusterJetInput(Jet::HCAL_TOPO_CLUSTER));
0164 topocluster_jetreco->add_input(new ClusterJetInput(Jet::ECAL_TOPO_CLUSTER));
0165
0166
0167
0168
0169
0170
0171
0172
0173
0174 FastJetOptions fj_r04_opt {{ Jet::ALGO::ANTIKT, CONSTITUENT_MIN_E, 0.2, JET_R, 0.4, VERBOSITY, 6 }};
0175 topocluster_jetreco->add_algo(new FastJetAlgo(fj_r04_opt), "AntiKt_TopoCluster_Unsubtracted_r04");
0176
0177
0178
0179
0180 topocluster_jetreco->set_algo_node("ANTIKT");
0181 topocluster_jetreco->set_input_node("CLUSTER");
0182 topocluster_jetreco->Verbosity(verbosity);
0183 se->registerSubsystem(topocluster_jetreco);
0184
0185
0186
0187
0188
0189
0190
0191
0192
0193
0194
0195 return;
0196
0197 }
0198 #endif