// $Id$ // // File: DCDCHit_factory_TrackAssociated.cc // Created: Tue Dec 9 15:29:06 EST 2014 // Creator: mstaib (on Linux egbert 2.6.32-431.20.3.el6.x86_64 x86_64) // #include #include using namespace std; #include "DCDCHit_factory_TrackAssociated.h" using namespace jana; //------------------ // init //------------------ jerror_t DCDCHit_factory_TrackAssociated::init(void) { SetFactoryFlag(NOT_OBJECT_OWNER); return NOERROR; } //------------------ // brun //------------------ jerror_t DCDCHit_factory_TrackAssociated::brun(jana::JEventLoop *eventLoop, int runnumber) { return NOERROR; } //------------------ // evnt //------------------ jerror_t DCDCHit_factory_TrackAssociated::evnt(JEventLoop *loop, int eventnumber) { // Code to generate factory data goes here. Add it like: // _data.clear(); vector< const DCDCHit *> locCDCHitVector; loop->Get(locCDCHitVector); vector< const DCDCTrackHit *> locCDCTrackHitVector; loop->Get(locCDCTrackHitVector); vector< const DTrackCandidate *> locTrackCandidateVector; loop->Get(locTrackCandidateVector, "CDC"); //Loop over the DTrackCandidates and get the CDCTrackHits associated witht the tracks vector< const DTrackCandidate *>::const_iterator trackIter; for (trackIter = locTrackCandidateVector.begin(); trackIter != locTrackCandidateVector.end(); trackIter++){ vector usedCDCTrackHits = (*trackIter)->used_cdc_indexes; //Now loop over the used track hits to get the associated CDC hit and push into _data vector::const_iterator iHit; for (iHit = usedCDCTrackHits.begin(); iHit != usedCDCTrackHits.end(); iHit++){ int ring = locCDCTrackHitVector[(*iHit)]->wire->ring; int straw = locCDCTrackHitVector[(*iHit)]->wire->straw; //Loop over the DCDCHit to sind a match for(unsigned int i = 0; i < locCDCHitVector.size(); i++){ const DCDCHit * thisHit = locCDCHitVector[i]; if(thisHit->ring == ring && thisHit->straw == straw) _data.push_back(const_cast(thisHit)); } } } return NOERROR; } //------------------ // erun //------------------ jerror_t DCDCHit_factory_TrackAssociated::erun(void) { return NOERROR; } //------------------ // fini //------------------ jerror_t DCDCHit_factory_TrackAssociated::fini(void) { return NOERROR; }