RawQieCalibrationDataBlock Class Reference

#include <RawQieCalibrationDataBlock.h>

Inheritance diagram for RawQieCalibrationDataBlock:
RawDataBlock

List of all members.

Public Member Functions

 RawQieCalibrationDataBlock ()
 RawQieCalibrationDataBlock (const Int_t *block)
virtual ~RawQieCalibrationDataBlock ()
Int_t GetRun () const
Short_t GetSubRun () const
Short_t GetRunType () const
Detector::Detector_t GetDetector () const
ElecType::Elec_t GetElecType () const
Bool_t GetPedMode () const
Bool_t GetSparsMode () const
Bool_t GetCommonMode () const
UShort_t GetCrate () const
Int_t GetCrateIdInfo () const
UInt_t GetNumCalPoints () const
const Int_t * GetDacValues () const
Int_t GetDacValue (UInt_t indx) const
UInt_t GetNumLocations () const
UInt_t GetLocation (UInt_t indx) const
UInt_t GetNumPoints (UInt_t loc) const
UInt_t GetNumEntries (UInt_t loc, UInt_t ipt) const
Int_t GetRange (UInt_t loc, UInt_t ipt) const
Double_t GetMean (UInt_t loc, UInt_t ipt) const
Double_t GetRms (UInt_t loc, UInt_t ipt) const
UInt_t GetSum (UInt_t loc, UInt_t ipt) const
UInt_t GetSumSqr (UInt_t loc, UInt_t ipt) const
virtual std::ostream & FormatToOStream (std::ostream &os, Option_t *option="") const
 RawQieCalibrationDataBlock (const RawQieCalibrationDataBlock &rhs)
RawQieCalibrationDataBlockoperator= (const RawQieCalibrationDataBlock &rhs)

Static Public Member Functions

static void SetDebugFlags (const UInt_t dbgflgs)
static UInt_t GetDebugFlags ()

Protected Member Functions

void FillCrateId () const
UInt_t FillLocStart () const
const Int_t * StartOfLocPoint (UInt_t loc, UInt_t ipt) const

Protected Attributes

std::vector< UInt_t > fLocation
std::map< UInt_t, const Int_t * > fLocStart
 list of locations
RawChannelId fCrateId
 where sub-block starts

Static Private Attributes

static UInt_t fgDebugFlags = 0
 unpacked crateinfo

Detailed Description

Definition at line 22 of file RawQieCalibrationDataBlock.h.


Constructor & Destructor Documentation

RawQieCalibrationDataBlock::RawQieCalibrationDataBlock (  ) 

Definition at line 54 of file RawQieCalibrationDataBlock.cxx.

00055   : RawDataBlock()
00056 {
00057    // Default constructor
00058 }

RawQieCalibrationDataBlock::RawQieCalibrationDataBlock ( const Int_t *  block  ) 

Definition at line 61 of file RawQieCalibrationDataBlock.cxx.

00062    : RawDataBlock(block)
00063 {
00064    //  stored block format is:
00065    //---------------------
00066    //      version 0             version 1
00067    //  0   # words in block      # words in block     
00068    //  1   checksum              checksum             
00069    //  2   Block Id              Block Id             
00070    //-----                                            
00071    //  3   run #                 run #                
00072    //  4   {subrun #| run type}  {subrun #| run type} 
00073    //  5   numCalPoints          crateid
00074    //  6     --n/a--             numCalPoints
00075    //  7     --n/a--             nlocations
00076   /*
00077    * The data then has the following format:
00078    *  unsigned long dacValue[numCalPoints]; -- values of the current injection
00079    *
00080    * then repeating data structure until all channels are completed:
00081    *           long unsigned int  location;  -- bit packed
00082    *           long               nPoints;
00083    * nPoints * struct  {  long             nEntries;
00084    *                      long              range;
00085    *                      long unsigned int sum;
00086    *                      long unsigned int sum_sqr;
00087    *                   }
00088    */
00089 
00090 }

