Back to home page

sPhenix code displayed by LXR

 
 

    


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; // set to false if you want to use the intt event input mgr
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 // GL1 which provides the beam clock reference (if we ran with GL1)
0080   vector<string> gl1_infile;
0081   gl1_infile.push_back(input_gl1file);
0082 
0083 // MVTX
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 // INTT
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 // TPOT
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 //  in->Verbosity(3);
0145 
0146 // create and register input managers
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       //    gl1_sngl->Verbosity(3);
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 //    intt_sngl->Verbosity(3);
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     //mvtx_sngl->Verbosity(5);
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 //    tpc_sngl->Verbosity(2);
0228     //   tpc_sngl->DryRun();
0229     tpc_sngl->SetBcoRange(5);
0230     tpc_sngl->AddListFile(iter);
0231 //    tpc_sngl->SetMaxTpcTimeSamples(TRACKING::reco_tpc_maxtime_sample);
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     //   sngl->Verbosity(3);
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 // if there is no input manager this macro will still run - so just quit here
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   // StreamingCheck *scheck = new StreamingCheck();
0264   // scheck->SetTpcBcoRange(130);
0265   // se->registerSubsystem(scheck);
0266   // TpcCheck *tpccheck = new TpcCheck();
0267   // tpccheck->Verbosity(3);
0268   // tpccheck->SetBcoRange(130);
0269   // se->registerSubsystem(tpccheck);
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   // string outdir = "/sphenix/user/pinkenbu";
0279   // string outfilename = "./gl1A.root";
0280   // int neventsper = 1;
0281   Fun4AllOutputManager *out = new Fun4AllDstOutputManager("out", "streaming.root");
0282 
0283   // Fun4AllOutputManager *out = new Fun4AllDstOutputManager("out",outfilename);
0284   // out->UseFileRule();
0285   // out->SetNEvents(neventsper);                       // number of events per output file
0286   // out->SetClosingScript("stageout.sh");      // script to call on file close (not quite working yet...)
0287   // out->SetClosingScriptArgs(outdir);  // additional beyond the name of the file
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()) // is it non zero?
0310     {
0311       goodfile = true;
0312     }
0313       intest.close();
0314   }
0315   return goodfile;
0316 }