Main Page   Class Hierarchy   Compound List   File List   Compound Members   File Members   Related Pages  

CalRecLogsAlg Class Reference

#include <CalRecLogsAlg.h>

List of all members.

Public Methods

 CalRecLogsAlg (const std::string &name, ISvcLocator *pSvcLocator)
virtual ~CalRecLogsAlg ()
StatusCode initialize ()
StatusCode execute ()
StatusCode finalize ()

Protected Methods

StatusCode retrieve ()

Private Methods

void computeEnergy (CalRecLog *recLog, const CalADCLog *adcLog, const CalADCLog *pedLog, const CalCalibLog *calibLog)
void computePosition (CalRecLog *recLog, const CalDetGeo *geoLog, const CalCalibLog *calibLog)

Private Attributes

ICalGeometrySvcm_CalGeo
CalPedCalibm_CalPedLogs
CalCalibLogsm_CalCalibLogs
CalADCLogsm_CalRawLogs
CalRecLogsm_CalRecLogs
std::string m_PedFileName
std::string m_GainFileName
std::string m_IntlinFileName
std::string m_RailFileName
std::string m_SlopeFileName


Constructor & Destructor Documentation

CalRecLogsAlg::CalRecLogsAlg const std::string &    name,
ISvcLocator *    pSvcLocator
 

Definition at line 20 of file CalRecLogsAlg.cxx.

References m_GainFileName, m_IntlinFileName, m_PedFileName, m_RailFileName, and m_SlopeFileName.

00020                                                                            :
00021 Algorithm(name, pSvcLocator) {
00022     declareProperty("PedFile",m_PedFileName);
00023     declareProperty("GainFile",m_GainFileName);
00024     declareProperty("IntlinFile",m_IntlinFileName);
00025     declareProperty("RailFile",m_RailFileName);
00026     declareProperty("SlopeFile",m_SlopeFileName);
00027     
00028 }

virtual CalRecLogsAlg::~CalRecLogsAlg   [inline, virtual]
 

Definition at line 35 of file CalRecLogsAlg.h.

00035 {}


Member Function Documentation

void CalRecLogsAlg::computeEnergy CalRecLog   recLog,
const CalADCLog   ADCLog,
const CalADCLog   pedLog,
const CalCalibLog   calibLog
[private]
 

Definition at line 145 of file CalRecLogsAlg.cxx.

References CALNRANGES, CALNSIDES, CalBase::HE, CalBase::HEX, CalBase::LE, CalBase::LEX, CalBase::NEG, CalBase::POS, CalBase::RANGE, and CalBase::SIDE.

00148 {
00149         
00150         double MAXPED = 4095.;
00151         double ADCSATURATION = 3850;
00152         bool eneSet = false;
00153         for (int irange = 0; irange < CALNRANGES ; irange++) {
00154                 CalBase::RANGE r = (irange == 0? CalBase::LEX : CalBase::LE);
00155                 double eneNeg = 0.;
00156         double enePos = 0.;
00157                 double adcNeg = 0.;
00158                 double adcPos = 0.;
00159                 double adcSatNeg = 0.;
00160                 double adcSatPos = 0.;
00161                 for (int iside = 0; iside < CALNSIDES; iside++) {
00162                         CalBase::SIDE s = (iside == 0? CalBase::NEG : CalBase::POS);
00163                         if (irange > 1) r = (irange == 2? CalBase::HEX : CalBase::HE);
00164                         double adc = ADCLog->ADC(s,r);
00165                         double ped = pedLog->ADC(s,r);
00166                         double adc_ped = adc - ped;
00167                         //if (s== CalBase::NEG) recLog->setNegADC(r,(adc-ped)/(MAXPED-ped));
00168                         //else recLog->setPosADC(r,(adc-ped)/(MAXPED-ped));
00169                         if (s== CalBase::NEG) recLog->setNegADC(r,adc_ped);
00170                         else recLog->setPosADC(r,adc_ped);
00171 
00172                         double adcSat = 0.6*(calibLog->getRail(iside,irange));
00173                         double ene = calibLog->adc_to_MeV(adc_ped,iside,irange);
00174                         iside == 0? eneNeg = ene: enePos = ene;
00175                         iside == 0? adcNeg = adc_ped: adcPos = adc_ped;
00176                         iside == 0? adcSatNeg = adcSat: adcSatPos = adcSat;
00177                 }
00178                 recLog->setNegEnergy(r,eneNeg);
00179                 recLog->setPosEnergy(r,enePos);
00180                 if(adcNeg<50 || adcPos<50)eneNeg=enePos=0;
00181 
00182                 if (!eneSet && (adcNeg < adcSatNeg && adcPos < adcSatPos)) {
00183                         eneSet = true;
00184                         recLog->setNegEnergy(eneNeg);
00185                         recLog->setPosEnergy(enePos);
00186             recLog->setBestRange(r);
00187                 }
00188         }
00189 }