RawQieCalibrationDataBlock::~RawQieCalibrationDataBlock (  )  [virtual]

Definition at line 93 of file RawQieCalibrationDataBlock.cxx.

00094 {
00095    // dtor
00096 }

RawQieCalibrationDataBlock::RawQieCalibrationDataBlock ( const RawQieCalibrationDataBlock rhs  )  [inline]

Definition at line 65 of file RawQieCalibrationDataBlock.h.

References fLocation, and fLocStart.

00066      : RawDataBlock(rhs), fCrateId() { fLocation.clear(); fLocStart.clear(); }


Member Function Documentation

void RawQieCalibrationDataBlock::FillCrateId (  )  const [protected]

Definition at line 305 of file RawQieCalibrationDataBlock.cxx.

References fCrateId, RawDataBlock::GetBlockId(), GetCrateIdInfo(), GetDetector(), RawDataBlock::GetMinorId(), RawChannelId::IsNull(), Msg::kWarning, MSG, and RawChannelId::SetDetector().

Referenced by FormatToOStream(), GetCommonMode(), GetCrate(), GetDetector(), GetElecType(), GetPedMode(), and GetSparsMode().

00306 {
00307    // unpack crate info
00308    if (!fCrateId.IsNull()) return;
00309    if (GetMinorId() <= 0) {
00310      fCrateId.SetDetector(GetBlockId().GetDetector());
00311      MSG("RawData",Msg::kWarning)
00312        << " No crate info for minor version " << GetMinorId() << endl;
00313      return;
00314    }
00315    fCrateId = RawChannelId(GetBlockId().GetDetector(),GetCrateIdInfo(),0x1fff);
00316 }

UInt_t RawQieCalibrationDataBlock::FillLocStart (  )  const [protected]

Definition at line 319 of file RawQieCalibrationDataBlock.cxx.

References fLocation, fLocStart, RawDataBlock::fRawBlock, RawDataBlock::fSize, RawDataBlock::GetMinorId(), GetNumCalPoints(), indx_daqvals, indx_daqvals_v0, Msg::kError, MSG, and qieCalibPointIntSize.

Referenced by GetLocation(), GetNumLocations(), GetNumPoints(), and StartOfLocPoint().

00320 {
00321    // calculate how many distinct locations are recorded
00322    // each might have a different number of points recorded
00323    // fill vector of pointers to start of each location's data
00324    // if already filled just return
00325 
00326    if (!fLocStart.empty()) return fLocStart.size();
00327 
00328    UInt_t ncalpts = GetNumCalPoints();
00329    int indx_daqvals_v = indx_daqvals;
00330    if (GetMinorId() <= 0) indx_daqvals_v = indx_daqvals_v0;
00331    const Int_t *ptr = 
00332          fRawBlock + indx_daqvals_v + ncalpts; // start of packed data
00333    const Int_t *end = fRawBlock + fSize;       // one beyond end
00334 
00335    while ( ptr < end ) {
00336      Int_t loc  = *ptr;
00337      Int_t npts = *(ptr+1);
00338      // bitch wildly if already an entry for this "location"
00339      if (fLocStart[loc]) 
00340        MSG("RawData",Msg::kError)
00341          << " Already have an sub-block unit for 'location' 0x"
00342          << hex << setfill('0') << setw(8) << loc 
00343          << setfill(' ') << dec << endl
00344          << " at offset 0x" 
00345          << hex << setfill('0') << setw(8) << (fLocStart[loc]-fRawBlock) 
00346          << setfill(' ') << dec
00347          << " found again at 0x" 
00348          << hex << setfill('0') << setw(8) << (ptr-fRawBlock) 
00349          << setfill(' ') << dec
00350          << endl;
00351      fLocation.push_back(loc);
00352      fLocStart[loc] = ptr;
00353      // skip loc+npts + npts*(entries,range,s,s2)
00354      Int_t skip = 2 + npts*qieCalibPointIntSize;  
00355      ptr += skip;
00356    }
00357 
00358    if ( ptr != end ) 
00359      MSG("RawData",Msg::kError) << endl
00360        << "FillLocStart() unpacking did not end evenly at block boundary" 
00361        << endl;
00362    
00363    return fLocStart.size();
00364 }

