14#ifndef ALICEO2_PHOS_CLUSTERER_H
15#define ALICEO2_PHOS_CLUSTERER_H
38 void process(gsl::span<const Digit>
digits, gsl::span<const TriggerRecord> dtr,
40 std::vector<Cluster>&
clusters, std::vector<CluElement>& cluel, std::vector<TriggerRecord>& rigRec,
44 std::vector<Cluster>&
clusters, std::vector<CluElement>& cluel, std::vector<TriggerRecord>& rigRec,
59 inline float calibrate(
float amp,
short absId,
bool isHighGain)
75 int ddl = (relid[0] - 1) * 4 + (relid[1] - 1) / 16 - 2;
76 int l1 = (
mL1phase >> (ddl * 2)) & 3;
126 std::array<float, NLOCMAX>
mdx;
127 std::array<float, NLOCMAX>
mdz;
130 std::array<double, NLOCMAX>
mA;
131 std::array<double, NLOCMAX>
mxB;
132 std::array<double, NLOCMAX>
mzB;
136 std::array<double, NLOCMAX>
mfij;
Definition of a container to keep Monte Carlo truth external to simulation objects.
CCDB container for bad (masked) channels in PHOS.
bool isChannelGood(short channelID) const
Get the status of a certain cell.
float getHGLGRatio(short cellID) const
Get High Gain to Low Gain ratio calibration coefficients.
float getGain(short cellID) const
Get High Gain energy calibration coefficients.
float getLGTimeCalib(short cellID) const
Get Low Gain time calibration coefficient.
float getHGTimeCalib(short cellID) const
Get High Gain time calibration coefficients.
Contains PHOS cluster parameters.
bool mFullCluOutput
Write output full of reduced (no contributed digits) clusters.
static constexpr short NLOCMAX
void makeUnfolding(Cluster &clu, std::vector< Cluster > &clusters, std::vector< o2::phos::CluElement > &cluel)
bool isBadChannel(short absId)
void processCells(gsl::span< const Cell > digits, gsl::span< const TriggerRecord > dtr, const o2::dataformats::MCTruthContainer< MCLabel > *dmc, std::vector< Cluster > &clusters, std::vector< CluElement > &cluel, std::vector< TriggerRecord > &rigRec, o2::dataformats::MCTruthContainer< MCLabel > &cluMC)
void setBadMap(const o2::phos::BadChannelsMap *m)
int mLastElementInEvent
Range of digits from one event.
const BadChannelsMap * mBadMap
! Calibration coefficients, Clusterizer not owner
std::array< double, NLOCMAX > mfijz
transient variable for derivative calculation
int mL1phase
Do not correct for L1 phase.
std::array< int, NLOCMAX > mMaxAt
indexes of local maxima
char getNumberOfLocalMax(Cluster &clu, std::vector< CluElement > &cluel)
std::array< float, NLOCMAX > meMax
currecnt amplitude in unfoding
void evalLabels(std::vector< Cluster > &clusters, std::vector< CluElement > &cluel, const o2::dataformats::MCTruthContainer< MCLabel > *dmc, o2::dataformats::MCTruthContainer< MCLabel > &cluMC)
float calibrateT(float time, short absId, bool isHighGain, int bc)
std::array< float, NLOCMAX > mdz
step on current minimization iteration
void setCalibration(const o2::phos::CalibParams *c)
int mFirstElememtInEvent
Range of digits from one event.
std::array< float, NLOCMAX > mdzprev
step on previoud minimization iteration
double showerShape(double r2, double &deriv)
std::array< double, NLOCMAX > mxB
transient variable for derivative calculation
void makeClusters(std::vector< Cluster > &clusters, std::vector< o2::phos::CluElement > &cluel)
std::array< float, NLOCMAX > mdxprev
step on previoud minimization iteration
std::array< double, NLOCMAX > mfij
transient variable for derivative calculation
Geometry * mPHOSGeom
packed shifts for 14 ddls
std::vector< Digit > mTrigger
internal vector of clusters
void unfoldOneCluster(Cluster &iniClu, char nMax, std::vector< Cluster > &clusters, std::vector< CluElement > &cluelements)
std::array< float, NLOCMAX > mdx
step on current minimization iteration
std::vector< CluElement > mCluEl
! Bad map, Clusterizer not owner
float calibrate(float amp, short absId, bool isHighGain)
std::array< double, NLOCMAX > mA
transient variable for derivative calculation
void setL1phase(int phase)
std::vector< float > mProp
proportion of clusters in the current digit
std::array< float, NLOCMAX > mxMax
current maximum coordinate
std::array< double, NLOCMAX > mzB
transient variable for derivative calculation
const CalibParams * mCalibParams
! PHOS geometry
void evalAll(Cluster &clu, std::vector< CluElement > &cluel) const
std::vector< bool > mIsLocalMax
transient array for local max finding
std::array< double, NLOCMAX > mfijr
transient variable for derivative calculation
std::array< float, NLOCMAX > mzMax
in the unfolding procedure
std::array< double, NLOCMAX > mfijx
transient variable for derivative calculation
std::array< float, NLOCMAX > mxMaxPrev
coordunates at previous step
std::array< float, NLOCMAX > mzMaxPrev
coordunates at previous step
static bool absToRelNumbering(short absId, char *relid)
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
std::vector< Cluster > clusters
std::vector< Digit > digits