PandaRoot
BSEmcMakePreclusters.h
Go to the documentation of this file.
1 //-----------------------------------------------------------------------
2 // File and Version Information:
3 // $Id: $
4 //
5 //---------------------------------------------------------------------
6 //#pragma once
7 #ifndef BSEMCMAKEPRECLUSTERS_HH
8 #define BSEMCMAKEPRECLUSTERS_HH
9 
10 #include <memory>
11 #include <string>
12 #include <vector>
13 
14 #include "Rtypes.h"
15 #include "RtypesCore.h"
16 
17 #include "PndContainerI.h"
18 #include "PndProcess.h"
19 
20 #include "BSEmcClusteringData.h"
23 #include "BSEmcPositionAlgo.h"
24 #include "BSEmcPrecluster.h"
25 
27 class BSEmcDigi;
29 class BSEmcPrecluster;
31 class TBuffer;
32 class TClass;
33 class TMemberInspector;
34 struct BSEmcClusteringData;
35 template <class T>
36 class PndContainerI;
37 template <class T>
39 
49 class BSEmcMakePreclusters : public PndProcess<BSEmcClusteringData> {
50  public:
52  virtual ~BSEmcMakePreclusters();
53 
54  virtual void SetDetectorName(const std::string &t_detectorName) /*override*/;
55  virtual void SetData(BSEmcClusteringData *t_data) /*override*/;
56  virtual void SetupParameters(const PndParameterRegister *t_paramRegister) /*override*/;
57  virtual void Process() /*override*/;
58  std::vector<BSEmcPrecluster *> Precluster(const std::vector<const BSEmcDigi *> &t_digiCont);
59 
63  void SetPositionMethod(Int_t t_method) { fPosMethod = t_method; }
64  void SetDigiPositionType(Int_t t_type) { fDigiPosType = t_type; } // select whether to use mapped or real digi position
65 
66  void SetClusteringParName(const std::string &t_parName) { fClusteringParName = t_parName; }
67  void SetClusterPropertiesParName(const std::string &t_parName) { fClusterPropertiesParName = t_parName; }
68  void SetPositionParName(const std::string &t_parName) { fPositionParName = t_parName; }
69  void SetNeighbouringRelationParName(const std::string &t_parName) { fNeighbouringRelationParName = t_parName; }
70 
71  protected:
72  virtual void FinishPreclusters(const std::vector<const BSEmcDigi *> &t_digiCont, const std::vector<BSEmcPrecluster *> &t_preclusterCont);
73  void FinishPrecluster(const std::vector<const BSEmcDigi *> &t_digiCont, BSEmcPrecluster *t_cluster);
74 
75  private:
76  PndContainerI<BSEmcDigi> *fDigiArray{nullptr};
77  PndOutputContainerI<BSEmcPrecluster> *fPreclusterArray{nullptr};
78  std::string fClusteringParName{""};
79  std::string fClusterPropertiesParName{""};
80  std::string fPositionParName{""};
81  std::string fNeighbouringRelationParName{""};
82  Double_t fDigiEnergyThreshold{-1};
83  Int_t fPosMethod{0};
84  Int_t fDigiPosType{0};
85  BSEmcCrystalPositionPar *fPositionPar{nullptr};
86  BSEmcGeoNeighbouringRelationPar *fNeighbouringRelationPar{nullptr};
87 
88  std::unique_ptr<BSEmcPositionAlgo> fPositionProcess{new BSEmcPositionAlgo};
89  Int_t evtCounter;
90  Int_t digiCounter;
91  Int_t nTotDigisPassed;
92  Int_t fNrOfDigis;
93  Int_t fNrOfEvents;
94  Int_t nPrecProg;
95  Double_t DCtotRtime;
96  Double_t DCtotCtime;
97 
98  ClassDef(BSEmcMakePreclusters, 1)
99 };
100 #endif /*BSEMCMAKEPRECLUSTERS_HH*/
Base Process class.
Definition: PndProcess.h:24
void SetClusteringParName(const std::string &t_parName)
virtual void SetData(BSEmcClusteringData *t_data)
Pass the data container ptrs to the process, and store pointers in class members. ...
represents an emc precluster, formed in the (virtual) data concentrators
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...
Helper class to calculate the cluster position.
void FinishPrecluster(const std::vector< const BSEmcDigi *> &t_digiCont, BSEmcPrecluster *t_cluster)
Online like preclustering, takes digis, sorts them into DataConcentrator and only clusters within one...
virtual ~BSEmcMakePreclusters()
Parameter for crystal positions.
virtual void Process()
The actual data transformation (digitizing, clustering, etc.) should be defined here.
void SetClusterPropertiesParName(const std::string &t_parName)
Container of addresses for data Container used by BSEmcClusteringTask and passed to Clustering Proces...
represents the reconstructed hit of one emc crystal
Definition: BSEmcDigi.h:47
virtual void FinishPreclusters(const std::vector< const BSEmcDigi *> &t_digiCont, const std::vector< BSEmcPrecluster *> &t_preclusterCont)
Interface to a datacontainer to be used in PandaROOT.
void SetPositionMethod(Int_t t_method)
virtual void SetupParameters(const PndParameterRegister *t_paramRegister)
Fetch all parameters from the PndParameterRegister.
std::vector< BSEmcPrecluster * > Precluster(const std::vector< const BSEmcDigi *> &t_digiCont)
Helper class to indirect the Parameter fetching via the FairRuntimeDb.
Neigbouring Relations based on a list of detectorIds.
void SetPositionParName(const std::string &t_parName)
void SetDigiPositionType(Int_t t_type)
void SetNeighbouringRelationParName(const std::string &t_parName)