File indexing completed on 2025-08-03 08:20:29
0001 #include <GlobalVariables.C>
0002 #include <Trkr_TpcReadoutInit.C>
0003 #include <fun4all/Fun4AllDstOutputManager.h>
0004 #include <fun4all/Fun4AllInputManager.h>
0005 #include <fun4all/Fun4AllOutputManager.h>
0006 #include <fun4all/Fun4AllServer.h>
0007 #include <fun4allraw/Fun4AllStreamingInputManager.h>
0008 #include <fun4allraw/InputManagerType.h>
0009 #include <fun4allraw/SingleGl1PoolInput.h>
0010 #include <fun4allraw/SingleInttPoolInput.h>
0011 #include <fun4allraw/SingleInttEventInput.h>
0012 #include <fun4allraw/SingleMicromegasPoolInput.h>
0013 #include <fun4allraw/SingleMvtxPoolInput.h>
0014 #include <fun4allraw/SingleTpcPoolInput.h>
0015
0016 #include <intt/InttOdbcQuery.h>
0017
0018 #include <phool/recoConsts.h>
0019
0020 #include <ffarawmodules/InttCheck.h>
0021 #include <ffarawmodules/StreamingCheck.h>
0022 #include <ffarawmodules/TpcCheck.h>
0023
0024 #include <ffamodules/HeadReco.h>
0025 #include <ffamodules/FlagHandler.h>
0026 #include <ffamodules/SyncReco.h>
0027
0028 R__LOAD_LIBRARY(libfun4all.so)
0029 R__LOAD_LIBRARY(libffamodules.so)
0030 R__LOAD_LIBRARY(libfun4allraw.so)
0031 R__LOAD_LIBRARY(libffarawmodules.so)
0032 R__LOAD_LIBRARY(libintt.so)
0033
0034 bool isGood(const string &infile);
0035 bool use_inttpool = true;
0036
0037 void Fun4All_Stream_Combiner(int nEvents = 5, int RunNumber = 41989,
0038 const string &input_gl1file = "gl1daq.list",
0039 const string &input_inttfile00 = "intt0.list",
0040 const string &input_inttfile01 = "intt1.list",
0041 const string &input_inttfile02 = "intt2.list",
0042 const string &input_inttfile03 = "intt3.list",
0043 const string &input_inttfile04 = "intt4.list",
0044 const string &input_inttfile05 = "intt5.list",
0045 const string &input_inttfile06 = "intt6.list",
0046 const string &input_inttfile07 = "intt7.list",
0047 const string &input_mvtxfile00 = "mvtx0.list",
0048 const string &input_mvtxfile01 = "mvtx1.list",
0049 const string &input_mvtxfile02 = "mvtx2.list",
0050 const string &input_mvtxfile03 = "mvtx3.list",
0051 const string &input_mvtxfile04 = "mvtx4.list",
0052 const string &input_mvtxfile05 = "mvtx5.list",
0053 const string &input_tpcfile00 = "tpc00.list",
0054 const string &input_tpcfile01 = "tpc01.list",
0055 const string &input_tpcfile02 = "tpc02.list",
0056 const string &input_tpcfile03 = "tpc03.list",
0057 const string &input_tpcfile04 = "tpc04.list",
0058 const string &input_tpcfile05 = "tpc05.list",
0059 const string &input_tpcfile06 = "tpc06.list",
0060 const string &input_tpcfile07 = "tpc07.list",
0061 const string &input_tpcfile08 = "tpc08.list",
0062 const string &input_tpcfile09 = "tpc09.list",
0063 const string &input_tpcfile10 = "tpc10.list",
0064 const string &input_tpcfile11 = "tpc11.list",
0065 const string &input_tpcfile12 = "tpc12.list",
0066 const string &input_tpcfile13 = "tpc13.list",
0067 const string &input_tpcfile14 = "tpc14.list",
0068 const string &input_tpcfile15 = "tpc15.list",
0069 const string &input_tpcfile16 = "tpc16.list",
0070 const string &input_tpcfile17 = "tpc17.list",
0071 const string &input_tpcfile18 = "tpc18.list",
0072 const string &input_tpcfile19 = "tpc19.list",
0073 const string &input_tpcfile20 = "tpc20.list",
0074 const string &input_tpcfile21 = "tpc21.list",
0075 const string &input_tpcfile22 = "tpc22.list",
0076 const string &input_tpcfile23 = "tpc23.list",
0077 const string &input_tpotfile = "tpot.list")
0078 {
0079
0080 vector<string> gl1_infile;
0081 gl1_infile.push_back(input_gl1file);
0082
0083
0084 vector<string> mvtx_infile;
0085 mvtx_infile.push_back(input_mvtxfile00);
0086 mvtx_infile.push_back(input_mvtxfile01);
0087 mvtx_infile.push_back(input_mvtxfile02);
0088 mvtx_infile.push_back(input_mvtxfile03);
0089 mvtx_infile.push_back(input_mvtxfile04);
0090 mvtx_infile.push_back(input_mvtxfile05);
0091
0092
0093 vector<string> intt_infile;
0094 intt_infile.push_back(input_inttfile00);
0095 intt_infile.push_back(input_inttfile01);
0096 intt_infile.push_back(input_inttfile02);
0097 intt_infile.push_back(input_inttfile03);
0098 intt_infile.push_back(input_inttfile04);
0099 intt_infile.push_back(input_inttfile05);
0100 intt_infile.push_back(input_inttfile06);
0101 intt_infile.push_back(input_inttfile07);
0102
0103 vector<string> tpc_infile;
0104 tpc_infile.push_back(input_tpcfile00);
0105 tpc_infile.push_back(input_tpcfile01);
0106 tpc_infile.push_back(input_tpcfile02);
0107 tpc_infile.push_back(input_tpcfile03);
0108 tpc_infile.push_back(input_tpcfile04);
0109 tpc_infile.push_back(input_tpcfile05);
0110 tpc_infile.push_back(input_tpcfile06);
0111 tpc_infile.push_back(input_tpcfile07);
0112 tpc_infile.push_back(input_tpcfile08);
0113 tpc_infile.push_back(input_tpcfile09);
0114 tpc_infile.push_back(input_tpcfile10);
0115 tpc_infile.push_back(input_tpcfile11);
0116 tpc_infile.push_back(input_tpcfile12);
0117 tpc_infile.push_back(input_tpcfile13);
0118 tpc_infile.push_back(input_tpcfile14);
0119 tpc_infile.push_back(input_tpcfile15);
0120 tpc_infile.push_back(input_tpcfile16);
0121 tpc_infile.push_back(input_tpcfile17);
0122 tpc_infile.push_back(input_tpcfile18);
0123 tpc_infile.push_back(input_tpcfile19);
0124 tpc_infile.push_back(input_tpcfile20);
0125 tpc_infile.push_back(input_tpcfile21);
0126 tpc_infile.push_back(input_tpcfile22);
0127 tpc_infile.push_back(input_tpcfile23);
0128
0129
0130 vector<string> tpot_infile;
0131 tpot_infile.push_back(input_tpotfile);
0132
0133 TpcSampleInit( RunNumber );
0134 std::cout<< " run: " << RunNumber
0135 << " samples: " << TRACKING::reco_tpc_maxtime_sample
0136 << " pre: " << TRACKING::reco_tpc_time_presample
0137 << std::endl;
0138
0139 Fun4AllServer *se = Fun4AllServer::instance();
0140 se->Verbosity(1);
0141 recoConsts *rc = recoConsts::instance();
0142 rc->set_IntFlag("RUNNUMBER", RunNumber);
0143 Fun4AllStreamingInputManager *in = new Fun4AllStreamingInputManager("Comb");
0144
0145
0146
0147 int NumInputs = 0;
0148 int i = 0;
0149
0150 for (auto iter : gl1_infile)
0151 {
0152 if (isGood(iter))
0153 {
0154 SingleGl1PoolInput *gl1_sngl = new SingleGl1PoolInput("GL1_" + to_string(i));
0155
0156 gl1_sngl->AddListFile(iter);
0157 in->registerStreamingInput(gl1_sngl, InputManagerType::GL1);
0158 i++;
0159 }
0160 }
0161 NumInputs += i;
0162
0163 i = 0;
0164 if (use_inttpool)
0165 {
0166 for (auto iter : intt_infile)
0167 {
0168 if (isGood(iter))
0169 {
0170 cout << "opening file " << iter << endl;
0171 SingleInttPoolInput *intt_sngl = new SingleInttPoolInput("INTT_" + to_string(i));
0172
0173 InttOdbcQuery query;
0174 bool isStreaming = false;
0175 if(RunNumber != 0)
0176 {
0177 query.Query(RunNumber);
0178 isStreaming = query.IsStreaming();
0179 }
0180 intt_sngl->streamingMode(isStreaming);
0181
0182 intt_sngl->AddListFile(iter);
0183 in->registerStreamingInput(intt_sngl, InputManagerType::INTT);
0184 i++;
0185 }
0186 }
0187 }
0188 else
0189 {
0190 for (auto iter : intt_infile)
0191 {
0192 if (isGood(iter))
0193 {
0194 cout << "opening file " << iter << endl;
0195 SingleInttEventInput *intt_sngl = new SingleInttEventInput("INTT_" + to_string(i));
0196 intt_sngl->Verbosity(3);
0197 intt_sngl->SetNegativeBco(120-23);
0198 intt_sngl->SetBcoRange(500);
0199 intt_sngl->AddListFile(iter);
0200 in->registerStreamingInput(intt_sngl, InputManagerType::INTT);
0201 i++;
0202 }
0203 }
0204 }
0205 NumInputs += i;
0206
0207 i = 0;
0208 for (auto iter : mvtx_infile)
0209 {
0210 if (isGood(iter))
0211 {
0212 SingleMvtxPoolInput *mvtx_sngl = new SingleMvtxPoolInput("MVTX_" + to_string(i));
0213
0214 mvtx_sngl->AddListFile(iter);
0215 in->registerStreamingInput(mvtx_sngl, InputManagerType::MVTX);
0216 i++;
0217 }
0218 }
0219 NumInputs += i;
0220
0221 i = 0;
0222 for (auto iter : tpc_infile)
0223 {
0224 if (isGood(iter))
0225 {
0226 SingleTpcPoolInput *tpc_sngl = new SingleTpcPoolInput("TPC_" + to_string(i));
0227
0228
0229 tpc_sngl->SetBcoRange(5);
0230 tpc_sngl->AddListFile(iter);
0231
0232 tpc_sngl->SetMaxTpcTimeSamples(1024);
0233 in->registerStreamingInput(tpc_sngl, InputManagerType::TPC);
0234 i++;
0235 }
0236 }
0237 NumInputs += i;
0238
0239 i = 0;
0240 for (auto iter : tpot_infile)
0241 {
0242 if (isGood(iter))
0243 {
0244 SingleMicromegasPoolInput *mm_sngl = new SingleMicromegasPoolInput("MICROMEGAS_" + to_string(i));
0245
0246 mm_sngl->SetBcoRange(10);
0247 mm_sngl->SetNegativeBco(2);
0248 mm_sngl->SetBcoPoolSize(50);
0249 mm_sngl->AddListFile(iter);
0250 in->registerStreamingInput(mm_sngl, InputManagerType::MICROMEGAS);
0251 i++;
0252 }
0253 }
0254 NumInputs += i;
0255
0256
0257 if (NumInputs == 0)
0258 {
0259 std::cout << "no file lists no input manager registered, quitting" << std::endl;
0260 gSystem->Exit(1);
0261 }
0262 se->registerInputManager(in);
0263
0264
0265
0266
0267
0268
0269
0270 SyncReco *sync = new SyncReco();
0271 se->registerSubsystem(sync);
0272
0273 HeadReco *head = new HeadReco();
0274 se->registerSubsystem(head);
0275
0276 FlagHandler *flag = new FlagHandler();
0277 se->registerSubsystem(flag);
0278
0279
0280
0281 Fun4AllOutputManager *out = new Fun4AllDstOutputManager("out", "streaming.root");
0282
0283
0284
0285
0286
0287
0288 se->registerOutputManager(out);
0289
0290 if (nEvents < 0)
0291 {
0292 return;
0293 }
0294 se->run(nEvents);
0295
0296 se->End();
0297 delete se;
0298 cout << "all done" << endl;
0299 gSystem->Exit(0);
0300 }
0301
0302 bool isGood(const string &infile)
0303 {
0304 ifstream intest;
0305 intest.open(infile);
0306 bool goodfile = false;
0307 if (intest.is_open())
0308 {
0309 if (intest.peek() != std::ifstream::traits_type::eof())
0310 {
0311 goodfile = true;
0312 }
0313 intest.close();
0314 }
0315 return goodfile;
0316 }