| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

In This Package:

ReconAlg.cc

Go to the documentation of this file.
00001 #include "ReconAlg.h"
00002 #include "ReconAlg/IReconTool.h"
00003 
00004 #include "Conventions/Reconstruction.h"
00005 #include "Event/CalibReadoutHeader.h"
00006 #include "Event/CalibReadout.h"
00007 
00008 #include "Event/RecTrigger.h"
00009 
00010 #include <vector>
00011 
00012 ReconAlg::ReconAlg(const std::string& name, ISvcLocator* pSvcLocator)
00013   : DybAlgorithm<DayaBay::RecHeader>(name,pSvcLocator)
00014 {
00015   declareProperty("calibLocation", 
00016                   m_calibLocation=DayaBay::CalibReadoutHeaderLocation::Default,
00017                   "CalibReadoutHeader location in the TES.");
00018 
00019   declareProperty("ReconTools", m_reconToolNames,
00020                   "List of Reconstruction tools");
00021 
00022 }
00023 
00024 ReconAlg::~ReconAlg()
00025 {
00026 }
00027 
00028 StatusCode ReconAlg::initialize()
00029 {
00030   // Setup reconstruction styles and get tools
00031   for(unsigned int toolIdx = 0; toolIdx < m_reconToolNames.size(); toolIdx++){
00032     std::string toolName = m_reconToolNames[toolIdx];
00033     IReconTool* currentTool = 0;
00034     try {
00035       currentTool = tool<IReconTool>(toolName);
00036     }
00037     catch(const GaudiException& exg) {
00038       fatal() << "Failed to get Recon tool: \"" << toolName << "\"" << endreq;
00039       return StatusCode::FAILURE;
00040     }
00041     m_reconTools.push_back(currentTool);
00042     info() << "Added recon tool " << toolName << " to path " 
00043            << this->Location() << endreq;
00044   }
00045 
00046   return StatusCode::SUCCESS;
00047 }
00048 
00049 StatusCode ReconAlg::execute()
00050 {
00051   StatusCode sc;
00052 
00053   // Create output rec header
00054   DayaBay::RecHeader* recHeader = MakeHeaderObject();
00055 
00056   // Get CalibHeader from TES
00057   DayaBay::CalibReadoutHeader* calibHeader = 
00058     getTES<DayaBay::CalibReadoutHeader>(m_calibLocation);
00059   if(!calibHeader) {
00060     error() << "Get no CalibHeader from TES!!" << endreq;
00061     return StatusCode::FAILURE;
00062   }
00063 
00064   Context context = calibHeader->context();
00065   recHeader->setContext(context);
00066   recHeader->setEarliest(calibHeader->earliest());
00067   recHeader->setLatest(calibHeader->latest());
00068 
00069   DayaBay::RecTrigger& recTrigger = recHeader->recTrigger();
00070 
00071   // Get Calibrated Readout
00072   const DayaBay::CalibReadout* calibReadout = calibHeader->calibReadout();
00073   if(!calibReadout) {
00074     info() << "No CalibReadout retrieved this cycle." << endreq;
00075     recTrigger.setEnergyStatus(ReconStatus::kUnknown);
00076     recTrigger.setPositionStatus(ReconStatus::kUnknown);
00077     recTrigger.setDirectionStatus(ReconStatus::kUnknown);
00078     return StatusCode::SUCCESS;
00079   }
00080   
00081   // Get detector / trigger information 
00082   DayaBay::Detector det = calibReadout->detector();
00083   unsigned int triggerNumber = calibReadout->triggerNumber();
00084   const TimeStamp triggerTime = calibReadout->triggerTime();
00085   const DayaBay::Trigger::TriggerType_t triggerType 
00086     = calibReadout->triggerType();
00087   
00088   recTrigger.setDetector(det);
00089   recTrigger.setTriggerNumber(triggerNumber);
00090   recTrigger.setTriggerTime(triggerTime);
00091   recTrigger.setTriggerType(triggerType);
00092   
00093   // Run the recon tools for this style
00094   for(unsigned int toolIdx = 0; toolIdx < m_reconTools.size(); toolIdx++){
00095     sc = m_reconTools[toolIdx]->reconstruct(*calibReadout, recTrigger);
00096     if(sc != StatusCode::SUCCESS) return sc;
00097   }
00098 
00099   return StatusCode::SUCCESS;
00100 }
00101 
00102 StatusCode ReconAlg::finalize()
00103 {
00104   return this->GaudiAlgorithm::finalize();
00105 }
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 20:41:32 2011 for ReconAlg by doxygen 1.4.7