Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2026-04-06 08:12:03

0001 #include <string>
0002 #include <iostream>
0003 #include <format>
0004 
0005 #include <fun4all/Fun4AllBase.h>
0006 #include <fun4all/Fun4AllUtils.h>
0007 #include <fun4all/Fun4AllServer.h>
0008 #include <fun4all/Fun4AllInputManager.h>
0009 #include <fun4all/Fun4AllDstInputManager.h>
0010 #include <fun4all/SubsysReco.h>
0011 #include <ffamodules/CDBInterface.h>
0012 #include <Calo_Calib.C>
0013 
0014 #include <caloreco/RawClusterBuilderTopo.h>
0015 
0016 #include <jetbase/JetReco.h>
0017 #include <jetbase/TowerJetInput.h>
0018 #include <jetbase/JetCalib.h>
0019 #include <jetbackground/FastJetAlgoSub.h>
0020 
0021 #include <g4jets/TruthJetInput.h>
0022 
0023 //#include <globalvertex/GlobalVertexReco.h>
0024 //#include <GlobalVertex.h>                                                            
0025 //#include <MbdDigitization.h>
0026 //#include <MbdReco.h>
0027 
0028 #include <jetbackground/TimingCut.h>
0029 
0030 #include <vandyskimmer/VandyJetDSTSkimmer.h>
0031 //#include <jetbackground/RetowerCEMC.h>
0032 
0033 
0034 R__LOAD_LIBRARY(libfun4all.so)
0035 R__LOAD_LIBRARY(libfun4allraw.so)
0036 R__LOAD_LIBRARY(libcalo_io.so)
0037 R__LOAD_LIBRARY(libffamodules.so)
0038 R__LOAD_LIBRARY(libVandySkimmer.so)
0039 R__LOAD_LIBRARY(libjetbase.so)
0040 R__LOAD_LIBRARY(libjetbackground.so)
0041 
0042 void Fun4All_VandySkimmer_segs(int segStart, const std::string caloDSTlist, const std::string jetDSTlist, const std::string outDir = "/sphenix/tg/tg01/jets/bkimelman/wEEC/")
0043 {
0044 
0045   bool doSim = false;
0046 
0047   Fun4AllServer* se=Fun4AllServer::instance();
0048   se->Verbosity(1);
0049 
0050   int runnumber = 0;
0051   
0052   std::ifstream ifs(caloDSTlist);
0053   std::string filepath;
0054   std::getline(ifs,filepath);
0055   std::pair<int,int> runseg = Fun4AllUtils::GetRunSegment(filepath);
0056   runnumber = runseg.first;
0057 
0058   Fun4AllInputManager *inCalo = new Fun4AllDstInputManager("InputManagerCalo");
0059   inCalo->AddListFile(caloDSTlist);
0060   se->registerInputManager(inCalo);
0061   
0062   Fun4AllInputManager *inJet = new Fun4AllDstInputManager("InputManagerJet");
0063   inJet->AddListFile(jetDSTlist);
0064   se->registerInputManager(inJet);
0065   
0066   auto rc = recoConsts::instance();
0067   rc->set_StringFlag("CDB_GLOBALTAG", "ProdA_2024");
0068   rc->set_uint64Flag("TIMESTAMP", runnumber);
0069   CDBInterface::instance()->Verbosity(0);
0070   Process_Calo_Calib();
0071 
0072   RawClusterBuilderTopo* ClusterBuilder = new RawClusterBuilderTopo("HcalRawClusterBuilderTopo");
0073   ClusterBuilder->Verbosity(0);
0074   ClusterBuilder->set_nodename("TOPOCLUSTER_ALLCALO");
0075   ClusterBuilder->set_enable_HCal(true);
0076   ClusterBuilder->set_enable_EMCal(true);
0077   ClusterBuilder->set_noise(0.0053, 0.0351, 0.0684); // 3sigma of pedestal noise
0078   ClusterBuilder->set_significance(4.0, 2.0, 1.0);
0079   ClusterBuilder->allow_corner_neighbor(true);
0080   ClusterBuilder->set_do_split(true);
0081   ClusterBuilder->set_minE_local_max(1.0, 2.0, 0.5);
0082   ClusterBuilder->set_R_shower(0.025);
0083   ClusterBuilder->set_use_only_good_towers(true);
0084   ClusterBuilder->set_absE(true);
0085   se->registerSubsystem(ClusterBuilder);
0086 
0087   JetReco *towerjetreco = new JetReco("towerJetReco");
0088   TowerJetInput* emtji = new TowerJetInput(Jet::CEMC_TOWERINFO_RETOWER,"TOWERINFO_CALIB");
0089   TowerJetInput* ihtji = new TowerJetInput(Jet::HCALIN_TOWERINFO,"TOWERINFO_CALIB");
0090   TowerJetInput* ohtji = new TowerJetInput(Jet::HCALOUT_TOWERINFO,"TOWERINFO_CALIB");
0091   emtji->set_GlobalVertexType(GlobalVertex::MBD);
0092   ihtji->set_GlobalVertexType(GlobalVertex::MBD);
0093   ohtji->set_GlobalVertexType(GlobalVertex::MBD);
0094   towerjetreco->add_input(emtji);
0095   towerjetreco->add_input(ihtji);
0096   towerjetreco->add_input(ohtji);
0097   towerjetreco->add_algo(new FastJetAlgoSub(Jet::ANTIKT, 0.2), "AntiKt_r02");
0098   towerjetreco->add_algo(new FastJetAlgoSub(Jet::ANTIKT, 0.3), "AntiKt_r03");
0099   towerjetreco->add_algo(new FastJetAlgoSub(Jet::ANTIKT, 0.4), "AntiKt_r04");
0100   towerjetreco->add_algo(new FastJetAlgoSub(Jet::ANTIKT, 0.5), "AntiKt_r05");
0101   towerjetreco->set_algo_node("ANTIKT");
0102   towerjetreco->set_input_node("TOWER");
0103   towerjetreco->Verbosity(0);
0104   se->registerSubsystem(towerjetreco);
0105 
0106   JetCalib *jetCalib02 = new JetCalib("JetCalib02");
0107   jetCalib02->set_InputNode("AntiKt_r02");
0108   jetCalib02->set_OutputNode("AntiKt_r02_calib");
0109   jetCalib02->set_JetRadius(0.2);
0110   jetCalib02->set_ZvrtxNode("GlobalVertexMap");
0111   jetCalib02->set_ApplyZvrtxDependentCalib(true);
0112   jetCalib02->set_ApplyEtaDependentCalib(true);
0113   se->registerSubsystem(jetCalib02);
0114 
0115   JetCalib *jetCalib03 = new JetCalib("JetCalib03");
0116   jetCalib03->set_InputNode("AntiKt_r03");
0117   jetCalib03->set_OutputNode("AntiKt_r03_calib");
0118   jetCalib03->set_JetRadius(0.3);
0119   jetCalib03->set_ZvrtxNode("GlobalVertexMap");
0120   jetCalib03->set_ApplyZvrtxDependentCalib(true);
0121   jetCalib03->set_ApplyEtaDependentCalib(true);
0122   se->registerSubsystem(jetCalib03);
0123 
0124   JetCalib *jetCalib04 = new JetCalib("JetCalib04");
0125   jetCalib04->set_InputNode("AntiKt_r04");
0126   jetCalib04->set_OutputNode("AntiKt_r04_calib");
0127   jetCalib04->set_JetRadius(0.4);
0128   jetCalib04->set_ZvrtxNode("GlobalVertexMap");
0129   jetCalib04->set_ApplyZvrtxDependentCalib(true);
0130   jetCalib04->set_ApplyEtaDependentCalib(true);
0131   se->registerSubsystem(jetCalib04);
0132 
0133   JetCalib *jetCalib05 = new JetCalib("JetCalib05");
0134   jetCalib05->set_InputNode("AntiKt_r05");
0135   jetCalib05->set_OutputNode("AntiKt_r05_calib");
0136   jetCalib05->set_JetRadius(0.5);
0137   jetCalib05->set_ZvrtxNode("GlobalVertexMap");
0138   jetCalib05->set_ApplyZvrtxDependentCalib(true);
0139   jetCalib05->set_ApplyEtaDependentCalib(true);
0140   se->registerSubsystem(jetCalib05);
0141 
0142   if(doSim)
0143   {
0144     JetReco *truthjetreco = new JetReco("truthJetReco");
0145     truthjetreco->add_input(new TruthJetInput(Jet::PARTICLE));
0146     truthjetreco->add_algo(new FastJetAlgoSub(Jet::ANTIKT, 0.2), "AntiKt_Truth_r02");
0147     truthjetreco->add_algo(new FastJetAlgoSub(Jet::ANTIKT, 0.3), "AntiKt_Truth_r03");
0148     truthjetreco->add_algo(new FastJetAlgoSub(Jet::ANTIKT, 0.4), "AntiKt_Truth_r04");
0149     truthjetreco->add_algo(new FastJetAlgoSub(Jet::ANTIKT, 0.5), "AntiKt_Truth_r05");
0150     truthjetreco->set_algo_node("ANTIKT");
0151     truthjetreco->set_input_node("TRUTH");
0152     truthjetreco->Verbosity(0);
0153     se->registerSubsystem(truthjetreco);
0154   }
0155 
0156   TimingCut* tc = new TimingCut("AntiKt_r04","TimingCutModule",false); //arguments: 1. jet node name to use, 2. name for fun4all module, 3. doAbort. The last of these tells the module whether or not to abort events that fail the cuts.
0157   tc->Verbosity(0);
0158   se->registerSubsystem(tc);
0159 
0160   VandyJetDSTSkimmer *vs = new VandyJetDSTSkimmer("VandyJetDSTSkimmer");
0161   vs->SetRunnumber(runnumber);
0162   vs->SetOutfileName(std::format("{}/VandyDSTs_run2pp_ana521_2025p007_v001-{:08}-{}_{}.root",outDir, runnumber,25*segStart,25*segStart+24).c_str());
0163   vs->SetDoSim(doSim);
0164   vs->SetDoCalib(true);
0165   vs->Verbosity(0);
0166   se->registerSubsystem(vs);
0167 
0168   se->run(-1);
0169   se->End();
0170   se->PrintTimer();
0171 
0172   delete se;
0173   gSystem->Exit(0);
0174 }