17 #include <TProcessID.h>
37 && mLine.find(
"finished") != std::string::npos;
44 count = TProcessID::GetObjectCount();
51 TProcessID::SetObjectCount(count);
66 while (std::getline(*mInput, mLine).good()) {
72 throw std::runtime_error(error);
74 finished = FinishEvent();
82 if (!mEvent->Parse(mLine)) {
87 error =
"Bad event input: " + mLine;
94 error =
"Bad particle input in event";
103 throw std::runtime_error(
"Ended mid-event");
112 return mEvent.release();
117 std::auto_ptr<DisKinematics> nm(
119 std::auto_ptr<DisKinematics> jb(
121 std::auto_ptr<DisKinematics> da(
124 mEvent->SetLeptonKinematics(*nm);
126 for (
unsigned n(0); n < mEvent->GetNTracks(); ++n) {
127 mEvent->GetTrack(n)->ComputeEventDependentQuantities(*mEvent);
130 mEvent->SetJacquetBlondelKinematics(*jb);
133 mEvent->SetDoubleAngleKinematics(*da);
141 "EventFromAsciiFactory::FinishEvent(): failed to find beams"
145 const TLorentzVector h = beams.BeamHadron();
146 TLorentzVector l = beams.BeamLepton();
147 TLorentzVector s = beams.ScatteredLepton();
148 TVector3 boost = -h.BoostVector();
151 mEvent->SetELeptonInNuclearFrame(l.E());
152 mEvent->SetEScatteredInNuclearFrame(s.E());
162 mEvent->AddLast(&particle);
166 catch(std::exception& error) {
167 std::cerr <<
"Exception building particle: " << error.what() << std::endl;
174 return T::Class()->GetName();
void SetEvent(EventMC *event)
char getFirstNonBlank(const std::string &)
virtual std::string EventName() const
bool AtEndOfEvent() const
static bool IdentifyBeams(const erhic::VirtualEvent &, BeamParticles &)