PandaRoot
BSEmcPositionAlgo.h
Go to the documentation of this file.
1 #ifndef BSEMCPOSITIONALGO_HH
2 #define BSEMCPOSITIONALGO_HH
3 
4 #include <functional>
5 #include <string>
6 #include <vector>
7 
8 #include "Rtypes.h"
9 #include "RtypesCore.h"
10 #include "TString.h"
11 #include "TVector3.h"
12 
16 class BSEmcDigi;
17 class BSEmcCluster;
18 class TBuffer;
19 class TClass;
20 class TMemberInspector;
21 
39  public:
41  virtual ~BSEmcPositionAlgo();
42 
44  void SetPositionPar(const BSEmcCrystalPositionPar *t_position) { fPositionPar = t_position; }
45  virtual TVector3 CalculatePosition(const BSEmcCluster *t_cluster, const std::vector<const BSEmcDigi *> &t_digiArray) const;
46 
47  TVector3 CalculateLinearPosition(const BSEmcCluster *t_cluster, const std::vector<const BSEmcDigi *> &t_digiArray) const;
48  TVector3 CalculateGravPosition(const BSEmcCluster *t_cluster, const std::vector<const BSEmcDigi *> &t_digiArray) const;
49  TVector3 CalculateLiLoPosition(const BSEmcCluster *t_cluster, const std::vector<const BSEmcDigi *> &t_digiArray) const;
50 
51  protected:
52  BSEmcCrystalPositionData GetClusterCrystal(const BSEmcCluster *t_cluster, Double_t t_theta, Double_t t_phi) const;
53 
54  private:
55  std::vector<Double_t> fClusterPosParam{};
56  std::string fClusterPosMethod{""};
57  const BSEmcCrystalPositionPar *fPositionPar{nullptr};
58  std::function<TVector3(const BSEmcCluster *, const std::vector<const BSEmcDigi *> &)> fPositionCalculationMethod{};
59 
60  ClassDef(BSEmcPositionAlgo, 1);
61 };
62 
63 #endif /*BSEMCPOSITIONALGO_HH*/
virtual ~BSEmcPositionAlgo()
void SetPositionPar(const BSEmcCrystalPositionPar *t_position)
Container for clusterproperties such as Position.
virtual TVector3 CalculatePosition(const BSEmcCluster *t_cluster, const std::vector< const BSEmcDigi *> &t_digiArray) const
Helper class to calculate the cluster position.
TVector3 CalculateLiLoPosition(const BSEmcCluster *t_cluster, const std::vector< const BSEmcDigi *> &t_digiArray) const
Struct containing crystal position data.
TVector3 CalculateGravPosition(const BSEmcCluster *t_cluster, const std::vector< const BSEmcDigi *> &t_digiArray) const
a cluster (group of neighboring crystals) of hit emc crystals
Definition: BSEmcCluster.h:54
Parameter for crystal positions.
BSEmcCrystalPositionData GetClusterCrystal(const BSEmcCluster *t_cluster, Double_t t_theta, Double_t t_phi) const
represents the reconstructed hit of one emc crystal
Definition: BSEmcDigi.h:47
void SetClusterPropertiesPar(const BSEmcClusterPropertiesPar *t_par)
TVector3 CalculateLinearPosition(const BSEmcCluster *t_cluster, const std::vector< const BSEmcDigi *> &t_digiArray) const