CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Types | Public Member Functions | Private Attributes
EcalUncalibratedRecHit Class Reference

#include <EcalUncalibratedRecHit.h>

Public Types

enum  Flags {
  kGood, kPoorReco, kSaturated, kOutOfTime,
  kLeadingEdgeRecovered, kFake
}
 
typedef DetId key_type
 

Public Member Functions

double amplitude () const
 
double chi2 () const
 
 EcalUncalibratedRecHit ()
 
 EcalUncalibratedRecHit (const DetId &detId, double ampl, double ped, double jit, double chi2, uint32_t flags=0, uint32_t aux=0)
 
DetId id () const
 
bool isJitterErrorValid () const
 
bool isJitterValid () const
 
bool isSaturated () const
 
double jitter () const
 
float jitterError () const
 
uint8_t jitterErrorBits () const
 
float outOfTimeChi2 () const
 
float outOfTimeEnergy () const
 
double pedestal () const
 
uint32_t recoFlag () const
 
void setAmplitude (double amplitude)
 
void setAux (uint32_t aux)
 
void setChi2 (double chi2)
 
void setFlags (uint32_t flags)
 
void setId (DetId id)
 
void setJitter (double jitter)
 
void setJitterError (float jitterErr)
 
void setOutOfTimeChi2 (float chi2)
 
void setOutOfTimeEnergy (float energy)
 
void setPedestal (double pedestal)
 
void setRecoFlag (uint32_t flags)
 
virtual ~EcalUncalibratedRecHit ()
 

Private Attributes

double amplitude_
 
uint32_t aux_
 
double chi2_
 
uint32_t flags_
 
DetId id_
 
double jitter_
 
double pedestal_
 

Detailed Description

Definition at line 7 of file EcalUncalibratedRecHit.h.

Member Typedef Documentation

Definition at line 11 of file EcalUncalibratedRecHit.h.

Member Enumeration Documentation

Enumerator
kGood 
kPoorReco 
kSaturated 
kOutOfTime 
kLeadingEdgeRecovered 
kFake 

Definition at line 13 of file EcalUncalibratedRecHit.h.

13  {
14  kGood, // channel is good
15  kPoorReco, // channel has been badly reconstructed (e.g. bad shape, bad chi2 etc.)
16  kSaturated, // saturated channel
17  kOutOfTime, // channel out of time
18  kLeadingEdgeRecovered, // saturated channel: energy estimated from the leading edge before saturation
19  kFake // the signal in the channel is a fake (e.g. a so-called spike)
20  };

Constructor & Destructor Documentation

EcalUncalibratedRecHit::EcalUncalibratedRecHit ( )
EcalUncalibratedRecHit::EcalUncalibratedRecHit ( const DetId detId,
double  ampl,
double  ped,
double  jit,
double  chi2,
uint32_t  flags = 0,
uint32_t  aux = 0 
)
EcalUncalibratedRecHit::~EcalUncalibratedRecHit ( )
virtual

Definition at line 12 of file EcalUncalibratedRecHit.cc.

12  {
13 }

Member Function Documentation

double EcalUncalibratedRecHit::amplitude ( ) const
inline
double EcalUncalibratedRecHit::chi2 ( void  ) const
inline

Definition at line 30 of file EcalUncalibratedRecHit.h.

References chi2_.

Referenced by EcalRecHitSimpleAlgo::makeRecHit(), and setChi2().

30 { return chi2_; }
DetId EcalUncalibratedRecHit::id ( void  ) const
inline
bool EcalUncalibratedRecHit::isJitterErrorValid ( ) const

Definition at line 118 of file EcalUncalibratedRecHit.cc.

References isJitterValid(), and jitterError().

119 {
120  if(!isJitterValid())
121  return false;
122  if(jitterError() >= 10000)
123  return false;
124 
125  return true;
126 }
bool EcalUncalibratedRecHit::isJitterValid ( ) const

Definition at line 110 of file EcalUncalibratedRecHit.cc.

References jitterError().

Referenced by isJitterErrorValid().

111 {
112  if(jitterError() <= 0)
113  return false;
114  else
115  return true;
116 }
bool EcalUncalibratedRecHit::isSaturated ( ) const

Definition at line 15 of file EcalUncalibratedRecHit.cc.

References kSaturated, and recoFlag().

Referenced by EcalRecHitSimpleAlgo::makeRecHit().

