CMS 3D CMS Logo

Public Types | Public Member Functions | Static Public Attributes | Private Attributes

HBHEDataFrame Class Reference

#include <HBHEDataFrame.h>

List of all members.

Public Types

typedef HcalDetId key_type
 For the sorted collection.

Public Member Functions

const HcalElectronicsIdelecId () const
int fiberIdleOffset () const
 offset of bunch number for this channel relative to nominal set in the unpacker (range is +7->-7. -1000 indicates the data is invalid/unavailable)
 HBHEDataFrame ()
 HBHEDataFrame (const HcalDetId &id)
const HcalDetIdid () const
const HcalQIESampleoperator[] (int i) const
 access a sample
int presamples () const
 number of samples before the sample from the triggered beam crossing (according to the hardware)
const HcalQIESamplesample (int i) const
 access a sample
void setFiberIdleOffset (int offset)
void setPresamples (int ps)
void setReadoutIds (const HcalElectronicsId &eid)
void setSample (int i, const HcalQIESample &sam)
void setSize (int size)
void setZSInfo (bool unsuppressed, bool markAndPass, uint32_t crossingMask=0)
int size () const
 total number of samples in the digi
bool validate (int firstSample=0, int nSamples=100) const
 validate appropriate DV and ER bits as well as capid rotation for the specified samples (default is all)
uint32_t zsCrossingMask () const
 zs crossing mask (which sums considered)
bool zsMarkAndPass () const
 was ZS MarkAndPass?
bool zsUnsuppressed () const
 was ZS unsuppressed?

Static Public Attributes

static const int MAXSAMPLES = 10

Private Attributes

HcalQIESample data_ [MAXSAMPLES]
HcalElectronicsId electronicsId_
int hcalPresamples_
HcalDetId id_
int size_

Detailed Description

Precision readout digi for HB and HE.

Definition at line 15 of file HBHEDataFrame.h.


Member Typedef Documentation

For the sorted collection.

Definition at line 17 of file HBHEDataFrame.h.


Constructor & Destructor Documentation

HBHEDataFrame::HBHEDataFrame ( )

Definition at line 4 of file HBHEDataFrame.cc.

                             : id_(0), 
                                 size_(0),
                                 hcalPresamples_(0)
{
}
HBHEDataFrame::HBHEDataFrame ( const HcalDetId id) [explicit]

Definition at line 10 of file HBHEDataFrame.cc.

                                                : 
  id_(id), 
  size_(0),
  hcalPresamples_(0)
{
  // TODO : test id for HcalBarrel or HcalEndcap
}

Member Function Documentation

const HcalElectronicsId& HBHEDataFrame::elecId ( ) const [inline]

Definition at line 23 of file HBHEDataFrame.h.

References electronicsId_.

{ return electronicsId_; }
int HBHEDataFrame::fiberIdleOffset ( ) const

offset of bunch number for this channel relative to nominal set in the unpacker (range is +7->-7. -1000 indicates the data is invalid/unavailable)

Definition at line 49 of file HBHEDataFrame.cc.

References hcalPresamples_.

Referenced by operator<<().

                                         {
  int val=(hcalPresamples_&0xF00)>>8;
  return (val==0)?(-1000):(((val&0x8)==0)?(-(val&0x7)):(val&0x7));
}
const HcalDetId& HBHEDataFrame::id ( void  ) const [inline]
const HcalQIESample& HBHEDataFrame::operator[] ( int  i) const [inline]

access a sample

Definition at line 37 of file HBHEDataFrame.h.

References data_, and i.

{ return data_[i]; }
int HBHEDataFrame::presamples ( ) const [inline]

number of samples before the sample from the triggered beam crossing (according to the hardware)

Definition at line 28 of file HBHEDataFrame.h.

References hcalPresamples_.

Referenced by HcalNominalCoder::adc2fC(), HcalTriggerPrimitiveAlgo::addSignal(), and operator<<().

{ return hcalPresamples_&0xF; }
const HcalQIESample& HBHEDataFrame::sample ( int  i) const [inline]
void HBHEDataFrame::setFiberIdleOffset ( int  offset)

Definition at line 54 of file HBHEDataFrame.cc.

References hcalPresamples_, and evf::evtn::offset().

                                                 {
  hcalPresamples_&=0x7FFFF0FF;
  if (offset>=7) hcalPresamples_|=0xF00;
  else if (offset>=0) hcalPresamples_|=(0x800)|(offset<<8);
  else if (offset>=-7) hcalPresamples_|=((-offset)<<8);
  else hcalPresamples_|=0x700;
}
void HBHEDataFrame::setPresamples ( int  ps)

