PandaRoot
BSEmcPositionAlgo.h
Go to the documentation of this file.
1 //****************************************************************************
2 //* This file is part of PandaRoot. *
3 //* *
4 //* PandaRoot is distributed under the terms of the *
5 //* GNU General Public License (GPL) version 3, *
6 //* copied verbatim in the file "LICENSE". *
7 //* *
8 //* Copyright (C) 2006 - 2024 FAIR GmbH and copyright holders of PandaRoot *
9 //* The copyright holders are listed in the file "COPYRIGHTHOLDERS". *
10 //* The authors are listed in the file "AUTHORS". *
11 //****************************************************************************
12 
13 #ifndef BSEMCPOSITIONALGO_HH
14 #define BSEMCPOSITIONALGO_HH
15 
16 #include <functional>
17 #include <string>
18 #include <vector>
19 
20 #include "Rtypes.h"
21 #include "RtypesCore.h"
22 #include "TString.h"
23 #include "TVector3.h"
24 
28 class BSEmcDigi;
29 class BSEmcCluster;
30 class TBuffer;
31 class TClass;
32 class TMemberInspector;
33 
51  public:
53  virtual ~BSEmcPositionAlgo();
54 
56  void SetPositionPar(const BSEmcCrystalPositionPar *t_position) { fPositionPar = t_position; }
57  virtual TVector3 CalculatePosition(const BSEmcCluster *t_cluster, const std::vector<const BSEmcDigi *> &t_digiArray) const;
58 
59  TVector3 CalculateLinearPosition(const BSEmcCluster *t_cluster, const std::vector<const BSEmcDigi *> &t_digiArray) const;
60  TVector3 CalculateGravPosition(const BSEmcCluster *t_cluster, const std::vector<const BSEmcDigi *> &t_digiArray) const;
61  TVector3 CalculateLiLoPosition(const BSEmcCluster *t_cluster, const std::vector<const BSEmcDigi *> &t_digiArray) const;
62 
63  protected:
64  BSEmcCrystalPositionData GetClusterCrystal(const BSEmcCluster *t_cluster, Double_t t_theta, Double_t t_phi) const;
65 
66  private:
67  std::vector<Double_t> fClusterPosParam{};
68  std::string fClusterPosMethod{""};
69  const BSEmcCrystalPositionPar *fPositionPar{nullptr};
70  std::function<TVector3(const BSEmcCluster *, const std::vector<const BSEmcDigi *> &)> fPositionCalculationMethod{};
71 
72  ClassDef(BSEmcPositionAlgo, 1);
73 };
74 
75 #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:66
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:59
void SetClusterPropertiesPar(const BSEmcClusterPropertiesPar *t_par)
TVector3 CalculateLinearPosition(const BSEmcCluster *t_cluster, const std::vector< const BSEmcDigi *> &t_digiArray) const