39 #include "TLorentzVector.h"
40 #include "TClonesArray.h"
46 cerr <<
"Converts pwa2000 evt format to ROOT tree" << endl;
47 cerr <<
"usage:" << endl;
48 cerr <<
"cat myevents.evt | " << prog <<
" myevents.root " << endl;
52 int main(
int argc,
char** argv) {
60 list<particle> f_mesons;
62 string outfilename(argv[1]);
64 TFile* outfile=TFile::Open(outfilename.c_str(),
"RECREATE");
66 cerr <<
"Could not open output file '"<<outfilename <<
"'. Aborting." << endl;
69 TTree* outtree=
new TTree(
"events",
"events");
70 TClonesArray*
p=
new TClonesArray(
"TLorentzVector");
75 outtree->Branch(
"p",&p);
76 outtree->Branch(
"beam",&beam);
77 outtree->Branch(
"q",&q);
78 outtree->Branch(
"qbeam",&qbeam,
"qbeam/I");
81 while(cin.good() && !cin.eof()) {
85 cerr <<
"EVENT NOT VALID (NO BEAM AND/OR NO FINAL STATE)!!! SKIPPING" << endl;
91 f_mesons=e.f_mesons();
93 list<particle>::iterator it = f_mesons.begin();
94 while (it != f_mesons.end() ) {
96 new ((*p)[p->GetEntries()]) TLorentzVector(pX.
x(),pX.
y(),pX.
z(),pX.
t());
97 q.push_back(it->Charge());
100 fourVec evtbeam=e.beam().get4P();
101 beam.SetPxPyPzE(evtbeam.
x(),evtbeam.
y(),evtbeam.
z(),evtbeam.
t());
102 qbeam=e.beam().Charge();