// $Id$ // // File: DCDCDigiHit_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 "DCDCDigiHit_factory_TrackAssociated.h" using namespace jana; //------------------ // init //------------------ jerror_t DCDCDigiHit_factory_TrackAssociated::init(void) { SetFactoryFlag(NOT_OBJECT_OWNER); return NOERROR; } //------------------ // brun //------------------ jerror_t DCDCDigiHit_factory_TrackAssociated::brun(jana::JEventLoop *eventLoop, int runnumber) { return NOERROR; } //------------------ // evnt //------------------ jerror_t DCDCDigiHit_factory_TrackAssociated::evnt(JEventLoop *loop, int eventnumber) { _data.clear(); // Code to generate factory data goes here. Add it like: // vector< const DCDCDigiHit *> locCDCHitVector; loop->Get(locCDCHitVector); vector< const DCDCTrackHit *> locCDCTrackHitVector; // Get from track candidate vector< const DTrackTimeBased *> locTrackTimeBasedVector; loop->Get(locTrackTimeBasedVector); //Loop over the DTrackCandidates and get the CDCTrackHits associated witht the tracks vector< const DTrackTimeBased *>::const_iterator trackIter; for (trackIter = locTrackTimeBasedVector.begin(); trackIter != locTrackTimeBasedVector.end(); trackIter++){ if(TMath::Prob((*trackIter)->chisq, (*trackIter)->Ndof) < 0.01) continue; // Let's try a cut on the angle of the track here //if (TMath::Abs(((*trackIter)->momentum().Theta() * TMath::RadToDeg() ) - 90 ) > 5) continue; (*trackIter)->Get(locCDCTrackHitVector); //Now loop over the used track hits to get the associated CDC hit and push into _data vector::const_iterator iHit; for (iHit = locCDCTrackHitVector.begin(); iHit != locCDCTrackHitVector.end(); iHit++){ int ring = (*iHit)->wire->ring; int straw = (*iHit)->wire->straw; //Loop over the DCDCDigiHit to sind a match for(unsigned int i = 0; i < locCDCHitVector.size(); i++){ const DCDCDigiHit * thisHit = locCDCHitVector[i]; if(thisHit->ring == ring && thisHit->straw == straw){ //if (find ( _data.begin(), _data.end(), thisHit) == _data.end()){ _data.push_back(const_cast(thisHit)); //} } } } } return NOERROR; } //------------------ // erun //------------------ jerror_t DCDCDigiHit_factory_TrackAssociated::erun(void) { return NOERROR; } //------------------ // fini //------------------ jerror_t DCDCDigiHit_factory_TrackAssociated::fini(void) { return NOERROR; }