Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-05 08:15:27

0001 #ifndef MACRO_HIJETRECO_C
0002 #define MACRO_HIJETRECO_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 <globalvertex/GlobalVertex.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 R__LOAD_LIBRARY(libglobalvertex.so)
0026 
0027 namespace Enable
0028 {
0029   bool HIJETS = false;
0030   int HIJETS_VERBOSITY = 0;
0031   bool HIJETS_MC = true;
0032   bool HIJETS_TRUTH = true;
0033 }  // namespace Enable
0034 
0035 namespace HIJETS
0036 {
0037   bool do_flow = false; // should be set to true once the EPD event plane correction is implemented
0038   bool do_CS = false;
0039   bool is_pp = true;
0040   std::string tower_prefix = "TOWERINFO_CALIB";
0041   bool do_vertex_type = true;
0042   GlobalVertex::VTXTYPE vertex_type = GlobalVertex::MBD;
0043 }  // namespace HIJETS
0044 
0045 
0046 void HIJetReco()
0047 {
0048   int verbosity = std::max(Enable::VERBOSITY, Enable::HIJETS_VERBOSITY);
0049 
0050 
0051   //---------------
0052   // Fun4All server
0053   //---------------
0054   Fun4AllServer *se = Fun4AllServer::instance();
0055 
0056   if (Enable::HIJETS_MC && Enable::HIJETS_TRUTH) 
0057     {
0058       JetReco *truthjetreco = new JetReco();
0059       TruthJetInput *tji = new TruthJetInput(Jet::PARTICLE);
0060       tji->add_embedding_flag(0);  // changes depending on signal vs. embedded
0061       truthjetreco->add_input(tji);
0062       //truthjetreco->add_algo(new FastJetAlgo(Jet::ANTIKT, 0.2), "AntiKt_Truth_r02");
0063       //truthjetreco->add_algo(new FastJetAlgo(Jet::ANTIKT, 0.3), "AntiKt_Truth_r03");
0064       truthjetreco->add_algo(new FastJetAlgo(Jet::ANTIKT, 0.4), "AntiKt_Truth_r04");
0065       //truthjetreco->add_algo(new FastJetAlgo(Jet::ANTIKT, 0.5), "AntiKt_Truth_r05");
0066       truthjetreco->set_algo_node("ANTIKT");
0067       truthjetreco->set_input_node("TRUTH");
0068       truthjetreco->Verbosity(verbosity);
0069       se->registerSubsystem(truthjetreco);
0070     }
0071   
0072   RetowerCEMC *rcemc = new RetowerCEMC(); 
0073   rcemc->Verbosity(verbosity); 
0074   rcemc->set_towerinfo(true);
0075   rcemc->set_frac_cut(0.5); //fraction of retower that must be masked to mask the full retower
0076   rcemc->set_towerNodePrefix(HIJETS::tower_prefix);
0077   se->registerSubsystem(rcemc);
0078 
0079   JetReco *towerjetreco = new JetReco();
0080   TowerJetInput *incemc = new TowerJetInput(Jet::CEMC_TOWERINFO_RETOWER,HIJETS::tower_prefix);
0081   TowerJetInput *inihcal = new TowerJetInput(Jet::HCALIN_TOWERINFO,HIJETS::tower_prefix);
0082   TowerJetInput *inohcal = new TowerJetInput(Jet::HCALOUT_TOWERINFO,HIJETS::tower_prefix);
0083   if (HIJETS::do_vertex_type)
0084   {
0085     incemc->set_GlobalVertexType(HIJETS::vertex_type);
0086     inihcal->set_GlobalVertexType(HIJETS::vertex_type);
0087     inohcal->set_GlobalVertexType(HIJETS::vertex_type);
0088   }
0089   towerjetreco->add_input(incemc);
0090   towerjetreco->add_input(inihcal);
0091   towerjetreco->add_input(inohcal);
0092   towerjetreco->add_algo(new FastJetAlgoSub(Jet::ANTIKT, 0.4), "AntiKt_Tower_r04");
0093   towerjetreco->set_algo_node("ANTIKT");
0094   towerjetreco->set_input_node("TOWER");
0095   towerjetreco->Verbosity(verbosity);
0096   se->registerSubsystem(towerjetreco);
0097 
0098 
0099   return;
0100 
0101 }
0102 #endif