37 #ifndef BSEMCEXPCLUSTERSPLITTINGPROCESS_HH 38 #define BSEMCEXPCLUSTERSPLITTINGPROCESS_HH 46 #include "RtypesCore.h" 63 class FairParGenericSet;
69 class TMemberInspector;
70 struct BSEmcClusteringData;
99 virtual void SetDetectorName(
const std::string &t_detectorName) ;
103 virtual void Process() ;
104 std::vector<BSEmcSubCluster *> SubClustering(
const std::vector<const BSEmcDigi *> &t_digiCont,
const std::vector<BSEmcCluster *> &t_clusterCont);
115 std::string fClusteringParName{
""};
116 std::string fClusterPropertiesParName{
""};
117 std::string fPositionParName{
""};
118 std::string fNeighbouringRelationParName{
""};
120 TString fDigiBranchname{
""};
121 TString fClusterBranchname{
""};
122 TString fSubClusterBranchname{
""};
127 std::vector<BSEmcSubCluster *> fSubClusterVector{};
129 Double_t fExponentialConstant{-1};
130 Int_t fMaxIterations{-1};
131 Double_t fCentroidShift{-1};
132 Int_t fMaxSubClusters{-1};
133 Double_t fMinDigiEnergy{-1};
137 Double_t fClusterEnergyCut{-1};
140 Double_t fMoliereRadius{-1};
144 std::vector<DigiLocationInfo> GetEnergyAndLocationInfo(
const std::vector<const BSEmcDigi *> &t_digiCont,
const std::vector<BSEmcDigiInfo_t> &t_digis)
const;
145 void ClearSubClusters(std::map<Int_t, BSEmcSubCluster *> &t_tmpsubClusters)
const;
147 CalculateWeight(Int_t t_currentDigiDetID, Int_t t_currentMaxDetId,
const TVector3 &t_currentdigisPosition,
const std::map<Int_t, DigiLocationInfo> &t_centroidPositions)
const;
148 void UpdateCentroidPositions(
const std::map<Int_t, BSEmcSubCluster *> &t_subClusters, std::map<Int_t, DigiLocationInfo> &t_centroidPositions)
const;
149 void AddDigiWithWeightToSubCluster(Int_t t_digiIdx, Double_t t_weight,
BSEmcSubCluster *t_subcluster);
150 void AddSubClusters(
const std::map<Int_t, BSEmcSubCluster *> &t_subClusters,
const std::vector<BSEmcCluster *> &t_clusterCont, Int_t t_clusterIdx);
151 void SplitIntoMultipleSubCluster(
BSEmcCluster *t_cluster, Int_t t_clusterIdx,
const std::vector<const BSEmcDigi *> &t_digiCont,
const std::vector<BSEmcCluster *> &t_clusterCont);
152 void SplitIntoSingleSubCluster(
BSEmcCluster *t_cluster, Int_t t_clusterIdx);
void SetDigiBranchName(const TString &t_branchname)
Container for clustering parameter.
Double_t fSubClusterEnergy
void SetNeighbouringRelationParName(const std::string &t_parName)
splits clusters on the basis of exponential distance from the subCluster centroid ...
Helper class to calculate the cluster position.
a cluster (group of neighboring crystals) of hit emc crystals
Parameter for crystal positions.
void SetPositionParName(const std::string &t_parName)
represents the reconstructed hit of one emc crystal
void SetClusteringParName(const std::string &t_parName)
void SetClusterBranchName(const TString &t_branchname)
Interface to a datacontainer to be used in PandaROOT.
void SetClusterPropertiesParName(const std::string &t_parName)
Helper class to calculate the Energies of a cluster.
Helper class to indirect the Parameter fetching via the FairRuntimeDb.
represents a reconstructed (splitted) emc cluster
simple Struct used in Cluster classes to index crystal. Includes the weight of the crystal on the cur...
void SetSubClusterBranchName(const TString &t_branchname)