std::ostream & RawQieCalibrationDataBlock::FormatToOStream ( std::ostream &  os,
Option_t *  option = "" 
) const [virtual]

Reimplemented from RawDataBlock.

Definition at line 396 of file RawQieCalibrationDataBlock.cxx.

References RawChannelId::AsString(), fCrateId, FillCrateId(), GetDacValues(), GetLocation(), GetMean(), RawDataBlock::GetMinorId(), GetNumCalPoints(), GetNumEntries(), GetNumLocations(), GetNumPoints(), GetRange(), GetRms(), GetRun(), GetRunType(), GetSubRun(), GetSum(), and GetSumSqr().

00398 {
00399 
00400    RawDataBlock::FormatToOStream(os,option);
00401    if (option[0] == 'X') return os;
00402    
00403    // additional block specific formatted output is done here
00404 
00405    os << " Run " << GetRun() << " SubRun " << GetSubRun()
00406       << " RunType " << GetRunType() << endl;
00407    if (GetMinorId()>0) {
00408      FillCrateId();
00409      os << " CrateId " << fCrateId.AsString("C") << ", ";
00410    }
00411    UInt_t ndacv = GetNumCalPoints();
00412    const Int_t* dacv = GetDacValues();
00413    os << " " << ndacv << " Dac Values" << endl;
00414    for (UInt_t idacv = 0; idacv < ndacv; ++idacv) {
00415      os << "   [" << setw(3) << idacv << "] " 
00416         << setw(5) << dacv[idacv];
00417      if (idacv%4==3) os << endl;
00418    }
00419    if ((ndacv-1)%4!=3) os << endl;
00420 
00421    UInt_t nloc = GetNumLocations();
00422    os << " " << nloc << " 'locations' "<< endl;
00423 
00424    // xx'location' 
00425    // xxxx[123] range      entries    mean        RMS
00426    //   0x12345678 has ?? points
00427    //     [123] 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890
00428    os << "            range  entries         mean          RMS        Sum       SumSqr" << endl;
00429    for (UInt_t indx = 0; indx < nloc; ++indx) {
00430      UInt_t loc = GetLocation(indx);
00431      UInt_t npt = GetNumPoints(loc);
00432      os << "  location 0x" 
00433         << hex << setfill('0') << setw(8) << loc << setfill(' ') << dec
00434         << " ( index = " << setw(3) << indx << " )"
00435         << " has " << npt << " points" << endl;
00436      for (UInt_t ipt = 0; ipt < npt; ++ipt) {
00437        os << "   [" << setw(3) << ipt << "] "
00438           << setw(8)  << GetRange(loc,ipt) << " "
00439           << setw(8)  << GetNumEntries(loc,ipt) << " "
00440           << setw(12) << GetMean(loc,ipt) << " "
00441           << setw(12) << GetRms(loc,ipt) << " "
00442           << setw(10) << GetSum(loc,ipt) << " "
00443           << setw(12) << GetSumSqr(loc,ipt)
00444           << endl;
00445      }
00446    }
00447    return os;
00448 }

Bool_t RawQieCalibrationDataBlock::GetCommonMode (  )  const [inline]

Definition at line 108 of file RawQieCalibrationDataBlock.h.

References fCrateId, FillCrateId(), and RawChannelId::GetCommonMode().

00109 { FillCrateId(); return fCrateId.GetCommonMode(); }

UShort_t RawQieCalibrationDataBlock::GetCrate (  )  const [inline]

Definition at line 111 of file RawQieCalibrationDataBlock.h.

References fCrateId, FillCrateId(), and RawChannelId::GetCrate().

00112 { FillCrateId(); return fCrateId.GetCrate(); }

Int_t RawQieCalibrationDataBlock::GetCrateIdInfo (  )  const

