001 #include "GaudiKernel/ToolFactory.h"
002 #include "GaudiKernel/SmartDataPtr.h"
003 #include "GaudiKernel/IDataProviderSvc.h"
004
005
006 #include "TrkToolInterfaces/ITrackParticleCreatorTool.h"
007 #include "Particle/TrackParticle.h"
008 #include "VxVertex/VxContainer.h"
009
010
011 #include "STACOTools/StacoToParticleTool.h"
012
013
014 #include "STACOEvent/StacoObject.h"
015
016 StacoToParticleTool::StacoToParticleTool(const std::string& t,
017 const std::string& n,
018 const IInterface* p ):AthAlgTool(t,n,p),
019 p_ITrackParticleCreatorTool("Trk::TrackParticleCreatorTool/StacoParticleCreatorTool")
020 {
021 declareInterface<IStacoToParticleTool>(this);
022 declareProperty("ITrackParticleCreatorTool", p_ITrackParticleCreatorTool);
023 }
024
025 StacoToParticleTool::~StacoToParticleTool(){}
026
027
028 StatusCode StacoToParticleTool::initialize() {
029
030 StatusCode sc = StatusCode::SUCCESS;
031
032 msg(MSG::INFO) << "Initialisation started " << endreq;
033
034 sc = AthAlgTool::initialize();
035 if ( sc.isFailure() ) {
036 msg(MSG::FATAL) << " AthAlgTool::initialize() failed" << endreq;
037 return( StatusCode::FAILURE );
038 }
039
040
041 if ( p_ITrackParticleCreatorTool.retrieve().isFailure() ) {
042 msg(MSG::FATAL) << "Failed to retrieve tool " << p_ITrackParticleCreatorTool << endreq;
043 return StatusCode::FAILURE;
044 }
045 msg(MSG::INFO) << "Retrieved tool " << p_ITrackParticleCreatorTool << endreq;
046
047 msg(MSG::INFO) << "Initialisation ended " << endreq;
048
049 return StatusCode::SUCCESS;
050
051 }
052
053 StatusCode StacoToParticleTool::finalize(){return StatusCode::SUCCESS;}
054
055
056 Rec::TrackParticle* StacoToParticleTool::convert(
057 const StacoObject* pStacoObject,
058 const TrackCollection* pTrackCollection,
059 const VxContainer* pVxContainer ,
060 const Trk::Track* pTrack
061 ){
062
063 if ( pVxContainer != 0 ){
064 const Rec::TrackParticle* muIdetTrackPart = pStacoObject->MuIdet();
065 if ( muIdetTrackPart != 0 ){
066 const Trk::VxCandidate* pVxCandidate = muIdetTrackPart->reconstructedVertex();
067 if ( pVxCandidate != 0 ){
068 return convertBase(
069 pTrackCollection,
070 pTrack,
071 pVxContainer,
072 muIdetTrackPart->reconstructedVertex(),
073 muIdetTrackPart->particleOriginType()
074 );
075 }
076 }
077 }
078
079 return convertBase(
080 pTrackCollection,
081 pTrack
082 );
083
084 }
085
086 Rec::TrackParticle* StacoToParticleTool::convertBase(
087 const TrackCollection* pTrackCollection,
088 const Trk::Track* pTrack,
089 const VxContainer* pVxContainer ,
090 const Trk::VxCandidate* pVxCandidate,
091 Trk::TrackParticleOrigin aTrackParticleOrigin
092 ){
093
094 Rec::TrackParticle* pTrackParticle =
095 p_ITrackParticleCreatorTool->createParticle(pTrack, pVxCandidate, aTrackParticleOrigin);
096
097 const Trk::Track* pTrackOfpTrackParticle = pTrackParticle->originalTrack();
098 double ThePX = ((pTrackOfpTrackParticle->perigeeParameters())->momentum()).x() ;
099 double ThePY = ((pTrackOfpTrackParticle->perigeeParameters())->momentum()).y() ;
100 double ThePZ = ((pTrackOfpTrackParticle->perigeeParameters())->momentum()).z() ;
101 double TheMuonMass = 105.659 ;
102 double TheE = sqrt( (TheMuonMass*TheMuonMass)+(ThePX*ThePX)+(ThePY*ThePY)+(ThePZ*ThePZ) );
103 pTrackParticle->setE(TheE);
104
105 pTrackParticle->setStorableObject(pTrackCollection);
106
107 if ( pVxContainer != 0 ) pTrackParticle->setStorableObject(pVxContainer);
108
109 return pTrackParticle;
110
111 }
| Due to the LXR bug, the updates fail sometimes to remove references to deleted files. The Saturday's full rebuilds fix these problems |
|
This page was automatically generated by the
LXR engine.
|
|