-
Notifications
You must be signed in to change notification settings - Fork 494
Expand file tree
/
Copy pathFastMultEst.h
More file actions
66 lines (54 loc) · 2.36 KB
/
FastMultEst.h
File metadata and controls
66 lines (54 loc) · 2.36 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
// All rights not expressly granted are reserved.
//
// This software is distributed under the terms of the GNU General Public
// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
//
// In applying this license CERN does not waive the privileges and immunities
// granted to it by virtue of its status as an Intergovernmental Organization
// or submit itself to any jurisdiction.
#ifndef ALICEO2_ITS3_FASTMULTEST_
#define ALICEO2_ITS3_FASTMULTEST_
#include "ITSMFTReconstruction/ChipMappingITS.h"
#include "DataFormatsITSMFT/ROFRecord.h"
#include "DataFormatsITS3/CompCluster.h"
#include <DataFormatsITSMFT/PhysTrigger.h>
#include "ITS3Reconstruction/FastMultEstConfig.h"
#include <gsl/span>
#include <array>
namespace o2
{
namespace its3
{
struct FastMultEst {
static constexpr int NLayers = o2::itsmft::ChipMappingITS::NLayers;
float mult = 0.; /// estimated signal clusters multipliciy at reference (1st?) layer
float noisePerChip = 0.; /// estimated or imposed noise per chip
float cov[3] = {0.}; /// covariance matrix of estimation
float chi2 = 0.; /// chi2
int nLayersUsed = 0; /// number of layers actually used
uint32_t lastRandomSeed = 0; /// state of the gRandom before
std::array<int, NLayers> nClPerLayer{0}; // measured N Cl per layer selectROFs
FastMultEst();
static uint32_t getCurrentRandomSeed();
int selectROFs(const gsl::span<const o2::itsmft::ROFRecord> rofs, const gsl::span<const o2::itsmft::CompClusterExt> clus,
const gsl::span<const o2::itsmft::PhysTrigger> trig, std::vector<bool>& sel);
void fillNClPerLayer(const gsl::span<const o2::itsmft::CompClusterExt>& clusters);
float process(const std::array<int, NLayers> ncl)
{
return FastMultEstConfig::Instance().imposeNoisePerChip > 0 ? processNoiseImposed(ncl) : processNoiseFree(ncl);
}
float processNoiseFree(const std::array<int, NLayers> ncl);
float processNoiseImposed(const std::array<int, NLayers> ncl);
float process(const gsl::span<const o2::itsmft::CompClusterExt>& clusters)
{
fillNClPerLayer(clusters);
return process(nClPerLayer);
}
static bool sSeedSet;
ClassDefNV(FastMultEst, 1);
};
} // namespace its3
} // namespace o2
#endif