Definition at line 138 of file RawQieCalibrationDataBlock.cxx.

References RawDataBlock::fRawBlock, RawDataBlock::fSize, RawDataBlock::GetMinorId(), and indx_crateid.

Referenced by FillCrateId().

00139 {
00140    // get the crate id word
00141    if (GetMinorId() <= 0) return -1; //didn't exist in this version
00142    if (fSize > indx_crateid) return fRawBlock[indx_crateid];
00143    return -1;
00144 }

Int_t RawQieCalibrationDataBlock::GetDacValue ( UInt_t  indx  )  const

Definition at line 166 of file RawQieCalibrationDataBlock.cxx.

References RawDataBlock::fRawBlock, RawDataBlock::fSize, RawDataBlock::GetMinorId(), GetNumCalPoints(), indx_daqvals, indx_daqvals_v0, Msg::kError, and MSG.

00167 {
00168    // get a daq value point
00169    UInt_t ncalpts = GetNumCalPoints();
00170    if (indx >= ncalpts) { // zero based indexing
00171      MSG("RawData",Msg::kError)
00172        << "indx " << indx << " out of range: there are only "
00173        << ncalpts << " dac values " << endl;
00174      return 0;
00175    }
00176    int indx_daqvals_v = indx_daqvals;
00177    if (GetMinorId() <= 0) indx_daqvals_v = indx_daqvals_v0;
00178    if ((unsigned long)fSize > indx_daqvals_v+indx) 
00179      return (Int_t)fRawBlock[indx_daqvals_v+indx];
00180    return 0;
00181 }

const Int_t * RawQieCalibrationDataBlock::GetDacValues (  )  const

Definition at line 156 of file RawQieCalibrationDataBlock.cxx.

References RawDataBlock::fRawBlock, RawDataBlock::fSize, RawDataBlock::GetMinorId(), indx_daqvals, and indx_daqvals_v0.

Referenced by FormatToOStream().

00157 {
00158    // get the number of calibration points
00159    int indx_daqvals_v = indx_daqvals;
00160    if (GetMinorId() <= 0) indx_daqvals_v = indx_daqvals_v0;
00161    if (fSize > indx_daqvals_v) return (const Int_t*)(fRawBlock+indx_daqvals_v);
00162    return 0;
00163 }

static UInt_t RawQieCalibrationDataBlock::GetDebugFlags (  )  [inline, static]

Definition at line 62 of file RawQieCalibrationDataBlock.h.

References fgDebugFlags.

00062 { return fgDebugFlags; }

Detector::Detector_t RawQieCalibrationDataBlock::GetDetector (  )  const [inline]

Definition at line 96 of file RawQieCalibrationDataBlock.h.

References fCrateId, FillCrateId(), and RawChannelId::GetDetector().

Referenced by FillCrateId().

00097 { FillCrateId(); return fCrateId.GetDetector(); }

ElecType::Elec_t RawQieCalibrationDataBlock::GetElecType (  )  const [inline]

Definition at line 99 of file RawQieCalibrationDataBlock.h.

References fCrateId, FillCrateId(), and RawChannelId::GetElecType().

00100 { FillCrateId(); return fCrateId.GetElecType(); }

UInt_t RawQieCalibrationDataBlock::GetLocation ( UInt_t  indx  )  const

Definition at line 204 of file RawQieCalibrationDataBlock.cxx.

References FillLocStart(), fLocation, Msg::kError, and MSG.

Referenced by FormatToOStream().

00205 {
00206    // report "location" associated with sub-block index by "indx"
00207 
00208    UInt_t nloc = FillLocStart();
00209    if ( indx >= nloc) { // zero based indexing
00210      MSG("RawData",Msg::kError)
00211        << "indx " << indx << " out of range: there are only "
00212        << nloc << " entries" << endl;
00213      return illegalLocation;
00214    }
00215    return fLocation[indx];
00216 }

Double_t RawQieCalibrationDataBlock::GetMean ( UInt_t  loc,
UInt_t  ipt 
) const