double EcalUncalibratedRecHit::jitter ( ) const
inline
float EcalUncalibratedRecHit::jitterError ( ) const

Definition at line 57 of file EcalUncalibratedRecHit.cc.

References aux_, jitterErrorBits(), and funct::pow().

Referenced by isJitterErrorValid(), and isJitterValid().

58 {
59  // stored in ps, but return BXs to match with jitter units
60  uint32_t jitterErrorBits = 0xFF & aux_;
61  // all bits off --> time reco bailed out (return negative value)
62  if( (0xFF & jitterErrorBits) == 0x00)
63  return -1;
64  // all bits on --> time error over 5 ns (return large value)
65  if( (0xFF & jitterErrorBits) == 0xFF)
66  return 10000;
67 
68  float LSB = 1.26008;
69  uint8_t exponent = jitterErrorBits>>5;
70  uint8_t significand = jitterErrorBits & ~(0x7<<5);
71  return (float)(pow(2.,exponent)*significand*LSB)/(25.*1000);
72 }
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
uint8_t EcalUncalibratedRecHit::jitterErrorBits ( ) const

Definition at line 128 of file EcalUncalibratedRecHit.cc.

References aux_.

Referenced by jitterError(), EcalRecHitSimpleAlgo::makeRecHit(), and setJitterError().

129 {
130  uint8_t jitterErrorBits = 0xFF & aux_;
131  return jitterErrorBits;
132 }
float EcalUncalibratedRecHit::outOfTimeChi2 ( ) const

Definition at line 51 of file EcalUncalibratedRecHit.cc.

References flags_.

Referenced by EcalRecHitSimpleAlgo::makeRecHit().

52 {
53  uint32_t rawChi2 = 0x7F & (flags_>>17);
54  return (float)rawChi2 / (float)((1<<7)-1) * 64.;
55 }
float EcalUncalibratedRecHit::outOfTimeEnergy ( ) const

Definition at line 19 of file EcalUncalibratedRecHit.cc.

References flags_, and funct::pow().

Referenced by EcalRecHitSimpleAlgo::makeRecHit().

20 {
21  uint32_t rawEnergy = (0x1FFF & flags_>>4);
22  uint16_t exponent = rawEnergy>>10;
23  uint16_t significand = ~(0xE<<9) & rawEnergy;
24  return (float) significand*pow(10,exponent-5);
25 }
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
double EcalUncalibratedRecHit::pedestal ( ) const
inline

Definition at line 28 of file EcalUncalibratedRecHit.h.

References pedestal_.

Referenced by setPedestal().

28 { return pedestal_; }
uint32_t EcalUncalibratedRecHit::recoFlag ( ) const
inline

Definition at line 31 of file EcalUncalibratedRecHit.h.

References flags_.

Referenced by isSaturated(), EcalRecHitSimpleAlgo::makeRecHit(), and EcalRecHitWorkerRecover::run().

31 { return 0xF & flags_; }
void EcalUncalibratedRecHit::setAmplitude ( double  amplitude)
inline
void EcalUncalibratedRecHit::setAux ( uint32_t  aux)
inline

Definition at line 50 of file EcalUncalibratedRecHit.h.

References printConversionInfo::aux, and aux_.

void EcalUncalibratedRecHit::setChi2 ( double  chi2)
inline

Definition at line 42 of file EcalUncalibratedRecHit.h.

References chi2(), and chi2_.

void EcalUncalibratedRecHit::setFlags ( uint32_t  flags)
inline

Definition at line 43 of file EcalUncalibratedRecHit.h.

References flags, and flags_.

Referenced by python.Vispa.Plugins.EdmBrowser.EventContentView.LabelItem::__init__(), setOutOfTimeChi2(), and setOutOfTimeEnergy().

43 { flags_ = flags; }
std::vector< Variable::Flags > flags
Definition: MVATrainer.cc:135
void EcalUncalibratedRecHit::setId ( DetId  id)
inline

Definition at line 49 of file EcalUncalibratedRecHit.h.

References id(), and id_.

void EcalUncalibratedRecHit::setJitter ( double  jitter)
inline

Definition at line 40 of file EcalUncalibratedRecHit.h.

References jitter(), and jitter_.

Referenced by EcalUncalibRecHitWorkerRatio::run().

void EcalUncalibratedRecHit::setJitterError ( float  jitterErr)

Definition at line 74 of file EcalUncalibratedRecHit.cc.

References aux_, jitterErrorBits(), and funct::pow().

