Skip to content

Commit 7aed09c

Browse files
KlewinSsawenzel
authored andcommitted
Propagate MC information through ClusterFinder (#676)
Provide MC truth information for TPC clusters; some secondary improvements * add Cluster MCLabels * fix gsl include directory * replaced BoxCluster with Cluster, additional information were never used * replaced HwCluster with Cluster, additional information were never used * removed Box-/HwCluster files * more efficient thread spawning + num threads configurable at runtime * continued Cluster MCLabels + cleaning up * fixed some compiler warnings, comparison signed/unsigned * add MC label sorting * fix macro compilation error also wrong include paths, introduced by to moving Cluster related classes into reconstruction * removed try/catch construct
1 parent f0cd2f0 commit 7aed09c

35 files changed

Lines changed: 979 additions & 1261 deletions

Detectors/TPC/reconstruction/CMakeLists.txt

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ link_directories( ${LINK_DIRECTORIES})
66

77
set(SRCS
88
src/AdcClockMonitor.cxx
9-
10-
src/BoxCluster.cxx
119
src/BoxClusterer.cxx
1210
src/Cluster.cxx
1311
src/Clusterer.cxx
@@ -16,7 +14,6 @@ set(SRCS
1614
src/GBTFrame.cxx
1715
src/GBTFrameContainer.cxx
1816
src/HalfSAMPAData.cxx
19-
src/HwCluster.cxx
2017
src/HwClusterer.cxx
2118
src/HwClusterFinder.cxx
2219
src/HwFixedPoint.cxx
@@ -31,7 +28,6 @@ set(SRCS
3128

3229
set(HEADERS
3330
include/${MODULE_NAME}/AdcClockMonitor.h
34-
include/${MODULE_NAME}/BoxCluster.h
3531
include/${MODULE_NAME}/BoxClusterer.h
3632
include/${MODULE_NAME}/Cluster.h
3733
include/${MODULE_NAME}/Clusterer.h
@@ -40,7 +36,6 @@ set(HEADERS
4036
include/${MODULE_NAME}/GBTFrame.h
4137
include/${MODULE_NAME}/GBTFrameContainer.h
4238
include/${MODULE_NAME}/HalfSAMPAData.h
43-
include/${MODULE_NAME}/HwCluster.h
4439
include/${MODULE_NAME}/HwClusterer.h
4540
include/${MODULE_NAME}/HwClusterFinder.h
4641
include/${MODULE_NAME}/HwFixedPoint.h

Detectors/TPC/reconstruction/include/TPCReconstruction/BoxCluster.h

Lines changed: 0 additions & 93 deletions
This file was deleted.

Detectors/TPC/reconstruction/include/TPCReconstruction/BoxClusterer.h

Lines changed: 41 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -18,54 +18,70 @@
1818

1919
#include "Rtypes.h"
2020
#include "TPCReconstruction/Clusterer.h"
21-
#include "TPCReconstruction/BoxCluster.h"
21+
#include "TPCReconstruction/Cluster.h"
2222
#include "TPCBase/CalDet.h"
2323

24+
#include "SimulationDataFormat/MCTruthContainer.h"
25+
#include "SimulationDataFormat/MCCompLabel.h"
26+
2427
namespace o2{
25-
28+
2629
namespace TPC {
27-
30+
2831
class ClusterContainer;
29-
32+
3033
class BoxClusterer : public Clusterer {
3134
public:
32-
BoxClusterer(std::vector<o2::TPC::BoxCluster> *output);
33-
35+
36+
/// Constructor
37+
/// \param output is pointer to vector to be filled with clusters
38+
/// \param rowsMax Max number of rows to process
39+
/// \param padsMax Max number of pads to process
40+
/// \param timeBinsMax Max number of timebins to process
41+
/// \param minQMax Minimum peak charge for cluster
42+
/// \param requirePositiveCharge Positive charge is required
43+
/// \param requireNeighbouringPad Requires at least 2 adjecent pads with charge above threshold
44+
BoxClusterer(std::vector<o2::TPC::Cluster> *output,
45+
int rowsMax = 18,
46+
int padsMax = 138,
47+
int timeBinsMax = 1024,
48+
int minQMax = 5,
49+
bool requirePositiveCharge = true,
50+
bool requireNeighbouringPad = true);
51+
3452
/// Destructor
3553
~BoxClusterer() override;
36-
37-
// Should this really be a public member?
38-
// Maybe better to just call by process
39-
void Init() override;
40-
54+
4155
/// Steer conversion of points to digits
4256
/// @param digits Container with TPC digits
57+
/// @param mcDigitTruth MC Digit Truth container
58+
/// @param eventCount event counter
4359
/// @return Container with clusters
44-
void Process(std::vector<o2::TPC::Digit> const & digits) override;
45-
void Process(std::vector<std::unique_ptr<Digit>>& digits) override;
46-
60+
void Process(std::vector<o2::TPC::Digit> const & digits, MCLabelContainer const* mcDigitTruth, int eventCount) override;
61+
void Process(std::vector<std::unique_ptr<Digit>>& digits, MCLabelContainer const* mcDigitTruth, int eventCount) override;
62+
4763
/// Set a pedestal object
4864
void setPedestals(CalPad* pedestals) { mPedestals = pedestals; }
4965

5066
private:
5167
// To be done
5268
/* BoxClusterer(const BoxClusterer &); */
5369
/* BoxClusterer &operator=(const BoxClusterer &); */
54-
70+
5571
void FindLocalMaxima(const Int_t iCRU);
5672
void CleanArrays();
5773
void GetPadAndTimeBin(Int_t bin, Short_t& iPad, Short_t& iTimeBin);
58-
Int_t Update(const Int_t iCRU, const Int_t iRow, const Int_t iPad,
74+
Int_t Update(const Int_t iCRU, const Int_t iRow, const Int_t iPad,
5975
const Int_t iTimeBin, Float_t signal);
6076
Float_t GetQ(const Float_t* adcArray, const Short_t pad,
61-
const Short_t time, Short_t& timeMin, Short_t& timeMax,
77+
const Short_t time, Short_t& timeMin, Short_t& timeMax,
6278
Short_t& padMin, Short_t& padMax) const;
63-
Bool_t UpdateCluster(Float_t charge, Int_t deltaPad, Int_t deltaTime,
64-
Float_t& qTotal, Double_t& meanPad,
65-
Double_t& sigmaPad, Double_t& meanTime,
79+
Bool_t UpdateCluster(Float_t charge, Int_t deltaPad, Int_t deltaTime,
80+
Float_t& qTotal, Double_t& meanPad,
81+
Double_t& sigmaPad, Double_t& meanTime,
6682
Double_t& sigmaTime);
67-
68-
83+
84+
6985
//
7086
// Expand buffer
7187
//
@@ -74,12 +90,12 @@ namespace o2{
7490
Int_t* mAllNSigBins; //!<! Array with number of signals in each row
7591
CalPad* mPedestals; //!<! Pedestal data
7692

77-
std::vector<o2::TPC::BoxCluster>* mClusterArray; ///< Internal cluster storage
78-
93+
std::vector<o2::TPC::Cluster>* mClusterArray; ///< Internal cluster storage
94+
7995
ClassDefNV(BoxClusterer, 1);
8096
};
8197
}
8298
}
8399

84100

85-
#endif
101+
#endif

Detectors/TPC/reconstruction/include/TPCReconstruction/Clusterer.h

Lines changed: 37 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,24 @@
1717
#include <vector>
1818
#include <memory>
1919

20-
#include "TPCReconstruction/ClusterContainer.h"
20+
#include "SimulationDataFormat/MCTruthContainer.h"
21+
#include "SimulationDataFormat/MCCompLabel.h"
2122

2223
namespace o2{
2324
namespace TPC {
24-
25+
2526
class Digit;
2627

2728
/// \class Clusterer
2829
/// \brief Base Class for TPC clusterer
2930
class Clusterer {
31+
protected:
32+
using MCLabelContainer = o2::dataformats::MCTruthContainer<o2::MCCompLabel>;
33+
3034
public:
3135

3236
/// Default Constructor
33-
Clusterer();
37+
Clusterer() = delete;
3438

3539
/// Constructor
3640
/// \param rowsMax Max number of rows to process
@@ -39,20 +43,24 @@ class Clusterer {
3943
/// \param minQMax Minimum peak charge for cluster
4044
/// \param requirePositiveCharge Positive charge is required
4145
/// \param requireNeighbouringPad Requires at least 2 adjecent pads with charge above threshold
42-
Clusterer(int rowsMax, int padsMax, int timeBinsMax, int minQMax,
43-
bool requirePositiveCharge, bool requireNeighbouringPad);
44-
46+
Clusterer(
47+
int rowsMax = 18,
48+
int padsMax = 138,
49+
int timeBinsMax = 1024,
50+
int minQMax = 5,
51+
bool requirePositiveCharge = true,
52+
bool requireNeighbouringPad = true);
53+
4554
/// Destructor
4655
virtual ~Clusterer() = default;
47-
48-
/// Initialization function for clusterer
49-
virtual void Init() = 0;
50-
56+
5157
/// Processing all digits
5258
/// \param digits Container with TPC digits
59+
/// \param mcDigitTruth MC Digit Truth container
60+
/// \param eventCount event counter
5361
/// \return Container with clusters
54-
virtual void Process(std::vector<o2::TPC::Digit> const &digits) = 0;
55-
virtual void Process(std::vector<std::unique_ptr<Digit>>& digits) = 0;
62+
virtual void Process(std::vector<o2::TPC::Digit> const &digits, MCLabelContainer const* mcDigitTruth, int eventCount) = 0;
63+
virtual void Process(std::vector<std::unique_ptr<Digit>>& digits, MCLabelContainer const* mcDigitTruth, int eventCount) = 0;
5664

5765
void setRowsMax(int val) { mRowsMax = val; };
5866
void setPadsMax(int val) { mPadsMax = val; };
@@ -67,20 +75,31 @@ class Clusterer {
6775
float getMinQMax() const { return mMinQMax; };
6876
bool hasRequirePositiveCharge() const { return mRequirePositiveCharge; };
6977
bool hasRequireNeighbouringPad() const { return mRequireNeighbouringPad; };
70-
78+
7179
protected:
72-
73-
80+
7481
int mRowsMax; ///< Maximum row number
7582
int mPadsMax; ///< Maximum pad number
7683
int mTimeBinsMax; ///< Maximum time bin
7784
float mMinQMax; ///< Minimun Qmax for cluster
7885
bool mRequirePositiveCharge; ///< If true, require charge > 0
7986
bool mRequireNeighbouringPad; ///< If true, require 2+ pads minimum
80-
81-
};
87+
88+
};
89+
90+
//________________________________________________________________________
91+
inline Clusterer::Clusterer(int rowsMax, int padsMax, int timeBinsMax, int minQMax,
92+
bool requirePositiveCharge, bool requireNeighbouringPad)
93+
: mRowsMax(rowsMax)
94+
, mPadsMax(padsMax)
95+
, mTimeBinsMax(timeBinsMax)
96+
, mMinQMax(minQMax)
97+
, mRequirePositiveCharge(requirePositiveCharge)
98+
, mRequireNeighbouringPad(requireNeighbouringPad)
99+
{}
100+
82101
}
83102
}
84103

85104

86-
#endif
105+
#endif

0 commit comments

Comments
 (0)