CbmRoot
Station4D.h
Go to the documentation of this file.
1 /*
2  * To change this license header, choose License Headers in Project Properties.
3  * To change this template file, choose Tools | Templates
4  * and open the template in the editor.
5  */
6 
7 /*
8  * File: Station4D.h
9  * Author: tablyaz
10  *
11  * Created on August 7, 2017, 2:08 PM
12  */
13 
14 #ifndef STATION4D_H
15 #define STATION4D_H
16 
17 #include "Station.h"
18 
20 public:
22  Double_t minZ,
23  Double_t maxZ,
24  int nofZBins,
25  int nofYBins,
26  int nofXBins,
27  int nofTBins)
28  : CbmBinnedStation(stationType, minZ, maxZ, nofYBins, nofXBins, nofTBins)
29  , fZBins(reinterpret_cast<CbmZBin*>(
30  new unsigned char[nofZBins * sizeof(CbmZBin)]))
31  , fNofZBins(nofZBins)
32  , fZBinSize(0)
33  , fDtx(0)
34  , fDtxSq(0)
35  , fDty(0)
36  , fDtySq(0) {
37  for (int i = 0; i < nofZBins; ++i)
38  new (&fZBins[i]) CbmZBin(nofYBins, nofXBins, nofTBins);
39  }
40 
41  void SetDtx(Double_t v) {
42  if (v > fDtx) {
43  fDtx = v;
44  fDtxSq = v * v;
45  }
46  }
47 
48  void SetDty(Double_t v) {
49  if (v > fDty) {
50  fDty = v;
51  fDtySq = v * v;
52  }
53  }
54 
55  void Clear() {
56  fDtx = 0;
57  fDtxSq = 0;
58  fDty = 0;
59  fDtySq = 0;
61 
62  for (int i = 0; i < fNofZBins; ++i) {
63  CbmZBin& zBin = fZBins[i];
64  zBin.SetUse(false);
65 
66  for (int j = 0; j < fNofYBins; ++j) {
67  CbmYBin& yBin = zBin[j];
68  yBin.SetUse(false);
69 
70  for (int k = 0; k < fNofXBins; ++k) {
71  CbmXBin& xBin = yBin[k];
72  xBin.SetUse(false);
73 
74  for (int l = 0; l < fNofTBins; ++l) {
75  CbmTBin& tBin = xBin[l];
76  tBin.SetUse(false);
77  tBin.Clear();
78  }
79  }
80  }
81  }
82  }
83 
84  void AddHit(ECbmModuleId type, const CbmPixelHit* hit, Int_t index) {
85  Double_t z = hit->GetZ();
86 
87  if (z < fMinZ || z >= fMaxZ) return;
88 
89  Double_t y = hit->GetY();
90 
91  if (y < fMinY || y >= fMaxY) return;
92 
93  Double_t x = hit->GetX();
94 
95  if (x < fMinX || x >= fMaxX) return;
96 
97  Double_t t = hit->GetTime();
98 
99  if (t < fMinT || t >= fMaxT) return;
100 
101  int zInd = (z - fMinZ) / fZBinSize;
102  int yInd = (y - fMinY) / fYBinSize;
103  int xInd = (x - fMinX) / fXBinSize;
104  int tInd = (t - fMinT) / fTBinSize;
105 
106  CbmZBin& zBin = fZBins[zInd];
107  CbmYBin& yBin = zBin[yInd];
108  CbmXBin& xBin = yBin[xInd];
109  CbmTBin& tBin = xBin[tInd];
110  tBin.AddHit(type, hit, index, fDefaultUse);
111  SetDx(hit->GetDx());
112  SetDy(hit->GetDy());
113  SetDt(hit->GetTimeError());
114  SetDtx(hit->GetDx() / hit->GetZ());
115  SetDty(hit->GetDy() / hit->GetZ());
116 
117  if (fDefaultUse) {
118  zBin.SetUse(true);
119  yBin.SetUse(true);
120  xBin.SetUse(true);
121  tBin.SetUse(true);
122  }
123  }
124 
125  void IterateHits(std::function<void(CbmTBin::HitHolder&)> handleHit) {
126  for (int i = 0; i < fNofZBins; ++i) {
127  CbmZBin& zBin = fZBins[i];
128 
129  if (!zBin.Use()) continue;
130 
131  for (int j = 0; j < fNofYBins; ++j) {
132  CbmYBin& yBin = zBin[j];
133 
134  if (!yBin.Use()) continue;
135 
136  for (int k = 0; k < fNofXBins; ++k) {
137  CbmXBin& xBin = yBin[k];
138 
139  if (!xBin.Use()) continue;
140 
141  for (int l = 0; l < fNofTBins; ++l) {
142  CbmTBin& tBin = xBin[l];
143 
144  if (!tBin.Use()) continue;
145 
146  for (std::list<CbmTBin::HitHolder>::iterator hi = tBin.HitsBegin();
147  hi != tBin.HitsEnd();
148  ++hi) {
149  CbmTBin::HitHolder& hitHolder = *hi;
150 
151  if (fStage > hitHolder.stage) continue;
152 
153  handleHit(hitHolder);
154  }
155  }
156  }
157  }
158  }
159  }
160 
161  int GetZInd(Double_t v) const {
162  int ind = (v - fMinZ) / fZBinSize;
163 
164  if (ind < 0)
165  ind = 0;
166  else if (ind >= fNofZBins)
167  ind = fNofZBins - 1;
168 
169  return ind;
170  }
171 
172  Double_t GetYEnterZ(int yInd, Double_t ty) const {
173  if (ty > 0)
174  return (fMinY + yInd * fYBinSize) / ty;
175  else
176  return (fMinY + (yInd + 1) * fYBinSize) / ty;
177  }
178 
179  Double_t GetYExitZ(int yInd, Double_t ty) const {
180  if (ty > 0)
181  return (fMinY + (yInd + 1) * fYBinSize) / ty;
182  else
183  return (fMinY + yInd * fYBinSize) / ty;
184  }
185 
186  Double_t GetXEnterZ(int xInd, Double_t tx) const {
187  if (tx > 0)
188  return (fMinX + xInd * fXBinSize) / tx;
189  else
190  return (fMinX + (xInd + 1) * fXBinSize) / tx;
191  }
192 
193  Double_t GetXExitZ(int xInd, Double_t tx) const {
194  if (tx > 0)
195  return (fMinX + (xInd + 1) * fXBinSize) / tx;
196  else
197  return (fMinX + xInd * fXBinSize) / tx;
198  }
199 
200  void Init() {
201  fZBinSize = (fMaxZ - fMinZ) / fNofZBins;
203  }
204 
205  void SearchHits(const CbmTrackParam2& stateVec,
206  Double_t stateZ,
207  std::function<void(CbmTBin::HitHolder&)> handleHit) {
208  Double_t deltaZmin = stateZ - fMinZ;
209  Double_t tx = stateVec.GetTx();
210  Double_t ty = stateVec.GetTy();
211  //Double_t C[21];
212  //stateVec.CovMatrix(C);
213  Double_t wTx = cbmBinnedSigma * std::sqrt(stateVec.GetCovTxTx() + fDtxSq);
214  Double_t minTx = tx - wTx;
215  Double_t maxTx = tx + wTx;
216  Double_t wTy = cbmBinnedSigma * std::sqrt(stateVec.GetCovTyTy() + fDtySq);
217  Double_t minTy = ty - wTy;
218  Double_t maxTy = ty + wTy;
219 
220  if (minTy > 0 && stateVec.GetY() + minTy * deltaZmin >= fMaxY)
221  return;
222  else if (maxTy < 0 && stateVec.GetY() + maxTy * deltaZmin < fMinY)
223  return;
224 
225  if (minTx > 0 && stateVec.GetX() + minTx * deltaZmin >= fMaxX)
226  return;
227  else if (maxTx < 0 && stateVec.GetX() + minTx * deltaZmin < fMinX)
228  return;
229 
230  Double_t minZ = fMinZ;
231  Double_t maxZ = fMaxZ;
232 
233  Double_t searchZ = stateZ;
234  Double_t searchX = stateVec.GetX();
235  Double_t searchY = stateVec.GetY();
236 
237  if (minTy > 0) {
238  if ((fMaxY - searchY) / minTy + searchZ < maxZ)
239  maxZ = (fMaxY - searchY) / minTy + searchZ;
240  } else if (maxTy < 0) {
241  if ((fMinY - searchY) / maxTy + searchZ < maxZ)
242  maxZ = (fMinY - searchY) / maxTy + searchZ;
243  }
244 
245  if (minTx > 0) {
246  if ((fMaxX - searchX) / minTx + searchZ < maxZ)
247  maxZ = (fMaxX - searchX) / minTx + searchZ;
248  } else if (maxTx < 0) {
249  if ((fMinX - searchX) / maxTx + searchZ < maxZ)
250  maxZ = (fMinX - searchX) / maxTx + searchZ;
251  }
252 
253  int maxZind = GetZInd(maxZ);
254 
255  for (int i = 0; i <= maxZind; ++i) {
256  CbmZBin& zBin = fZBins[i];
257  Double_t minZi = minZ + i * fZBinSize;
258  Double_t maxZi = minZ + (i + 1) * fZBinSize;
259  Double_t minY = minTy > 0 ? minTy * (minZi - searchZ) + searchY
260  : minTy * (maxZi - searchZ) + searchY;
261  int minYind = GetYInd(minY);
262  Double_t maxY = maxTy > 0 ? maxTy * (maxZi - searchZ) + searchY
263  : maxTy * (minZi - searchZ) + searchY;
264  int maxYind = GetYInd(maxY);
265 
266  for (int j = minYind; j <= maxYind; ++j) {
267  CbmYBin& yBin = zBin[j];
268  Double_t minZj = maxZi;
269  Double_t maxZj = minZi;
270  Double_t tmp = GetYEnterZ(j, minTy);
271 
272  if (tmp < minZj && tmp > minZi) minZj = tmp;
273 
274  tmp = GetYEnterZ(j, maxTy);
275 
276  if (tmp < minZj && tmp > minZi) minZj = tmp;
277 
278  if (minZj == maxZi) minZj = minZi;
279 
280  tmp = GetYExitZ(j, minTy);
281 
282  if (tmp > maxZj && tmp < maxZi) maxZj = tmp;
283 
284  tmp = GetYExitZ(j, maxTy);
285 
286  if (tmp > maxZj && tmp < maxZi) maxZj = tmp;
287 
288  if (maxZj == minZi) maxZj = maxZi;
289 
290  Double_t minX = minTx > 0 ? minTx * (minZj - searchZ) + searchX
291  : minTx * (maxZj - searchZ) + searchX;
292  Double_t maxX = maxTx > 0 ? maxTx * (maxZj - searchZ) + searchX
293  : maxTx * (minZj - searchZ) + searchX;
294  int minXind = GetXInd(minX);
295  int maxXind = GetXInd(maxX);
296 
297  for (int k = minXind; k <= maxXind; ++k) {
298  CbmXBin& xBin = yBin[k];
299  Double_t minZk = maxZj;
300  Double_t maxZk = minZj;
301  Double_t tmp2 = GetXEnterZ(k, minTx);
302 
303  if (tmp2 < minZk && tmp2 > minZj) minZk = tmp2;
304 
305  tmp2 = GetXEnterZ(k, maxTx);
306 
307  if (tmp2 < minZk && tmp2 > minZj) minZk = tmp2;
308 
309  if (minZk == maxZj) minZk = minZj;
310 
311  tmp2 = GetXExitZ(k, minTx);
312 
313  if (tmp2 > maxZk && tmp2 < maxZj) maxZk = tmp2;
314 
315  tmp2 = GetXExitZ(k, maxTx);
316 
317  if (tmp2 > maxZk && tmp2 < maxZj) maxZk = tmp2;
318 
319  if (maxZk == minZj) maxZk = maxZj;
320 
321  //Double_t minT = searchT + (minZk - searchZ) * timeCoeff - wT;
322  //Double_t maxT = searchT + (maxZk - searchZ) * timeCoeff + wT;
323  int minTind = 0; //GetTInd(minT);
324  int maxTind = 0; //fNofTBins - 1;//GetTInd(maxT);
325 
326  for (int l = minTind; l <= maxTind; ++l) {
327  CbmTBin& tBin = xBin[l];
328  std::list<CbmTBin::HitHolder>::iterator hitIter = tBin.HitsBegin();
329  std::list<CbmTBin::HitHolder>::iterator hitIterEnd = tBin.HitsEnd();
330 
331  for (; hitIter != hitIterEnd; ++hitIter) {
332  /*const CbmPixelHit* hit = hitIter->hit;
333  Double_t z = hit->GetZ();
334  Double_t zSq = z * z;
335  Double_t deltaY = hit->GetY() - ty * z;
336 
337  if (deltaY * deltaY > cbmBinnedSigmaSq * (dTySq * zSq + hit->GetDy() * hit->GetDy()))
338  continue;
339 
340  Double_t deltaX = hit->GetX() - tx * z;
341 
342  if (deltaX * deltaX > cbmBinnedSigmaSq * (dTxSq * zSq + hit->GetDx() * hit->GetDx()))
343  continue;*/
344 
345  /*Double_t deltaT = hit->GetTime() - searchT - (z - searchZ) * timeCoeff;
346 
347  if (deltaT * deltaT > cbmBinnedSigmaSq * (dtSq + hit->GetTimeError() * hit->GetTimeError()))
348  continue;*/
349 
350  CbmTBin::HitHolder& hitHolder = *hitIter;
351 
352  if (fStage > hitHolder.stage) continue;
353 
354  handleHit(hitHolder);
355  }
356  }
357  }
358  }
359  }
360  }
361 
362  void SearchHits(Segment& segment, std::function<void(CbmTBin::HitHolder&)>) {
363  const CbmPixelHit* hit1 = segment.begin->hit;
364  Double_t x1 = hit1->GetX();
365  Double_t y1 = hit1->GetY();
366  Double_t dx1Sq = hit1->GetDx() * hit1->GetDx();
367  Double_t dy1Sq = hit1->GetDy() * hit1->GetDy();
368 
369  const CbmPixelHit* hit2 = segment.end->hit;
370  Double_t x2 = hit2->GetX();
371  Double_t y2 = hit2->GetY();
372  Double_t dx2Sq = hit2->GetDx() * hit2->GetDx();
373  Double_t dy2Sq = hit2->GetDy() * hit2->GetDy();
374 
375  Double_t segDeltaZ = hit2->GetZ() - hit1->GetZ();
376  Double_t segDeltaZSq = segDeltaZ * segDeltaZ;
377  Double_t searchZ;
378  //Double_t searchT; (VF) not used
379  //Double_t dtSq; (VF) not used
380 
381  if (0 == hit1->GetTimeError()) {
382  searchZ = hit2->GetZ();
383  // searchT = hit2->GetTime(); (VF) not used
384  // dtSq = hit2->GetTimeError() * hit2->GetTimeError(); (VF) not used
385  } else {
386  searchZ = (hit1->GetZ() + hit2->GetZ()) / 2;
387  // searchT = (hit1->GetTime() + hit2->GetTime()) / 2; (VF) not used
388  // dtSq = (hit1->GetTimeError() * hit1->GetTimeError() + hit2->GetTimeError() * hit2->GetTimeError()) / 2; (VF) not used
389  }
390 
391  Double_t searchX = (x1 + x2) / 2;
392  Double_t searchY = (y1 + y2) / 2;
393  Double_t deltaZmin = searchZ - fMinZ;
394  //Double_t wT = cbmBinnedSigma * std::sqrt(dtSq + fDt * fDt); (VF) unused
395  Double_t tx = (x2 - x1) / segDeltaZ;
396  Double_t ty = (y2 - y1) / segDeltaZ;
397  //Double_t timeCoeff = std::sqrt(1 + tx * tx + ty * ty) / cbmBinnedSOL; (VF) unused
398  Double_t dTxSq = (dx1Sq + dx2Sq) / segDeltaZSq;
399  Double_t wTx = cbmBinnedSigma * std::sqrt(dTxSq + fDtxSq);
400  Double_t minTx = tx - wTx;
401  Double_t maxTx = tx + wTx;
402  Double_t dTySq = (dy1Sq + dy2Sq) / segDeltaZSq;
403  Double_t wTy = cbmBinnedSigma * std::sqrt(dTySq + fDtySq);
404  Double_t minTy = ty - wTy;
405  Double_t maxTy = ty + wTy;
406 
407  if (minTy > 0 && searchY + minTy * deltaZmin >= fMaxY)
408  return;
409  else if (maxTy < 0 && searchY + maxTy * deltaZmin < fMinY)
410  return;
411 
412  if (minTx > 0 && searchX + minTx * deltaZmin >= fMaxX)
413  return;
414  else if (maxTx < 0 && searchX + minTx * deltaZmin < fMinX)
415  return;
416 
417  Double_t minZ = fMinZ;
418  Double_t maxZ = fMaxZ;
419 
420  if (minTy > 0) {
421  if ((fMaxY - searchY) / minTy + searchZ < maxZ)
422  maxZ = (fMaxY - searchY) / minTy + searchZ;
423  } else if (maxTy < 0) {
424  if ((fMinY - searchY) / maxTy + searchZ < maxZ)
425  maxZ = (fMinY - searchY) / maxTy + searchZ;
426  }
427 
428  if (minTx > 0) {
429  if ((fMaxX - searchX) / minTx + searchZ < maxZ)
430  maxZ = (fMaxX - searchX) / minTx + searchZ;
431  } else if (maxTx < 0) {
432  if ((fMinX - searchX) / maxTx + searchZ < maxZ)
433  maxZ = (fMinX - searchX) / maxTx + searchZ;
434  }
435 
436  int maxZind = GetZInd(maxZ);
437 
438  for (int i = 0; i <= maxZind; ++i) {
439  CbmZBin& zBin = fZBins[i];
440  Double_t minZi = minZ + i * fZBinSize;
441  Double_t maxZi = minZ + (i + 1) * fZBinSize;
442  Double_t minY = minTy > 0 ? minTy * (minZi - searchZ) + searchY
443  : minTy * (maxZi - searchZ) + searchY;
444  int minYind = GetYInd(minY);
445  Double_t maxY = maxTy > 0 ? maxTy * (maxZi - searchZ) + searchY
446  : maxTy * (minZi - searchZ) + searchY;
447  int maxYind = GetYInd(maxY);
448 
449  for (int j = minYind; j <= maxYind; ++j) {
450  CbmYBin& yBin = zBin[j];
451  Double_t minZj = maxZi;
452  Double_t maxZj = minZi;
453  Double_t tmp = GetYEnterZ(j, minTy);
454 
455  if (tmp < minZj && tmp > minZi) minZj = tmp;
456 
457  tmp = GetYEnterZ(j, maxTy);
458 
459  if (tmp < minZj && tmp > minZi) minZj = tmp;
460 
461  if (minZj == maxZi) minZj = minZi;
462 
463  tmp = GetYExitZ(j, minTy);
464 
465  if (tmp > maxZj && tmp < maxZi) maxZj = tmp;
466 
467  tmp = GetYExitZ(j, maxTy);
468 
469  if (tmp > maxZj && tmp < maxZi) maxZj = tmp;
470 
471  if (maxZj == minZi) maxZj = maxZi;
472 
473  Double_t minX = minTx > 0 ? minTx * (minZj - searchZ) + searchX
474  : minTx * (maxZj - searchZ) + searchX;
475  Double_t maxX = maxTx > 0 ? maxTx * (maxZj - searchZ) + searchX
476  : maxTx * (minZj - searchZ) + searchX;
477  int minXind = GetXInd(minX);
478  int maxXind = GetXInd(maxX);
479 
480  for (int k = minXind; k <= maxXind; ++k) {
481  CbmXBin& xBin = yBin[k];
482  Double_t minZk = maxZj;
483  Double_t maxZk = minZj;
484  Double_t tmp2 = GetXEnterZ(k, minTx);
485 
486  if (tmp2 < minZk && tmp2 > minZj) minZk = tmp2;
487 
488  tmp2 = GetXEnterZ(k, maxTx);
489 
490  if (tmp2 < minZk && tmp2 > minZj) minZk = tmp2;
491 
492  if (minZk == maxZj) minZk = minZj;
493 
494  tmp2 = GetXExitZ(k, minTx);
495 
496  if (tmp2 > maxZk && tmp2 < maxZj) maxZk = tmp2;
497 
498  tmp2 = GetXExitZ(k, maxTx);
499 
500  if (tmp2 > maxZk && tmp2 < maxZj) maxZk = tmp2;
501 
502  if (maxZk == minZj) maxZk = maxZj;
503 
504  //Double_t minT = searchT + (minZk - searchZ) * timeCoeff - wT; (VF) unused
505  //Double_t maxT = searchT + (maxZk - searchZ) * timeCoeff + wT; (VF) unused
506  int minTind = 0; //GetTInd(minT);
507  int maxTind = fNofTBins - 1; //GetTInd(maxT);
508 
509  for (int l = minTind; l <= maxTind; ++l) {
510  CbmTBin& tBin = xBin[l];
511  std::list<CbmTBin::HitHolder>::iterator hitIter = tBin.HitsBegin();
512  std::list<CbmTBin::HitHolder>::iterator hitIterEnd = tBin.HitsEnd();
513 
514  for (; hitIter != hitIterEnd; ++hitIter) {
515  const CbmPixelHit* hit = hitIter->hit;
516  Double_t z = hit->GetZ();
517  Double_t zSq = z * z;
518  Double_t deltaY = hit->GetY() - ty * z;
519 
520  if (deltaY * deltaY
522  * (dTySq * zSq + hit->GetDy() * hit->GetDy()))
523  continue;
524 
525  Double_t deltaX = hit->GetX() - tx * z;
526 
527  if (deltaX * deltaX
529  * (dTxSq * zSq + hit->GetDx() * hit->GetDx()))
530  continue;
531 
532  /*Double_t deltaT = hit->GetTime() - searchT - (z - searchZ) * timeCoeff;
533 
534  if (deltaT * deltaT > cbmBinnedSigmaSq * (dtSq + hit->GetTimeError() * hit->GetTimeError()))
535  continue;*/
536 
537  Segment newSegment(segment.end, &(*hitIter));
538  std::pair<std::set<Segment, SegmentComp>::iterator, bool> ir =
539  fSegments.insert(newSegment);
540  segment.children.push_back(const_cast<Segment*>(&(*ir.first)));
541  //handleHit(*hitIter);
542  }
543  }
544  }
545  }
546  }
547  }
548 
549  void SearchHits(Double_t,
550  Double_t,
551  Double_t,
552  Double_t,
553  Double_t,
554  Double_t,
555  Double_t,
556  Double_t,
557  std::function<void(CbmTBin::HitHolder&)>) {}
558 
559 private:
562 
563 private:
566  Double_t fZBinSize;
567  Double_t fDtx;
568  Double_t fDtxSq;
569  Double_t fDty;
570  Double_t fDtySq;
571 };
572 
573 #endif /* STATION4D_H */
CbmHit::GetZ
Double_t GetZ() const
Definition: CbmHit.h:70
CbmXBin
Definition: Bins.h:67
CbmBinnedStation::Segment
Definition: Station.h:31
CbmBinnedStation::fStage
char fStage
Definition: Station.h:647
CbmYBin
Definition: Bins.h:100
CbmBinnedStation::SetDt
void SetDt(Double_t v)
Definition: Station.h:473
CbmPixelHit::GetX
Double_t GetX() const
Definition: CbmPixelHit.h:83
CbmBinnedStation::fMinX
Double_t fMinX
Definition: Station.h:621
CbmBinned4DStation::operator=
CbmBinned4DStation & operator=(const CbmBinned4DStation &)=delete
CbmBinned4DStation::SearchHits
void SearchHits(Double_t, Double_t, Double_t, Double_t, Double_t, Double_t, Double_t, Double_t, std::function< void(CbmTBin::HitHolder &)>)
Definition: Station4D.h:549
CbmBinnedStation::SetDx
void SetDx(Double_t v)
Definition: Station.h:455
CbmBinned4DStation::SearchHits
void SearchHits(Segment &segment, std::function< void(CbmTBin::HitHolder &)>)
Definition: Station4D.h:362
CbmPixelHit::GetY
Double_t GetY() const
Definition: CbmPixelHit.h:84
cbmBinnedSigma
const Double_t cbmBinnedSigma
Definition: Station.h:24
sqrt
friend F32vec4 sqrt(const F32vec4 &a)
Definition: L1/vectors/P4_F32vec4.h:41
CbmPixelHit::GetDx
Double_t GetDx() const
Definition: CbmPixelHit.h:85
CbmBinnedStation::fDefaultUse
bool fDefaultUse
Definition: Station.h:631
CbmBinnedStation::SetDy
void SetDy(Double_t v)
Definition: Station.h:464
CbmBinnedStation::GetXInd
int GetXInd(Double_t v) const
Definition: Station.h:512
CbmBinned4DStation::GetZInd
int GetZInd(Double_t v) const
Definition: Station4D.h:161
cbmBinnedSigmaSq
const Double_t cbmBinnedSigmaSq
Definition: Station.h:25
i
int i
Definition: L1/vectors/P4_F32vec4.h:25
CbmYBin::SetUse
void SetUse(bool v)
Definition: Bins.h:116
ECbmModuleId
ECbmModuleId
Definition: CbmDefs.h:33
CbmBinned4DStation::GetYEnterZ
Double_t GetYEnterZ(int yInd, Double_t ty) const
Definition: Station4D.h:172
CbmBinned4DStation::fDtxSq
Double_t fDtxSq
Definition: Station4D.h:568
CbmPixelHit::GetDy
Double_t GetDy() const
Definition: CbmPixelHit.h:86
CbmBinnedStation::fYBinSize
Double_t fYBinSize
Definition: Station.h:616
CbmHit::GetTimeError
Double_t GetTimeError() const
Definition: CbmHit.h:76
CbmBinned4DStation::Clear
void Clear()
Definition: Station4D.h:55
CbmBinned4DStation::fDtx
Double_t fDtx
Definition: Station4D.h:567
Station.h
CbmBinnedStation::Init
virtual void Init()
Definition: Station.h:547
CbmBinned4DStation::IterateHits
void IterateHits(std::function< void(CbmTBin::HitHolder &)> handleHit)
Definition: Station4D.h:125
CbmTBin::HitHolder::hit
const CbmPixelHit * hit
Definition: Bins.h:29
CbmBinnedStation::fXBinSize
Double_t fXBinSize
Definition: Station.h:617
CbmTBin::Use
bool Use() const
Definition: Bins.h:47
CbmBinnedStation::fNofYBins
int fNofYBins
Definition: Station.h:613
CbmTrackParam2::GetCovTyTy
Double_t GetCovTyTy() const
Definition: CbmTrackParam2.h:81
CbmBinnedStation::Segment::children
std::list< Segment * > children
Definition: Station.h:35
CbmBinnedStation::fMinY
Double_t fMinY
Definition: Station.h:619
CbmBinned4DStation::fNofZBins
int fNofZBins
Definition: Station4D.h:565
CbmBinnedStation
Definition: Station.h:29
CbmBinned4DStation::Init
void Init()
Definition: Station4D.h:200
CbmTBin::HitHolder
Definition: Bins.h:27
CbmHit::GetTime
Double_t GetTime() const
Definition: CbmHit.h:75
CbmTBin::Clear
void Clear()
Definition: Bins.h:52
CbmBinned4DStation::CbmBinned4DStation
CbmBinned4DStation(ECbmModuleId stationType, Double_t minZ, Double_t maxZ, int nofZBins, int nofYBins, int nofXBins, int nofTBins)
Definition: Station4D.h:21
CbmTBin::HitsEnd
std::list< HitHolder >::iterator HitsEnd()
Definition: Bins.h:51
CbmTBin::SetUse
void SetUse(bool v)
Definition: Bins.h:48
CbmBinnedStation::fMaxY
Double_t fMaxY
Definition: Station.h:620
CbmBinned4DStation::fZBinSize
Double_t fZBinSize
Definition: Station4D.h:566
CbmBinned4DStation::GetXEnterZ
Double_t GetXEnterZ(int xInd, Double_t tx) const
Definition: Station4D.h:186
CbmBinned4DStation::GetXExitZ
Double_t GetXExitZ(int xInd, Double_t tx) const
Definition: Station4D.h:193
CbmBinned4DStation
Definition: Station4D.h:19
CbmBinnedStation::fMaxZ
Double_t fMaxZ
Definition: Station.h:612
CbmTrackParam2
Definition: CbmTrackParam2.h:68
CbmBinnedStation::fTBinSize
Double_t fTBinSize
Definition: Station.h:618
CbmTBin::AddHit
void AddHit(ECbmModuleId type, const CbmPixelHit *hit, Int_t index, bool use)
Definition: Bins.h:54
CbmBinnedStation::fMinZ
Double_t fMinZ
Definition: Station.h:611
CbmXBin::SetUse
void SetUse(bool v)
Definition: Bins.h:81
CbmBinned4DStation::GetYExitZ
Double_t GetYExitZ(int yInd, Double_t ty) const
Definition: Station4D.h:179
CbmBinned4DStation::fDty
Double_t fDty
Definition: Station4D.h:569
CbmTBin::HitsBegin
std::list< HitHolder >::iterator HitsBegin()
Definition: Bins.h:50
CbmBinnedStation::fNofXBins
int fNofXBins
Definition: Station.h:614
v
__m128 v
Definition: L1/vectors/P4_F32vec4.h:1
CbmBinnedStation::fNofTBins
int fNofTBins
Definition: Station.h:615
CbmBinned4DStation::fDtySq
Double_t fDtySq
Definition: Station4D.h:570
CbmBinnedStation::GetYInd
int GetYInd(Double_t v) const
Definition: Station.h:523
CbmBinnedStation::Segment::end
CbmTBin::HitHolder * end
Definition: Station.h:33
x
Double_t x
Definition: CbmMvdSensorDigiToHitTask.cxx:68
y
Double_t y
Definition: CbmMvdSensorDigiToHitTask.cxx:68
CbmXBin::Use
bool Use() const
Definition: Bins.h:80
CbmPixelHit
Definition: CbmPixelHit.h:21
CbmTBin::HitHolder::stage
char stage
Definition: Bins.h:34
CbmTrackParam2::GetCovTxTx
Double_t GetCovTxTx() const
Definition: CbmTrackParam2.h:79
CbmBinned4DStation::AddHit
void AddHit(ECbmModuleId type, const CbmPixelHit *hit, Int_t index)
Definition: Station4D.h:84
CbmBinned4DStation::fZBins
CbmZBin * fZBins
Definition: Station4D.h:564
CbmBinnedStation::fSegments
std::set< Segment, SegmentComp > fSegments
Definition: Station.h:638
CbmBinnedStation::fMinT
Double_t fMinT
Definition: Station.h:623
CbmBinned4DStation::CbmBinned4DStation
CbmBinned4DStation(const CbmBinned4DStation &)=delete
CbmTBin
Definition: Bins.h:25
CbmYBin::Use
bool Use() const
Definition: Bins.h:115
CbmBinnedStation::Clear
virtual void Clear()
Definition: Station.h:552
CbmBinnedStation::fMaxT
Double_t fMaxT
Definition: Station.h:624
CbmBinned4DStation::SetDty
void SetDty(Double_t v)
Definition: Station4D.h:48
CbmZBin
Definition: Bins.h:133
CbmZBin::SetUse
void SetUse(bool v)
Definition: Bins.h:146
CbmBinnedStation::fMaxX
Double_t fMaxX
Definition: Station.h:622
CbmBinned4DStation::SearchHits
void SearchHits(const CbmTrackParam2 &stateVec, Double_t stateZ, std::function< void(CbmTBin::HitHolder &)> handleHit)
Definition: Station4D.h:205
CbmBinnedStation::Segment::begin
CbmTBin::HitHolder * begin
Definition: Station.h:32
CbmZBin::Use
bool Use() const
Definition: Bins.h:145
CbmBinned4DStation::SetDtx
void SetDtx(Double_t v)
Definition: Station4D.h:41