#include <TrkExtAlg.h>
Public Member Functions | |
TrkExtAlg (const std::string &name, ISvcLocator *pSvcLocator) | |
~TrkExtAlg () | |
StatusCode | initialize () |
StatusCode | execute () |
StatusCode | finalize () |
Private Attributes | |
Ext_track * | myExtTrack |
string | myParticleName |
string | myInputTrk |
bool | msgFlag |
bool | myGeomOptimization |
bool | myResultFlag |
bool | myBFieldOn |
int | m_detVer |
bool | myUseMucKal |
int | myMucWindow |
Definition at line 20 of file TrkExtAlg.h.
TrkExtAlg::TrkExtAlg | ( | const std::string & | name, | |
ISvcLocator * | pSvcLocator | |||
) |
TrkExtAlg::~TrkExtAlg | ( | ) |
Definition at line 51 of file TrkExtAlg.cxx.
References myExtTrack.
00052 { 00053 if(myExtTrack) delete myExtTrack; 00054 }
StatusCode TrkExtAlg::execute | ( | ) |
Definition at line 105 of file TrkExtAlg.cxx.
References ers::error, Bes_Common::FATAL, ExtMdcTrack::GetErrorMatrix(), ExtMdcTrack::GetMomentum(), ExtMdcTrack::GetOneGoodTrk(), ExtMdcTrack::GetParticleCharge(), ExtMdcTrack::GetPosition(), Ext_track::GetStepAction(), ExtMdcTrack::GetTrackID(), ExtMdcTrack::GetTrackLength(), ExtMdcTrack::GetTrkTof(), genRecEmupikp::i, ExtSteppingAction::InfmodMuc(), Bes_Common::INFO, ganga-rec::j, m_detVer, momentum, msgFlag, msgSvc(), myExtTrack, myInputTrk, myParticleName, myResultFlag, parName, ExtMdcTrack::ReadTrk(), EventModel::Recon::RecExtTrackCol, ExtSteppingAction::Reset(), Ext_track::Set(), ExtSteppingAction::Set_which_tof_version(), ExtSteppingAction::SetExtTrackPointer(), ExtMdcTrack::SetMdcKalTrkCol(), ExtMdcTrack::SetMdcRecTrkCol(), ExtMdcTrack::SetMsgFlag(), ExtSteppingAction::SetMucDigiColPointer(), Ext_track::TrackExtrapotation(), ExtSteppingAction::TrackStop(), and Bes_Common::WARNING.
00106 { 00107 //cout<<"a new event "<<endl; 00108 MsgStream log(msgSvc(), name()); 00109 log << MSG::INFO << "execute()" << endreq; 00110 int eventNumber, runNumber; 00111 00112 SmartDataPtr<Event::EventHeader> eventHeader(eventSvc(),"/Event/EventHeader"); 00113 if (!eventHeader) 00114 { 00115 log << MSG::FATAL << "Could not find Event Header" << endreq; 00116 return( StatusCode::FAILURE); 00117 } 00118 runNumber = eventHeader->runNumber(); 00119 eventNumber = eventHeader->eventNumber(); 00120 // if(eventNumber!=5&&eventNumber!=8&&eventNumber!=142) return( StatusCode::SUCCESS);//1900736 //839313 00121 if(msgFlag) 00122 { 00123 cout<<"TrackExt: ******************* Start a event *******************"<<endl; 00124 cout<<"run= "<<runNumber<<"; event= "<<eventNumber<<endl; 00125 } 00126 // cout<<"run= "<<runNumber<<"; event= "<<eventNumber<<endl; 00128 SmartDataPtr<MucDigiCol> mucDigiCol(eventSvc(),"/Event/Digi/MucDigiCol"); 00129 if(!mucDigiCol) { 00130 log << MSG::FATAL << "Could not find MUC digi" << endreq; 00131 return( StatusCode::SUCCESS); 00132 } 00133 //cout<<"digi col is "<<mucDigiCol->size()<<endl; 00135 ExtMdcTrack aExtMdcTrack; 00136 aExtMdcTrack.SetMsgFlag(msgFlag); 00137 00138 bool setTrk=false; 00139 00140 int parID; 00141 if(myParticleName=="e") parID=0; 00142 else if(myParticleName=="mu") parID=1; 00143 else if(myParticleName=="pi") parID=2; 00144 else if(myParticleName=="kaon") parID=3; 00145 else if(myParticleName=="proton"||myParticleName=="anti_proton") parID=4; 00146 00147 if(myInputTrk=="Mdc") 00148 { 00149 SmartDataPtr<RecMdcTrackCol> aMdcTrackCol(eventSvc(),"/Event/Recon/RecMdcTrackCol"); 00150 if(!aMdcTrackCol) 00151 { 00152 log << MSG::WARNING << "Can't find RecMdcTrackCol in TDS!" << endreq; 00153 return( StatusCode::SUCCESS); 00154 } 00155 setTrk=aExtMdcTrack.SetMdcRecTrkCol(aMdcTrackCol); 00156 00157 } 00158 else if(myInputTrk=="Kal") 00159 { 00160 SmartDataPtr<RecMdcKalTrackCol> aMdcKalTrackCol(eventSvc(),"/Event/Recon/RecMdcKalTrackCol"); 00161 if(!aMdcKalTrackCol) 00162 { 00163 log << MSG::WARNING << "Can't find RecMdcKalTrackCol in TDS!" << endreq; 00164 return( StatusCode::SUCCESS); 00165 } 00166 setTrk=aExtMdcTrack.SetMdcKalTrkCol(aMdcKalTrackCol); 00167 } 00168 else 00169 { 00170 log << MSG::WARNING << "Wrong type of inputTrk:" << myInputTrk << endreq; 00171 return( StatusCode::SUCCESS); 00172 } 00173 00174 RecExtTrackCol *aExtTrackCol = new RecExtTrackCol; 00175 if(setTrk) 00176 { 00177 while(aExtMdcTrack.GetOneGoodTrk()) 00178 { 00179 //cout<<"start a track........................"<<endl; 00180 RecExtTrack *aExtTrack = new RecExtTrack; 00181 00182 for(int i=0; i<5; i++)// extrapolate one track with all 5 hypotheses 00183 { 00184 if(aExtMdcTrack.ReadTrk(i)) 00185 { 00186 aExtTrack->SetParType(i); 00187 00188 int trackID = aExtMdcTrack.GetTrackID(); 00189 aExtTrack->SetTrackId(trackID); 00190 Hep3Vector position = aExtMdcTrack.GetPosition(); 00191 Hep3Vector momentum = aExtMdcTrack.GetMomentum(); 00192 HepSymMatrix error = aExtMdcTrack.GetErrorMatrix(); 00193 double pathInMDC = aExtMdcTrack.GetTrackLength(); 00194 double tofInMdc = aExtMdcTrack.GetTrkTof(); 00195 00196 if(msgFlag) 00197 { 00198 cout<<"Start From:"<<position.x()<<' '<<position.y()<<' ' 00199 <<position.z()<<endl; 00200 cout<<"Start Momentum:"<<momentum.x()<<' '<<momentum.y()<<' '<<momentum.z()<<endl; 00201 cout<<"Start Error matrix:"<<error<<endl; 00202 cout<<"Path before start:"<< pathInMDC << endl; 00203 } 00204 00205 G4String aParticleName(parName[i]); 00206 double charge = aExtMdcTrack.GetParticleCharge(); 00207 if(!aParticleName.contains("proton")) 00208 { 00209 if(charge>0) aParticleName += "+"; 00210 else aParticleName += "-"; 00211 } 00212 else 00213 { 00214 if(charge>0) aParticleName = "proton"; 00215 else aParticleName = "anti_proton"; 00216 } 00217 00218 if(msgFlag) 00219 { 00220 cout<<"Charge: "<<charge<<endl; 00221 cout<<"Particle: "<<aParticleName<<endl; 00222 } 00223 00224 ExtSteppingAction *extSteppingAction; 00225 extSteppingAction = myExtTrack->GetStepAction(); 00226 extSteppingAction->Set_which_tof_version(m_detVer);//Set the ToFversionnumber. Required for the MRPC 00227 00228 extSteppingAction->Reset(); 00229 extSteppingAction->SetMucDigiColPointer(mucDigiCol); 00230 extSteppingAction->SetExtTrackPointer(aExtTrack); 00231 bool m_trackstatus = false; 00232 int trk_startpart = 0; 00233 while(!m_trackstatus) 00234 { 00235 00236 trk_startpart++;//just for protection 00237 if(trk_startpart>20) 00238 {cout<<"-------has modified more than 20 times---------"<<endl;break;} 00239 if(myExtTrack->Set(position,momentum,error,aParticleName,pathInMDC,tofInMdc)) 00240 { 00241 myExtTrack->TrackExtrapotation(); 00242 extSteppingAction->InfmodMuc(position,momentum,error); 00243 m_trackstatus = extSteppingAction->TrackStop(); 00244 } 00245 else 00246 m_trackstatus = true; 00247 } 00248 } 00249 00250 } 00251 00252 aExtTrack->SetParType(parID); 00253 00254 if(msgFlag) cout<<"will add aExtTrack!"<<endl; 00255 if(aExtTrackCol) 00256 { 00257 if(aExtTrack) aExtTrackCol->add(aExtTrack); 00258 else if(msgFlag) cout<<"No aExtTrack!"<<endl; 00259 } 00260 else 00261 { 00262 if(msgFlag) cout<<"No aExtTrackCol!"<<endl; 00263 } 00264 if(msgFlag) cout<<"add a aExtTrack!"<<endl; 00265 00266 /* 00267 //For Test 00268 if(myFile) 00269 { 00270 (*myFile)<<endPoint.x()<<' '<<endPoint.y()<<' ' 00271 <<endPoint.z()<<' '<<endMomentum.x() 00272 <<' '<<endMomentum.y()<<' '<<endMomentum.z() 00273 <<' '<<endErrorMatrix(1,1)<<' '<<endErrorMatrix(2,2) 00274 <<' '<<endErrorMatrix(3,3)<<' '<<endErrorMatrix(4,4) 00275 <<' '<<endErrorMatrix(5,5)<<' '<<endErrorMatrix(6,6) 00276 <<endl; 00277 } 00278 else { 00279 log << MSG::ERROR <<"can't open file" << endreq; 00280 00281 } 00282 */ 00283 }//while 00284 }//if 00285 00286 //Register ExtTrackCol to TDS. 00287 /* ReconEvent *aReconEvent = new ReconEvent(); 00288 StatusCode sc = eventSvc()->registerObject("/Event/Recon",aReconEvent); 00289 if(sc!=StatusCode::SUCCESS) { 00290 log << MSG::FATAL << "Could not register ReconEvent" <<endreq; 00291 return( StatusCode::FAILURE); 00292 } 00293 */ 00294 00295 //cout<<"will write in to service "<<endl; 00296 SmartIF<IDataManagerSvc> dataManSvc(eventSvc()); 00297 //IDataManagerSvc *dataManSvc = dynamic_cast<IDataManagerSvc*> (eventSvc()); 00298 00299 DataObject *extTrackCol; 00300 eventSvc()->findObject("/Event/Recon/RecExtTrackCol",extTrackCol); 00301 if(extTrackCol != NULL) { 00302 dataManSvc->clearSubTree("/Event/Recon/RecExtTrackCol"); 00303 eventSvc()->unregisterObject("/Event/Recon/RecExtTrackCol"); 00304 } 00305 00306 // cout<<"write register object "<<endl; 00307 00308 StatusCode sc = eventSvc()->registerObject("/Event/Recon/RecExtTrackCol", aExtTrackCol); 00309 if(sc!=StatusCode::SUCCESS) { 00310 log << MSG::FATAL << "Could not register RecExtTrackCol in TDS!" << endreq; 00311 return( StatusCode::FAILURE); 00312 } 00313 00314 //Check ExtTrackCol in TDS. 00315 //cout<<"Check ExtTrackCol in TDS."<<endl; 00316 SmartDataPtr<RecExtTrackCol> aExtTrkCol(eventSvc(),"/Event/Recon/RecExtTrackCol"); 00317 if (!aExtTrkCol) { 00318 log << MSG::FATAL << "Can't find RecExtTrackCol in TDS!" << endreq; 00319 return( StatusCode::FAILURE); 00320 } 00321 00322 RecExtTrackCol::iterator iterOfExtTrk; 00323 int j=1; 00324 //cout<<"aExtTrkCol->size is "<<aExtTrkCol->size()<<" --------------"<<endl; 00325 for(iterOfExtTrk = aExtTrkCol->begin();iterOfExtTrk!=aExtTrkCol->end();iterOfExtTrk++) 00326 { 00327 if(myResultFlag) 00328 { 00329 for(int i=0; i<5; i++) 00330 { 00331 //TOF information. 00332 cout<<"##########track"<<j<<": "<<"("<<i<<")"<<endl; 00333 cout<<"******TOF1:******"<<endl; 00334 cout<<"VolumeName: "<<(*iterOfExtTrk)->tof1VolumeName(i)<<"\t" 00335 <<"VolumeNumber: "<<(*iterOfExtTrk)->tof1VolumeNumber(i)<<"\t"<<endl 00336 <<"Position: "<<(*iterOfExtTrk)->tof1Position(i)<<"\t" 00337 <<"Momentum: "<<(*iterOfExtTrk)->tof1Momentum(i)<<"\t"<<endl 00338 <<"Error matrix: "<<(*iterOfExtTrk)->tof1ErrorMatrix(i) 00339 <<"Error z: "<<(*iterOfExtTrk)->tof1PosSigmaAlongZ(i)<<"\t" 00340 <<"Error Tz: "<<(*iterOfExtTrk)->tof1PosSigmaAlongT(i)<<"\t" 00341 <<"Error x: "<<(*iterOfExtTrk)->tof1PosSigmaAlongX(i)<<"\t" 00342 <<"Error y: "<<(*iterOfExtTrk)->tof1PosSigmaAlongY(i)<<endl 00343 <<"Tof: "<<(*iterOfExtTrk)->tof1(i)<<"\t" 00344 <<"PathOF: "<<(*iterOfExtTrk)->tof1Path(i) 00345 <<endl; 00346 cout<<"******TOF2:******"<<endl; 00347 cout<<"VolumeName: "<<(*iterOfExtTrk)->tof2VolumeName(i)<<"\t" 00348 <<"VolumeNumber: "<<(*iterOfExtTrk)->tof2VolumeNumber(i)<<"\t"<<endl 00349 <<"Position: "<<(*iterOfExtTrk)->tof2Position(i)<<"\t" 00350 <<"Momentum: "<<(*iterOfExtTrk)->tof2Momentum(i)<<"\t"<<endl 00351 <<"Error matrix: "<<(*iterOfExtTrk)->tof2ErrorMatrix(i) 00352 <<"Error z: "<<(*iterOfExtTrk)->tof2PosSigmaAlongZ(i)<<"\t" 00353 <<"Error Tz: "<<(*iterOfExtTrk)->tof2PosSigmaAlongT(i)<<"\t" 00354 <<"Error x: "<<(*iterOfExtTrk)->tof2PosSigmaAlongX(i)<<"\t" 00355 <<"Error y: "<<(*iterOfExtTrk)->tof2PosSigmaAlongY(i)<<endl 00356 <<"Tof: "<<(*iterOfExtTrk)->tof2(i)<<"\t" 00357 <<"PathOF: "<<(*iterOfExtTrk)->tof2Path(i) 00358 <<endl; 00359 00360 //EMC information. 00361 cout<<"******EMC:******"<<endl 00362 <<"VolumeName: "<<(*iterOfExtTrk)->emcVolumeName(i)<<"\t" 00363 <<"VolumeNumber: "<<(*iterOfExtTrk)->emcVolumeNumber(i)<<"\t"<<endl 00364 <<"Position: "<<(*iterOfExtTrk)->emcPosition(i)<<"\t" 00365 <<"Momentum: "<<(*iterOfExtTrk)->emcMomentum(i)<<"\t"<<endl 00366 <<"Error matrix: "<<(*iterOfExtTrk)->emcErrorMatrix(i) 00367 <<"Error theta: "<<(*iterOfExtTrk)->emcPosSigmaAlongTheta(i)<<"\t" 00368 <<"Error phi: "<<(*iterOfExtTrk)->emcPosSigmaAlongPhi(i)<<"\t" 00369 <<"EMC path: "<<(*iterOfExtTrk)->emcPath(i) 00370 <<endl; 00371 00372 //MUC information 00373 cout<<"******MUC:******"<<endl 00374 <<"VolumeName: "<<(*iterOfExtTrk)->mucVolumeName(i)<<"\t" 00375 <<"VolumeNumber: "<<(*iterOfExtTrk)->mucVolumeNumber(i)<<endl 00376 <<"Position: "<<(*iterOfExtTrk)->mucPosition(i)<<"\t" 00377 <<"Momentum: "<<(*iterOfExtTrk)->mucMomentum(i)<<"\t"<<endl 00378 <<"Error matrix: "<<(*iterOfExtTrk)->mucErrorMatrix(i) 00379 <<"Error z: "<<(*iterOfExtTrk)->mucPosSigmaAlongZ(i)<<"\t" 00380 <<"Error Tz: "<<(*iterOfExtTrk)->mucPosSigmaAlongT(i)<<"\t" 00381 <<"Error x: "<<(*iterOfExtTrk)->mucPosSigmaAlongX(i)<<"\t" 00382 <<"Error y: "<<(*iterOfExtTrk)->mucPosSigmaAlongY(i) 00383 <<endl; 00384 00385 cout<<"*******MUC KALMANFILTER***********"<<endl; 00386 cout<<"Chisq is "<<(*iterOfExtTrk)->MucKalchi2(i)<<endl; 00387 cout<<"Nfit is "<<(*iterOfExtTrk)->MucKaldof(i)<<endl; 00388 cout<<"chiL "<<(*iterOfExtTrk)->MucKalchi2()<<endl; 00389 // cout<<"Pull is "<<(*iterOfExtTrk)->mucKalPull()<<endl; 00390 00391 // cout<<"Residual is "<<(*iterOfExtTrk)->mucKalResidual()<<endl; 00392 //Muc Ext hits information 00393 /* ExtMucHitVec aExtMucHitVec = (*iterOfExtTrk)->GetExtMucHitVec(); 00394 int numOfMucHits = aExtMucHitVec.size(); 00395 cout<<"******MUC hits:"<<numOfMucHits<<"******"<<endl; 00396 for(int j=0;j<numOfMucHits;j++) 00397 { 00398 cout<<"###Muc Hit "<<j<<":###"<<endl 00399 <<"VolumeName: "<<aExtMucHitVec[j].GetVolumeName()<<"\t" 00400 <<"VolumeNumber: "<<aExtMucHitVec[j].GetVolumeNumber()<<"\t"<<endl 00401 <<"Position: "<<aExtMucHitVec[j].GetPosition()<<"\t" 00402 <<"Momentum: "<<aExtMucHitVec[j].GetMomentum()<<"\t"<<endl 00403 <<"Error z: "<<aExtMucHitVec[j].GetPosSigmaAlongZ()<<"\t" 00404 <<"Error Tz: "<<aExtMucHitVec[j].GetPosSigmaAlongT()<<"\t" 00405 <<"Error x: "<<aExtMucHitVec[j].GetPosSigmaAlongX()<<"\t" 00406 <<"Error y: "<<aExtMucHitVec[j].GetPosSigmaAlongY()<<"\t" 00407 <<endl; 00408 } 00409 */ 00410 } 00411 } 00412 j++; 00413 00414 } // loop ExtTrkCol 00415 00416 if(msgFlag) cout<<"****************** End a event! ****************"<<endl<<endl; 00417 00418 /* 00419 //--------- For Ext Test ---------------- 00420 // Retrieve mc truth 00421 SmartDataPtr<McParticleCol> mcParticleCol(eventSvc(),"/Event/MC/McParticleCol"); 00422 if (!mcParticleCol) { 00423 log << MSG::FATAL << "Could not find McParticle" << endreq; 00424 return( StatusCode::FAILURE); 00425 } 00426 00427 int numOfTrack = mcParticleCol->size(); 00428 if(msgFlag) cout<< "numOfMcTrack: " << numOfTrack << endl; 00429 if(numOfTrack!=2) return StatusCode::SUCCESS; 00430 00431 // Retrieve Emc Mc Hits 00432 SmartDataPtr<EmcMcHitCol> emcMcHitCol(eventSvc(),"/Event/MC/EmcMcHitCol"); 00433 if (!emcMcHitCol) { 00434 log << MSG::FATAL << "Could not find EMC truth" << endreq; 00435 return( StatusCode::FAILURE); 00436 } 00437 00438 McParticleCol::iterator iter_mc = mcParticleCol->begin(); 00439 EmcMcHitCol::iterator iterEmcBegin = emcMcHitCol->begin(); 00440 int numOfEmcHits = emcMcHitCol->size(); 00441 00442 // ExtTrackCol *aExtTrackCol = new ExtTrackCol; 00443 00444 for (int i = 1;iter_mc != mcParticleCol->end(); iter_mc++, i++) { 00445 bool flag = (*iter_mc)->primaryParticle(); 00446 if(!flag) continue; 00447 int particleId = (*iter_mc)->particleProperty(); 00448 double charge = particleId/abs(particleId); 00449 unsigned int sFlag = (*iter_mc)->statusFlags(); 00450 int trackIdx = (*iter_mc)->getTrackIndex(); 00451 HepPoint3D iPos = (*iter_mc)->initialPosition(); 00452 HepPoint3D fPos = (*iter_mc)->finalPosition(); 00453 HepLorentzVector iFMomentum = (*iter_mc)->initialFourMomentum(); 00454 HepLorentzVector fFMomentum = (*iter_mc)->finalFourMomentum(); 00455 00456 00457 bool emcHitFlag = false; 00458 double thetaOfEmcHit = 0; 00459 double phiOfEmcHit = 0; 00460 Hep3Vector posOfEmcHit(0,0,0); 00461 //Get Emc Truth 00462 for(int j=0;j<numOfEmcHits;j++) 00463 { 00464 if(trackIdx==(*(iterEmcBegin+j))->getTrackIndex()) 00465 { 00466 emcHitFlag = true; 00467 double x = (*(iterEmcBegin+j))->getPositionX(); 00468 double y = (*(iterEmcBegin+j))->getPositionY(); 00469 double z = (*(iterEmcBegin+j))->getPositionZ(); 00470 Hep3Vector vec(x,y,z); 00471 posOfEmcHit = vec; 00472 thetaOfEmcHit = posOfEmcHit.theta(); 00473 phiOfEmcHit = posOfEmcHit.phi(); 00474 break; 00475 } 00476 } 00477 00478 ExtSteppingAction *extSteppingAction; 00479 extSteppingAction = myExtTrack->GetStepAction(); 00480 00481 G4String aParticleName(myParticleName); 00482 if(!aParticleName.contains("proton")) 00483 { 00484 if(charge>0) aParticleName += "+"; 00485 else aParticleName += "-"; 00486 } 00487 else 00488 { 00489 if(charge>0) aParticleName = "proton"; 00490 else aParticleName = "anti_proton"; 00491 } 00492 00493 ExtTrack *aExtTrack = new ExtTrack; 00494 aExtTrack->SetTrackID(trackIdx); 00495 00496 Hep3Vector position(iPos); 00497 Hep3Vector momentum(iFMomentum.x(),iFMomentum.y(),iFMomentum.z()); 00498 HepSymMatrix error(6,0); 00499 00500 if(myExtTrack->Set(position,momentum,error,aParticleName,0)) 00501 { 00502 extSteppingAction->SetExtTrackPointer(aExtTrack); 00503 myExtTrack->TrackExtrapotation(); 00504 } 00505 00506 Hep3Vector extEmcPos = aExtTrack->GetEmcPosition(); 00507 double volumeNum = aExtTrack->GetEmcVolumeNumber(); 00508 double thetaExt = extEmcPos.theta(); 00509 double phiExt = extEmcPos.phi(); 00510 00511 if(myResultFlag) 00512 { 00513 cout<< "*******Mc Track " << i <<" :******"<<endl; 00514 cout<< "Parimary particle :" << flag <<" particleId = " << (*iter_mc)->particleProperty() << endl; 00515 cout<< "Track Index: " << trackIdx << endl; 00516 cout<< "initialPosition: "<< iPos.x() << "," << iPos.y() << "," << iPos.z() << endl; 00517 cout<< "initialFourMomentum: " <<iFMomentum.x()<<","<<iFMomentum.y()<<","<<iFMomentum.z() << endl; 00518 cout<<"Emc Truth:"<<emcHitFlag<<"!"<<posOfEmcHit<<endl; 00519 00520 cout<<"Ext Emc: "<<aExtTrack->GetEmcVolumeName()<<aExtTrack->GetEmcPosition()<<endl; 00521 } 00522 00523 myCharge = charge; 00524 myEmcHitFlag = (emcHitFlag)? 1.:-1.; 00525 myEmcHitTheta = thetaOfEmcHit; 00526 myEmcHitPhi = phiOfEmcHit; 00527 myEmcVolNum = volumeNum; 00528 myEmcExtTheta = thetaExt; 00529 myEmcExtPhi = phiExt; 00530 myDTheta = myEmcHitTheta-myEmcExtTheta; 00531 myDPhi = myEmcHitPhi-myEmcExtPhi; 00532 while(myDTheta<-1*M_PI) myDTheta+=2.0*M_PI; 00533 while(myDPhi<-1*M_PI) myDPhi+=2.0*M_PI; 00534 while(myDPhi>M_PI) myDPhi-=2.0*M_PI; 00535 while(myDTheta>M_PI) myDTheta-=2.0*M_PI; 00536 myNtuple->write(); 00537 00538 if(aExtTrack) delete aExtTrack; 00539 } 00540 00541 //--------- end Ext Test ---------------- 00542 */ 00543 00544 return StatusCode::SUCCESS; 00545 }
StatusCode TrkExtAlg::finalize | ( | ) |
Definition at line 548 of file TrkExtAlg.cxx.
References Bes_Common::INFO, and msgSvc().
00549 { 00550 MsgStream log(msgSvc(), name()); 00551 log << MSG::INFO << "finalize()" << endreq; 00552 00553 // delete myExtTrack; 00554 // myFile->close(); 00555 00556 return StatusCode::SUCCESS; 00557 }
StatusCode TrkExtAlg::initialize | ( | ) |
Definition at line 57 of file TrkExtAlg.cxx.
References detVerSvc, Bes_Common::FATAL, Bes_Common::INFO, Ext_track::Initialization(), m_detVer, msgFlag, msgSvc(), myBFieldOn, myExtTrack, myGeomOptimization, myMucWindow, myUseMucKal, and IDetVerSvc::phase().
00058 { 00059 MsgStream log(msgSvc(), name()); 00060 log << MSG::INFO << "initialize()" << endreq; 00061 00062 IDetVerSvc* detVerSvc; 00063 StatusCode sc_det = service("DetVerSvc", detVerSvc); 00064 if( sc_det.isFailure() ) { 00065 log << MSG::FATAL << "can't retrieve DetVerSvc instance" << endreq; 00066 return sc_det; 00067 } 00068 00069 m_detVer = detVerSvc->phase(); 00070 log << MSG::INFO << "** ~~~~~~ ** : retrieved DetectorStage = " << m_detVer << endreq; 00071 00072 myExtTrack = new Ext_track(msgFlag,myBFieldOn,myGeomOptimization,m_detVer,myUseMucKal,myMucWindow); 00073 myExtTrack->Initialization(msgFlag,myBFieldOn,myGeomOptimization,myUseMucKal,myMucWindow); 00074 // myFile = new ofstream("ExtData.txt"); 00075 00076 /* 00077 //--------- For Ext Test ---------------- 00078 NTuplePtr nt(ntupleSvc(),"FILE501/ext"); 00079 if ( nt ) myNtuple = nt; 00080 else { 00081 myNtuple=ntupleSvc()->book("FILE501/ext",CLID_ColumnWiseTuple,"TrkExt"); 00082 if(myNtuple) { 00083 myNtuple->addItem("charge",myCharge); 00084 myNtuple->addItem("emcHitFlag",myEmcHitFlag); 00085 myNtuple->addItem("emcHitTheta",myEmcHitTheta); 00086 myNtuple->addItem("emcHitPhi",myEmcHitPhi); 00087 myNtuple->addItem("emcVolNum",myEmcVolNum); 00088 myNtuple->addItem("emcExtTheta",myEmcExtTheta); 00089 myNtuple->addItem("emcExtPhi",myEmcExtPhi); 00090 myNtuple->addItem("dTheta",myDTheta); 00091 myNtuple->addItem("dPhi",myDPhi); 00092 } 00093 else { // did not manage to book the N tuple.... 00094 log << MSG::ERROR <<"Cannot book N-tuple:" << long(myNtuple) << endmsg; 00095 return StatusCode::FAILURE; 00096 } 00097 } 00098 //-------- end Ext Test ----------------- 00099 */ 00100 return StatusCode::SUCCESS; 00101 }
int TrkExtAlg::m_detVer [private] |
bool TrkExtAlg::msgFlag [private] |
bool TrkExtAlg::myBFieldOn [private] |
Ext_track* TrkExtAlg::myExtTrack [private] |
bool TrkExtAlg::myGeomOptimization [private] |
string TrkExtAlg::myInputTrk [private] |
int TrkExtAlg::myMucWindow [private] |
string TrkExtAlg::myParticleName [private] |
bool TrkExtAlg::myResultFlag [private] |
bool TrkExtAlg::myUseMucKal [private] |