Definition at line 23 of file HBHEDataFrame.cc.

References hcalPresamples_.

                                        {
  hcalPresamples_|=ps&0xF;
}
void HBHEDataFrame::setReadoutIds ( const HcalElectronicsId eid)

Definition at line 26 of file HBHEDataFrame.cc.

References electronicsId_.

                                                              {
  electronicsId_=eid;
}
void HBHEDataFrame::setSample ( int  i,
const HcalQIESample sam 
) [inline]

Definition at line 50 of file HBHEDataFrame.h.

References data_, and i.

Referenced by HcalRecHitsMaker::loadHcalRecHits(), and HcaluLUTTPGCoder::update().

{ data_[i]=sam; }
void HBHEDataFrame::setSize ( int  size)

Definition at line 18 of file HBHEDataFrame.cc.

References MAXSAMPLES, size(), and size_.

Referenced by HcalRecHitsMaker::loadHcalRecHits(), and HcaluLUTTPGCoder::update().

                                    {
  if (size>MAXSAMPLES) size_=MAXSAMPLES;
  else if (size<=0) size_=0;
  else size_=size;
}
void HBHEDataFrame::setZSInfo ( bool  unsuppressed,
bool  markAndPass,
uint32_t  crossingMask = 0 
)

Definition at line 42 of file HBHEDataFrame.cc.

References hcalPresamples_.

Referenced by HcalZeroSuppressionAlgo::suppress().

                                                                                        {
  hcalPresamples_&=0x7FC00F0F; // preserve actual presamples and fiber idle offset
  if (markAndPass) hcalPresamples_|=0x10;
  if (unsuppressed) hcalPresamples_|=0x20;
  hcalPresamples_|=(crossingMask&0x3FF)<<12; 
}
int HBHEDataFrame::size ( void  ) const [inline]
bool HBHEDataFrame::validate ( int  firstSample = 0,
int  nSamples = 100 
) const

validate appropriate DV and ER bits as well as capid rotation for the specified samples (default is all)

Definition at line 30 of file HBHEDataFrame.cc.

References HcalQIESample::capid(), data_, ExpressReco_HICollisions_FallBack::firstSample, i, convertSQLiteXML::ok, and size_.

                                                                {
  int capid=-1;
  bool ok=true;
  for (int i=0; ok && i<nSamples && i+firstSample<size_; i++) {
    if (data_[i+firstSample].er() || !data_[i+firstSample].dv()) ok=false;
    if (i==0) capid=data_[i+firstSample].capid();
    if (capid!=data_[i+firstSample].capid()) ok=false;
    capid=(capid+1)%4;
  }
  return ok;
}
uint32_t HBHEDataFrame::zsCrossingMask ( ) const [inline]

zs crossing mask (which sums considered)

Definition at line 34 of file HBHEDataFrame.h.

References hcalPresamples_.

Referenced by HcalZSAlgoRealistic::shouldKeep().

{ return (hcalPresamples_&0x3FF000)>>12; }
bool HBHEDataFrame::zsMarkAndPass ( ) const [inline]

was ZS MarkAndPass?

Definition at line 30 of file HBHEDataFrame.h.

References hcalPresamples_.

Referenced by reco::HcalNoiseInfoProducer::filldigis(), and operator<<().

{ return (hcalPresamples_&0x10); }
bool HBHEDataFrame::zsUnsuppressed ( ) const [inline]

was ZS unsuppressed?

Definition at line 32 of file HBHEDataFrame.h.

References hcalPresamples_.

Referenced by operator<<().

{ return (hcalPresamples_&0x20); }

Member Data Documentation

Definition at line 60 of file HBHEDataFrame.h.

Referenced by operator[](), sample(), setSample(), and validate().

Definition at line 57 of file HBHEDataFrame.h.

Referenced by elecId(), and setReadoutIds().

Definition at line 56 of file HBHEDataFrame.h.

Referenced by id().

const int HBHEDataFrame::MAXSAMPLES = 10 [static]

Definition at line 54 of file HBHEDataFrame.h.

Referenced by setSize().

int HBHEDataFrame::size_ [private]

Definition at line 58 of file HBHEDataFrame.h.

Referenced by setSize(), size(), and validate().