Definition at line 252 of file RawQieCalibrationDataBlock.cxx.

References QieCalibPoint::nEntries, StartOfLocPoint(), and QieCalibPoint::sum.

Referenced by FormatToOStream().

00253 {
00254    // the "range" that the sub-sub-block corresponds to
00255    // "location" and point # "ipt"
00256 
00257    const QieCalibPoint* ptr = (const QieCalibPoint*)StartOfLocPoint(loc,ipt);
00258    if (!ptr) return 0;
00259    if (!ptr->nEntries) return 0; // don't divide by zero
00260    return (Double_t)ptr->sum/(Double_t)ptr->nEntries;
00261 }

UInt_t RawQieCalibrationDataBlock::GetNumCalPoints (  )  const

Definition at line 146 of file RawQieCalibrationDataBlock.cxx.

References RawDataBlock::fRawBlock, RawDataBlock::fSize, RawDataBlock::GetMinorId(), indx_ncalpts, and indx_ncalpts_v0.

Referenced by FillLocStart(), FormatToOStream(), and GetDacValue().

00147 {
00148    // get the number of calibration points
00149    int indx_ncalpts_v = indx_ncalpts;
00150    if (GetMinorId() <= 0) indx_ncalpts_v = indx_ncalpts_v0;
00151    if (fSize > indx_ncalpts_v) return fRawBlock[indx_ncalpts_v];
00152    return 0;
00153 }

UInt_t RawQieCalibrationDataBlock::GetNumEntries ( UInt_t  loc,
UInt_t  ipt 
) const

Definition at line 230 of file RawQieCalibrationDataBlock.cxx.

References QieCalibPoint::nEntries, and StartOfLocPoint().

Referenced by FormatToOStream().

00231 {
00232    // the number of entries that went into the sub-sub-block
00233    // related to "location" and point # "ipt"
00234 
00235    const QieCalibPoint* ptr = (const QieCalibPoint*)StartOfLocPoint(loc,ipt);
00236    if (!ptr) return 0;
00237    return ptr->nEntries;
00238 }

UInt_t RawQieCalibrationDataBlock::GetNumLocations (  )  const

Definition at line 184 of file RawQieCalibrationDataBlock.cxx.

References FillLocStart(), RawDataBlock::fRawBlock, RawDataBlock::GetMinorId(), indx_nloc, Msg::kError, and MSG.

Referenced by FormatToOStream().

00185 {
00186    // calculate how many distinct locations are recorded
00187    // each might have a different number of points recorded
00188 
00189    UInt_t minor = GetMinorId();
00190    UInt_t nloc_unpacked = FillLocStart();
00191    if (minor > 0) {
00192      UInt_t nloc_stored = fRawBlock[indx_nloc];
00193      if (nloc_stored != nloc_unpacked)
00194        MSG("RawData",Msg::kError)
00195          << " Unpacking found " << nloc_unpacked
00196          << " 'location', while data claims " << nloc_stored 
00197          << " were stored" << endl;
00198    }
00199    return nloc_unpacked;
00200 
00201 }

UInt_t RawQieCalibrationDataBlock::GetNumPoints ( UInt_t  loc  )  const

Definition at line 219 of file RawQieCalibrationDataBlock.cxx.

References FillLocStart(), and fLocStart.

Referenced by FormatToOStream().

00220 {
00221 
00222    // treat each sub-block as indexed by "location"
00223 
00224    FillLocStart();
00225    const Int_t* ptr = fLocStart[loc];  // this is "location"
00226    return *(ptr+1);                    // this is "nPoints"
00227 }

Bool_t RawQieCalibrationDataBlock::GetPedMode (  )  const [inline]

Definition at line 102 of file RawQieCalibrationDataBlock.h.

References fCrateId, FillCrateId(), and RawChannelId::GetPedMode().

00103 { FillCrateId(); return fCrateId.GetPedMode(); }

