CMS 3D CMS Logo

Public Member Functions | Static Public Attributes | Private Attributes

CaloSamples Class Reference

#include <CaloSamples.h>

List of all members.

Public Member Functions

 CaloSamples ()
 CaloSamples (const DetId &id, int size)
 CaloSamples (const DetId &id, int size, int preciseSize)
DetId id () const
 get the (generic) id
bool isBlank () const
CaloSamplesoffsetTime (double offset)
 shift all the samples by a time, in ns, interpolating
CaloSamplesoperator*= (double value)
 scale all samples
CaloSamplesoperator+= (double value)
 add a value to all samples
CaloSamplesoperator+= (const CaloSamples &other)
double & operator[] (int i)
 mutable operator to access samples
double operator[] (int i) const
 const operator to access samples
float preciseAt (int i) const
 const function to access precise samples
float & preciseAtMod (int i)
 mutable function to access precise samples
float preciseDeltaT () const
int precisePresamples () const
int preciseSize () const
 get the size
int presamples () const
 access presample information
void resetPrecise ()
CaloSamplesscale (double value)
 multiply each item by this value
void setBlank ()
void setDetId (DetId detId)
void setPrecise (int precisePresamples, float deltaT)
void setPresamples (int pre)
 set presample information
void setSize (unsigned int size)
int size () const
 get the size

Static Public Attributes

static const int MAXSAMPLES = 10

Private Attributes

double data_ [MAXSAMPLES]
float deltaTprecise_
DetId id_
std::vector< float > preciseData_
int precisePresamples_
int preciseSize_
int presamples_
int size_

Detailed Description

Class which represents the charge/voltage measurements of an event/channel with the ADC decoding performed.

Date:
2013/04/15 12:19:45
Revision:
1.6

Definition at line 16 of file CaloSamples.h.


Constructor & Destructor Documentation

CaloSamples::CaloSamples ( )

Definition at line 6 of file CaloSamples.cc.

References setBlank().

CaloSamples::CaloSamples ( const DetId id,
int  size 
) [explicit]

Definition at line 8 of file CaloSamples.cc.

References setBlank().

                                                  :
   id_          ( id   ) , 
   size_        ( size ) , 
   presamples_  ( 0    ) ,
   deltaTprecise_ (0.0f) ,
   preciseSize_(0), 
   precisePresamples_(0) { setBlank() ; }
CaloSamples::CaloSamples ( const DetId id,
int  size,
int  preciseSize 
) [explicit]

Definition at line 16 of file CaloSamples.cc.

References setBlank().

                                                               :
   id_          ( id   ) , 
   size_        ( size ) , 
   presamples_  ( 0    ) ,
   deltaTprecise_ (0.0f) ,
   preciseSize_(presize), 
   precisePresamples_(0) { setBlank() ; }

Member Function Documentation

DetId CaloSamples::id ( void  ) const [inline]
bool CaloSamples::isBlank ( ) const

Definition at line 88 of file CaloSamples.cc.

References data_, alignCSCRings::e, funct::false, i, MAXSAMPLES, and funct::true.

Referenced by CaloHitRespoNew::findSignal().

{
   for( int i ( 0 ) ; i != MAXSAMPLES ; ++i )
   {
      if( 1.e-6 < fabs( data_[i] ) ) return false ;
   }
   return true ;
}
CaloSamples & CaloSamples::offsetTime ( double  offset)

shift all the samples by a time, in ns, interpolating

Definition at line 67 of file CaloSamples.cc.

References data, data_, f, i, MAXSAMPLES, evf::evtn::offset(), and lumiQTWidget::t.

Referenced by HcalTimeSlewSim::delay().

{
  double data[MAXSAMPLES];
  for( int i ( 0 ) ; i != MAXSAMPLES ; ++i )
  {
    double t = i*25. - offset;
    int firstbin = floor(t/25.);
    double f = t/25. - firstbin;
    int nextbin = firstbin + 1;
    double v1 = (firstbin < 0 || firstbin >= MAXSAMPLES) ? 0. : data_[firstbin];
    double v2 = (nextbin < 0  || nextbin  >= MAXSAMPLES) ? 0. : data_[nextbin];
    data[i] = (v1*(1.-f)+v2*f);
  }
  for( int i ( 0 ) ; i != MAXSAMPLES ; ++i )
  {
    data_[i] = data[i];
  }
  return (*this);
}
CaloSamples& CaloSamples::operator*= ( double  value) [inline]

scale all samples

Definition at line 45 of file CaloSamples.h.

References scale().

{ return scale(value); }
CaloSamples & CaloSamples::operator+= ( double  value)

add a value to all samples

Definition at line 40 of file CaloSamples.cc.

References data_, deltaTprecise_, i, j, MAXSAMPLES, and preciseData_.

                                                 {  
   for (int i=0; i<MAXSAMPLES; i++) data_[i]+=value;
   for (std::vector<float>::iterator j=preciseData_.begin() ; j!=preciseData_.end(); j++)
     (*j)+=value*deltaTprecise_/25.0; // note that the scale is conserved!
  return (*this);
}
CaloSamples & CaloSamples::operator+= ( const CaloSamples other)

Definition at line 47 of file CaloSamples.cc.

