Back to home page

sPhenix code displayed by LXR

 
 

    


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 }  // namespace Enable
0033 
0034 namespace G4HIJETS
0035 {
0036   // do_flow = 0 --noflow
0037   // do_flow = 1 --psi2 derived from calo
0038   // do_flow = 2 --psi2 derived from HIJING
0039   // do_flow = 3 --psi2 derived from sEPD
0040   int do_flow = 0;
0041   bool do_CS = false;
0042 }  // namespace G4HIJETS
0043 
0044 void HIJetReco()
0045 {
0046 
0047   int verbosity = std::max(Enable::VERBOSITY, Enable::HIJETS_VERBOSITY);
0048 
0049   //---------------
0050   // Fun4All server
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);  // changes depending on signal vs. embedded
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     // note that CS can use the regular FastJetAlgo without extra modifications for negative-E inputs
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