Int_t RawQieCalibrationDataBlock::GetRange ( UInt_t  loc,
UInt_t  ipt 
) const

Definition at line 241 of file RawQieCalibrationDataBlock.cxx.

References QieCalibPoint::range, and StartOfLocPoint().

Referenced by FormatToOStream().

00242 {
00243    // the "range" that the sub-sub-block corresponds to
00244    // "location" and point # "ipt"
00245 
00246    const QieCalibPoint* ptr = (const QieCalibPoint*)StartOfLocPoint(loc,ipt);
00247    if (!ptr) return 0;
00248    return ptr->range;
00249 }

Double_t RawQieCalibrationDataBlock::GetRms ( UInt_t  loc,
UInt_t  ipt 
) const

Definition at line 264 of file RawQieCalibrationDataBlock.cxx.

References n, QieCalibPoint::nEntries, StartOfLocPoint(), QieCalibPoint::sum, and QieCalibPoint::sum_sqr.

Referenced by FormatToOStream().

00265 {
00266    // the RMS that the sub-sub-block corresponds to
00267    // "location" and point # "ipt"
00268 
00269    const QieCalibPoint* ptr = (const QieCalibPoint*)StartOfLocPoint(loc,ipt);
00270    if (!ptr) return 0;
00271    if (!ptr->nEntries) return 0; // don't divide by zero
00272    Double_t n     = (Double_t)ptr->nEntries; 
00273    Double_t sumx  = (Double_t)ptr->sum;
00274    Double_t sumx2 = (Double_t)ptr->sum_sqr;
00275    Double_t mean  = sumx/n;
00276    return TMath::Sqrt(sumx2/n - mean*mean);
00277 
00278 }

Int_t RawQieCalibrationDataBlock::GetRun ( void   )  const

Definition at line 114 of file RawQieCalibrationDataBlock.cxx.

References RawDataBlock::fRawBlock, RawDataBlock::fSize, and indx_run.

Referenced by FormatToOStream().

00115 {
00116    // get the run number
00117    if (fSize > indx_run) return fRawBlock[indx_run];
00118    return -1;
00119 }

Short_t RawQieCalibrationDataBlock::GetRunType (  )  const

Definition at line 130 of file RawQieCalibrationDataBlock.cxx.

References RawDataBlock::fRawBlock, RawDataBlock::fSize, and indx_runtype.

Referenced by FormatToOStream().

00131 {
00132    // get the run type
00133    if (fSize > indx_runtype) return fRawBlock[indx_runtype]&0xffff;
00134    return -1;
00135 }

Bool_t RawQieCalibrationDataBlock::GetSparsMode (  )  const [inline]

Definition at line 105 of file RawQieCalibrationDataBlock.h.

References fCrateId, FillCrateId(), and RawChannelId::GetSparsMode().

00106 { FillCrateId(); return fCrateId.GetSparsMode(); }

Short_t RawQieCalibrationDataBlock::GetSubRun (  )  const

Definition at line 122 of file RawQieCalibrationDataBlock.cxx.

References RawDataBlock::fRawBlock, RawDataBlock::fSize, and indx_subrun.

Referenced by FormatToOStream().

00123 {
00124    // get the subrun number
00125    if (fSize > indx_subrun) return (fRawBlock[indx_subrun]>>16)&0xffff;
00126    return -1;
00127 }

UInt_t RawQieCalibrationDataBlock::GetSum ( UInt_t  loc,
UInt_t  ipt 
) const

Definition at line 281 of file RawQieCalibrationDataBlock.cxx.

References StartOfLocPoint(), and QieCalibPoint::sum.

Referenced by FormatToOStream().

00282 {
00283    // the sum that the sub-sub-block corresponds to
00284    // "location" and point # "ipt"
00285 
00286    const QieCalibPoint* ptr = (const QieCalibPoint*)StartOfLocPoint(loc,ipt);
00287    if (!ptr) return 0;
00288    return ptr->sum;
00289 
00290 }

