PandaRoot
BSEmcRemoveSplitOffMax.h
Go to the documentation of this file.
1 //--------------------------------------------------------------------------
2 // Description:
3 // Class EmcERatioLocMaxMaxFinder./
4 // Searches for local maxima in a cluster based on the ratio
5 // between the energy of the maxima crystal and that of
6 // its neighbours
7 //
8 // Environment:
9 // Software developed for the BaBar Detector at the SLAC B-Factory.
10 //
11 // Adapted for the PANDA experiment at GSI
12 //
13 // Author List:
14 // Phil Strother
15 // Helmut Schmuecker Ruhr-Uni Bochum
16 //
17 // Copyright Information:
18 // Copyright (C) 1997 Imperial College
19 // Modified:
20 // M. Babai
21 //------------------------------------------------------------------------
22 #ifndef BSEMCREMOVESPLITOFFMAX_HH
23 #define BSEMCREMOVESPLITOFFMAX_HH
24 #include <string>
25 #include <vector>
26 
27 #include "Rtypes.h"
28 #include "RtypesCore.h"
29 
30 #include "PndContainerI.h"
31 #include "PndParameterRegister.h"
32 #include "PndProcess.h"
33 
34 #include "BSEmcCluster.h"
35 
37 
38 class BSEmcClusteringPar;
39 class BSEmcDigi;
40 class BSEmcCluster;
43 class TBuffer;
44 class TClass;
45 class TMemberInspector;
46 struct BSEmcClusteringData;
47 struct BSEmcDigiInfo_t;
48 template <class T>
49 class PndContainerI;
50 template <class T>
52 
65  public:
67  virtual ~BSEmcRemoveSplitOffMax();
68  virtual void SetDetectorName(const std::string &t_detectorName) /*override*/;
69  virtual void SetupParameters(const PndParameterRegister *t_parameterRegister) /*override*/;
70  virtual void RequestDataContainer(PndContainerRegister *t_register) /*override*/;
71  virtual void GetDataContainer(PndContainerRegister *t_register) /*override*/;
72  virtual void Process() /*override*/;
73  void RemoveSplitOffMax(const std::vector<const BSEmcDigi *> &t_digiCont, const std::vector<BSEmcCluster *> &t_clusterCont);
74 
75  void SetClusteringParName(const std::string &t_parName) { fClusteringParName = t_parName; }
76  void SetNeighbouringRelationParName(const std::string &t_parName) { fNeighbouringRelationParName = t_parName; }
77 
78  void SetDigiBranchName(const TString &t_branchname) { fDigiBranchname = t_branchname; }
79  void SetClusterBranchName(const TString &t_branchname) { fClusterBranchname = t_branchname; }
80 
81  protected:
82  Bool_t IsSplitOffOrHadron(const BSEmcDigi *t_digi, const std::vector<const BSEmcDigi *> &t_neighbours) const;
83  std::vector<const BSEmcDigi *>
84  GetNeigboursOf(const std::vector<const BSEmcDigi *> &t_digiCont, const BSEmcDigiInfo_t &t_digi, const std::vector<BSEmcDigiInfo_t> &t_potentialneighbours) const;
85 
86  private:
87  std::string fClusteringParName{""};
88  std::string fNeighbouringRelationParName{""};
89 
90  TString fDigiBranchname{""};
91  TString fClusterBranchname{""};
92 
93  PndContainerI<BSEmcDigi> *fDigiArray{nullptr};
94  PndMutableContainerI<BSEmcCluster> *fClusterArray{nullptr};
95  Double_t fCutSlope{-1};
96  Double_t fCutOffset{-1};
97  Double_t fERatioCorr{-1};
98  Double_t fNeighbourECut{-1};
99  Double_t fMaximumsEnergyThreshold{-1};
100  BSEmcGeoNeighbouringRelationPar *fNeighbouringRelationPar{nullptr};
101  ClassDef(BSEmcRemoveSplitOffMax, 1);
102 };
103 
104 #endif /*BSEMCREMOVESPLITOFFMAX_HH*/
Process to be run after BSEmcLocalMaxFindingProcess to remove maxima from cluster that match certain ...
Base Process class.
Definition: PndProcess.h:24
Container for clustering parameter.
virtual void SetupParameters(const PndParameterRegister *t_parameterRegister)
Fetch all parameters from the PndParameterRegister.
virtual void GetDataContainer(PndContainerRegister *t_register)
Pass the container register to the process, and set the processes container requirements.
void SetClusterBranchName(const TString &t_branchname)
virtual void SetDetectorName(const std::string &t_detectorName)
Set the Detector name. Important, as most EmcParameter need to know for which detector they need to b...
virtual void Process()
The actual data transformation (digitizing, clustering, etc.) should be defined here.
a cluster (group of neighboring crystals) of hit emc crystals
Definition: BSEmcCluster.h:54
void SetDigiBranchName(const TString &t_branchname)
void SetNeighbouringRelationParName(const std::string &t_parName)
std::vector< const BSEmcDigi * > GetNeigboursOf(const std::vector< const BSEmcDigi *> &t_digiCont, const BSEmcDigiInfo_t &t_digi, const std::vector< BSEmcDigiInfo_t > &t_potentialneighbours) const
represents the reconstructed hit of one emc crystal
Definition: BSEmcDigi.h:47
Interface to a datacontainer to be used in PandaROOT.
virtual void RequestDataContainer(PndContainerRegister *t_register)
Pass the container register to the process, and get the processes container requirements.
void RemoveSplitOffMax(const std::vector< const BSEmcDigi *> &t_digiCont, const std::vector< BSEmcCluster *> &t_clusterCont)
void SetClusteringParName(const std::string &t_parName)
Helper class to indirect the Parameter fetching via the FairRuntimeDb.
virtual ~BSEmcRemoveSplitOffMax()
Neigbouring Relations based on a list of detectorIds.
simple Struct used in Cluster classes to index crystal. Includes the weight of the crystal on the cur...
Definition: BSEmcCluster.h:39
Bool_t IsSplitOffOrHadron(const BSEmcDigi *t_digi, const std::vector< const BSEmcDigi *> &t_neighbours) const