7 #include "TClonesArray.h"
11 #include "St_db_Maker/St_db_Maker.h"
12 #include "StEmcRawMaker/StBemcTables.h"
13 #include "StMuDSTMaker/COMMON/StMuDst.h"
14 #include "StMuDSTMaker/COMMON/StMuDstMaker.h"
15 #include "StMuDSTMaker/COMMON/StMuEvent.h"
17 #include "StGenericVertexMaker/StGenericVertexFinder.h"
18 #include "StGenericVertexMaker/StiPPVertex/StPPVertexFinder.h"
20 #include "travex/ProgramOptions.h"
28 int main(
int argc,
char **argv)
30 tvx::ProgramOptions prgOpts(argc, argv);
32 prgOpts.ProcessOptions();
44 StMuDstMaker *muDstMaker =
new StMuDstMaker(0, 0,
"", prgOpts.PathToInputFile().c_str(),
"st:MuDst.root", 1e9);
52 muDstMaker->SetStatus(
"*", 0);
54 std::vector<std::string> activeBranchNames = {
66 for (
const auto& branchName : activeBranchNames)
67 muDstMaker->SetStatus(branchName.c_str(), 1);
69 TChain *muDstChain = muDstMaker->chain();
71 unsigned int nentries = muDstChain->GetEntries();
72 unsigned int nEventsUser = prgOpts.GetMaxEventsUser();
73 unsigned int nEventsToRead = nEventsUser > 0 ? std::min(nEventsUser, nentries) : nentries;
75 std::cout << nentries <<
" events in chain, " << nEventsToRead <<
" will be read." << std::endl;
79 TClonesArray *verticesRefitted =
new TClonesArray(
"StMuPrimaryVertex", 1000);
81 TFile* outFile =
nullptr;
82 TTree* muDstTreeOut =
nullptr;
83 TBranch* new_branch =
nullptr;
85 TString new_name = TString(
"out_all.MuDst.root");
86 outFile =
new TFile(new_name,
"RECREATE");
88 muDstTreeOut = muDstMaker->chain()->CloneTree(0);
89 new_branch = muDstTreeOut->Branch(
"PrimaryVertices", &verticesRefitted, 65536, 99);
92 StGenericVertexFinder* vertexFinder =
new StPPVertexFinder();
96 St_db_Maker* st_db_maker =
new St_db_Maker(
"db",
"StarDb",
"MySQL:StarDb",
"$STAR/StarDb");
97 st_db_maker->SetMaxEntryTime(20140222, 0);
104 int nEventsNoRecoVertex = 0;
105 int currRunNumber = 0;
109 for (
unsigned int iEvent = 0; iEvent < nEventsToRead; iEvent++)
111 if ( muDstMaker->Make() )
break;
132 StMuDst *muDst = muDstMaker->muDst();
135 StMuEvent *muEvent = muDst->event();
138 if (currRunNumber != muEvent->runNumber())
140 currRunNumber = muEvent->runNumber();
142 st_db_maker->InitRun(currRunNumber);
143 vertexFinder->InitRun(currRunNumber);
149 muDstTreeOut->Fill();
151 vertexFinder->Clear();
155 muDstTreeOut->Write();
160 std::cout <<
"Number of events: " << nEventsToRead
161 <<
", with zero reconstructed verticies: " << nEventsNoRecoVertex << std::endl;
167 static std::string prev_file_name(
"");
168 static std::string curr_file_name(
"");
170 curr_file_name = maker.GetFileName();
172 if (curr_file_name != prev_file_name) {
173 std::cout <<
"Processing new file: " << curr_file_name << std::endl;
174 prev_file_name = curr_file_name;
void process_muDst(tvx::ProgramOptions &prgOpts)
bool switched_file(const StMuDstMaker &maker)
int main(int argc, char **argv)