File indexing completed on 2025-08-03 08:20:21
0001 #include <ffamodules/FlagHandler.h>
0002 #include <fun4all/Fun4AllDstOutputManager.h>
0003 #include <fun4all/Fun4AllInputManager.h>
0004 #include <fun4all/Fun4AllOutputManager.h>
0005 #include <fun4all/Fun4AllServer.h>
0006 #include <fun4allraw/Fun4AllStreamingInputManager.h>
0007 #include <fun4allraw/InputManagerType.h>
0008 #include <fun4allraw/SingleGl1PoolInput.h>
0009 #include <fun4allraw/SingleInttPoolInput.h>
0010 #include <phool/recoConsts.h>
0011 #include <GlobalVariables.C>
0012
0013 #include <intt/InttOdbcQuery.h> // To get data taking mode
0014 #include <inttcalib/InttCalib.h>
0015
0016 R__LOAD_LIBRARY(libinttcalib.so)
0017 R__LOAD_LIBRARY(libintt.so)
0018
0019 R__LOAD_LIBRARY(libfun4all.so)
0020 R__LOAD_LIBRARY(libffamodules.so)
0021 R__LOAD_LIBRARY(libfun4allraw.so)
0022 R__LOAD_LIBRARY(libffarawmodules.so)
0023
0024 bool isGood(const string &infile);
0025
0026 void Fun4All_Intt_Calib_Raw(
0027 int num_evt = 400000,
0028 int run_num,
0029 const std::string &hotmap_cdb_file = "hotmap.root",
0030 const std::string &hotmap_png_file = "hotmap.png",
0031 const std::string &bcomap_cdb_file = "bcomap.root",
0032 const std::string &bcomap_png_file = "bcomap.png",
0033 const string &input_gl1file = "gl1daq.list",
0034 const string &input_inttfile00 = "intt0.list",
0035 const string &input_inttfile01 = "intt1.list",
0036 const string &input_inttfile02 = "intt2.list",
0037 const string &input_inttfile03 = "intt3.list",
0038 const string &input_inttfile04 = "intt4.list",
0039 const string &input_inttfile05 = "intt5.list",
0040 const string &input_inttfile06 = "intt6.list",
0041 const string &input_inttfile07 = "intt7.list",
0042
0043 bool isStreaming = true)
0044 {
0045
0046 vector<string> gl1_infile;
0047 gl1_infile.push_back(input_gl1file);
0048
0049
0050 vector<string> intt_infile;
0051 intt_infile.push_back(input_inttfile00);
0052 intt_infile.push_back(input_inttfile01);
0053 intt_infile.push_back(input_inttfile02);
0054 intt_infile.push_back(input_inttfile03);
0055 intt_infile.push_back(input_inttfile04);
0056 intt_infile.push_back(input_inttfile05);
0057 intt_infile.push_back(input_inttfile06);
0058 intt_infile.push_back(input_inttfile07);
0059
0060 Fun4AllServer *se = Fun4AllServer::instance();
0061
0062
0063 recoConsts *rc = recoConsts::instance();
0064 rc->set_StringFlag("CDB_GLOBALTAG", "ProdA_2024");
0065 rc->set_uint64Flag("TIMESTAMP", run_num);
0066
0067 Fun4AllStreamingInputManager *in = new Fun4AllStreamingInputManager("Comb");
0068 int i = 0;
0069 for (auto iter : gl1_infile)
0070 {
0071 if (isGood(iter))
0072 {
0073 SingleGl1PoolInput *gl1_sngl = new SingleGl1PoolInput("GL1_" + to_string(i));
0074
0075 gl1_sngl->AddListFile(iter);
0076 in->registerStreamingInput(gl1_sngl, InputManagerType::GL1);
0077 i++;
0078 }
0079 }
0080 i = 0;
0081 for (auto iter : intt_infile)
0082 {
0083 if (isGood(iter))
0084 {
0085 cout << "opening file " << iter << endl;
0086 SingleInttPoolInput *intt_sngl = new SingleInttPoolInput("INTT_" + to_string(i));
0087
0088 intt_sngl->SetNegativeBco(120 - 23);
0089 intt_sngl->SetBcoRange(500);
0090 intt_sngl->AddListFile(iter);
0091 in->registerStreamingInput(intt_sngl, InputManagerType::INTT);
0092 i++;
0093 }
0094 }
0095 se->registerInputManager(in);
0096
0097 InttCalib *inttcalib = new InttCalib();
0098 inttcalib->Verbosity(0);
0099
0100
0101 inttcalib->SetHotMapCdbFile(hotmap_cdb_file);
0102 inttcalib->SetHotMapPngFile(hotmap_png_file);
0103 inttcalib->SetBcoMapCdbFile(bcomap_cdb_file);
0104 inttcalib->SetBcoMapPngFile(bcomap_png_file);
0105 inttcalib->SetBcoMaximumEvent(num_evt);
0106 inttcalib->SetStreamingMode(isStreaming);
0107 inttcalib->SetRunNumber(run_num);
0108
0109 inttcalib->SetHotMapCdbFile(hotmap_cdb_file);
0110
0111 inttcalib->SetBcoMapCdbFile(bcomap_cdb_file);
0112
0113
0114 se->registerSubsystem(inttcalib);
0115 se->run(num_evt);
0116
0117 se->End();
0118 delete se;
0119 cout << "all done" << endl;
0120 gSystem->Exit(0);
0121 }
0122
0123 bool isGood(const string &infile)
0124 {
0125 ifstream intest;
0126 intest.open(infile);
0127 bool goodfile = false;
0128 if (intest.is_open())
0129 {
0130 if (intest.peek() != std::ifstream::traits_type::eof())
0131 {
0132 goodfile = true;
0133 }
0134 intest.close();
0135 }
0136 return goodfile;
0137 }