//_____________________________________________________________________________ // calibrated PES strips (Bruce Knuteson, knuteson@fnal.gov) // ---------------------------------------------------- // keep in mind that PES numbering scheme has a non-trivial feature // (see cdf-415, table 35): // side: west=0, east=1 // wedge: 0:7 // layer: 0:1 // strip: 1-200 (and this is really nice!) //_____________________________________________________________________________ #include ClassImp(TPesCorrectedDataBlock) //______________________________________________________________________________ void TPesCorrectedDataBlock::Streamer(TBuffer &R__b) { // Stream an object of class TPesCorrectedDataBlock. if (R__b.IsReading()) { Version_t R__v = R__b.ReadVersion(); if (R__v) { } if(R__v==1) { ReadV1(R__b); return; } R__b.ReadFastArray((Short_t*) fNStrips,2*8*2); for (int is=0; is<2; is++) { for (int iw=0; iw<8; iw++) { for (int il=0; il<2; il++) { if (fNStrips[is][iw][il] > 0) { R__b.ReadFastArray(fEPacked[is][iw][il],200); for (int i=0; i<200; i++) { fEnergy[is][iw][il][i] = 110.670*float(fEPacked[is][iw][il][i])/65535.0; } } } } } } else { R__b.WriteVersion(TPesCorrectedDataBlock::IsA()); R__b.WriteFastArray((Short_t*)fNStrips,2*8*2); for (int is=0; is<2; is++) { for (int iw=0; iw<8; iw++) { for (int il=0; il<2; il++) { if (fNStrips[is][iw][il] > 0) { for (int i=0; i<200; i++) { int ie = int(65535*(fEnergy[is][iw][il][i]/110.670)); if(ie>65535) ie = 65535; fEPacked[is][iw][il][i] = ie; } R__b.WriteFastArray((Short_t*)fEPacked[is][iw][il],200); } } } } } } //______________________________________________________________________________ void TPesCorrectedDataBlock::ReadV1(TBuffer &R__b) { R__b.ReadFastArray((Float_t*) fNStrips,2*8*2); for (int is=0; is<2; is++) { for (int iw=0; iw<8; iw++) { for (int il=0; il<2; il++) { if (fNStrips[is][iw][il] > 0) { R__b.ReadFastArray(fEnergy[is][iw][il],200); } } } } } //_____________________________________________________________________________ TPesCorrectedDataBlock::TPesCorrectedDataBlock() { } //_____________________________________________________________________________ TPesCorrectedDataBlock::~TPesCorrectedDataBlock() { } //_____________________________________________________________________________ void TPesCorrectedDataBlock::Clear(Option_t* opt) { memset(fNStrips ,0,2*8*2*sizeof(Short_t)); memset(fEnergy,0,2*8*2*200*sizeof(Float_t)); memset(fEPacked,0,2*8*2*200*sizeof(UShort_t)); } //_____________________________________________________________________________ void TPesCorrectedDataBlock::Print(Option_t* opt) const { for (int side=0; side<2; side++) { for (int iw=0; iw<8; iw++) { printf(" side, wedge, ns[0], ns[1]: %3i %3i %3i %3i \n", side, iw, fNStrips[side][iw][0],fNStrips[side][iw][1]); } } }