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.
configStandalone Reconstruction rec_tpc multiplier for the combined cluster track error during track following area in cm for the search of for z only used if decrease removal by when above this local occupancy rowx Shift of TPC revert cluster flag edge bit distance to edge exceeds this ZOffset for secondary multiple of radius max P of electron K BB bands crossing max P of electron p BB bands crossing max P of electron d BB bands crossing max P of electron t BB bands crossing min accepted dEdxMaxTPC of the track Additive extra cluster error for Y2 if edge flag set Additive extra cluster error for Y2 if single set Additive extra cluster error for Y2 if or single set Additive extra cluster error for Z2 if or single set Extra errors to add to track when crossing depending on addErrorsCECrossing Inner portion of y range in sector that is not used in searching for extrapolated track candidates factor2YS for track merging factor2K for track merging Margin in cm of Y position when rejecting edge clusters based on uncorrected track Y Max fraction of shared clusters for tracklet Except pad from cluster finding if total number of charges in a fragment is above this Except pad from cluster finding if number of consecutive charges in a fragment is above this Threshold where a timebin is considered saturated
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()
short Groups_t
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 ...