00001
00002
00003 #include "StjeParticleCollector.h"
00004
00005 #include <StJetFinder/AbstractFourVec.h>
00006
00007 #include <emulator/StMuTrackFourVec.h>
00008 #include <StFourPMaker.h>
00009
00010 #include <vector>
00011
00012 using namespace std;
00013
00014 StjeParticleCollector::StjeParticleCollector(const StppAnaPars* ap, StFourPMaker* fp, ParticleList& particleList)
00015 : _fourPMaker(fp)
00016 , _particleList(particleList)
00017 , _anaPar(*ap)
00018 {
00019 }
00020
00021 void StjeParticleCollector::Do(int iVertex)
00022 {
00023 const vector<AbstractFourVec*> &particleList = _fourPMaker->getVertexNodes()[iVertex].tracks;
00024
00025 _particleList.clear();
00026
00027 for(vector<AbstractFourVec*>::const_iterator particle = particleList.begin(); particle != particleList.end(); ++particle) {
00028
00029 if(shoudNotPassToJetFinder(*particle)) continue;
00030
00031 _particleList.push_back(*particle);
00032 }
00033 }
00034
00035 size_t StjeParticleCollector::numberOfVertices() const
00036 {
00037 return _fourPMaker->getVertexNodes().size();
00038 }
00039
00040 bool StjeParticleCollector::shoudNotPassToJetFinder(const AbstractFourVec* particle) const
00041 {
00042 const StMuTrackFourVec* p = dynamic_cast<const StMuTrackFourVec*>(particle);
00043
00044 if (p == 0) return true;
00045
00046 if (p->pt() <= _anaPar.mPtMin) return true;
00047
00048 if (fabs(p->eta()) >= _anaPar.mEtaMax) return true;
00049
00050 if(isChargedTrack(p)) {
00051
00052 StMuTrackEmu* track = p->track();
00053 if (track->flag() <= _anaPar.mFlagMin) return true;
00054
00055 if (track->nHits() <= _anaPar.mNhits) return true;
00056 }
00057
00058 return false;
00059 }
00060
00061 bool StjeParticleCollector::isChargedTrack(const StMuTrackFourVec* p) const
00062 {
00063 return p->track() != 0;
00064 }