#include <RawQieCalibrationDataBlock.h>
Inheritance diagram for RawQieCalibrationDataBlock:

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) | |
| RawQieCalibrationDataBlock & | operator= (const RawQieCalibrationDataBlock &rhs) |
Static Public Member Functions | |
| void | SetDebugFlags (const UInt_t dbgflgs) |
| 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 | |
| UInt_t | fgDebugFlags = 0 |
| unpacked crateinfo | |
|
|
Definition at line 54 of file RawQieCalibrationDataBlock.cxx. 00055 : RawDataBlock() 00056 { 00057 // Default constructor 00058 }
|
|
|
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 }
|
|
|
Definition at line 93 of file RawQieCalibrationDataBlock.cxx. 00094 {
00095 // dtor
00096 }
|
|
|
Definition at line 65 of file RawQieCalibrationDataBlock.h. References fCrateId, fLocation, and fLocStart. 00066 : RawDataBlock(rhs), fCrateId() { fLocation.clear(); fLocStart.clear(); }
|
|
|
Definition at line 305 of file RawQieCalibrationDataBlock.cxx. References fCrateId, RawDataBlock::GetBlockId(), GetCrateIdInfo(), GetDetector(), RawDataBlock::GetMinorId(), RawChannelId::IsNull(), 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 }
|
|
|
Definition at line 319 of file RawQieCalibrationDataBlock.cxx. References fLocation, fLocStart, RawDataBlock::GetMinorId(), GetNumCalPoints(), and MSG. 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 }
|
|
||||||||||||
|
Reimplemented from RawDataBlock. Definition at line 396 of file RawQieCalibrationDataBlock.cxx. References RawChannelId::AsString(), fCrateId, FillCrateId(), RawDataBlock::FormatToOStream(), GetDacValues(), GetLocation(), GetMean(), RawDataBlock::GetMinorId(), GetNumCalPoints(), GetNumEntries(), GetNumLocations(), GetNumPoints(), GetRange(), GetRms(), GetRun(), GetRunType(), GetSubRun(), GetSum(), GetSumSqr(), and option. 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 }
|
|
|
Definition at line 108 of file RawQieCalibrationDataBlock.h. References fCrateId, FillCrateId(), and RawChannelId::GetCommonMode(). 00109 { FillCrateId(); return fCrateId.GetCommonMode(); }
|
|
|
Definition at line 111 of file RawQieCalibrationDataBlock.h. References fCrateId, FillCrateId(), and RawChannelId::GetCrate(). 00112 { FillCrateId(); return fCrateId.GetCrate(); }
|
|
|
Definition at line 138 of file RawQieCalibrationDataBlock.cxx. References RawDataBlock::GetMinorId(). 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 }
|
|
|
Definition at line 166 of file RawQieCalibrationDataBlock.cxx. References RawDataBlock::GetMinorId(), GetNumCalPoints(), 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 }
|
|
|
Definition at line 156 of file RawQieCalibrationDataBlock.cxx. References RawDataBlock::GetMinorId(). 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 }
|
|
|
Definition at line 62 of file RawQieCalibrationDataBlock.h. 00062 { return fgDebugFlags; }
|
|
|
Definition at line 96 of file RawQieCalibrationDataBlock.h. References fCrateId, FillCrateId(), and RawChannelId::GetDetector(). Referenced by FillCrateId(). 00097 { FillCrateId(); return fCrateId.GetDetector(); }
|
|
|
Definition at line 99 of file RawQieCalibrationDataBlock.h. References fCrateId, FillCrateId(), and RawChannelId::GetElecType(). 00100 { FillCrateId(); return fCrateId.GetElecType(); }
|
|
|
Definition at line 204 of file RawQieCalibrationDataBlock.cxx. References FillLocStart(), fLocation, 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 }
|
|
||||||||||||
|
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 }
|
|
|
Definition at line 146 of file RawQieCalibrationDataBlock.cxx. References RawDataBlock::GetMinorId(). 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 }
|
|
||||||||||||
|
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 }
|
|
|
Definition at line 184 of file RawQieCalibrationDataBlock.cxx. References FillLocStart(), RawDataBlock::GetMinorId(), 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 }
|
|
|
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 }
|
|
|
Definition at line 102 of file RawQieCalibrationDataBlock.h. References fCrateId, FillCrateId(), and RawChannelId::GetPedMode(). 00103 { FillCrateId(); return fCrateId.GetPedMode(); }
|
|
||||||||||||
|
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 }
|
|
||||||||||||
|
Definition at line 264 of file RawQieCalibrationDataBlock.cxx. References 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 }
|
|
|
Definition at line 114 of file RawQieCalibrationDataBlock.cxx. Referenced by FormatToOStream(). 00115 {
00116 // get the run number
00117 if (fSize > indx_run) return fRawBlock[indx_run];
00118 return -1;
00119 }
|
|
|
Definition at line 130 of file RawQieCalibrationDataBlock.cxx. Referenced by FormatToOStream(). 00131 {
00132 // get the run type
00133 if (fSize > indx_runtype) return fRawBlock[indx_runtype]&0xffff;
00134 return -1;
00135 }
|
|
|
Definition at line 105 of file RawQieCalibrationDataBlock.h. References fCrateId, FillCrateId(), and RawChannelId::GetSparsMode(). 00106 { FillCrateId(); return fCrateId.GetSparsMode(); }
|
|
|
Definition at line 122 of file RawQieCalibrationDataBlock.cxx. Referenced by FormatToOStream(). 00123 {
00124 // get the subrun number
00125 if (fSize > indx_subrun) return (fRawBlock[indx_subrun]>>16)&0xffff;
00126 return -1;
00127 }
|
|
||||||||||||
|
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 }
|
|
||||||||||||
|
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 }
|
|
|
Definition at line 100 of file RawQieCalibrationDataBlock.cxx. References fCrateId, fLocation, fLocStart, and RawDataBlock::operator=(). 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 }
|
|
|
Definition at line 61 of file RawQieCalibrationDataBlock.h. References fgDebugFlags. 00061 {fgDebugFlags=dbgflgs;}
|
|
||||||||||||
|
Definition at line 367 of file RawQieCalibrationDataBlock.cxx. References FillLocStart(), fLocStart, and MSG. 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 }
|
|
|
where sub-block starts
Definition at line 86 of file RawQieCalibrationDataBlock.h. Referenced by FillCrateId(), FormatToOStream(), GetCommonMode(), GetCrate(), GetDetector(), GetElecType(), GetPedMode(), GetSparsMode(), operator=(), and RawQieCalibrationDataBlock(). |
|
|
unpacked crateinfo
Definition at line 15 of file RawQieCalibrationDataBlock.cxx. Referenced by SetDebugFlags(). |
|
|
Definition at line 83 of file RawQieCalibrationDataBlock.h. Referenced by FillLocStart(), GetLocation(), operator=(), and RawQieCalibrationDataBlock(). |
|
|
list of locations
Definition at line 84 of file RawQieCalibrationDataBlock.h. Referenced by FillLocStart(), GetNumPoints(), operator=(), RawQieCalibrationDataBlock(), and StartOfLocPoint(). |
1.3.9.1