UInt_t RawQieCalibrationDataBlock::GetSumSqr ( UInt_t  loc,
UInt_t  ipt 
) const

Definition at line 293 of file RawQieCalibrationDataBlock.cxx.

References StartOfLocPoint(), and QieCalibPoint::sum_sqr.

Referenced by FormatToOStream().

00294 {
00295    // the sum^2 that the sub-sub-block corresponds to
00296    // "location" and point # "ipt"
00297 
00298    const QieCalibPoint* ptr = (const QieCalibPoint*)StartOfLocPoint(loc,ipt);
00299    if (!ptr) return 0;
00300    return ptr->sum_sqr;
00301 
00302 }

RawQieCalibrationDataBlock & RawQieCalibrationDataBlock::operator= ( const RawQieCalibrationDataBlock rhs  ) 

Reimplemented from RawDataBlock.

Definition at line 100 of file RawQieCalibrationDataBlock.cxx.

References fCrateId, fLocation, and fLocStart.

00101 {
00102    // deep copy assignment 
00103    if (this != &rhs) {
00104      RawDataBlock::operator=(rhs);
00105      fCrateId = rhs.fCrateId;
00106      // clear these to allow them to be re-filled
00107      fLocation.clear();
00108      fLocStart.clear();
00109    }
00110    return *this;
00111 }

static void RawQieCalibrationDataBlock::SetDebugFlags ( const UInt_t  dbgflgs  )  [inline, static]

Definition at line 61 of file RawQieCalibrationDataBlock.h.

References fgDebugFlags.

00061 {fgDebugFlags=dbgflgs;}

const Int_t * RawQieCalibrationDataBlock::StartOfLocPoint ( UInt_t  loc,
UInt_t  ipt 
) const [protected]

Definition at line 367 of file RawQieCalibrationDataBlock.cxx.

References FillLocStart(), fLocStart, Msg::kError, MSG, and qieCalibPointIntSize.

Referenced by GetMean(), GetNumEntries(), GetRange(), GetRms(), GetSum(), and GetSumSqr().

00368 {
00369 
00370    // treat each sub-block as indexed by "location"
00371    // sub-sub-structures are indexed by "iptr" and offset by fixed amounts
00372 
00373    FillLocStart();  // make sure we've scanned to find each sub-block
00374    const Int_t* ptr = fLocStart[loc];
00375    if (!ptr) {
00376      MSG("RawData",Msg::kError)
00377        << " No entry for 'location' 0x" 
00378        << hex << setfill(' ') << setw(8) << loc 
00379        << setfill(' ') << dec << endl;
00380      return 0;
00381    }
00382    UInt_t npts = *(ptr+1); // this is "nPoints";
00383    if ( ipt >= npts ) { // zero based indexing
00384      MSG("RawData",Msg::kError)
00385        << "ipt " << ipt << " for 'location' 0x" 
00386        << hex << setfill(' ') << setw(8) << loc << setfill(' ') << dec
00387        << " that has only " << npts << " points" << endl;
00388      return 0;
00389    }
00390    // 2 skips loc+npoints, each struct is 4 long 
00391    ptr += (2 + ipt*qieCalibPointIntSize); 
00392    return ptr;
00393 }


Member Data Documentation

UInt_t RawQieCalibrationDataBlock::fgDebugFlags = 0 [static, private]

unpacked crateinfo

Definition at line 91 of file RawQieCalibrationDataBlock.h.

Referenced by GetDebugFlags(), and SetDebugFlags().

std::vector<UInt_t> RawQieCalibrationDataBlock::fLocation [mutable, protected]
std::map<UInt_t,const Int_t*> RawQieCalibrationDataBlock::fLocStart [mutable, protected]

list of locations

Definition at line 84 of file RawQieCalibrationDataBlock.h.

Referenced by FillLocStart(), GetNumPoints(), operator=(), RawQieCalibrationDataBlock(), and StartOfLocPoint().


The documentation for this class was generated from the following files:

Generated on 22 Nov 2017 for loon by  doxygen 1.6.1