PandaRoot
BSEmcOnlineBumpSplitter.h
Go to the documentation of this file.
1 //--------------------------------------------------------------------------
2 // File and Version Information:
3 // $Id:$
4 //
5 // Description:
6 // Class BSEmcOnlineBumpSplitter
7 // Implementation of OnlineBumpSplitter which splits clusters based on
8 // local maxima, determined in a 0th order approximation, i.e. by looking
9 // for the two most energetic digis and checking if they are neighbours.
10 //
11 // Environment:
12 // Software developed for the PANDA experiment at GSI.
13 //
14 // Author List:
15 // Marcel Tiemens
16 //------------------------------------------------------------------------
17 //#pragma once
18 #ifndef BSEMCONLINEBUMPSPLITTER_HH
19 #define BSEMCONLINEBUMPSPLITTER_HH
20 
21 #include <map>
22 #include <memory>
23 #include <string>
24 #include <vector>
25 
26 #include "Rtypes.h"
27 #include "RtypesCore.h"
28 
29 #include "FairTask.h"
30 
31 #include "PndContainerI.h"
32 #include "PndProcess.h"
33 
34 #include "BSEmcClusteringData.h"
36 #include "BSEmcDigi.h"
38 #include "BSEmcPositionAlgo.h"
39 #include "BSEmcSubCluster.h"
40 
41 class BSEmcCluster;
43 class BSEmcDigi;
45 class BSEmcSubCluster;
47 class TBuffer;
48 class TClass;
49 class TMemberInspector;
50 struct BSEmcClusteringData;
51 template <class T>
52 class PndContainerI;
53 template <class T>
55 
71 class BSEmcOnlineBumpSplitter : public PndProcess<BSEmcClusteringData> {
72  public:
74  virtual ~BSEmcOnlineBumpSplitter();
75  virtual void SetDetectorName(const std::string &t_detectorName) /*override*/;
76  virtual void SetData(BSEmcClusteringData *t_data) /*override*/;
77  virtual void SetupParameters(const PndParameterRegister *t_paramRegister) /*override*/;
78  virtual void Process() /*override*/;
79  virtual void PostProcess();
80  std::vector<BSEmcSubCluster *> Subcluster(const std::vector<const BSEmcDigi *> &t_digiCont, const std::vector<BSEmcCluster *> &t_clusterCont);
81 
82  void SetMinimumSeedEnergy(Double_t minE) { fSeedEnergyThreshold = minE; };
83 
84  void SetPositionParName(const std::string &t_parName) { fPositionParName = t_parName; }
85  void SetNeighbouringRelationParName(const std::string &t_parName) { fNeighbouringRelationParName = t_parName; }
86 
87  protected:
89  void SingleBumpCluster(BSEmcCluster *, Int_t, const std::vector<const BSEmcDigi *> &t_digiCont);
90 
91  private:
92  PndContainerI<BSEmcDigi> *fDigiArray{nullptr};
93  PndOutputContainerI<BSEmcCluster> *fClusterArray{nullptr};
94  PndOutputContainerI<BSEmcSubCluster> *fSubClusterArray{nullptr};
95  std::vector<BSEmcSubCluster *> fSubClusterVec{};
96  std::string fNeighbouringRelationParName{""};
97  BSEmcGeoNeighbouringRelationPar *fNeighbouringRelationPar{nullptr};
98  std::string fPositionParName{""};
99  BSEmcCrystalPositionPar *fPositionPar{nullptr};
100  std::unique_ptr<BSEmcPositionAlgo> fPositionProcess{new BSEmcPositionAlgo};
101  Double_t fSeedEnergyThreshold{0.03};
102 
103  ClassDef(BSEmcOnlineBumpSplitter, 1);
104 };
105 #endif /*BSEMCONLINEBUMPSPLITTER_HH*/
Base Process class.
Definition: PndProcess.h:24
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 SetupParameters(const PndParameterRegister *t_paramRegister)
Fetch all parameters from the PndParameterRegister.
Helper class to calculate the cluster position.
BSEmcSubCluster * AddBump()
virtual ~BSEmcOnlineBumpSplitter()
a cluster (group of neighboring crystals) of hit emc crystals
Definition: BSEmcCluster.h:54
void SetPositionParName(const std::string &t_parName)
Parameter for crystal positions.
virtual void SetData(BSEmcClusteringData *t_data)
Pass the data container ptrs to the process, and store pointers in class members. ...
virtual void Process()
The actual data transformation (digitizing, clustering, etc.) should be defined here.
void SetNeighbouringRelationParName(const std::string &t_parName)
Container of addresses for data Container used by BSEmcClusteringTask and passed to Clustering Proces...
void SetMinimumSeedEnergy(Double_t minE)
represents the reconstructed hit of one emc crystal
Definition: BSEmcDigi.h:47
virtual void PostProcess()
Immediately after calling Process() PostProcess() is called for cleanup of internal process data...
Interface to a datacontainer to be used in PandaROOT.
Helper class to indirect the Parameter fetching via the FairRuntimeDb.
Neigbouring Relations based on a list of detectorIds.
std::vector< BSEmcSubCluster * > Subcluster(const std::vector< const BSEmcDigi *> &t_digiCont, const std::vector< BSEmcCluster *> &t_clusterCont)
represents a reconstructed (splitted) emc cluster
void SingleBumpCluster(BSEmcCluster *, Int_t, const std::vector< const BSEmcDigi *> &t_digiCont)