00001
00009
00010 #include "TClonesArray.h"
00011
00012 #include "MessageService/MsgService.h"
00013 #include "MinosObjectMap/MomNavigator.h"
00014 #include "Algorithm/AlgFactory.h"
00015 #include "Algorithm/AlgConfig.h"
00016 #include "Algorithm/AlgHandle.h"
00017 #include "CandData/CandRecord.h"
00018 #include "CandData/CandHeader.h"
00019 #include "RawData/RawRecord.h"
00020 #include "RawData/RawDaqSnarlHeader.h"
00021 #include "RecoBase/CandFitTrackList.h"
00022 #include "RecoBase/CandFitTrackListHandle.h"
00023 #include "RecoBase/CandTrackHandle.h"
00024 #include "RecoBase/CandTrackListHandle.h"
00025 #include "Candidate/CandContext.h"
00026 #include "JobControl/JobCModuleRegistry.h"
00027
00028 #include "CandFitTrackSA/FitTrackSAListModule.h"
00029 #include "CandFitTrackSA/CandFitTrackSAHandle.h"
00030 #include "CandFitTrackSA/TracerSA.h"
00031
00032 #include "CandFitTrackSA/Ntp/NtpFitSARecord.h"
00033 #include "CandFitTrackSA/Ntp/NtpFitSA.h"
00034
00035 JOBMODULE(FitTrackSAListModule, "FitTrackSAListModule",
00036 "Fits tracks using iterative least squares method as described"
00037 "in the NuMI-301 note (Adam Para, Jenny Thomas)");
00038
00039 CVSID("$Id: FitTrackSAListModule.cxx,v 1.14 2006/02/13 03:50:22 avva Exp $");
00040
00044 FitTrackSAListModule::FitTrackSAListModule()
00045 {
00046 TracerSA trace("FitTrackSAListModule::FitTrackSAListModule()");
00047 }
00048
00052 FitTrackSAListModule::~FitTrackSAListModule()
00053 {
00054 TracerSA trace("FitTrackSAListModule::~FitTrackSAListModule()");
00055 }
00056
00057
00061 void FitTrackSAListModule::BeginJob()
00062 {}
00063
00064
00068 void FitTrackSAListModule::EndJob()
00069 {}
00070
00071
00075 JobCResult FitTrackSAListModule::Ana(const MomNavigator* )
00076 {
00077 TracerSA trace("FitTrackSAListModule::Ana(const MomNavigator*)");
00078
00079 JobCResult result(JobCResult::kPassed);
00080 return result;
00081 }
00082
00086 JobCResult FitTrackSAListModule::Reco(MomNavigator* mom)
00087 {
00088 TracerSA trace("FitTrackSAListModule::Reco(MomNavigator*)");
00089
00090
00091
00092 CandRecord* cndrec = dynamic_cast<CandRecord*>
00093 (mom->GetFragment("CandRecord","PrimaryCandidateRecord"));
00094 if (!cndrec) {
00095 MSG("FitTrackSA",Msg::kWarning)
00096 << "No PrimaryCandidateRecord in Mom" << endl;
00097
00098 return JobCResult::kPassed;
00099 }
00100
00101 CandTrackListHandle* ctlh = dynamic_cast<CandTrackListHandle *>
00102 (cndrec->FindCandHandle("",GetConfig().GetCharString("ListIn")));
00103 if ( !ctlh ) {
00104 MSG("FitTrackSA", Msg::kWarning) << "CandTrackList "
00105 << GetConfig().GetCharString("ListIn")
00106 << " not found in the candidate record!" << endl;
00107
00108
00109 return JobCResult::kPassed;
00110 }
00111
00112
00113 if ( ctlh->GetNDaughters() < 1) {
00114 MSG("FitTrackSA", Msg::kDebug) << "List "
00115 << GetConfig().GetCharString("ListIn")
00116 << " does not contain any tracks!" << endl;
00117 return JobCResult::kPassed;
00118 }
00119
00120
00121 CandContext trackListContext(this, mom);
00122
00123 trackListContext.SetDataIn(ctlh);
00124
00125 trackListContext.SetCandRecord(cndrec);
00126
00127 AlgFactory &af = AlgFactory::GetInstance();
00128 AlgHandle aftlh = af.GetAlgHandle(
00129 GetConfig().GetCharString("FitTrackSAListAlgorithm"),
00130 GetConfig().GetCharString("FitTrackSAListAlgConfig"));
00131
00132 CandFitTrackListHandle cftlh =
00133 CandFitTrackList::MakeCandidate(aftlh, trackListContext);
00134
00135 cftlh.SetName(GetConfig().GetCharString("ListOut"));
00136 cftlh.SetTitle( TString("Created by FitTrackSAListModule from ").
00137 Append(ctlh->GetName()));
00138
00139 cndrec->SecureCandHandle(cftlh);
00140
00141 return JobCResult::kPassed;
00142 }
00143
00148 const Registry& FitTrackSAListModule::DefaultConfig() const
00149 {
00150 static bool been_here = false;
00151 static Registry def_cfg;
00152 if (been_here) return def_cfg;
00153
00154 been_here = true;
00155
00156 string name = this->JobCModule::GetName();
00157 name += ".config.default";
00158 def_cfg.SetName(name.c_str());
00159
00160
00161 def_cfg.Set("FitTrackSAListAlgorithm","AlgFitTrackSAList");
00162 def_cfg.Set("FitTrackSAListAlgConfig","default");
00163 def_cfg.Set("ListIn","CandTrackSRList");
00164 def_cfg.Set("ListOut","CandFitTrackSAList");
00165
00166 return def_cfg;
00167 }