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

In This Package:

DaqPmtChannel.cc

Go to the documentation of this file.
00001 /*
00002  *  DaqPmtChannel.cc
00003  *  DaqEvent
00004  *
00005  *  Created by Simon Patton on 9/2/2010.
00006  *  Copyright 2010 DayaBay Collaboration. All rights reserved.
00007  *
00008  */
00009 #include "Event/DaqPmtChannel.h"
00010 
00011 #include "FeeReadoutFormat/FeeHead.h"
00012 #include "FeeReadoutFormat/FeeHit.h"
00013 #include "FeeReadoutFormat/FeeReadout.h"
00014 #include "FeeReadoutFormat/FeeTraits.h"
00015 
00016 using DayaBay::DaqPmtChannel;
00017 using DybDaq::FeeHead;
00018 using DybDaq::FeeHit;
00019 using DybDaq::FeeReadout;
00020 
00021 DaqPmtChannel::DaqPmtChannel(const DayaBay::FeeChannelId& channelId,
00022                              FeeReadout& feeReadout) :
00023     m_feeHits(0),
00024     m_feeReadout(&feeReadout),
00025     m_channelId(channelId) {
00026 }
00027 
00028 DaqPmtChannel::DaqPmtChannel(const FeeHit& feeHit,
00029                              const DayaBay::FeeChannelId& channelId) :
00030     m_feeHits(0),
00031     m_feeReadout(0),
00032     m_channelId(channelId) {
00033     addHit(feeHit);
00034 }
00035 
00036 DaqPmtChannel::~DaqPmtChannel() {
00037     if (0 != m_feeHits) {
00038         delete m_feeHits;
00039     }
00040 }
00041 
00042 unsigned int DaqPmtChannel::hitCount() const {
00043     return feeHits().size();
00044 }
00045 
00046 unsigned int DaqPmtChannel::peakCycle(const unsigned int hit) const {
00047     return feeHits().at(hit)->peakCycle();
00048 }
00049 
00050 bool DaqPmtChannel::isHighGainAdc(const unsigned int hit) const {
00051     return !(feeHits().at(hit)->isHighRangeAdc());
00052 }
00053 
00054 unsigned int DaqPmtChannel::preAdcRaw(const unsigned int hit) const {
00055     return feeHits().at(hit)->preAdc();
00056 }
00057 
00058 float DaqPmtChannel::preAdcAvg(const unsigned int hit) const {
00059     if(feeHits().at(hit)->feeTraits().majorVersion() == 0
00060        && feeHits().at(hit)->feeTraits().minorVersion() < 2){
00061         return float(this->preAdcRaw(hit));
00062     }
00063     return float(this->preAdcRaw(hit)) / 4.0;
00064 }
00065 
00066 unsigned int DaqPmtChannel::adc(const unsigned int hit) const {
00067     return feeHits().at(hit)->adc();
00068 }
00069 
00070 float DaqPmtChannel::deltaAdc(const unsigned int hit) const {
00071     return this->adc(hit) - this->preAdcAvg(hit);
00072 }
00073 
00074 unsigned int DaqPmtChannel::tdc(const unsigned int hit) const {
00075     return feeHits().at(hit)->tdc();
00076 }
00077 
00078 const DaqPmtChannel::FeeHitPtrList& DaqPmtChannel::feeHits() const {
00079     if (0 == m_feeHits) {
00080         FeeHitPtrList** hits = const_cast<FeeHitPtrList**>(&m_feeHits);
00081         *(hits) = new FeeHitPtrList();
00082     }
00083     return *m_feeHits;
00084 }
00085 
00086 void DaqPmtChannel::addHit(const unsigned int hitNumber,
00087                            const unsigned int peakCycle,
00088                            const bool isHighGainAdc,
00089                            const unsigned int pedestal,
00090                            const unsigned int charge,
00091                            const unsigned int time) {
00092     const FeeHit& feeHit = m_feeReadout->addHit(m_channelId.connector() - 1,
00093                                                 peakCycle,
00094                                                 !isHighGainAdc,
00095                                                 pedestal,
00096                                                 charge,
00097                                                 hitNumber,
00098                                                 time);
00099     addHit(feeHit);
00100 }
00101 
00102 void DaqPmtChannel::addHit(const FeeHit& feeHit) {
00103     // TODO: Make sure the hits are in order! (eventually)
00104     feeHits();
00105     m_feeHits->push_back(&feeHit);
00106 }
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 20:24:28 2011 for DaqEvent by doxygen 1.4.7