00001 //_____________________________________________________________________________ 00011 00012 #include <cassert> 00013 #include <vector> 00014 00015 #include "TClonesArray.h" 00016 00017 #include "Algorithm/AlgFactory.h" 00018 #include "Algorithm/AlgHandle.h" 00019 #include "Algorithm/AlgConfig.h" 00020 #include "Candidate/CandContext.h" 00021 #include "RecoBase/CandTrackHandle.h" 00022 #include "RecoBase/CandTrackListHandle.h" 00023 #include "MessageService/MsgService.h" 00024 #include "Validity/VldContext.h" 00025 00026 #include "CandFitTrackSA/AlgFitTrackSAList.h" 00027 #include "CandFitTrackSA/CandFitTrackSA.h" 00028 #include "CandFitTrackSA/CandFitTrackSAHandle.h" 00029 #include "CandFitTrackSA/TracerSA.h" 00030 00031 CVSID("$Id: AlgFitTrackSAList.cxx,v 1.9 2006/02/13 05:06:09 avva Exp $"); 00032 00033 ClassImp(AlgFitTrackSAList) 00034 00035 00036 00037 00038 AlgFitTrackSAList::AlgFitTrackSAList() 00039 { 00040 TracerSA trace("AlgFitTrackSAList::AlgFitTrackSAList()"); 00041 } 00042 00046 AlgFitTrackSAList::~AlgFitTrackSAList() 00047 { 00048 TracerSA trace("AlgFitTrackSAList::~AlgFitTrackSAList()"); 00049 } 00050 00055 void AlgFitTrackSAList::RunAlg(AlgConfig& ac, 00056 CandHandle& cftlh, CandContext& trackListContext) 00057 { 00058 TracerSA trace("AlgFitTrackSAList::RunAlg(AlgConfig&,CandHandle&,CandContext&)"); 00059 00060 const CandRecord* candrec = trackListContext.GetCandRecord(); 00061 assert(candrec && "CandRecord* is NULL!!!"); 00062 const CandTrackListHandle* ctlh = 00063 static_cast<const CandTrackListHandle*> (trackListContext.GetDataIn()); 00064 assert(ctlh && "CandTrackListHandle* is NULL!!!"); 00065 00066 // Get singleton instance of AlgFactory 00067 AlgFactory &af = AlgFactory::GetInstance(); 00068 00069 // Get an AlgHandle of FitTrackSAAlgorithm 00070 AlgHandle afth = af.GetAlgHandle(ac.GetCharString("FitTrackSAAlgorithm"), 00071 ac.GetCharString("FitTrackSAAlgConfig")); 00072 00073 TIter trackItr(ctlh->GetDaughterIterator()); 00074 while (CandTrackHandle *track = 00075 dynamic_cast<CandTrackHandle*>(trackItr())) { 00076 // Create Candcontext for AlgFitTrackSA 00077 CandContext trackContext(this,trackListContext.GetMom()); 00078 // set CandTrackHandle* as the "context data" 00079 trackContext.SetDataIn(track); 00080 // fit track (=== create handle) 00081 CandFitTrackSAHandle fittrack = 00082 CandFitTrackSA::MakeCandidate(afth,trackContext); 00083 // add fit track to CandFitTrackListHandle daughter list 00084 cftlh.AddDaughterLink(fittrack); 00085 } 00086 00087 }
1.3.9.1