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 #include "BSEmcClusteringData.h"
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 
64 class BSEmcRemoveSplitOffMax : public PndProcess<BSEmcClusteringData> {
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 SetData(BSEmcClusteringData *t_pdata) /*override*/;
71  virtual void Process() /*override*/;
72  void RemoveSplitOffMax(const std::vector<const BSEmcDigi *> &t_digiCont, const std::vector<BSEmcCluster *> &t_clusterCont);
73 
74  void SetClusteringParName(const std::string &t_parName) { fClusteringParName = t_parName; }
75  void SetNeighbouringRelationParName(const std::string &t_parName) { fNeighbouringRelationParName = t_parName; }
76 
77  protected:
78  Bool_t IsSplitOffOrHadron(const BSEmcDigi *t_digi, const std::vector<const BSEmcDigi *> &t_neighbours) const;
79  std::vector<const BSEmcDigi *>
80  GetNeigboursOf(const std::vector<const BSEmcDigi *> &t_digiCont, const BSEmcDigiInfo_t &t_digi, const std::vector<BSEmcDigiInfo_t> &t_potentialneighbours) const;
81 
82  private:
83  std::string fClusteringParName{""};
84  std::string fNeighbouringRelationParName{""};
85  PndContainerI<BSEmcDigi> *fDigiArray{nullptr};
86  PndOutputContainerI<BSEmcCluster> *fClusterArray{nullptr};
87  Double_t fCutSlope{-1};
88  Double_t fCutOffset{-1};
89  Double_t fERatioCorr{-1};
90  Double_t fNeighbourECut{-1};
91  BSEmcGeoNeighbouringRelationPar *fNeighbouringRelationPar{nullptr};
92  ClassDef(BSEmcRemoveSplitOffMax, 1);
93 };
94 
95 #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 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.
virtual void SetData(BSEmcClusteringData *t_pdata)
Pass the data container ptrs to the process, and store pointers in class members. ...
a cluster (group of neighboring crystals) of hit emc crystals
Definition: BSEmcCluster.h:54
void SetNeighbouringRelationParName(const std::string &t_parName)
Container of addresses for data Container used by BSEmcClusteringTask and passed to Clustering Proces...
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.
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