109 MsgStream log(
msgSvc(), name());
110 log << MSG::INFO <<
"execute()" << endreq;
111 int eventNumber, runNumber;
113 if(m_setSeed==
true) CLHEP::HepRandom::setTheSeed(9000);
116 SmartDataPtr<Event::EventHeader> eventHeader(eventSvc(),
"/Event/EventHeader");
119 log << MSG::FATAL <<
"Could not find Event Header" << endreq;
120 return( StatusCode::FAILURE);
122 runNumber = eventHeader->runNumber();
123 eventNumber = eventHeader->eventNumber();
127 cout<<
"TrackExt: ******************* Start a event *******************"<<endl;
128 cout<<
"run= "<<runNumber<<
"; event= "<<eventNumber<<endl;
132 SmartDataPtr<MucDigiCol> mucDigiCol(eventSvc(),
"/Event/Digi/MucDigiCol");
134 log << MSG::FATAL <<
"Could not find MUC digi" << endreq;
135 return( StatusCode::SUCCESS);
145 if(myParticleName==
"e") parID=0;
146 else if(myParticleName==
"mu") parID=1;
147 else if(myParticleName==
"pi") parID=2;
148 else if(myParticleName==
"kaon") parID=3;
149 else if(myParticleName==
"proton"||myParticleName==
"anti_proton") parID=4;
151 if(myInputTrk==
"Mdc")
153 SmartDataPtr<RecMdcTrackCol> aMdcTrackCol(eventSvc(),
"/Event/Recon/RecMdcTrackCol");
156 log << MSG::WARNING <<
"Can't find RecMdcTrackCol in TDS!" << endreq;
157 return( StatusCode::SUCCESS);
162 else if(myInputTrk==
"Kal")
164 SmartDataPtr<RecMdcKalTrackCol> aMdcKalTrackCol(eventSvc(),
"/Event/Recon/RecMdcKalTrackCol");
167 log << MSG::WARNING <<
"Can't find RecMdcKalTrackCol in TDS!" << endreq;
168 return( StatusCode::SUCCESS);
174 log << MSG::WARNING <<
"Wrong type of inputTrk:" << myInputTrk << endreq;
175 return( StatusCode::SUCCESS);
186 for(
int i=0; i<5; i++)
198 double tofInMdc = aExtMdcTrack.
GetTrkTof();
202 cout<<
"Start From:"<<position.x()<<
' '<<position.y()<<
' '
203 <<position.z()<<endl;
205 cout<<
"Start Error matrix:"<<error<<endl;
206 cout<<
"Path before start:"<< pathInMDC << endl;
209 G4String aParticleName(
parName[i]);
211 if(!aParticleName.contains(
"proton"))
213 if(
charge>0) aParticleName +=
"+";
214 else aParticleName +=
"-";
218 if(
charge>0) aParticleName =
"proton";
219 else aParticleName =
"anti_proton";
224 cout<<
"Charge: "<<
charge<<endl;
225 cout<<
"Particle: "<<aParticleName<<endl;
232 extSteppingAction->
Reset();
235 bool m_trackstatus =
false;
236 int trk_startpart = 0;
237 while(!m_trackstatus)
242 {cout<<
"-------has modified more than 20 times---------"<<endl;
break;}
243 if(myExtTrack->
Set(position,
momentum,error,aParticleName,pathInMDC,tofInMdc))
247 m_trackstatus = extSteppingAction->
TrackStop();
250 m_trackstatus =
true;
258 if(msgFlag) cout<<
"will add aExtTrack!"<<endl;
261 if(aExtTrack) aExtTrackCol->add(aExtTrack);
262 else if(msgFlag) cout<<
"No aExtTrack!"<<endl;
266 if(msgFlag) cout<<
"No aExtTrackCol!"<<endl;
268 if(msgFlag) cout<<
"add a aExtTrack!"<<endl;
300 SmartIF<IDataManagerSvc> dataManSvc(eventSvc());
303 DataObject *extTrackCol;
304 eventSvc()->findObject(
"/Event/Recon/RecExtTrackCol",extTrackCol);
305 if(extTrackCol !=
NULL) {
306 dataManSvc->clearSubTree(
"/Event/Recon/RecExtTrackCol");
307 eventSvc()->unregisterObject(
"/Event/Recon/RecExtTrackCol");
312 StatusCode sc = eventSvc()->registerObject(
"/Event/Recon/RecExtTrackCol", aExtTrackCol);
313 if(sc!=StatusCode::SUCCESS) {
314 log << MSG::FATAL <<
"Could not register RecExtTrackCol in TDS!" << endreq;
315 return( StatusCode::FAILURE);
320 SmartDataPtr<RecExtTrackCol> aExtTrkCol(eventSvc(),
"/Event/Recon/RecExtTrackCol");
322 log << MSG::FATAL <<
"Can't find RecExtTrackCol in TDS!" << endreq;
323 return( StatusCode::FAILURE);
326 RecExtTrackCol::iterator iterOfExtTrk;
329 for(iterOfExtTrk = aExtTrkCol->begin();iterOfExtTrk!=aExtTrkCol->end();iterOfExtTrk++)
333 for(
int i=0; i<5; i++)
336 cout<<
"##########track"<<j<<
": "<<
"("<<i<<
")"<<endl;
337 cout<<
"******TOF1:******"<<endl;
338 cout<<
"VolumeName: "<<(*iterOfExtTrk)->tof1VolumeName(i)<<
"\t"
339 <<
"VolumeNumber: "<<(*iterOfExtTrk)->tof1VolumeNumber(i)<<
"\t"<<endl
340 <<
"Position: "<<(*iterOfExtTrk)->tof1Position(i)<<
"\t"
341 <<
"Momentum: "<<(*iterOfExtTrk)->tof1Momentum(i)<<
"\t"<<endl
342 <<
"Error matrix: "<<(*iterOfExtTrk)->tof1ErrorMatrix(i)
343 <<
"Error z: "<<(*iterOfExtTrk)->tof1PosSigmaAlongZ(i)<<
"\t"
344 <<
"Error Tz: "<<(*iterOfExtTrk)->tof1PosSigmaAlongT(i)<<
"\t"
345 <<
"Error x: "<<(*iterOfExtTrk)->tof1PosSigmaAlongX(i)<<
"\t"
346 <<
"Error y: "<<(*iterOfExtTrk)->tof1PosSigmaAlongY(i)<<endl
347 <<
"Tof: "<<(*iterOfExtTrk)->tof1(i)<<
"\t"
348 <<
"PathOF: "<<(*iterOfExtTrk)->tof1Path(i)
350 cout<<
"******TOF2:******"<<endl;
351 cout<<
"VolumeName: "<<(*iterOfExtTrk)->tof2VolumeName(i)<<
"\t"
352 <<
"VolumeNumber: "<<(*iterOfExtTrk)->tof2VolumeNumber(i)<<
"\t"<<endl
353 <<
"Position: "<<(*iterOfExtTrk)->tof2Position(i)<<
"\t"
354 <<
"Momentum: "<<(*iterOfExtTrk)->tof2Momentum(i)<<
"\t"<<endl
355 <<
"Error matrix: "<<(*iterOfExtTrk)->tof2ErrorMatrix(i)
356 <<
"Error z: "<<(*iterOfExtTrk)->tof2PosSigmaAlongZ(i)<<
"\t"
357 <<
"Error Tz: "<<(*iterOfExtTrk)->tof2PosSigmaAlongT(i)<<
"\t"
358 <<
"Error x: "<<(*iterOfExtTrk)->tof2PosSigmaAlongX(i)<<
"\t"
359 <<
"Error y: "<<(*iterOfExtTrk)->tof2PosSigmaAlongY(i)<<endl
360 <<
"Tof: "<<(*iterOfExtTrk)->tof2(i)<<
"\t"
361 <<
"PathOF: "<<(*iterOfExtTrk)->tof2Path(i)
365 cout<<
"******EMC:******"<<endl
366 <<
"VolumeName: "<<(*iterOfExtTrk)->emcVolumeName(i)<<
"\t"
367 <<
"VolumeNumber: "<<(*iterOfExtTrk)->emcVolumeNumber(i)<<
"\t"<<endl
368 <<
"Position: "<<(*iterOfExtTrk)->emcPosition(i)<<
"\t"
369 <<
"Momentum: "<<(*iterOfExtTrk)->emcMomentum(i)<<
"\t"<<endl
370 <<
"Error matrix: "<<(*iterOfExtTrk)->emcErrorMatrix(i)
371 <<
"Error theta: "<<(*iterOfExtTrk)->emcPosSigmaAlongTheta(i)<<
"\t"
372 <<
"Error phi: "<<(*iterOfExtTrk)->emcPosSigmaAlongPhi(i)<<
"\t"
373 <<
"EMC path: "<<(*iterOfExtTrk)->emcPath(i)
377 cout<<
"******MUC:******"<<endl
378 <<
"VolumeName: "<<(*iterOfExtTrk)->mucVolumeName(i)<<
"\t"
379 <<
"VolumeNumber: "<<(*iterOfExtTrk)->mucVolumeNumber(i)<<endl
380 <<
"Position: "<<(*iterOfExtTrk)->mucPosition(i)<<
"\t"
381 <<
"Momentum: "<<(*iterOfExtTrk)->mucMomentum(i)<<
"\t"<<endl
382 <<
"Error matrix: "<<(*iterOfExtTrk)->mucErrorMatrix(i)
383 <<
"Error z: "<<(*iterOfExtTrk)->mucPosSigmaAlongZ(i)<<
"\t"
384 <<
"Error Tz: "<<(*iterOfExtTrk)->mucPosSigmaAlongT(i)<<
"\t"
385 <<
"Error x: "<<(*iterOfExtTrk)->mucPosSigmaAlongX(i)<<
"\t"
386 <<
"Error y: "<<(*iterOfExtTrk)->mucPosSigmaAlongY(i)
389 cout<<
"*******MUC KALMANFILTER***********"<<endl;
390 cout<<
"Chisq is "<<(*iterOfExtTrk)->MucKalchi2(i)<<endl;
391 cout<<
"Nfit is "<<(*iterOfExtTrk)->MucKaldof(i)<<endl;
392 cout<<
"chiL "<<(*iterOfExtTrk)->MucKalchi2()<<endl;
420 if(msgFlag) cout<<
"****************** End a event! ****************"<<endl<<endl;
548return StatusCode::SUCCESS;