File indexing completed on 2025-08-03 08:20:25
0001 #ifndef MACRO_G4HIJETRECO_C
0002 #define MACRO_G4HIJETRECO_C
0003
0004 #include <GlobalVariables.C>
0005
0006 #include <jetbase/FastJetAlgo.h>
0007 #include <jetbase/JetReco.h>
0008 #include <jetbase/TowerJetInput.h>
0009 #include <g4jets/TruthJetInput.h>
0010
0011 #include <jetbackground/CopyAndSubtractJets.h>
0012 #include <jetbackground/DetermineTowerBackground.h>
0013 #include <jetbackground/FastJetAlgoSub.h>
0014 #include <jetbackground/RetowerCEMC.h>
0015 #include <jetbackground/SubtractTowers.h>
0016 #include <jetbackground/SubtractTowersCS.h>
0017
0018 #include <eventplaneinfo/Eventplaneinfo.h>
0019 #include <eventplaneinfo/EventPlaneReco.h>
0020
0021 #include <fun4all/Fun4AllServer.h>
0022
0023 R__LOAD_LIBRARY(libjetbase.so)
0024 R__LOAD_LIBRARY(libg4jets.so)
0025 R__LOAD_LIBRARY(libjetbackground.so)
0026 R__LOAD_LIBRARY(libeventplaneinfo.so)
0027
0028 namespace Enable
0029 {
0030 bool HIJETS = false;
0031 int HIJETS_VERBOSITY = 0;
0032 }
0033
0034 namespace G4HIJETS
0035 {
0036
0037
0038
0039
0040 int do_flow = 0;
0041 bool do_CS = false;
0042 }
0043
0044 void HIJetReco()
0045 {
0046
0047 int verbosity = std::max(Enable::VERBOSITY, Enable::HIJETS_VERBOSITY);
0048
0049
0050
0051
0052
0053 Fun4AllServer *se = Fun4AllServer::instance();
0054
0055 JetReco *truthjetreco = new JetReco();
0056 TruthJetInput *tji = new TruthJetInput(Jet::PARTICLE);
0057 tji->add_embedding_flag(0);
0058 truthjetreco->add_input(tji);
0059 truthjetreco->add_algo(new FastJetAlgo(Jet::ANTIKT, 0.2), "AntiKt_Truth_r02");
0060 truthjetreco->add_algo(new FastJetAlgo(Jet::ANTIKT, 0.3), "AntiKt_Truth_r03");
0061 truthjetreco->add_algo(new FastJetAlgo(Jet::ANTIKT, 0.4), "AntiKt_Truth_r04");
0062 truthjetreco->add_algo(new FastJetAlgo(Jet::ANTIKT, 0.5), "AntiKt_Truth_r05");
0063 truthjetreco->set_algo_node("ANTIKT");
0064 truthjetreco->set_input_node("TRUTH");
0065 truthjetreco->Verbosity(verbosity);
0066 se->registerSubsystem(truthjetreco);
0067
0068 if(G4HIJETS::do_flow == 3)
0069 {
0070 EventPlaneReco *epreco = new EventPlaneReco();
0071 epreco->set_sepd_epreco(true);
0072 epreco->set_isSim(true);
0073 se->registerSubsystem(epreco);
0074 }
0075
0076
0077
0078 RetowerCEMC *rcemc = new RetowerCEMC();
0079 rcemc->Verbosity(verbosity);
0080 rcemc->set_towerinfo(true);
0081 se->registerSubsystem(rcemc);
0082
0083 JetReco *towerjetreco = new JetReco();
0084 towerjetreco->add_input(new TowerJetInput(Jet::CEMC_TOWERINFO_RETOWER));
0085 towerjetreco->add_input(new TowerJetInput(Jet::HCALIN_TOWERINFO));
0086 towerjetreco->add_input(new TowerJetInput(Jet::HCALOUT_TOWERINFO));
0087 towerjetreco->add_algo(new FastJetAlgo(Jet::ANTIKT, 0.2), "AntiKt_TowerInfo_HIRecoSeedsRaw_r02");
0088 towerjetreco->set_algo_node("ANTIKT");
0089 towerjetreco->set_input_node("TOWER");
0090 towerjetreco->Verbosity(verbosity);
0091 se->registerSubsystem(towerjetreco);
0092
0093 DetermineTowerBackground *dtb = new DetermineTowerBackground();
0094 dtb->SetBackgroundOutputName("TowerInfoBackground_Sub1");
0095 dtb->SetFlow(G4HIJETS::do_flow);
0096 dtb->SetSeedType(0);
0097 dtb->SetSeedJetD(3);
0098 dtb->set_towerinfo(true);
0099 dtb->Verbosity(verbosity);
0100 se->registerSubsystem(dtb);
0101
0102
0103 CopyAndSubtractJets *casj = new CopyAndSubtractJets();
0104 casj->SetFlowModulation(G4HIJETS::do_flow);
0105 casj->Verbosity(verbosity);
0106 casj->set_towerinfo(true);
0107 se->registerSubsystem(casj);
0108
0109
0110 DetermineTowerBackground *dtb2 = new DetermineTowerBackground();
0111 dtb2->SetBackgroundOutputName("TowerInfoBackground_Sub2");
0112 dtb2->SetFlow(G4HIJETS::do_flow);
0113 dtb2->SetSeedType(1);
0114 dtb2->SetSeedJetPt(7);
0115 dtb2->Verbosity(verbosity);
0116 dtb2->set_towerinfo(true);
0117 se->registerSubsystem(dtb2);
0118
0119
0120 SubtractTowers *st = new SubtractTowers();
0121 st->SetFlowModulation(G4HIJETS::do_flow);
0122 st->Verbosity(verbosity);
0123 st->set_towerinfo(true);
0124 se->registerSubsystem(st);
0125
0126 towerjetreco = new JetReco();
0127 towerjetreco->add_input(new TowerJetInput(Jet::CEMC_TOWERINFO_SUB1));
0128 towerjetreco->add_input(new TowerJetInput(Jet::HCALIN_TOWERINFO_SUB1));
0129 towerjetreco->add_input(new TowerJetInput(Jet::HCALOUT_TOWERINFO_SUB1));
0130 towerjetreco->add_algo(new FastJetAlgoSub(Jet::ANTIKT, 0.2, verbosity), "AntiKt_Tower_r02_Sub1");
0131 towerjetreco->add_algo(new FastJetAlgoSub(Jet::ANTIKT, 0.3, verbosity), "AntiKt_Tower_r03_Sub1");
0132 towerjetreco->add_algo(new FastJetAlgoSub(Jet::ANTIKT, 0.4, verbosity), "AntiKt_Tower_r04_Sub1");
0133 towerjetreco->add_algo(new FastJetAlgoSub(Jet::ANTIKT, 0.5, verbosity), "AntiKt_Tower_r05_Sub1");
0134 towerjetreco->set_algo_node("ANTIKT");
0135 towerjetreco->set_input_node("TOWER");
0136 towerjetreco->Verbosity(verbosity);
0137 se->registerSubsystem(towerjetreco);
0138
0139 if (G4HIJETS::do_CS)
0140 {
0141 SubtractTowersCS *stCS = new SubtractTowersCS();
0142 stCS->SetFlowModulation(G4HIJETS::do_flow);
0143 stCS->SetAlpha(1);
0144 stCS->SetDeltaRmax(0.3);
0145 stCS->Verbosity(verbosity);
0146 se->registerSubsystem(stCS);
0147
0148 JetReco *towerjetrecoCS = new JetReco();
0149 towerjetrecoCS->add_input(new TowerJetInput(Jet::CEMC_TOWER_SUB1CS));
0150 towerjetrecoCS->add_input(new TowerJetInput(Jet::HCALIN_TOWER_SUB1CS));
0151 towerjetrecoCS->add_input(new TowerJetInput(Jet::HCALOUT_TOWER_SUB1CS));
0152
0153 towerjetrecoCS->add_algo(new FastJetAlgo(Jet::ANTIKT, 0.2, verbosity), "AntiKt_Tower_r02_Sub1CS");
0154 towerjetrecoCS->add_algo(new FastJetAlgo(Jet::ANTIKT, 0.3, verbosity), "AntiKt_Tower_r03_Sub1CS");
0155 towerjetrecoCS->add_algo(new FastJetAlgo(Jet::ANTIKT, 0.4, verbosity), "AntiKt_Tower_r04_Sub1CS");
0156 towerjetrecoCS->add_algo(new FastJetAlgo(Jet::ANTIKT, 0.5, verbosity), "AntiKt_Tower_r05_Sub1CS");
0157 towerjetrecoCS->set_algo_node("ANTIKT");
0158 towerjetrecoCS->set_input_node("TOWER");
0159 towerjetrecoCS->Verbosity(verbosity);
0160 se->registerSubsystem(towerjetrecoCS);
0161 }
0162
0163 return;
0164 }
0165 #endif