16#ifndef ALICEO2_ITS_COOKEDTRACKER_H
17#define ALICEO2_ITS_COOKEDTRACKER_H
46class TopologyDictionary;
66 LOG(info) <<
" Setting configurable parameters...";
70 gmaxDCAxy = par.maxDCAxy;
71 gmaxDCAz = par.maxDCAz;
72 gSigma2 = par.sigma * par.sigma;
75 gminNumberOfClusters = par.minNumberOfClusters;
83 gSeedingLayer1 = par[5];
84 gSeedingLayer2 = par[6];
85 gSeedingLayer3 = par[7];
86 gSigma2 = par[8] * par[8];
87 gmaxChi2PerCluster = par[9];
88 gmaxChi2PerTrack = par[10];
91 gminNumberOfClusters = par[13];
110 mVertices = &vertices;
113 Double_t
getX()
const {
return mX; }
114 Double_t
getY()
const {
return mY; }
115 Double_t
getZ()
const {
return mZ; }
121 Double_t
getBz()
const;
122 void setBz(Double_t bz) { mBz = bz; }
129 template <
typename U,
typename V>
134 auto& trackNew = tracks.emplace_back(t);
135 int noc = t.getNumberOfClusters();
136 int clEntry = clusIdx.size();
137 for (
int i = 0;
i < noc;
i++) {
139 Int_t idx =
c - &mClusterCache[0];
140 clusIdx.emplace_back(this->mFirstInFrame + idx);
142 trackNew.setClusterRefs(clEntry, noc);
143 trackNew.setPattern(0x7f);
144 return tracks.size();
154 mClsLabels = clsLabels;
155 mTrkLabels = trkLabels;
176 void makeSeeds(std::vector<TrackITSExt>& seeds, Int_t
first, Int_t last);
177 void trackSeeds(std::vector<TrackITSExt>& seeds);
189 static Float_t mMostProbablePt;
194 static Int_t gSeedingLayer1;
195 static Int_t gSeedingLayer2;
196 static Int_t gSeedingLayer3;
200 static Float_t gmaxChi2PerCluster;
201 static Float_t gmaxChi2PerTrack;
206 static Int_t gminNumberOfClusters;
208 bool mContinuousMode =
true;
211 std::vector<o2::MCCompLabel>* mTrkLabels =
nullptr;
212 std::uint32_t mFirstInFrame = 0;
218 const std::vector<Vertex>* mVertices =
nullptr;
223 Double_t mSigmaX = 2.;
224 Double_t mSigmaY = 2.;
225 Double_t mSigmaZ = 2.;
228 std::vector<TrackITSExt> mSeeds;
230 std::vector<Cluster> mClusterCache;
Definition of the GeometryTGeo class.
Definition of the ITS track.
static const CookedConfigParam & Instance()
std::vector< Float_t > mPhi
cluster phi
const o2::its::GeometryTGeo * mGeom
interface to geometry
Layer & operator=(const Layer &tr)=delete
Int_t getNumberOfClusters() const
Int_t findClusterIndex(Float_t z) const
Float_t mR
mean radius of this layer
void selectClusters(std::vector< Int_t > &s, Float_t phi, Float_t dy, Float_t z, Float_t dz)
Float_t getAlphaRef(Int_t i) const
Layer(const Layer &)=delete
void setGeometry(o2::its::GeometryTGeo *geom)
Float_t getClusterPhi(Int_t i) const
const Cluster * getCluster(Int_t i) const
std::vector< const Cluster * > mClusters
All clusters.
std::vector< Float_t > mAlphaRef
alpha of the reference plane
Bool_t insertCluster(const Cluster *c)
std::vector< std::pair< int, float > > mSectors[kNSectors]
Cluster indices sector-by-sector.
void makeSeeds(std::vector< TrackITSExt > &seeds, Int_t first, Int_t last)
void process(gsl::span< const CompClusterExt > clusters, gsl::span< const unsigned char >::iterator &it, const o2::itsmft::TopologyDictionary *dict, U &tracks, V &clusIdx, o2::itsmft::ROFRecord &rof)
void setGeometry(o2::its::GeometryTGeo *geom)
Double_t getSigmaX() const
void setContinuousMode(bool mode)
std::tuple< int, int > processLoadedClusters(TrackInserter &inserter)
CookedTracker(const CookedTracker &)=delete
void setParameters(const std::vector< float > &par)
o2::its::TrackITSExt cookSeed(const Point3Df &r1, Point3Df &r2, const Point3Df &tr3, float rad2, float rad3, float_t alpha, float_t bz)
Double_t getSigmaY() const
std::function< int(const TrackITSExt &t)> TrackInserter
void setParametersCosmics()
void makeBackPropParam(std::vector< TrackITSExt > &seeds) const
Double_t getSigmaZ() const
void setExternalIndices(TrackITSExt &t) const
void setMCTruthContainers(const o2::dataformats::MCTruthContainer< o2::MCCompLabel > *clsLabels, std::vector< o2::MCCompLabel > *trkLabels)
void trackSeeds(std::vector< TrackITSExt > &seeds)
Int_t getNumberOfThreads() const
CookedTracker & operator=(const CookedTracker &tr)=delete
static void setMostProbablePt(float pt)
std::vector< TrackITSExt > trackInThread(Int_t first, Int_t last)
void process(gsl::span< const CompClusterExt > const &clusters, gsl::span< const unsigned char >::iterator &it, const o2::itsmft::TopologyDictionary *dict, TrackInserter &inserter, o2::itsmft::ROFRecord &rof)
void setNumberOfThreads(Int_t n)
static auto getMostProbablePt()
const Cluster * getCluster(Int_t index) const
static constexpr int kNLayers
o2::MCCompLabel cookLabel(TrackITSExt &t, Float_t wrong) const
Bool_t attachCluster(Int_t &volID, Int_t nl, Int_t ci, TrackITSExt &t, const TrackITSExt &o) const
void setVertices(const std::vector< Vertex > &vertices)
Cluster class for the ITSMFT.
GLfloat GLfloat GLfloat alpha
GLdouble GLdouble GLdouble z
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
LOG(info)<< "Compressed in "<< sw.CpuTime()<< " s"
std::vector< Cluster > clusters