CbmRoot
Loading...
Searching...
No Matches
CbmClusteringWard.h
Go to the documentation of this file.
1/* Copyright (C) 2012-2013 GSI/JINR-LIT, Darmstadt/Dubna
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Grigory Kozlov, Andrey Lebedev [committer] */
4
5/*
6 * CbmClusteringWard.h
7 *
8 * Created on: Apr 10, 2012
9 * Author: kozlov
10 */
11
12#ifndef CBMCLUSTERINGWARD_H_
13#define CBMCLUSTERINGWARD_H_
14
16#include "FairTask.h"
17
18//class CbmMuchGeoScheme;
19//class CbmMuchCluster;
20//class CbmMuchPad;
21//class TClonesArray;
22
23class CbmClusteringWard //: public FairTask
24{
25 public:
30
31 CbmClusteringWard(CbmClusteringGeometry* moduleGeo, Int_t blockSize);
35 virtual ~CbmClusteringWard();
36
37 Float_t WardDistance(Int_t iPad1, Int_t iPad2);
38 void WardCreate(CbmClusteringGeometry* moduleGeo);
39 void AddClusterInBlock(CbmClusteringGeometry* moduleGeo, Int_t newCluster, Int_t addedCluster);
40 Bool_t WardBlockCreateStep(CbmClusteringGeometry* moduleGeo, Int_t wardStep, Bool_t wardStepRec, Int_t addedPad);
42 void DeleteCluaster(Int_t clusterNumber);
43 void WardDistanceRecalculation(Int_t clusterNumber);
44 Float_t XCenterRecalculation(Int_t cl1, Int_t cl2);
45 Float_t YCenterRecalculation(Int_t cl1, Int_t cl2);
46 void WardProcessingData(Float_t maxDistance);
48 void WardMainFunction(CbmClusteringGeometry* moduleGeo, Float_t maxDistance);
49
50 Int_t GetNofClusters() const { return fNofClusters; }
51 Int_t GetNofAPads() const { return fNofActivePads; }
52 Int_t GetNofPads() const { return fNofPads; }
53
54 //void MainClusteringA1(CbmMuchGeoCl* moduleGeo, Int_t algVersion);
55
56 /*Int_t GetNofClusters() const { return fNofClusters;}
57 Int_t GetNofPads() const { return fNofPads;}
58 Int_t GetNofActivePads() const { return fNofActivePads;}*/
59
60 Int_t GetCluster(Int_t iCluster);
61 Float_t GetX0(Int_t iCluster);
62 Float_t GetY0(Int_t iCluster);
63 UInt_t GetClCharge(Int_t iCluster);
64 Int_t GetNofPads(Int_t iCluster);
65 Int_t GetPadInCluster(Int_t iCluster, Int_t iPad);
66
67 private:
70
71 Int_t fNofPads;
73
74 Bool_t* fS; //g_MAX_PADS
75 Int_t* fNumbersOfPads; //g_MAX_PADS
76
78
80
81 struct ClusterBlock {
82 //Nomera sisedei klastera
83 Int_t neighbors[50]; //numbersOfNeighbors
84 //Koli4estvo sosedei klastera
85 Int_t nofNeighbors; //maxNumberOfNeighbors
86 //Nomer klastera
87 Int_t nofCluster; //numberOfCluster
88 //Obozna4enie klastera v massive nomerov klasterov
90 //Amplituda klastera
91 Float_t clCharge; //A
92 //Koordinati tsentra klastera
93 Float_t xc, yc;
94 //Rassto9ni9 mejdu klasterami
95 Float_t wardDistances[50]; //W
96 Bool_t S[50];
97 //Nomera 94eek v klastere
98 //---!!!---
99 //int numbersOfPadsInCluster[g_ward_MAX_NEIGHBORS];
100 //Koli4estvo 94eek v klastere
101 Int_t nofPads; //padsInCluster
102 Int_t padsInCluster[30];
103 };
105
106 //Massiv sootvetstvi9 94eek i klasterov
107 Int_t* padsInClusters; //g_MAX_PADS
110 //Massiv neobrabotannih 94eek
111 Bool_t* wardActivePads; //g_MAX_PADS
112 //Pervii element bloka obrabativaemih dannih
114 //Koli4estvo ob'ektov v spiske obrabitki
116
117 struct Cluster {
119 Float_t xc;
120 Float_t yc;
122 Int_t nofPads;
123 Int_t padsInCluster[30];
124 };
126
129};
130
131#endif /* CBMCLUSTERINGWARD_H_ */
void WardMainFunction(CbmClusteringGeometry *moduleGeo, Float_t maxDistance)
Float_t GetX0(Int_t iCluster)
void WardCreate(CbmClusteringGeometry *moduleGeo)
CbmClusteringWard(const CbmClusteringWard &)
CbmClusteringGeometry * fModuleGeo
CbmClusteringWard()
Constructor.
Float_t XCenterRecalculation(Int_t cl1, Int_t cl2)
void AddClusterInBlock(CbmClusteringGeometry *moduleGeo, Int_t newCluster, Int_t addedCluster)
Int_t GetCluster(Int_t iCluster)
void WardBlockCreate(CbmClusteringGeometry *moduleGeo)
UInt_t GetClCharge(Int_t iCluster)
Int_t GetNofClusters() const
Bool_t WardBlockCreateStep(CbmClusteringGeometry *moduleGeo, Int_t wardStep, Bool_t wardStepRec, Int_t addedPad)
void WardDistanceRecalculation(Int_t clusterNumber)
ClusterBlock * fClustersInBlock
Int_t GetPadInCluster(Int_t iCluster, Int_t iPad)
Float_t GetY0(Int_t iCluster)
Float_t YCenterRecalculation(Int_t cl1, Int_t cl2)
void DeleteCluaster(Int_t clusterNumber)
void WardProcessingData(Float_t maxDistance)
Float_t WardDistance(Int_t iPad1, Int_t iPad2)
Int_t GetNofPads() const
virtual ~CbmClusteringWard()
Destructor.
Int_t GetNofAPads() const
CbmClusteringWard & operator=(const CbmClusteringWard &)