Referenced by EcalUncalibRecHitWorkerRatio::run().

75 {
76  // use 8 bits (3 exp, 5 mant) and store in ps
77  // has range of 5 ps - 5000 ps
78  // expect input in BX units
79  // all bits off --> time reco bailed out
80  if(jitterErr < 0)
81  {
82  aux_ = (~0xFF & aux_);
83  return;
84  }
85  // all bits on --> time error over 5 ns
86  if(25*jitterErr >= 5)
87  {
88  aux_ = (0xFF | aux_);
89  return;
90  }
91 
92  float LSB = 1.26008;
93  float quantityInLSB = (1000*25*jitterErr)/LSB;
94  int log2OfQuantity = (int) (log2( quantityInLSB ));
95  int exponentTmp = log2OfQuantity - 4;
96  uint8_t exponent=0;
97  if (exponentTmp>0) exponent = exponentTmp;
98  uint8_t significand = (int) ( lround( quantityInLSB / pow(2.,exponent) ) );
99  uint32_t jitterErrorBits = exponent<<5 | significand;
100 
101  if( (0xFF & jitterErrorBits) == 0xFF)
102  jitterErrorBits = 0xFE;
103  if( (0xFF & jitterErrorBits) == 0x00)
104  jitterErrorBits = 0x01;
105 
106  aux_ = (~0xFF & aux_) | (jitterErrorBits & 0xFF);
107 
108 }
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
void EcalUncalibratedRecHit::setOutOfTimeChi2 ( float  chi2)

Definition at line 42 of file EcalUncalibratedRecHit.cc.

References flags_, and setFlags().

43 {
44  // use 7 bits
45  if ( chi2 > 64. ) chi2 = 64.;
46  uint32_t rawChi2 = lround( chi2 / 64. * ((1<<7)-1) );
47  // shift by 17 bits (recoFlag + outOfTimeEnergy)
48  setFlags( (~(0x7F<<17) & flags_) | ((rawChi2 & 0x7F)<<17) );
49 }
void setFlags(uint32_t flags)
void EcalUncalibratedRecHit::setOutOfTimeEnergy ( float  energy)

Definition at line 32 of file EcalUncalibratedRecHit.cc.

References flags_, funct::pow(), and setFlags().

33 {
34  if ( energy > 0.001 ) {
35  uint16_t exponent = lround(floor(log10(energy)))+3;
36  uint16_t significand = lround(energy/pow(10,exponent-5));
37  uint32_t rawEnergy = exponent<<10 | significand;
38  setFlags( ( ~(0x1FFF<<4) & flags_) | ((rawEnergy & 0x1FFF)<<4) );
39  }
40 }
void setFlags(uint32_t flags)
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
void EcalUncalibratedRecHit::setPedestal ( double  pedestal)
inline

Definition at line 39 of file EcalUncalibratedRecHit.h.

References pedestal(), and pedestal_.

void EcalUncalibratedRecHit::setRecoFlag ( uint32_t  flags)

Definition at line 27 of file EcalUncalibratedRecHit.cc.

References flags_.

Referenced by EcalUncalibRecHitWorkerGlobal::run().

28 {
29  flags_ = (~0xF & flags_) | (flag & 0xF);
30 }
long int flag
Definition: mlp_lapack.h:47

Member Data Documentation

double EcalUncalibratedRecHit::amplitude_
private

Definition at line 57 of file EcalUncalibratedRecHit.h.

Referenced by amplitude(), and setAmplitude().

uint32_t EcalUncalibratedRecHit::aux_
private

Definition at line 62 of file EcalUncalibratedRecHit.h.

Referenced by jitterError(), jitterErrorBits(), setAux(), and setJitterError().

double EcalUncalibratedRecHit::chi2_
private

Definition at line 60 of file EcalUncalibratedRecHit.h.

Referenced by chi2(), and setChi2().

uint32_t EcalUncalibratedRecHit::flags_
private
DetId EcalUncalibratedRecHit::id_
private

Definition at line 63 of file EcalUncalibratedRecHit.h.

Referenced by id(), and setId().

double EcalUncalibratedRecHit::jitter_
private

Definition at line 59 of file EcalUncalibratedRecHit.h.

Referenced by jitter(), and setJitter().

double EcalUncalibratedRecHit::pedestal_
private

Definition at line 58 of file EcalUncalibratedRecHit.h.

Referenced by pedestal(), and setPedestal().