Project
Loading...
Searching...
No Matches
Clusterer.h
Go to the documentation of this file.
1// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
2// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3// All rights not expressly granted are reserved.
4//
5// This software is distributed under the terms of the GNU General Public
6// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7//
8// In applying this license CERN does not waive the privileges and immunities
9// granted to it by virtue of its status as an Intergovernmental Organization
10// or submit itself to any jurisdiction.
11
14#ifndef ALICEO2_CPV_CLUSTERER_H
15#define ALICEO2_CPV_CLUSTERER_H
21
22namespace o2
23{
24namespace cpv
25{
26
28{
29 public:
30 Clusterer() = default;
31 ~Clusterer() = default;
32
33 void initialize();
34 void process(gsl::span<const Digit> digits, gsl::span<const TriggerRecord> dtr,
36 std::vector<Cluster>* clusters, std::vector<TriggerRecord>* trigRec,
38 std::vector<Digit>* calibDigits);
39
40 void makeClusters(gsl::span<const Digit> digits);
41 void evalCluProperties(gsl::span<const Digit> digits, std::vector<Cluster>* clusters,
44
45 float responseShape(float dx, float dz); // Parameterization of EM shower
46 void propagateMC(bool toRun = true) { mRunMC = toRun; }
47
48 void makeUnfoldingsAndCalibDigits(gsl::span<const Digit> digits, std::vector<Digit>* calibDigits); // Find and unfold clusters with few local maxima
49 void makeCalibDigits(std::vector<Digit>* calibDigits); // Find clusters with 1 local maximum and make calibDigits using them
50 void unfoldOneCluster(FullCluster& iniClu, char nMax, gsl::span<int> digitId, gsl::span<const Digit> digits);
51
52 protected:
53 static constexpr short NLMMax = 10;
54
55 bool mRunMC = false;
58 std::vector<FullCluster> mClusters;
59 std::vector<Digit> mDigits;
60
61 std::vector<std::vector<float>> meInClusters = std::vector<std::vector<float>>(10, std::vector<float>(NLMMax));
62 std::vector<std::vector<float>> mfij = std::vector<std::vector<float>>(10, std::vector<float>(NLMMax));
63};
64} // namespace cpv
65} // namespace o2
66
67#endif
Definition of a container to keep Monte Carlo truth external to simulation objects.
void unfoldOneCluster(FullCluster &iniClu, char nMax, gsl::span< int > digitId, gsl::span< const Digit > digits)
static constexpr short NLMMax
maximal number of local maxima in cluster
Definition Clusterer.h:53
void makeCalibDigits(std::vector< Digit > *calibDigits)
std::vector< Digit > mDigits
vector of transient digits for cell processing
Definition Clusterer.h:59
std::vector< std::vector< float > > mfij
Definition Clusterer.h:62
void propagateMC(bool toRun=true)
Definition Clusterer.h:46
~Clusterer()=default
void makeClusters(gsl::span< const Digit > digits)
Definition Clusterer.cxx:83
void evalCluProperties(gsl::span< const Digit > digits, std::vector< Cluster > *clusters, const o2::dataformats::MCTruthContainer< o2::MCCompLabel > *dmc, o2::dataformats::MCTruthContainer< o2::MCCompLabel > *cluMC)
std::vector< FullCluster > mClusters
internal vector of clusters
Definition Clusterer.h:58
void makeUnfoldingsAndCalibDigits(gsl::span< const Digit > digits, std::vector< Digit > *calibDigits)
std::vector< std::vector< float > > meInClusters
Definition Clusterer.h:61
float responseShape(float dx, float dz)
int mLastDigitInEvent
Range of digits from one event.
Definition Clusterer.h:57
int mFirstDigitInEvent
Range of digits from one event.
Definition Clusterer.h:56
bool mRunMC
Process MC info.
Definition Clusterer.h:55
CPV cluster implementation.
Definition FullCluster.h:28
A container to hold and manage MC truth information/labels.
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
std::vector< Cluster > clusters
std::vector< Digit > digits