21#ifndef DETECTORS_HMPID_BASE_INCLUDE_HMPIDDATAFORMAT_DIGIT_H_
22#define DETECTORS_HMPID_BASE_INCLUDE_HMPIDDATAFORMAT_DIGIT_H_
39 static inline uint32_t
abs(
int ch,
int pc,
int x,
int y) {
return ch << 24 | pc << 16 |
x << 8 |
y; }
40 static inline int ddl2C(
int ddl) {
return ddl >> 1; }
41 static inline int a2C(uint32_t pad) {
return (pad & 0xFF000000) >> 24; }
42 static inline int a2P(uint32_t pad) {
return (pad & 0x00FF0000) >> 16; }
43 static inline int a2X(uint32_t pad) {
return (pad & 0x0000FF00) >> 8; }
44 static inline int a2Y(uint32_t pad) {
return (pad & 0x000000FF); }
45 static inline uint32_t
photo2Pad(
int ch,
int pc,
int x,
int y) {
return abs(ch, pc,
x,
y); }
46 static uint32_t
equipment2Pad(
int Equi,
int Colu,
int Dilo,
int Chan);
48 static void pad2Equipment(uint32_t pad,
int* Equi,
int* Colu,
int* Dilo,
int* Chan);
49 static void pad2Absolute(uint32_t pad,
int* Module,
int*
x,
int*
y);
50 static void pad2Photo(uint32_t pad, uint8_t* chamber, uint8_t* photo, uint8_t*
x, uint8_t*
y);
51 static void absolute2Equipment(
int Module,
int x,
int y,
int* Equi,
int* Colu,
int* Dilo,
int* Chan);
52 static void equipment2Absolute(
int Equi,
int Colu,
int Dilo,
int Chan,
int* Module,
int*
x,
int*
y);
77 Digit(uint16_t
charge,
int equipment,
int column,
int dilogic,
int channel);
88 mPh = (pad & 0x00FF0000) >> 16;
89 mX = (pad & 0x0000FF00) >> 8;
90 mY = (pad & 0x000000FF);
146 static double qdcTot(
double e,
double time,
int pc,
int px,
int py,
double& localX,
double& localY);
149 static double intMathieson(
double localX,
double localY,
int pad);
static uint32_t absolute2Pad(int Module, int x, int y)
static int a2C(uint32_t pad)
static void absolute2Equipment(int Module, int x, int y, int *Equi, int *Colu, int *Dilo, int *Chan)
static int a2X(uint32_t pad)
friend std::ostream & operator<<(std::ostream &os, const Digit &d)
static double mathiesonY(double x)
static int a2Y(uint32_t pad)
void setPadID(uint32_t pad)
friend bool operator==(const Digit &l, const Digit &r)
uint16_t getCharge() const
static void pad2Absolute(uint32_t pad, int *Module, int *x, int *y)
static float lorsY(int pad)
static int ddl2C(int ddl)
static int a2P(uint32_t pad)
static uint32_t photo2Pad(int ch, int pc, int x, int y)
static double intPartMathiX(double x, int pad)
static uint32_t equipment2Pad(int Equi, int Colu, int Dilo, int Chan)
static void pad2Equipment(uint32_t pad, int *Equi, int *Colu, int *Dilo, int *Chan)
static void pad2Photo(uint32_t pad, uint8_t *chamber, uint8_t *photo, uint8_t *x, uint8_t *y)
static double qdcTot(double e, double time, int pc, int px, int py, double &localX, double &localY)
friend bool operator!=(const Digit &l, const Digit &r)
friend bool operator<=(const Digit &l, const Digit &r)
static float lorsX(int pad)
static double intPartMathiY(double y, int pad)
void setCharge(uint16_t Q)
static double mathiesonX(double x)
static float getFractionalContributionForPad(o2::hmpid::HitType const &hit, int somepad)
friend bool operator>=(const Digit &l, const Digit &r)
static double intMathieson(double localX, double localY, int pad)
static void getPadAndTotalCharge(o2::hmpid::HitType const &hit, int &chamber, int &pc, int &px, int &py, float &totalcharge)
friend bool operator<(const Digit &l, const Digit &r)
static uint32_t abs(int ch, int pc, int x, int y)
friend bool operator>(const Digit &l, const Digit &r)
static void equipment2Absolute(int Equi, int Colu, int Dilo, int Chan, int *Module, int *x, int *y)
static float lorsY(Int_t pc, Int_t pady)
static float lorsX(Int_t pc, Int_t padx)
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...