PandaRoot
BSEmcOutOfClusterCorrectionProcess.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 BSEMCOUTOFCLUSTERCORRECTIONPROCESS_HH
14 #define BSEMCOUTOFCLUSTERCORRECTIONPROCESS_HH
15 
16 #include <string>
17 #include <vector>
18 
19 #include "Rtypes.h"
20 #include "RtypesCore.h"
21 
22 #include "PndContainerI.h"
23 #include "PndParameterRegister.h"
24 #include "PndProcess.h"
25 
26 class FairParGenericSet;
27 class BSEmcCluster;
28 class BSEmcRecoHit;
29 class BSEmcClusteringPar;
31 class TBuffer;
32 class TClass;
33 class TMemberInspector;
34 struct BSEmcClusteringData;
35 template <class T>
37 
47  public:
50  virtual void SetDetectorName(const std::string &t_detectorName) /*override*/;
51  virtual void SetupParameters(const PndParameterRegister *t_parameterRegister) /*override*/;
52  virtual void RequestDataContainer(PndContainerRegister *t_register) /*override*/;
53  virtual void GetDataContainer(PndContainerRegister *t_register) /*override*/;
54  virtual void Process() /*override*/;
55  void CorrectingRecoHitsForLossOfLowEnergyCluster(const std::vector<const BSEmcCluster *> &t_clusterCont, const std::vector<BSEmcRecoHit *> &t_recoHitsCont) const;
56  void SetClusteringParName(const std::string &t_parName) { fClusteringParName = t_parName; }
57 
58  void SetClusterBranchName(const TString &t_branchname) { fClusterBranchname = t_branchname; }
59  void SetRecoHitBranchName(const TString &t_branchname) { fRecoHitBranchname = t_branchname; }
60 
61  private:
62  void UpdateNearestRecoHitEnergies(const BSEmcCluster *t_cluster, std::vector<BSEmcRecoHit *> &t_nearestHits) const;
63  std::vector<BSEmcRecoHit *> FindClosestRecoHits(const BSEmcCluster *t_cluster, const std::vector<BSEmcRecoHit *> &t_recoHitsCont) const;
64 
65  private:
66  TString fClusterBranchname{""};
67  TString fRecoHitBranchname{""};
68 
69  PndContainerI<BSEmcCluster> *fClusterArray{nullptr};
70  PndMutableContainerI<BSEmcRecoHit> *fRecoHitArray{nullptr};
71  std::string fClusteringParName{""};
72 
73  Double_t fSearchConeAngle{0};
74  Double_t fMinClusterEnergy{0};
75  Double_t fClusterActiveTime{0};
77 };
78 
79 #endif /*BSEMCOUTOFCLUSTERCORRECTIONPROCESS_HH*/
Base Process class.
Definition: PndProcess.h:36
Resembles/Contains all information a particle hitting the EMC can provide for later use in the PID st...
Definition: BSEmcRecoHit.h:43
Container for clustering parameter.
void SetClusteringParName(const std::string &t_parName)
void CorrectingRecoHitsForLossOfLowEnergyCluster(const std::vector< const BSEmcCluster *> &t_clusterCont, const std::vector< BSEmcRecoHit *> &t_recoHitsCont) const
virtual void RequestDataContainer(PndContainerRegister *t_register)
Pass the container register to the process, and get the processes container requirements.
void SetRecoHitBranchName(const TString &t_branchname)
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 GetDataContainer(PndContainerRegister *t_register)
Pass the container register to the process, and set the processes container requirements.
void SetClusterBranchName(const TString &t_branchname)
a cluster (group of neighboring crystals) of hit emc crystals
Definition: BSEmcCluster.h:66
Each low energetic cluster the closest BSEmcRecoHits are searched for and its energy is split between...
virtual void SetupParameters(const PndParameterRegister *t_parameterRegister)
Fetch all parameters from the PndParameterRegister.
Interface to a datacontainer to be used in PandaROOT.
Helper class to indirect the Parameter fetching via the FairRuntimeDb.
virtual void Process()
The actual data transformation (digitizing, clustering, etc.) should be defined here.