Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

FitTrackCamListModule.cxx

Go to the documentation of this file.
00001 
00002 // Package: CandFitTrackCam
00003 //
00004 // marshall@hep.phy.cam.ac.uk
00006 #include <cassert>
00007 
00008 // Job Control includes
00009 #include "MessageService/MsgService.h"
00010 #include "MinosObjectMap/MomNavigator.h"
00011 #include "JobControl/JobCModuleRegistry.h" // For JOBMODULE macro
00012 // Algorithm includes
00013 #include "Algorithm/AlgFactory.h"
00014 #include "Algorithm/AlgHandle.h"
00015 #include "Algorithm/AlgConfig.h"
00016 // Candidate includes
00017 #include "CandData/CandRecord.h"
00018 #include "Candidate/CandContext.h"
00019 #include "RecoBase/CandTrack.h"
00020 #include "RecoBase/CandTrackHandle.h"
00021 #include "RecoBase/CandTrackListHandle.h"
00022 #include "RawData/RawRecord.h"
00023 #include "RawData/RawDaqSnarlHeader.h"
00024 // This package includes
00025 #include "CandFitTrackCam/FitTrackCamListModule.h"
00026 #include "CandFitTrackCam/CandFitTrackCamListHandle.h"
00027 #include "CandFitTrackCam/CandFitTrackCamList.h"
00028 
00029 JOBMODULE(FitTrackCamListModule, "FitTrackCamListModule", "Track Fitter");
00030 CVSID("$Id: FitTrackCamListModule.cxx,v 1.12 2010/01/06 18:44:00 rhatcher Exp $");
00031 
00033 FitTrackCamListModule::FitTrackCamListModule()
00034 {
00035   fAlgName="AlgFitTrackCamList";
00036   fAlgConfig="default";
00037 
00038   fAlgFitName="AlgFitTrackCam";
00039 
00040   fListIn="CandTrackSRList";
00041 
00042 }
00044 
00045 
00047 FitTrackCamListModule::~FitTrackCamListModule()
00048 {
00049 }
00051 
00052 
00054 void FitTrackCamListModule::BeginJob()
00055 {
00056   MSG("FitTrackCamListModule", Msg::kDebug) << " Track Fitter startup complete " << endl;
00057 }
00059 
00060 
00062 void FitTrackCamListModule::EndJob()
00063 {
00064 }
00066 
00067 
00069 JobCResult FitTrackCamListModule::Reco(MomNavigator* mom)
00070 {
00071   JobCResult result(JobCResult::kPassed);
00072   
00073   const char* alg_name = 0;
00074   const char* alg_config_name = 0;
00075   const char* algfit_name = 0;
00076   
00077   // Get CandRecord
00078   CandRecord *candrec = dynamic_cast<CandRecord *> (mom->GetFragment("CandRecord", "PrimaryCandidateRecord"));
00079   if(!candrec)
00080     {
00081       MSG("FitTrackCamListModule", Msg::kWarning) << " Failed to Find CandRecord " << endl;
00082       return result.SetFailed();
00083     }
00084 
00085   // Get RawRecord, in particular a DaqSnarl record
00086   RawRecord *rr = dynamic_cast<RawRecord *>(mom->GetFragment("RawRecord",0,"DaqSnarl"));
00087   if(rr==0){
00088     MSG("FitTrackCamListModule", Msg::kWarning) << " Failed to Find RawRecord " << endl;
00089     return result.SetFailed();
00090   }
00091   
00092   // Get RawHeader
00093   else {
00094     const RawDaqSnarlHeader* hdr = dynamic_cast<const RawDaqSnarlHeader*>(rr->GetRawHeader());
00095     if(hdr){
00096       MSG("FitTrackCamListModule", Msg::kDebug) << "Run, Snarl: "<<hdr->GetRun()<<", "<< hdr->GetSnarl()<<endl; 
00097     }
00098   }
00099 
00100 
00101   // Get CandTrackListHandle
00102   CandTrackListHandle* track_list = dynamic_cast<CandTrackListHandle*>(candrec->FindCandHandle("CandTrackListHandle",fListIn.Data()));
00103   //assert(track_list);
00104   if( !track_list || (track_list && track_list->GetNDaughters()<1) )
00105     {
00106       // Require number of CandTracks to be non-zero.
00107       if(!track_list) {
00108         MSG("FitTrackCamListModule", Msg::kDebug) << " Failed to Find " << fListIn.Data() << endl;}
00109       else if(track_list && track_list->GetNDaughters()<1) {
00110         MSG("FitTrackCamListModule", Msg::kDebug) << " No tracks found. Empty " << fListIn.Data() << endl;}
00111 
00112       //return JobCResult::kPassed;
00113       return JobCResult::kAOK;     // Otherwise no further processing of record
00114     }
00115 
00116 
00117   AlgFactory &af = AlgFactory::GetInstance();
00118   alg_name=fAlgName.Data(); alg_config_name=fAlgConfig.Data();
00119   AlgHandle adlh = af.GetAlgHandle(alg_name,alg_config_name);
00120 
00121   algfit_name=fAlgFitName.Data();
00122   AlgHandle adlhfit = af.GetAlgHandle(algfit_name,alg_config_name);
00123   
00124   AlgConfig &algfit = adlhfit.GetAlgConfig();
00125 
00126   algfit.UnLockValues();
00127   algfit.UnLockKeys();
00128   int fSet;
00129   if(!algfit.Get("UseGeoSwimmer",fSet)) {
00130     algfit.Set("UseGeoSwimmer",fUseGeoSwimmer);
00131   }
00132   algfit.LockValues();
00133   algfit.LockKeys();
00134 
00135   CandContext cx(this, mom);
00136   cx.SetCandRecord(candrec);
00137   cx.SetDataIn(track_list);
00138   CandFitTrackCamListHandle cftlh = CandFitTrackCamList::MakeCandidate(adlh, cx);
00139   cftlh.SetName(fListOut.Data());
00140   cftlh.SetTitle(TString("Created by FitTrackCamListModule"));
00141   candrec->SecureCandHandle(cftlh);
00142    
00143   return JobCResult::kPassed; // kNoDecision, kFailed, etc.
00144 }
00146 
00147 
00149 const char* FitTrackCamListModule::GetName() const
00150 {
00151   const char* tmps = "FitTrackCamListModule";
00152   return tmps;
00153 }
00155 
00156 
00158 const Registry& FitTrackCamListModule::DefaultConfig() const
00159 {
00160 //======================================================================
00161 // Supply the default configuration for the module
00162 //======================================================================
00163   static Registry r; // Default configuration for module
00164 
00165   // Set name of config
00166   std::string name = this->GetName();
00167   name += ".config.default";
00168   r.SetName(name.c_str());
00169 
00170   // Set values in configuration
00171   r.UnLockValues();
00172   r.Set("NameListIn","CandTrackSRList");
00173   r.Set("NameListOut","CandFitTrackCamList");
00174   r.Set("FitTrackCamAlgorithm","AlgFitTrackCamList");
00175   r.Set("FitTrackCamAlgConfig","default");
00176   r.Set("UseGeoSwimmer",1);
00177   r.LockValues();
00178 
00179   return r;
00180 }
00182 
00183 
00185 void FitTrackCamListModule::Config(const Registry& r)
00186 {
00187 //======================================================================
00188 // Configure the module given the Registry r
00189 //======================================================================
00190 
00191   const char* tmps;
00192   int   tmpi;
00193   if (r.Get("NameListIn",tmps)) { fListIn = tmps; }
00194   if (r.Get("NameListOut",tmps)) { fListOut = tmps; }
00195   if (r.Get("FitTrackCamAlgorithm",tmps)) { fAlgName = tmps; }
00196   if (r.Get("FitTrackCamAlgConfig",tmps)) { fAlgConfig = tmps; }
00197   if (r.Get("UseGeoSwimmer",tmpi)) { fUseGeoSwimmer = tmpi; }
00198 
00199 }

Generated on Mon Feb 15 11:06:44 2010 for loon by  doxygen 1.3.9.1