22#include <unordered_set>
25#include "MFTBase/GeometryTGeo.h"
49 auto nClusters = clusters_in_frame.size();
62 for (
auto&
c : clusters_in_frame) {
63 auto sensorID =
c.getSensorID();
65 auto pattID =
c.getPatternID();
92 Float_t rCoord = clsPoint2D.R();
93 Float_t phiCoord = clsPoint2D.Phi();
97 int binIndex = tracker->
getBinIndex(rBinIndex, phiBinIndex);
98 event.addClusterToLayer(
layer, gloXYZ.x(), gloXYZ.y(), gloXYZ.z(), phiCoord, rCoord,
event.getClustersInLayer(
layer).size(), binIndex, sigmaX2, sigmaY2, sensorID);
102 event.addClusterExternalIndexToLayer(
layer,
first + clusterId);
112 gsl::span<const unsigned char>::iterator& pattIt,
120 auto chipID =
c.getChipID();
121 auto pattID =
c.getPatternID();
123 float sigmaX2 = DefClusError2Row, sigmaY2 = DefClusError2Col;
141 auto& cl3d =
output.emplace_back(
c.getSensorID(), gloXYZ);
142 cl3d.setErrors(sigmaX2, sigmaY2, 0);
General auxilliary methods.
Definition of the ITSMFT compact cluster.
Load pulled clusters, for a given read-out-frame, in a dedicated container.
Definition of a container to keep Monte Carlo truth external to simulation objects.
static const MFTTrackingParam & Instance()
const Mat3D & getMatrixL2G(int sensID) const
int getNPixels() const
Returns the number of fired pixels.
static constexpr unsigned short InvalidPatternID
const BCData & getBCData() const
gsl::span< const T > getROFData(const gsl::span< const T > tfdata) const
int getFirstEntry() const
math_utils::Point3D< T > getClusterCoordinates(const CompCluster &cl) const
float getErr2X(int n) const
Returns the error^2 on the x position of the COG for the n_th element.
int getNpixels(int n) const
Returns the number of fired pixels of the n_th element.
bool isGroup(int n) const
Returns true if the element corresponds to a group of rare topologies.
float getErr2Z(int n) const
Returns the error^2 on the z position of the COG for the n_th element.
void fillMatrixCache(Int_t mask) override
Int_t getLayer(Int_t index) const
get layer index (0:9) from the chip index
static GeometryTGeo * Instance()
const Int_t getBinIndex(const Int_t rIndex, const Int_t phiIndex) const
const Int_t getPhiBinIndex(const Float_t phi) const
const Int_t getRBinIndex(const Float_t r, const Int_t layer) const
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter
GLenum GLuint GLint GLint layer
void bringTo02PiGen(float &phi)
void convertCompactClusters(gsl::span< const itsmft::CompClusterExt > clusters, gsl::span< const unsigned char >::iterator &pattIt, std::vector< o2::BaseCluster< float > > &output, const itsmft::TopologyDictionary *dict)
convert compact clusters to 3D spacepoints into std::vector<o2::BaseCluster<float>>
constexpr float DefClusError2Col
constexpr float DefClusError2Row
int loadROFrameData(const o2::itsmft::ROFRecord &rof, ROframe< T > &events, gsl::span< const itsmft::CompClusterExt > clusters, gsl::span< const unsigned char >::iterator &pattIt, const itsmft::TopologyDictionary *dict, const dataformats::MCTruthContainer< MCCompLabel > *mClsLabels=nullptr, const o2::mft::Tracker< T > *tracker=nullptr)
std::function< bool(const ROFRecord &)> ROFFilter
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
uint16_t bc
bunch crossing ID of interaction
LOG(info)<< "Compressed in "<< sw.CpuTime()<< " s"
std::vector< Cluster > clusters