17 #include <TCollection.h>
18 #include <TDatabasePDG.h>
19 #include <TDirectory.h>
20 #include <TParticlePDG.h>
30 typedef std::vector<const VirtualParticle*> TrackVector;
31 typedef TrackVector::iterator TrackVectorIter;
32 typedef TrackVector::const_iterator TrackVectorCIter;
40 , particles(
"erhic::ParticleMC", 100) {
50 TObject* object(NULL);
52 while ((
object = next())) {
53 tracks.push_back(static_cast<ParticleMC*>(
object));
64 std::list<const VirtualParticle*> plist(final_.begin(),
67 final_ = TrackVector(plist.begin(), plist.end());
77 while ((p = static_cast<ParticleMC*>(next()))) {
88 for (TrackVectorCIter i = final_.begin(); i != final_.end(); ++i) {
89 mom += (*i)->Get4Vector();
99 for (TrackVectorCIter i = final_.begin(); i != final_.end(); ++i) {
100 mom += (*i)->Get4Vector();
110 TDatabasePDG* pdg = TDatabasePDG::Instance();
111 for (TrackVectorCIter i = final_.begin(); i != final_.end(); ++i) {
112 TParticlePDG* part = pdg->GetParticle((*i)->Id());
114 charge += part->Charge() / 3.;
116 std::cout <<
"Unknown particle: " << (*i)->Id() << std::endl;
162 if (gDirectory) gDirectory->GetObject(treeName.c_str(),
mTree);
virtual const ParticleMC * ScatteredLepton() const
virtual void Clear(Option_t *="")
Double32_t QSquared
Q2 calculated from scattered electron.
Double32_t nu
Energy transfer from the electron.
Double_t FinalStateCharge() const
Double32_t y
Inelasticity.
Int_t nTracks
Number of Particles in the event (intermediate + final)
virtual UShort_t GetStatus() const
Int_t number
Event number.
TClonesArray particles
Particle list.
EventMC * mEvent
The last event read.
Int_t process
PYTHIA code for the physics process producing the event.
void HadronicFinalState(ParticlePtrList &) const
Reader(const std::string &treeName="EICTree")
Double32_t WSquared
Invariant mass of the hadronic system.
virtual void AddLast(ParticleMC *track)
virtual const ParticleMC * ExchangeBoson() const
virtual const ParticleMC * GetTrack(UInt_t) const
EventMC * Read(Long64_t number)
TTree * mTree
The tree being read.
virtual const ParticleMC * BeamLepton() const
TLorentzVector HadronicFinalStateMomentum() const
virtual const ParticleMC * BeamHadron() const
TLorentzVector FinalStateMomentum() const
void FinalState(ParticlePtrList &particles) const
Double32_t x
Bjorken scaling variable.
Double32_t ELeptonOutNucl
std::vector< const VirtualParticle * > GetTracks() const