void CalRecLogsAlg::computePosition CalRecLog   recLog,
const CalDetGeo   geoLog,
const CalCalibLog   calibLog
[private]
 

Definition at line 191 of file CalRecLogsAlg.cxx.

References CalAxis::axis, slope, CalAxis::X, and CalAxis::Y.

00194 {
00195         Point pCenter = geoLog->position();
00196         Point pSize   = geoLog->size();
00197         
00198         CalDetGeo::axis view = recLog->view();
00199         double xdir = 0.;
00200         double ydir = 0.;
00201         ydir = (view == CalDetGeo::X? 1. : 0);
00202         xdir = (view == CalDetGeo::Y? 1. : 0);
00203 
00204         Vector dirLog(xdir,ydir,0.); 
00205         
00206         
00207         double eneNeg = recLog->negEnergy();
00208         double enePos = recLog->posEnergy();
00209         double asym = recLog->asymmetry();
00210         double slope = calibLog->getSlope(recLog->bestRange());
00211 
00212         Point pLog = pCenter+dirLog*asym*slope;
00213 
00214         recLog->setPosition(pLog);
00215 }

StatusCode CalRecLogsAlg::execute  
 

Definition at line 69 of file CalRecLogsAlg.cxx.

References CalAxis::axis, CalLogID::column(), CalLogID::ID(), CalLogID::layer(), and CalLogID::view().

00071 {
00072         StatusCode sc = StatusCode::SUCCESS;
00073         sc = retrieve();
00074         int nLogs = m_CalRawLogs->num();
00075         for (int jlog = 0; jlog < nLogs ; jlog++) {
00076                 
00077                 CalADCLog* ADCLog = m_CalRawLogs->Log(jlog);
00078 
00079                 int ilayer          = ADCLog->layer();
00080                 CalDetGeo::axis view   = ADCLog->view();
00081             int icol            = ADCLog->column();
00082 
00083 //              detGeo*    geoLog = m_CalGeoLogs->getLog(ilayer,view,icol);
00084                 CalDetGeo geoLog = m_CalGeo->getLog(ilayer,view,icol);
00085 
00086                 
00087                 CalADCLog* pedLog = m_CalPedLogs->getLogID(CalLogID::ID(ilayer,view,icol));
00088                 CalCalibLog* calibLog = m_CalCalibLogs->getLogID(CalLogID::ID(ilayer,view,icol));
00089 
00090                 CalRecLog* recLog = m_CalRecLogs->getLogID(CalLogID::ID(ilayer,view,icol));
00091                 computeEnergy(recLog, ADCLog, pedLog, calibLog);
00092                 computePosition(recLog,&geoLog, calibLog);
00093 //              std::cout << " ilayer = " << ilayer << " view=" << view << " icol=" << icol << std::endl;
00094         }
00095 //      m_CalRecLogs->writeOut();
00096 
00097         return sc;
00098 }

StatusCode CalRecLogsAlg::finalize  
 

Definition at line 100 of file CalRecLogsAlg.cxx.

00102 {
00103         StatusCode sc = StatusCode::SUCCESS;
00104 
00105 //      m_CalRecLogs->writeOut();
00106 
00107         return sc;
00108 }

StatusCode CalRecLogsAlg::initialize  
 

Definition at line 32 of file CalRecLogsAlg.cxx.

