/search.css" rel="stylesheet" type="text/css"/> /search.js">
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

In This Package:

ADLEDData.cc
Go to the documentation of this file.
00001 #include "ADLEDData.h"
00002 
00003 #include "Event/ReadoutHeader.h"
00004 #include "Event/CalibReadoutHeader.h"
00005 #include "Event/CalibReadout.h"
00006 #include "Event/UserDataHeader.h"
00007 #include "Event/RecHeader.h"
00008 #include "Event/RecTrigger.h"
00009 #include "Event/HeaderObject.h"
00010 
00011 #include "GaudiKernel/SystemOfUnits.h"
00012 
00013 #include "TMath.h"
00014 #include "TString.h"
00015 
00016 ADLEDData::ADLEDData(const std::string& name, ISvcLocator* pSvcLocator)
00017   : DybAlgorithm<DayaBay::UserDataHeader>(name,pSvcLocator) {
00018   m_location = "/Event/Data/Calib/ADLED";
00019 
00020   declareProperty("ReadoutHeaderLocation", m_readoutHeaderLocation="/Event/Readout/ReadoutHeader",
00021                   "Location of the ReadoutHeader");
00022   declareProperty("CalibStatsLocation", m_calibStatsLocation="/Event/Data/CalibStats",
00023                   "Location of the CalibStats User data");
00024   declareProperty("ADLEDLocation", m_ADLEDLocation="/Event/Tag/Calib/ADLED",
00025                   "Location of the ADLED Tag");
00026 }
00027 
00028 ADLEDData::~ADLEDData() {
00029 }
00030 
00031 StatusCode ADLEDData::initialize() {
00032   return this->GaudiAlgorithm::initialize();
00033 }
00034 
00035 StatusCode ADLEDData::finalize() {
00036   return this->GaudiAlgorithm::finalize();
00037 }
00038 
00039 StatusCode ADLEDData::execute() {
00040   
00041   StatusCode sc = StatusCode::SUCCESS;
00042 
00043   const DayaBay::ReadoutHeader *readoutHdr = 0; 
00044   const DayaBay::RecHeader *recHdr = 0; 
00045   DayaBay::UserDataHeader *calibStatsHdr = 0; 
00046 
00047   // Check if it is tagged as ADLED, if not, skip.
00048   bool isADLED = exist<DayaBay::HeaderObject>(evtSvc(), m_ADLEDLocation);
00049   if (!isADLED){
00050     return StatusCode::SUCCESS;
00051   }
00052 
00053 //  // Skip SAB Data 
00054 //  Site::Site_t siteId = readoutHdr->context().GetSite();
00055 //  
00056 //  if (siteId == Site::kSAB) {
00057 //    return StatusCode::SUCCESS;
00058 //  }
00059 
00060   if ( !exist<DayaBay::UserDataHeader>(evtSvc(), m_calibStatsLocation) ) {
00061     warning() << "Cannot find header at " << m_calibStatsLocation << endreq;
00062     return StatusCode::FAILURE;
00063   } else {
00064     calibStatsHdr = get<DayaBay::UserDataHeader>(m_calibStatsLocation);
00065   }
00066   
00067   // Get readout
00068   if (!exist<DayaBay::ReadoutHeader>(evtSvc(), "/Event/Readout/ReadoutHeader")) {
00069     warning() << "Failed to get readout" << endreq;
00070   } else {
00071     readoutHdr = get<DayaBay::ReadoutHeader>("/Event/Readout/ReadoutHeader");
00072   }
00073 
00074   // Get recon header
00075   if (!exist<DayaBay::RecHeader>(evtSvc(), "/Event/Rec/AdSimple")) {
00076     warning() << "Failed to get recheader" << endreq;
00077     return StatusCode::FAILURE;
00078   } else {
00079     recHdr = get<DayaBay::RecHeader>("/Event/Rec/AdSimple");
00080   }
00081   const DayaBay::RecTrigger& rectrigger = recHdr->recTrigger();
00082   
00083   // Skip if recon has failed
00084   float recES = rectrigger.energyStatus();
00085   float recPS = rectrigger.positionStatus();
00086   if (recES != 1  || recPS != 1){
00087     debug() << "Recon failed. skipping" << endreq;
00088     return StatusCode::SUCCESS;
00089   }
00090 
00091   // Record data
00092   // -- 1a.  Get data from recheader
00093   float e_adled = rectrigger.energy()/Gaudi::Units::MeV;
00094   float x_adled = rectrigger.position().x() / Gaudi::Units::mm;
00095   float y_adled = rectrigger.position().y() / Gaudi::Units::mm;
00096   float z_adled = rectrigger.position().z() / Gaudi::Units::mm;
00097   // -- 1b.  Get data from calib stats
00098   float nPESUM = calibStatsHdr->getFloat("nPESUM");
00099   float nPERMS = calibStatsHdr->getFloat("nPERMS");
00100 
00101   // -- 2. Create and prepare user data header
00102   DayaBay::UserDataHeader* adledData = MakeHeaderObject();
00103   Context context = readoutHdr->context();
00104   context.SetDetId(DetectorId::kAll);
00105   adledData->setContext(context);
00106   adledData->setEarliest(readoutHdr->earliest());
00107   adledData->setLatest(readoutHdr->latest());
00108 
00109   // -- 3. Finally, put data into the user data header
00110   adledData->set("e_adled",e_adled); 
00111   adledData->set("x_adled",x_adled); 
00112   adledData->set("y_adled",y_adled); 
00113   adledData->set("z_adled",z_adled); 
00114   adledData->set("nPESUM_adled",nPESUM); 
00115   adledData->set("nPERMS_adled",nPERMS); 
00116 
00117 //==============================
00118   return StatusCode::SUCCESS;
00119 }
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Fri May 16 2014 10:10:08 for CalibrationTagging by doxygen 1.7.4