Definition at line 97 of file LumTau.cxx.
References cos(), Bes_Common::DEBUG, DstEmcShower::energy(), EventModel::EvtRec::EvtRecEvent, EventModel::EvtRec::EvtRecTrackCol, Bes_Common::FATAL, genRecEmupikp::i, Bes_Common::INFO, m_costht1, m_costht2, m_dltphi, m_dlttht, m_e1, m_e2, m_etot, m_phi1, m_phi2, m_rec, m_run, m_time, m_tuple2, msgSvc(), pai, DstEmcShower::phi(), and DstEmcShower::theta().
00098 {
00099 StatusCode sc=StatusCode::SUCCESS;
00100
00101 MsgStream log(msgSvc(),name());
00102 log<<MSG::INFO<<"in execute()"<<endreq;
00103
00104 SmartDataPtr<Event::EventHeader> eventHeader(eventSvc(),"/Event/EventHeader");
00105 SmartDataPtr<EvtRecEvent> evtRecEvent(eventSvc(), EventModel::EvtRec::EvtRecEvent);
00106
00107 log<<MSG::DEBUG<<"ncharg, nneu, tottks = "<<evtRecEvent->totalCharged()<<" , "<<evtRecEvent->totalNeutral()<<" , "<<evtRecEvent->totalTracks()<<endreq;
00108 SmartDataPtr<EvtRecTrackCol> evtRecTrkCol(eventSvc(),EventModel::EvtRec::EvtRecTrackCol);
00109
00110 log<<MSG::DEBUG <<"ncharg, nneu, tottks = "<<evtRecEvent->totalCharged()<<" , "<<evtRecEvent->totalNeutral()<<" , "<<evtRecEvent->totalTracks()<<endreq;
00111 SmartDataPtr<RecEsTimeCol> evTimeCol(eventSvc(),"/Event/Recon/RecEsTimeCol");
00112
00113 double time = eventHeader->time();
00114 m_time = time;
00115
00116 m_run = eventHeader->runNumber();
00117 m_rec = eventHeader->eventNumber();
00118
00119 if(m_rec%1000==0)cout<<"Run "<<m_run<<" Event "<<m_rec<<endl;
00120
00121 double Emax1 = -1;
00122 double Emax2 = -1;
00123 int Imax[2];
00124
00125 if((evtRecEvent->totalTracks() >= 2)){
00126 double etot = 0.;
00127 for(int i = 0;i < evtRecEvent->totalTracks(); i++)
00128 {
00129 if(i>=evtRecTrkCol->size()) break;
00130 EvtRecTrackIterator itTrk=evtRecTrkCol->begin() + i;
00131 if(!(*itTrk)->isEmcShowerValid()) continue;
00132 RecEmcShower *emcTrk = (*itTrk)->emcShower();
00133 double Ener=emcTrk->energy();
00134 if(Ener>Emax2)
00135 {
00136 Emax2=Ener;
00137 Imax[1]=i;
00138 }
00139 if(Ener>Emax1)
00140 {
00141 Emax2=Emax1;
00142 Imax[1]=Imax[0];
00143 Emax1=Ener;
00144 Imax[0]=i;
00145 }
00146 etot += Ener;
00147 }
00148
00149 m_etot = etot;
00150 m_e1 = Emax1;
00151 m_e2 = Emax2;
00152
00153 log << MSG::INFO << "Emax1 = " << Emax1 <<"Emax2= "<<Emax2<< endreq;
00154 if(Emax1 > 0 && Emax2 > 0){
00155 double emcphi[2],emctht[2];
00156 for(int i = 0;i < 2; i++)
00157 {
00158 if(i>=evtRecTrkCol->size()) break;
00159 EvtRecTrackIterator itTrk=evtRecTrkCol->begin() + Imax[i];
00160 if(!(*itTrk)->isEmcShowerValid()) continue;
00161 RecEmcShower *emcTrk = (*itTrk)->emcShower();
00162 emcphi[i]=emcTrk->phi();
00163 emctht[i]=emcTrk->theta();
00164 }
00165
00166 double dltphi=(fabs(emcphi[0]-emcphi[1])-pai)*180./pai;
00167 double dlttht=(fabs(emctht[0]+emctht[1])-pai)*180./pai;
00168 m_costht1=cos(emctht[0]);
00169 m_costht2=cos(emctht[1]);
00170 m_phi1=emcphi[0];
00171 m_phi2=emcphi[1];
00172 m_dlttht=dlttht;
00173 m_dltphi=dltphi;
00174 }
00175 else{
00176 m_etot = -1;
00177 m_e1 = -1;
00178 m_e2 = -1;
00179 m_costht1 = -1;
00180 m_costht2 = -1;
00181 m_phi1 = -1;
00182 m_phi2 = -1;
00183 m_dlttht = -1;
00184 m_dltphi = -1;
00185 }
00186 }
00187 else{
00188 m_etot = -1;
00189 m_e1 = -1;
00190 m_e2 = -1;
00191 m_costht1 = -1;
00192 m_costht2 = -1;
00193 m_phi1 = -1;
00194 m_phi2 = -1;
00195 m_dlttht = -1;
00196 m_dltphi = -1;
00197 }
00198
00199
00200
00201 int DiskWrite = m_tuple2->write();
00202 if(DiskWrite != 1){
00203 log<<MSG::FATAL<<"ERROR In LumTau DiskWrite!"<<endreq;
00204 exit(1);
00205 }
00206
00207 return StatusCode::SUCCESS;
00208 }