Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
#include "EventFilter/CSCRawToDigi/interface/CSCALCTHeader2007.h"
#include "EventFilter/CSCRawToDigi/interface/CSCDMBHeader.h"

CSCALCT::CSCALCT() {
  bzero(this, 2);  ///size of ALCT = 2bytes
}

CSCALCT::CSCALCT(const CSCALCTDigi& alctDigi)
    : valid(alctDigi.isValid()),
      quality(alctDigi.getQuality()),
      accel(alctDigi.getAccelerator()),
      pattern(alctDigi.getCollisionB()),
      keyWire(alctDigi.getKeyWG()),
      reserved(0) {}

#include <iostream>
CSCALCTHeader2007::CSCALCTHeader2007() {
  bzero(this, sizeInWords() * 2);  ///size of 2007 header w/o variable parts = 16 bytes
  flag1 = 0xDB0A;
  reserved1 = reserved2 = reserved3 = 0xD;
  rawBins = 16;
  lctBins = 8;
}

CSCALCTHeader2007::CSCALCTHeader2007(int chamberType) {
  bzero(this, sizeInWords() * 2);  ///size of 2007 header w/o variable parts = 16 bytes
  // things that depend on chamber type
  int boardTypes[11] = {0, 2, 2, 3, 1, 6, 3, 5, 3, 5, 3};
  flag1 = 0xDB0A;
  reserved1 = reserved2 = reserved3 = 0xD;
  boardType = boardTypes[chamberType];
  //FIXME how do BXes work?  Dump other raw data
  // shows rawBins=16lctBins=8 or rawbins=0, lctBins=1
  rawBins = 16;
  lctBins = 8;
}

void CSCALCTHeader2007::setEventInformation(const CSCDMBHeader& dmb) {
  l1aCounter = dmb.l1a24() & 0xFFF;
  bxnCount = dmb.bxn12();
}