00026 {
00027
00028 SmartDataPtr<EvtRecEvent> evtRecEvent(eventSvc(), EventModel::EvtRec::EvtRecEvent);
00029 SmartDataPtr<EvtRecTrackCol> evtRecTrkCol(eventSvc(), EventModel::EvtRec::EvtRecTrackCol);
00030
00031 EvtRecTrack* recTrk = const_cast<EvtRecTrack*>( aPhoton.photon() );
00032
00033 if ( recTrk->isEmcShowerValid() ) {
00034 RecEmcShower *emcTrk = recTrk->emcShower();
00035 Hep3Vector emcpos(emcTrk->x(), emcTrk->y(), emcTrk->z());
00036
00037 double dthe = 200.;
00038 double dphi = 200.;
00039 double dang = 200.;
00040 for(int j = 0; j < evtRecEvent->totalCharged(); j++) {
00041 EvtRecTrackIterator jtTrk = evtRecTrkCol->begin() + j;
00042 if(!(*jtTrk)->isExtTrackValid()) continue;
00043 RecExtTrack *extTrk = (*jtTrk)->extTrack();
00044 if(extTrk->emcVolumeNumber() == -1) continue;
00045 Hep3Vector extpos = extTrk->emcPosition();
00046 double angd = extpos.angle(emcpos);
00047 double thed = extpos.theta() - emcpos.theta();
00048 double phid = extpos.deltaPhi(emcpos);
00049 thed = fmod(thed+CLHEP::twopi+CLHEP::twopi+pi, CLHEP::twopi) - CLHEP::pi;
00050 phid = fmod(phid+CLHEP::twopi+CLHEP::twopi+pi, CLHEP::twopi) - CLHEP::pi;
00051 if(angd < dang){
00052 dang = angd;
00053 dthe = thed;
00054 dphi = phid;
00055 }
00056 }
00057
00058 double eraw = emcTrk->energy();
00059 dang = dang * 180 / (CLHEP::pi);
00060 if (eraw > m_energyCut && fabs(dang) > m_angleCut) return true;
00061 }
00062
00063 return false;
00064 }