References data_, i, preciseData_, preciseSize_, presamples_, resetPrecise(), and size_.

                                                              {
  if(size_ != other.size_ ||
     presamples_ != other.presamples_ ||
     preciseSize_ != other.preciseSize_)  {
    edm::LogError("CaloHitResponse") << "Mismatched calo signals "; 
  }
  int i;
  for(i = 0; i < size_; ++i) {
    data_[i] += other.data_[i];
  }
  if ( preciseData_.size() == 0 && other.preciseData_.size() > 0 ) resetPrecise();
  if ( other.preciseData_.size() > 0 ) {
    for(i = 0; i < preciseSize_; ++i) {
      preciseData_[i] += other.preciseData_[i];
    }
  }
  return *this;
}
double CaloSamples::operator[] ( int  i) const [inline]

const operator to access samples

Definition at line 30 of file CaloSamples.h.

References data_, and i.

{ return data_[i]; }
double& CaloSamples::operator[] ( int  i) [inline]

mutable operator to access samples

Definition at line 28 of file CaloSamples.h.

References data_, and i.

{ return data_[i]; }
float CaloSamples::preciseAt ( int  i) const [inline]

const function to access precise samples

Definition at line 35 of file CaloSamples.h.

References i, and preciseData_.

Referenced by HcalTDC::timing().

{ return preciseData_[i]; }
float& CaloSamples::preciseAtMod ( int  i) [inline]

mutable function to access precise samples

Definition at line 33 of file CaloSamples.h.

References i, and preciseData_.

Referenced by HcalSiPMHitResponse::differentiatePreciseSamples(), and HcalSiPMHitResponse::makeSiPMSignal().

{ return preciseData_[i]; }
float CaloSamples::preciseDeltaT ( ) const [inline]

Definition at line 66 of file CaloSamples.h.

References deltaTprecise_.

Referenced by HcalSiPMHitResponse::differentiatePreciseSamples().

{ return deltaTprecise_; }
int CaloSamples::precisePresamples ( ) const [inline]

Definition at line 65 of file CaloSamples.h.

References precisePresamples_.

Referenced by setPrecise().

{ return precisePresamples_; }
int CaloSamples::preciseSize ( ) const [inline]

get the size

Definition at line 64 of file CaloSamples.h.

References preciseData_, and preciseSize_.

Referenced by HcalSiPMHitResponse::differentiatePreciseSamples(), HcalSiPMHitResponse::makeSiPMSignal(), operator<<(), and HcalTDC::timing().

{ if ( preciseData_.size() ==0 ) return 0; return preciseSize_; }
int CaloSamples::presamples ( ) const [inline]
void CaloSamples::resetPrecise ( )

Definition at line 25 of file CaloSamples.cc.

References preciseData_, and preciseSize_.

Referenced by HcalSiPMHitResponse::makeSiPMSignal(), and operator+=().

                               {
  preciseData_.resize(preciseSize_,0);
}
CaloSamples & CaloSamples::scale ( double  value)

multiply each item by this value

Definition at line 33 of file CaloSamples.cc.

References data_, i, j, MAXSAMPLES, preciseData_, and relativeConstraints::value.

Referenced by operator*=().

                                              {
   for (int i=0; i<MAXSAMPLES; i++) data_[i]*=value;
   for (std::vector<float>::iterator j=preciseData_.begin() ; j!=preciseData_.end(); j++)
     (*j)*=value;
   return (*this);
}
void CaloSamples::setBlank ( )

Definition at line 98 of file CaloSamples.cc.

References data_, lumiContext::fill, MAXSAMPLES, and preciseData_.

Referenced by CaloSamples().

{
   std::fill( data_ , data_ + MAXSAMPLES, (double)0.0 ) ;
   std::fill( preciseData_.begin() , preciseData_.end(), (double)0.0 ) ;
}
void CaloSamples::setDetId ( DetId  detId) [inline]

Definition at line 55 of file CaloSamples.h.

References id_.

{ id_ = detId ; }
void CaloSamples::setPrecise ( int  precisePresamples,
float  deltaT 
) [inline]
void CaloSamples::setPresamples ( int  pre)

set presample information

Definition at line 29 of file CaloSamples.cc.

References presamples_.

Referenced by HcalNominalCoder::adc2fC(), CastorNominalCoder::adc2fC(), HcalCoderDb::adc2fC_(), and CastorCoderDb::adc2fC_().

                                         {
   presamples_ = pre ;
}
void CaloSamples::setSize ( unsigned int  size) [inline]

Definition at line 57 of file CaloSamples.h.

References size(), and size_.

{ size_ = size ; }
int CaloSamples::size ( void  ) const [inline]

Member Data Documentation

double CaloSamples::data_[MAXSAMPLES] [private]

Definition at line 78 of file CaloSamples.h.

Referenced by isBlank(), offsetTime(), operator+=(), operator[](), scale(), and setBlank().

float CaloSamples::deltaTprecise_ [private]

Definition at line 80 of file CaloSamples.h.

Referenced by operator+=(), preciseDeltaT(), and setPrecise().

Definition at line 77 of file CaloSamples.h.

Referenced by id(), and setDetId().

const int CaloSamples::MAXSAMPLES = 10 [static]
std::vector<float> CaloSamples::preciseData_ [private]

Definition at line 82 of file CaloSamples.h.

Referenced by precisePresamples(), and setPrecise().

Definition at line 82 of file CaloSamples.h.

Referenced by operator+=(), preciseSize(), and resetPrecise().

int CaloSamples::presamples_ [private]

Definition at line 79 of file CaloSamples.h.

Referenced by operator+=(), presamples(), and setPresamples().

int CaloSamples::size_ [private]

Definition at line 79 of file CaloSamples.h.

Referenced by operator+=(), setSize(), and size().