Back to home page

sPhenix code displayed by LXR

 
 

    


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 }  // namespace Enable
0033 
0034 namespace HIJETS
0035 {
0036   bool do_flow = false; // should be set to true once the EPD event plane correction is implemented
0037   bool do_CS = false;
0038   std::string tower_prefix = "TOWERINFO_CALIB";
0039 }  // namespace HIJETS
0040 
0041 
0042 void HIJetReco_softdrop()
0043 {
0044   int verbosity = std::max(Enable::VERBOSITY, Enable::HIJETS_VERBOSITY);
0045 
0046 
0047   //---------------
0048   // Fun4All server
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);  // changes depending on signal vs. embedded
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); //fraction of retower that must be masked to mask the full retower
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   towerjetreco = new JetReco();
0126   towerjetreco->add_input(new TowerJetInput(Jet::CEMC_TOWERINFO,HIJETS::tower_prefix));
0127   towerjetreco->add_input(new TowerJetInput(Jet::HCALIN_TOWERINFO_SUB1,HIJETS::tower_prefix));
0128   towerjetreco->add_input(new TowerJetInput(Jet::HCALOUT_TOWERINFO_SUB1,HIJETS::tower_prefix));
0129   towerjetreco->add_algo(new FastJetAlgoSub(Jet::ANTIKT, 0.2, verbosity), "AntiKt_Tower_r02_Sub1");
0130   towerjetreco->add_algo(new FastJetAlgoSub(Jet::ANTIKT, 0.3, verbosity), "AntiKt_Tower_r03_Sub1");
0131   towerjetreco->add_algo(new FastJetAlgoSub(Jet::ANTIKT, 0.4, verbosity), "AntiKt_Tower_r04_Sub1");
0132   towerjetreco->add_algo(new FastJetAlgoSub(Jet::ANTIKT, 0.5, verbosity), "AntiKt_Tower_r05_Sub1");
0133   towerjetreco->set_algo_node("ANTIKT");
0134   towerjetreco->set_input_node("TOWER");
0135   towerjetreco->Verbosity(verbosity);
0136   se->registerSubsystem(towerjetreco);
0137 
0138   JetReco *towerjetreco_softdrop = new JetReco();
0139   towerjetreco_softdrop->add_input(new TowerJetInput(Jet::CEMC_TOWERINFO_RETOWER,HIJETS::tower_prefix));
0140   towerjetreco_softdrop->add_input(new TowerJetInput(Jet::HCALIN_TOWERINFO,HIJETS::tower_prefix));
0141   towerjetreco_softdrop->add_input(new TowerJetInput(Jet::HCALOUT_TOWERINFO,HIJETS::tower_prefix));
0142 
0143   FastJetOptions fj_r02_opt {{ Jet::ALGO::ANTIKT, DO_SOFTDROP, SD_BETA, 0.0, SD_ZCUT, 0.1, JET_R, 0.2 }};
0144   towerjetreco_softdrop->add_algo(new FastJetAlgo(fj_r02_opt), "AntiKt_TowerInfo_Unsubtracted_r02");
0145 
0146   FastJetOptions fj_r03_opt {{ Jet::ALGO::ANTIKT, DO_SOFTDROP, SD_BETA, 0.0, SD_ZCUT, 0.1, JET_R, 0.3 }};
0147   towerjetreco_softdrop->add_algo(new FastJetAlgo(fj_r03_opt), "AntiKt_TowerInfo_Unsubtracted_r03");
0148 
0149   FastJetOptions fj_r04_opt {{ Jet::ALGO::ANTIKT, DO_SOFTDROP, SD_BETA, 0.0, SD_ZCUT, 0.1, JET_R, 0.4, VERBOSITY, 6 }};
0150   towerjetreco_softdrop->add_algo(new FastJetAlgo(fj_r04_opt), "AntiKt_TowerInfo_Unsubtracted_r04");
0151 
0152   FastJetOptions fj_r05_opt {{ Jet::ALGO::ANTIKT, DO_SOFTDROP, SD_BETA, 0.0, SD_ZCUT, 0.1, JET_R, 0.5 }};
0153   towerjetreco_softdrop->add_algo(new FastJetAlgo(fj_r05_opt), "AntiKt_TowerInfo_Unsubtracted_r05");
0154 
0155   towerjetreco_softdrop->set_algo_node("ANTIKT");
0156   towerjetreco_softdrop->set_input_node("TOWER");
0157   towerjetreco_softdrop->Verbosity(verbosity);
0158   se->registerSubsystem(towerjetreco_softdrop);*/
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   FastJetOptions fj_r02_opt {{ Jet::ALGO::ANTIKT, CONSTITUENT_MIN_E, 0.2, JET_R, 0.2 }};
0168   topocluster_jetreco->add_algo(new FastJetAlgo(fj_r02_opt), "AntiKt_TopoCluster_Unsubtracted_r02");
0169 
0170   FastJetOptions fj_r03_opt {{ Jet::ALGO::ANTIKT, CONSTITUENT_MIN_E, 0.2, JET_R, 0.3 }};
0171   topocluster_jetreco->add_algo(new FastJetAlgo(fj_r03_opt), "AntiKt_TopoCluster_Unsubtracted_r03");
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   //FastJetOptions fj_r05_opt {{ Jet::ALGO::ANTIKT, CONSTITUENT_MIN_E, 0.2, JET_R, 0.5 }};
0178   //topocluster_jetreco->add_algo(new FastJetAlgo(fj_r05_opt), "AntiKt_TopoCluster_Unsubtracted_r05");
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   JetReco *alllayers_jetreco = new JetReco();
0187   alllayers_jetreco->add_input(new ClusterJetInput(Jet::ECAL_HCAL_TOPO_CLUSTER));
0188   alllayers_jetreco->add_algo(new FastJetAlgo(fj_r04_opt), "AntiKt_TopoClusterAll_Unsubtracted_r04");
0189 
0190   alllayers_jetreco->set_algo_node("ANTIKT");
0191   alllayers_jetreco->set_input_node("CLUSTER");
0192   alllayers_jetreco->Verbosity(verbosity);
0193   se->registerSubsystem(alllayers_jetreco);*/
0194 
0195   return;
0196 
0197 }
0198 #endif