TrkExtAlg Class Reference

#include <TrkExtAlg.h>

List of all members.

Public Member Functions

 TrkExtAlg (const std::string &name, ISvcLocator *pSvcLocator)
 ~TrkExtAlg ()
StatusCode initialize ()
StatusCode execute ()
StatusCode finalize ()

Private Attributes

Ext_trackmyExtTrack
string myParticleName
string myInputTrk
bool msgFlag
bool myGeomOptimization
bool myResultFlag
bool myBFieldOn
int m_detVer
bool myUseMucKal
int myMucWindow


Detailed Description

Definition at line 20 of file TrkExtAlg.h.


Constructor & Destructor Documentation

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 }


Member Function Documentation

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 }


Member Data Documentation

int TrkExtAlg::m_detVer [private]

Definition at line 42 of file TrkExtAlg.h.

Referenced by execute(), and initialize().

bool TrkExtAlg::msgFlag [private]

Definition at line 38 of file TrkExtAlg.h.

Referenced by execute(), and initialize().

bool TrkExtAlg::myBFieldOn [private]

Definition at line 41 of file TrkExtAlg.h.

Referenced by initialize().

Ext_track* TrkExtAlg::myExtTrack [private]

Definition at line 31 of file TrkExtAlg.h.

Referenced by execute(), initialize(), and ~TrkExtAlg().

bool TrkExtAlg::myGeomOptimization [private]

Definition at line 39 of file TrkExtAlg.h.

Referenced by initialize().

string TrkExtAlg::myInputTrk [private]

Definition at line 36 of file TrkExtAlg.h.

Referenced by execute().

int TrkExtAlg::myMucWindow [private]

Definition at line 44 of file TrkExtAlg.h.

Referenced by initialize().

string TrkExtAlg::myParticleName [private]

Definition at line 35 of file TrkExtAlg.h.

Referenced by execute().

bool TrkExtAlg::myResultFlag [private]

Definition at line 40 of file TrkExtAlg.h.

Referenced by execute().

bool TrkExtAlg::myUseMucKal [private]

Definition at line 43 of file TrkExtAlg.h.

Referenced by initialize().


Generated on Tue Nov 29 23:36:13 2016 for BOSS_7.0.2 by  doxygen 1.4.7