00001 #include "AtNuFitModule.h"
00002
00003 #include "Algorithm/AlgConfig.h"
00004 #include "Algorithm/AlgFactory.h"
00005 #include "Algorithm/AlgHandle.h"
00006
00007 #include "CandData/CandRecord.h"
00008 #include "Candidate/CandContext.h"
00009 #include "JobControl/JobCModuleRegistry.h"
00010 #include "JobControl/JobCommand.h"
00011 #include "MessageService/MsgService.h"
00012 #include "MinosObjectMap/MomNavigator.h"
00013
00014 #include "RecoBase/CandTrackHandle.h"
00015 #include "RecoBase/CandTrackListHandle.h"
00016
00017 #include "CandFitTrackAtNuHandle.h"
00018 #include "CandFitTrackAtNuListHandle.h"
00019
00020 #include <sys/time.h>
00021
00022
00023
00024
00025
00026 ClassImp(AtNuFitModule)
00027
00028 CVSID("$Id: AtNuFitModule.cxx,v 1.7 2006/03/28 13:54:11 blake Exp $");
00029 JOBMODULE(AtNuFitModule, "AtNuFitModule","AtNu Track/Shower Fitter Module");
00030
00031 AtNuFitModule::AtNuFitModule() :
00032 fListIn("CandTrackListHandle"),
00033 fListOut("CandFitTrackAtNuListHandle")
00034 {
00035
00036 }
00037
00038 AtNuFitModule::~AtNuFitModule()
00039 {
00040
00041 }
00042
00043 void AtNuFitModule::BeginJob()
00044 {
00045
00046 MSG("AtNuFitModule", Msg::kInfo) << " *** AtNuFitModule::BeginJob() *** " << endl;
00047
00048
00049
00050
00051
00052
00053 }
00054
00055 JobCResult AtNuFitModule::Reco(MomNavigator *mom)
00056 {
00057
00058
00059 MSG("AtNuFitModule", Msg::kInfo) << " *** AtNuFitModule::Reco() *** " << endl;
00060 JobCResult result(JobCResult::kPassed);
00061
00062
00063 struct timeval tpbefore;
00064 gettimeofday(&tpbefore,0);
00065
00066
00067 CandRecord *candrec = dynamic_cast<CandRecord *> (mom->GetFragment("CandRecord", "PrimaryCandidateRecord"));
00068 if(!candrec){
00069 MSG("AtNuFitModule", Msg::kWarning) << " Failed to Fit CandRecord " << endl;
00070 return result.SetFailed();
00071 }
00072
00073
00074 CandTrackListHandle* track_list = dynamic_cast<CandTrackListHandle*>(candrec->FindCandHandle("CandTrackListHandle",fListIn.Data()));
00075 if(!track_list){
00076 MSG("AtNuFitModule", Msg::kWarning) << " Failed to Find " << fListIn.Data() << endl;
00077 return result.SetAOK();
00078 }
00079
00080
00081 MSG("AtNuFitModule", Msg::kDebug) << " Make CandFitTrackAtNuHandle " << endl;
00082
00083 AlgFactory &af = AlgFactory::GetInstance();
00084 AlgHandle ah_atnu = af.GetAlgHandle("AlgFitTrackAtNuList", "default");
00085 CandContext cx_atnu(this, mom);
00086 cx_atnu.SetCandRecord(candrec);
00087 cx_atnu.SetDataIn(track_list);
00088
00089 CandFitTrackAtNuListHandle candfittrack = CandFitTrackAtNuList::MakeCandidate(ah_atnu, cx_atnu);
00090 candfittrack.SetName(fListOut.Data());
00091 candfittrack.SetTitle(TString("Created by AtNuFitModule from ").Append(track_list->GetName()));
00092
00093
00094 struct timeval tpafter;
00095 gettimeofday(&tpafter,0);
00096
00097 Double_t dtime;
00098 dtime = 1000.0*(tpafter.tv_sec-tpbefore.tv_sec)+0.001*(tpafter.tv_usec-tpbefore.tv_usec);
00099 candfittrack.SetCPUTime(dtime);
00100
00101 candrec->SecureCandHandle(candfittrack);
00102
00103 MSG("AtNuFitModule", Msg::kInfo) << " *** AtNuFitModule::Reco() FINISHED *** " << endl;
00104
00105 return result;
00106
00107 }
00108
00109 JobCResult AtNuFitModule::Ana(const MomNavigator * )
00110 {
00111
00112 JobCResult result(JobCResult::kPassed);
00113
00114
00115 return result;
00116
00117 }
00118
00119 const Registry& AtNuFitModule::DefaultConfig() const
00120 {
00121
00122 MSG("AtNuFitModule", Msg::kInfo) << " *** AtNuFitModule::DefaultConfig() *** " << endl;
00123
00124 static Registry r;
00125 r.SetName("AtNuFitModule.config.default");
00126 r.UnLockValues();
00127 r.Set("ListIn",fListIn.Data());
00128 r.Set("ListOut",fListOut.Data());
00129 r.Set("BFieldMap",201);
00130 r.LockValues();
00131
00132 AlgFactory &af = AlgFactory::GetInstance();
00133
00134 af.Register("AlgFitTrackAtNu", "default");
00135 AlgHandle ah_atnu = af.GetAlgHandle("AlgFitTrackAtNu","default");
00136 AlgConfig &ac_atnu = ah_atnu.GetAlgConfig();
00137 ac_atnu.UnLockValues();
00138 ac_atnu.Set("BFieldMap",201);
00139 ac_atnu.LockValues();
00140
00141 return r;
00142 }
00143
00144 void AtNuFitModule::Config(const Registry& r)
00145 {
00146
00147 MSG("AtNuFitModule", Msg::kInfo) << " *** AtNuFitModule::Config() *** " << endl;
00148
00149 Int_t tmpint=0;
00150 const char* tmpchar = 0;
00151 if(r.Get("ListIn",tmpchar)) fListIn = tmpchar;
00152 if(r.Get("ListOut",tmpchar)) fListOut = tmpchar;
00153 MSG("AtNuFitModule", Msg::kInfo) << " ... input: " << fListIn.Data() << endl;
00154 MSG("AtNuFitModule", Msg::kInfo) << " ... output: " << fListOut.Data() << endl;
00155
00156 AlgFactory &af = AlgFactory::GetInstance();
00157
00158 AlgHandle ah_atnu = af.GetAlgHandle("AlgFitTrackAtNu","default");
00159 AlgConfig &ac_atnu = ah_atnu.GetAlgConfig();
00160 ac_atnu.UnLockValues();
00161 if(r.Get("BFieldMap",tmpint)) ac_atnu.Set("BFieldMap",tmpint);
00162 ac_atnu.LockValues();
00163
00164
00165 return;
00166 }
00167
00168 void AtNuFitModule::HandleCommand(JobCommand *command)
00169 {
00170 TString cmd = command->PopCmd();
00171 if(cmd=="Set"){
00172 TString opt = command->PopOpt();
00173
00174 }
00175 }
00176
00177 void AtNuFitModule::EndJob()
00178 {
00179
00180 }