Skip to content

Commit 5a3a97b

Browse files
authored
Tracking mode "cosmics" for the CM tracker (#7195)
* run_trac_its.C: read several entries from the clusters' tree * Little fixes in the DisplayEventsComp.C * Allowing for larger impact parameters * Allow for short tracks * Making the tracking parameters settable * A set of parameters for mis-aligned cosmic tracking * Tracking mode "cosmics" for the CookedTracker * Adding braces
1 parent a1bb060 commit 5a3a97b

8 files changed

Lines changed: 199 additions & 92 deletions

File tree

Detectors/ITSMFT/ITS/macros/EVE/DisplayEventsComp.C

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,8 @@ void Data::loadClusters(int entry)
171171
int first = 0, last = mClusterBuffer->size();
172172
if (!mClustersROF->empty()) {
173173
auto rof = (*mClustersROF)[entry];
174+
auto ir = rof.getBCData();
175+
std::cout << "Orbit: " << ir.orbit << " BC: " << ir.bc << '\n';
174176
first = rof.getFirstEntry();
175177
last = first + rof.getNEntries();
176178
}
@@ -335,8 +337,12 @@ TEveElement* Data::getEveTracks()
335337
for (const auto& rec : mTracks) {
336338
std::array<float, 3> p;
337339
rec.getPxPyPzGlo(p);
340+
std::array<float, 3> v;
341+
rec.getXYZGlo(v);
338342
TEveRecTrackD t;
339343
t.fP = {p[0], p[1], p[2]};
344+
t.fV = {v[0], v[1], v[2]};
345+
//t.fV = {v[0] - p[0] / p[1] * v[1], 0, v[2] - p[2] / p[1] * v[1]};
340346
t.fSign = (rec.getSign() < 0) ? -1 : 1;
341347
TEveTrack* track = new TEveTrack(&t, prop);
342348
track->SetLineColor(kMagenta);
@@ -421,6 +427,12 @@ void load(int entry, int chip)
421427
evdata.displayData(entry, chip);
422428
}
423429

430+
void load(int tf, int trigger, int chip)
431+
{
432+
evdata.loadTF(tf);
433+
load(trigger, chip);
434+
}
435+
424436
void init(int tf, int trigger, int chip,
425437
std::string digifile = "itsdigits.root",
426438
bool rawdata = false,

Detectors/ITSMFT/ITS/reconstruction/include/ITSReconstruction/CookedTracker.h

Lines changed: 58 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@
3030
#include "DataFormatsITSMFT/ROFRecord.h"
3131
#include "ReconstructionDataFormats/Vertex.h"
3232

33+
using Point3Df = o2::math_utils::Point3D<float>;
34+
3335
namespace o2
3436
{
3537
class MCCompLabel;
@@ -57,6 +59,37 @@ class CookedTracker
5759
CookedTracker& operator=(const CookedTracker& tr) = delete;
5860
~CookedTracker() = default;
5961

62+
void setParameters(const std::vector<float>& par)
63+
{
64+
gzWin = par[0];
65+
gminPt = par[1];
66+
gmaxDCAxy = par[3];
67+
gmaxDCAz = par[4];
68+
gSeedingLayer1 = par[5];
69+
gSeedingLayer2 = par[6];
70+
gSeedingLayer3 = par[7];
71+
gSigma2 = par[8];
72+
gmaxChi2PerCluster = par[9];
73+
gmaxChi2PerTrack = par[10];
74+
gRoadY = par[11];
75+
gRoadZ = par[12];
76+
gminNumberOfClusters = par[13];
77+
}
78+
void setParametersCosmics()
79+
{
80+
// seed "windows" in z and phi: makeSeeds
81+
gzWin = 84.; // length of the L3
82+
gminPt = 10.;
83+
// Maximal accepted impact parameters for the seeds
84+
gmaxDCAxy = 19.4; // radius of the L3
85+
gmaxDCAz = 42.; // half-lenght of the L3
86+
// Space point resolution
87+
gSigma2 = 0.2 * 0.2;
88+
// Tracking "road" from layer to layer
89+
gRoadY = 1.5; // Chip size in Y
90+
gRoadZ = 3.0; // Chip size in Z
91+
}
92+
6093
void setVertices(const std::vector<Vertex>& vertices)
6194
{
6295
mVertices = &vertices;
@@ -110,7 +143,7 @@ class CookedTracker
110143
void setContinuousMode(bool mode) { mContinuousMode = mode; }
111144
bool getContinuousMode() { return mContinuousMode; }
112145

113-
static void setMostProbalePt(float pt) { mMostProbablePt = pt; }
146+
static void setMostProbablePt(float pt) { mMostProbablePt = pt; }
114147
static auto getMostProbablePt() { return mMostProbablePt; }
115148

116149
// internal helper classes
@@ -124,6 +157,7 @@ class CookedTracker
124157
std::tuple<int, int> processLoadedClusters(TrackInserter& inserter);
125158

126159
std::vector<TrackITSExt> trackInThread(Int_t first, Int_t last);
160+
o2::its::TrackITSExt cookSeed(const Point3Df& r1, Point3Df& r2, const Point3Df& tr3, float rad2, float rad3, float_t alpha, float_t bz);
127161
void makeSeeds(std::vector<TrackITSExt>& seeds, Int_t first, Int_t last);
128162
void trackSeeds(std::vector<TrackITSExt>& seeds);
129163

@@ -133,6 +167,29 @@ class CookedTracker
133167
bool makeBackPropParam(TrackITSExt& track) const;
134168

135169
private:
170+
/*** Tracking parameters ***/
171+
// seed "windows" in z and phi: makeSeeds
172+
static Float_t gzWin;
173+
static Float_t gminPt;
174+
static Float_t mMostProbablePt; ///< settable most probable pt
175+
// Maximal accepted impact parameters for the seeds
176+
static Float_t gmaxDCAxy;
177+
static Float_t gmaxDCAz;
178+
// Layers for the seeding
179+
static Int_t gSeedingLayer1;
180+
static Int_t gSeedingLayer2;
181+
static Int_t gSeedingLayer3;
182+
// Space point resolution
183+
static Float_t gSigma2;
184+
// Max accepted chi2
185+
static Float_t gmaxChi2PerCluster;
186+
static Float_t gmaxChi2PerTrack;
187+
// Tracking "road" from layer to layer
188+
static Float_t gRoadY;
189+
static Float_t gRoadZ;
190+
// Minimal number of attached clusters
191+
static Int_t gminNumberOfClusters;
192+
136193
bool mContinuousMode = true; ///< triggered or cont. mode
137194
const o2::its::GeometryTGeo* mGeom = nullptr; /// interface to geometry
138195
const o2::dataformats::MCTruthContainer<o2::MCCompLabel>* mClsLabels = nullptr; /// Cluster MC labels
@@ -157,8 +214,6 @@ class CookedTracker
157214

158215
std::vector<Cluster> mClusterCache;
159216

160-
static float mMostProbablePt; ///< settable most probable pt
161-
162217
ClassDefNV(CookedTracker, 1);
163218
};
164219

0 commit comments

Comments
 (0)