Project
Loading...
Searching...
No Matches
clusterProcessing.h
Go to the documentation of this file.
1// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
2// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3// All rights not expressly granted are reserved.
4//
5// This software is distributed under the terms of the GNU General Public
6// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7//
8// In applying this license CERN does not waive the privileges and immunities
9// granted to it by virtue of its status as an Intergovernmental Organization
10// or submit itself to any jurisdiction.
11
12#ifndef O2_MCH_CLUSTERPROCESSING_H
13#define O2_MCH_CLUSTERPROCESSING_H
14
16
17// ??? Inv typedef std::pair<int, double*> DataBlock_t;
18
19namespace o2
20{
21namespace mch
22{
23void collectGroupMapping(Mask_t* padToMGrp, int nPads);
24// Store the pad/group mapping in ClusterResult
25/*
26 void storeGroupMapping( const Groups_t *cath0Grp,
27 const PadIdx_t *mapCath0PadIdxToPadIdx, int nCath0,
28 const Groups_t *cath1Grp,
29 const PadIdx_t *mapCath1PadIdxToPadIdx, int nCath1);
30*/
31void collectSeeds(double* theta, o2::mch::Groups_t* thetaToGroup, int K);
33} // namespace mch
34} // namespace o2
35
36extern "C" {
37void setMathiesonVarianceApprox(int chId, double* theta, int K);
38
39int clusterProcess(const double* xyDxyi, const o2::mch::Mask_t* cathi,
40 const o2::mch::Mask_t* saturated, const double* zi, int chId,
41 int nPads);
42
43void collectTheta(double* theta, o2::mch::Groups_t* thetaToGroup, int N);
44
46
48
49// Inv ??? void collectPadsAndCharges(double* xyDxy, double* z, Groups_t*
50// padToGroup, int nTot);
51
52// Inv ??? void collectPadToCathGroup(Mask_t* padToMGrp, int nPads);
53
54/*
55// Store the pad/group mapping in ClusterResult
56void storeGroupMapping( const o2::mch::Groups_t *cath0Grp,
57 const o2::mch::PadIdx_t *mapCath0PadIdxToPadIdx, int nCath0,
58 const o2::mch::Groups_t *cath1Grp,
59 const o2::mch::PadIdx_t *mapCath1PadIdxToPadIdx, int nCath1);
60*/
61
62void collectLaplacian(double* laplacian, int N);
63
64void computeResidual(const double* xyDxy, const double* zObs,
65 const double* theta, int K, int N, double* residual);
66
67void collectResidual(double* residual, int N);
68
69void computeMathiesonResidual(const double* xyDxy, const o2::mch::Mask_t* cath,
70 const double* zObs, const double* theta, int chId,
71 int K, int N, double* residual);
72
73int getKThetaInit();
74
75void collectThetaInit(double* thetai, int N);
76
78
79void collectThetaEMFinal(double* thetaEM, int K);
80
82}
83#endif // O2_MCH_CLUSTERPROCESSING_H_
Clustering and fifting parameters.
void setMathiesonVarianceApprox(int chId, double *theta, int K)
int getKThetaInit()
void computeMathiesonResidual(const double *xyDxy, const o2::mch::Mask_t *cath, const double *zObs, const double *theta, int chId, int K, int N, double *residual)
int getNbrOfPadsInGroups()
int clusterProcess(const double *xyDxyi, const o2::mch::Mask_t *cathi, const o2::mch::Mask_t *saturated, const double *zi, int chId, int nPads)
void collectResidual(double *residual, int N)
void computeResidual(const double *xyDxy, const double *zObs, const double *theta, int K, int N, double *residual)
void collectTheta(double *theta, o2::mch::Groups_t *thetaToGroup, int N)
void collectThetaInit(double *thetai, int N)
int getNbrOfThetaEMFinal()
void cleanClusterProcessVariables()
void collectThetaEMFinal(double *thetaEM, int K)
void collectLaplacian(double *laplacian, int N)
int getNbrOfProjPads()
void collectSeeds(double *theta, o2::mch::Groups_t *thetaToGroup, int K)
void cleanClusterResults()
short Mask_t
void collectGroupMapping(Mask_t *padToMGrp, int nPads)
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...