00034 {
00035     MsgStream log(msgSvc(), name());
00036     StatusCode sc = StatusCode::SUCCESS;
00037     /*  
00038     m_CalPedLogs   = dataManager::instance()->getData("CalPedCalib",m_CalPedLogs);
00039     m_CalCalibLogs = dataManager::instance()->getData("CalCalibLogs",m_CalCalibLogs);
00040     m_CalGeoLogs   = dataManager::instance()->geo()->cal();
00041     
00042       m_CalRawLogs   = dataManager::instance()->getData("CalRawLogs",m_CalRawLogs);
00043       m_CalRecLogs   = dataManager::instance()->getData("CalRecLogs",m_CalRecLogs);
00044     */
00045     sc = service("CalGeometrySvc", m_CalGeo);
00046 
00047     if(sc.isFailure())
00048     {
00049         log <<MSG::ERROR << "Error ICalGeometrySvc not found" << endreq;
00050         return sc;
00051     }
00052     
00053     
00054     
00055     m_CalPedLogs  = new CalPedCalib(); 
00056     m_CalPedLogs->setFileName(m_PedFileName);
00057     m_CalPedLogs->make();
00058     
00059     m_CalCalibLogs = new CalCalibLogs();
00060     m_CalCalibLogs->setFileNames(m_IntlinFileName, m_GainFileName, m_RailFileName, m_SlopeFileName);
00061     m_CalCalibLogs->make();
00062     
00063     
00064     //  m_CalRecLogs->clear();
00065     
00066     return sc;
00067 }

StatusCode CalRecLogsAlg::retrieve   [protected]
 

Definition at line 111 of file CalRecLogsAlg.cxx.

00113 {
00114         
00115     MsgStream log(msgSvc(), name());
00116     StatusCode sc = StatusCode::SUCCESS;
00117 
00118         m_CalRecLogs = 0;
00119         m_CalRecLogs = new CalRecLogs();
00120 
00121 DataObject* pnode=0;
00122 
00123     sc = eventSvc()->retrieveObject( "/Event/CalRecon", pnode );
00124     
00125     if( sc.isFailure() ) {
00126         sc = eventSvc()->registerObject("/Event/CalRecon",new DataObject);
00127         if( sc.isFailure() ) {
00128             
00129             log << MSG::ERROR << "Could not create CalRecon directory" << endreq;
00130             return sc;
00131         }
00132     }
00133 
00134     
00135 
00136         m_CalRawLogs = SmartDataPtr<CalADCLogs>(eventSvc(),"/Event/CalRecon/CalADCLogs"); 
00137 
00138 
00139          sc = eventSvc()->registerObject("/Event/CalRecon/CalRecLogs",m_CalRecLogs);
00140         return sc;
00141 }


Member Data Documentation

CalCalibLogs* CalRecLogsAlg::m_CalCalibLogs [private]
 

Definition at line 55 of file CalRecLogsAlg.h.

ICalGeometrySvc* CalRecLogsAlg::m_CalGeo [private]
 

Definition at line 53 of file CalRecLogsAlg.h.

CalPedCalib* CalRecLogsAlg::m_CalPedLogs [private]
 

Definition at line 54 of file CalRecLogsAlg.h.

CalADCLogs* CalRecLogsAlg::m_CalRawLogs [private]
 

Definition at line 56 of file CalRecLogsAlg.h.

CalRecLogs* CalRecLogsAlg::m_CalRecLogs [private]
 

Definition at line 58 of file CalRecLogsAlg.h.

std::string CalRecLogsAlg::m_GainFileName [private]
 

Definition at line 61 of file CalRecLogsAlg.h.

Referenced by CalRecLogsAlg().

std::string CalRecLogsAlg::m_IntlinFileName [private]
 

Definition at line 62 of file CalRecLogsAlg.h.

Referenced by CalRecLogsAlg().

std::string CalRecLogsAlg::m_PedFileName [private]
 

Definition at line 60 of file CalRecLogsAlg.h.

Referenced by CalRecLogsAlg().

std::string CalRecLogsAlg::m_RailFileName [private]
 

Definition at line 63 of file CalRecLogsAlg.h.

Referenced by CalRecLogsAlg().

std::string CalRecLogsAlg::m_SlopeFileName [private]
 

Definition at line 64 of file CalRecLogsAlg.h.

Referenced by CalRecLogsAlg().


The documentation for this class was generated from the following files:
Generated on Thu Nov 29 16:38:53 2001 by doxygen1.2.12 written by Dimitri van Heesch, © 1997-2001