Project
Loading...
Searching...
No Matches
TrackMFT.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
16
17#ifndef ALICEO2_MFT_TRACKMFT_H
18#define ALICEO2_MFT_TRACKMFT_H
19
20#include <vector>
21#include <TMath.h>
22#include "Math/SMatrix.h"
23
27
28namespace o2
29{
30
31namespace mft
32{
34{
36
37 public:
38 TrackMFT() = default;
39 TrackMFT(const TrackMFT& t) = default;
40 ~TrackMFT() = default;
41
42 // Track finding method
43 void setCA(Bool_t method = true) { mIsCA = method; }
44 const Bool_t isCA() const { return mIsCA; }
45 const Bool_t isLTF() const { return !mIsCA; }
46
47 // Tracking seed charge and momentum from Fast Circle Fit of clusters X,Y positions
48 void setInvQPtSeed(Double_t invqpt) { mInvQPtSeed = invqpt; }
49 const Double_t getInvQPtSeed() const { return mInvQPtSeed; } // Inverse charged pt
50 const Double_t getPtSeed() const { return TMath::Abs(1.f / getInvQPtSeed()); }
51 const Double_t getChargeSeed() const { return TMath::Sign(1., getInvQPtSeed()); }
52 void setChi2QPtSeed(Double_t chi2) { mSeedinvQPtFitChi2 = chi2; }
53 const Double_t getChi2QPtSeed() const { return mSeedinvQPtFitChi2; }
54
55 const int getNumberOfPoints() const { return mClusRef.getEntries(); } //< Get number of clusters
56
57 const int getExternalClusterIndexOffset() const { return mClusRef.getFirstEntry(); }
58
59 void setExternalClusterIndexOffset(int offset = 0) { mClusRef.setFirstEntry(offset); }
60
61 void setNumberOfPoints(int n) { mClusRef.setEntries(n); }
62
63 void print() const;
64
66 int getNDF() const { return 2 * mClusRef.getEntries() - 5; }
68 double getChi2OverNDF() const { return getTrackChi2() / getNDF(); }
69
70 const o2::track::TrackParCovFwd& getOutParam() const { return mOutParameters; }
71 void setOutParam(const o2::track::TrackParCovFwd parcov) { mOutParameters = parcov; }
72
73 void setClusterSize(int l, int size)
74 {
75 if (l >= 10) {
76 return;
77 }
78 if (size > 63) {
79 size = 63;
80 }
81
82 mClusterSizes &= ~(0x3fULL << (l * 6));
83 mClusterSizes |= (static_cast<uint64_t>(size) << (l * 6));
84 }
85
86 uint64_t getClusterSizes() const
87 {
88 return mClusterSizes;
89 }
90
91 private:
92 Bool_t mIsCA = false;
93
94 ClusRefs mClusRef;
95
96 o2::track::TrackParCovFwd mOutParameters;
97
98 Double_t mSeedinvQPtFitChi2 = 0.;
99 Double_t mInvQPtSeed;
100 uint64_t mClusterSizes = 0;
101
102 ClassDefNV(TrackMFT, 3);
103};
104
105class TrackMFTExt : public TrackMFT
106{
108 public:
109 TrackMFTExt() = default;
110 TrackMFTExt(const TrackMFTExt& t) = default;
111 ~TrackMFTExt() = default;
112 static constexpr int MaxClusters = 10;
113 using TrackMFT::TrackMFT; // inherit base constructors
114
115 int getExternalClusterIndex(int i) const { return mExtClsIndex[i]; }
116 int getExternalClusterSize(int i) const { return mExtClsSize[i]; }
117 int getExternalClusterLayer(int i) const { return mExtClsLayer[i]; }
118
119 void setExternalClusterIndex(int np, int idx)
120 {
121 mExtClsIndex[np] = idx;
122 }
123
124 void setExternalClusterSize(int np, int clsSize)
125 {
126 mExtClsSize[np] = clsSize;
127 }
128
129 void setExternalClusterLayer(int np, int clsLayer)
130 {
131 mExtClsLayer[np] = clsLayer;
132 }
133
134 protected:
135 std::array<int, MaxClusters> mExtClsIndex = {-1};
136 std::array<int, MaxClusters> mExtClsSize = {-1};
137 std::array<int, MaxClusters> mExtClsLayer = {-1};
138
140};
141} // namespace mft
142namespace framework
143{
144template <typename T>
145struct is_messageable;
146template <>
147struct is_messageable<o2::mft::TrackMFT> : std::true_type {
148};
149} // namespace framework
150} // namespace o2
151
152#endif
int32_t i
Class to refer to the 1st entry and N elements of some group in the continuous container.
Base forward track model, params only, w/o covariance.
ClassDefNV(TrackMFTExt, 1)
std::array< int, MaxClusters > mExtClsIndex
External indices of associated clusters.
Definition TrackMFT.h:135
TrackMFTExt(const TrackMFTExt &t)=default
void setExternalClusterIndex(int np, int idx)
Definition TrackMFT.h:119
void setExternalClusterLayer(int np, int clsLayer)
Definition TrackMFT.h:129
static constexpr int MaxClusters
Definition TrackMFT.h:112
int getExternalClusterIndex(int i) const
Definition TrackMFT.h:115
int getExternalClusterSize(int i) const
Definition TrackMFT.h:116
TrackMFTExt()=default
< heavy version of TrackMFT, with clusters embedded
std::array< int, MaxClusters > mExtClsSize
Cluster size.
Definition TrackMFT.h:136
std::array< int, MaxClusters > mExtClsLayer
Cluster layer.
Definition TrackMFT.h:137
void setExternalClusterSize(int np, int clsSize)
Definition TrackMFT.h:124
int getExternalClusterLayer(int i) const
Definition TrackMFT.h:117
const int getExternalClusterIndexOffset() const
Definition TrackMFT.h:57
void setCA(Bool_t method=true)
Definition TrackMFT.h:43
TrackMFT()=default
const int getNumberOfPoints() const
Definition TrackMFT.h:55
const Double_t getPtSeed() const
Definition TrackMFT.h:50
const Bool_t isLTF() const
Track found by Linear Track Finder.
Definition TrackMFT.h:45
const Bool_t isCA() const
Track found by CA algorithm.
Definition TrackMFT.h:44
double getChi2OverNDF() const
get the track normalized chi2
Definition TrackMFT.h:68
int getNDF() const
get the number of degrees of freedom of the track
Definition TrackMFT.h:66
void setClusterSize(int l, int size)
Definition TrackMFT.h:73
void setNumberOfPoints(int n)
Set number of clusters.
Definition TrackMFT.h:61
void print() const
Definition TrackMFT.cxx:29
const Double_t getInvQPtSeed() const
Definition TrackMFT.h:49
const Double_t getChargeSeed() const
Definition TrackMFT.h:51
void setOutParam(const o2::track::TrackParCovFwd parcov)
Set track out parameters.
Definition TrackMFT.h:71
void setInvQPtSeed(Double_t invqpt)
Definition TrackMFT.h:48
void setExternalClusterIndexOffset(int offset=0)
Definition TrackMFT.h:59
void setChi2QPtSeed(Double_t chi2)
Definition TrackMFT.h:52
~TrackMFT()=default
uint64_t getClusterSizes() const
Definition TrackMFT.h:86
const Double_t getChi2QPtSeed() const
Definition TrackMFT.h:53
const o2::track::TrackParCovFwd & getOutParam() const
Returns track parameters fitted outwards.
Definition TrackMFT.h:70
TrackMFT(const TrackMFT &t)=default
Double_t getTrackChi2() const
return the chi2 of the track when the associated cluster was attached
Definition TrackFwd.h:113
GLdouble n
Definition glcorearb.h:1982
GLsizeiptr size
Definition glcorearb.h:659
GLintptr offset
Definition glcorearb.h:660
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...