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

In This Package:

PerDaqPmtCrate.cc

Go to the documentation of this file.
00001 /*
00002  *  PerDaqPmtCrate.cc
00003  *  PerReadoutEvent
00004  *
00005  *  Created by Simon Patton on 2/22/11.
00006  *  Copyright 2011 DayaBay Collaboration. All rights reserved.
00007  *
00008  */
00009 #include "PerReadoutEvent/PerDaqPmtCrate.h"
00010 
00011 #include "Conventions/Electronics.h"
00012 #include "PerReadoutEvent/PerUintValue.h"
00013 
00014 using DayaBay::DaqPmtChannel;
00015 using DayaBay::FeeChannelId;
00016 using DayaBay::DaqPmtCrate;
00017 
00018 DaqPmtCrate::PmtChannelPtrList* PerDaqPmtCrate::m_channels = new DaqPmtCrate::PmtChannelPtrList();
00019 
00020 PerDaqPmtCrate::PerDaqPmtCrate(const DybDaq::EventReadout* eventReadout) :
00021   DayaBay::DaqPmtCrate(eventReadout),
00022   m_returnedPeaks(0),
00023   m_returnedAdcs(0),
00024   m_returnedPreAdcs(0),
00025   m_returnedGains(0),
00026   m_returnedTdcs(0) {
00027 }
00028   
00029 PerDaqPmtCrate::PerDaqPmtCrate(const PerDaqPmtCrate& rhs) :
00030   DayaBay::DaqPmtCrate(rhs),
00031   m_returnedPeaks(0),
00032   m_returnedAdcs(0),
00033   m_returnedPreAdcs(0),
00034   m_returnedGains(0),
00035   m_returnedTdcs(0) {
00036 }
00037 
00038 PerDaqPmtCrate::~PerDaqPmtCrate() {
00039   if (0 != m_returnedTdcs) {
00040     const std::vector<const PerUintValue*>::const_iterator finished = m_returnedTdcs->end();
00041     for (std::vector<const PerUintValue*>::const_iterator iterator = m_returnedTdcs->begin();
00042          finished != iterator;
00043          ++iterator) {
00044       delete (PerUintValue*)(*iterator);
00045     }
00046     delete m_returnedTdcs;
00047   }
00048   if (0 != m_returnedGains) {
00049     const std::vector<const PerUintValue*>::const_iterator finished = m_returnedGains->end();
00050     for (std::vector<const PerUintValue*>::const_iterator iterator = m_returnedGains->begin();
00051          finished != iterator;
00052          ++iterator) {
00053       delete (PerUintValue*)(*iterator);
00054     }
00055     delete m_returnedGains;
00056   }
00057   if (0 != m_returnedAdcs) {
00058     const std::vector<const PerUintValue*>::const_iterator finished = m_returnedAdcs->end();
00059     for (std::vector<const PerUintValue*>::const_iterator iterator = m_returnedAdcs->begin();
00060          finished != iterator;
00061          ++iterator) {
00062       delete (PerUintValue*)(*iterator);
00063     }
00064     delete m_returnedAdcs;
00065   }
00066   if (0 != m_returnedPreAdcs) {
00067     const std::vector<const PerUintValue*>::const_iterator finished = m_returnedPreAdcs->end();
00068     for (std::vector<const PerUintValue*>::const_iterator iterator = m_returnedPreAdcs->begin();
00069          finished != iterator;
00070          ++iterator) {
00071       delete (PerUintValue*)(*iterator);
00072     }
00073     delete m_returnedPreAdcs;
00074   }
00075   if (0 != m_returnedPeaks) {
00076     const std::vector<const PerUintValue*>::const_iterator finished = m_returnedPeaks->end();
00077     for (std::vector<const PerUintValue*>::const_iterator iterator = m_returnedPeaks->begin();
00078          finished != iterator;
00079          ++iterator) {
00080       delete (PerUintValue*)(*iterator);
00081     }
00082     delete m_returnedPeaks;
00083   }
00084 }
00085 
00086 const DaqPmtChannel& PerDaqPmtCrate::channel(const DayaBay::FeeChannelId& channelId) const {
00087   return DaqPmtCrate::channel(channelId);
00088 }
00089 
00090 const DaqPmtCrate::PmtChannelPtrList& PerDaqPmtCrate::channel(int board, int chan) const {
00091   m_channels->clear();
00092   m_channels->push_back(const_cast<DayaBay::DaqPmtChannel*>(&(channel(FeeChannelId(board, chan, (Site::Site_t)0, (DetectorId::DetectorId_t)0)))));
00093   return *m_channels;
00094 }
00095 
00096 const PerDaqPmtCrate::AdcPeakValues& PerDaqPmtCrate::peaks(int board, int chan, int highGain) const {
00097   if (0 != m_returnedPeaks) {
00098     delete m_returnedPeaks;
00099   }
00100   m_returnedPeaks = new std::vector<const PerUintValue*>();
00101 
00102   const DaqPmtChannel& channelToUse = channel(FeeChannelId(board, chan, (Site::Site_t)0, (DetectorId::DetectorId_t)0));
00103   if (0 != &channelToUse) {
00104     const unsigned int finished = channelToUse.hitCount();
00105     for(unsigned int hit = 0; finished != hit; ++hit) {
00106       if (0 == highGain && !channelToUse.isHighGainAdc(hit)) {
00107         m_returnedPeaks->push_back(new PerUintValue(channelToUse.peakCycle(hit)));
00108       } else if (1 == highGain && channelToUse.isHighGainAdc(hit)) {
00109         m_returnedPeaks->push_back(new PerUintValue(channelToUse.peakCycle(hit)));
00110       }
00111     }
00112   }
00113   return *m_returnedPeaks;
00114 }
00115 
00116 const PerDaqPmtCrate::AdcValues& PerDaqPmtCrate::adcs(int board, int chan, int highGain) const {
00117   if (0 != m_returnedAdcs) {
00118     delete m_returnedAdcs;
00119   }
00120   m_returnedAdcs = new std::vector<const PerUintValue*>();
00121 
00122   const DaqPmtChannel& channelToUse = channel(FeeChannelId(board, chan, (Site::Site_t)0, (DetectorId::DetectorId_t)0));
00123   if (0 != &channelToUse) {
00124     const unsigned int finished = channelToUse.hitCount();
00125     for(unsigned int hit = 0; finished != hit; ++hit) {
00126       if (0 == highGain && !channelToUse.isHighGainAdc(hit)) {
00127         m_returnedAdcs->push_back(new PerUintValue(channelToUse.adc(hit)));
00128       } else if (1 == highGain && channelToUse.isHighGainAdc(hit)) {
00129         m_returnedAdcs->push_back(new PerUintValue(channelToUse.adc(hit)));
00130       }
00131     }
00132   }
00133   return *m_returnedAdcs;
00134 }
00135 
00136 const PerDaqPmtCrate::PreAdcValues& PerDaqPmtCrate::preAdcRaws(int board, int chan, int highGain) const {
00137   if (0 != m_returnedPreAdcs) {
00138     delete m_returnedPreAdcs;
00139   }
00140   m_returnedPreAdcs = new std::vector<const PerUintValue*>();
00141 
00142   const DaqPmtChannel& channelToUse = channel(FeeChannelId(board, chan, (Site::Site_t)0, (DetectorId::DetectorId_t)0));
00143   if (0 != &channelToUse) {
00144     const unsigned int finished = channelToUse.hitCount();
00145     for(unsigned int hit = 0; finished != hit; ++hit) {
00146       if (0 == highGain && !channelToUse.isHighGainAdc(hit)) {
00147         m_returnedPreAdcs->push_back(new PerUintValue(channelToUse.preAdcRaw(hit)));
00148       } else if (1 == highGain && channelToUse.isHighGainAdc(hit)) {
00149         m_returnedPreAdcs->push_back(new PerUintValue(channelToUse.preAdcRaw(hit)));
00150       }
00151     }
00152   }
00153   return *m_returnedPreAdcs;
00154 }
00155 
00156 const PerDaqPmtCrate::GainValues& PerDaqPmtCrate::gains(int board, int chan) const {
00157   if (0 != m_returnedGains) {
00158     delete m_returnedGains;
00159   }
00160   m_returnedGains = new std::vector<const PerUintValue*>();
00161 
00162   const DaqPmtChannel& channelToUse = channel(FeeChannelId(board, chan, (Site::Site_t)0, (DetectorId::DetectorId_t)0));
00163   if (0 != &channelToUse) {
00164     const unsigned int finished = channelToUse.hitCount();
00165     for(unsigned int hit = 0; finished != hit; ++hit) {
00166       if (!channelToUse.isHighGainAdc(hit)) {
00167         m_returnedGains->push_back(new PerUintValue(0));
00168       } else {
00169         m_returnedGains->push_back(new PerUintValue(1));
00170       }
00171     }
00172   }
00173   return *m_returnedGains;
00174 }
00175 
00176 const PerDaqPmtCrate::TdcValues& PerDaqPmtCrate::tdcs(int board, int chan, int highGain) const {
00177   if (0 != m_returnedTdcs) {
00178     delete m_returnedTdcs;
00179   }
00180   m_returnedTdcs = new std::vector<const PerUintValue*>();
00181 
00182   const DaqPmtChannel& channelToUse = channel(FeeChannelId(board, chan, (Site::Site_t)0, (DetectorId::DetectorId_t)0));
00183   if (0 != &channelToUse) {
00184     const unsigned int finished = channelToUse.hitCount();
00185     for(unsigned int hit = 0; finished != hit; ++hit) {
00186       if (0 == highGain && !channelToUse.isHighGainAdc(hit)) {
00187         m_returnedTdcs->push_back(new PerUintValue(channelToUse.tdc(hit)));
00188       } else if (1 == highGain && channelToUse.isHighGainAdc(hit)) {
00189         m_returnedTdcs->push_back(new PerUintValue(channelToUse.tdc(hit)));
00190       }
00191     }
00192   }
00193   return *m_returnedTdcs;
00194 }
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 20:30:32 2011 for PerReadoutEvent by doxygen 1.4.7