CbmRoot
Loading...
Searching...
No Matches
HitMerger2D.h
Go to the documentation of this file.
1/* Copyright (C) 2024 Facility for Antiproton and Ion Research in Europe, Darmstadt
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Dominik Smith [committer], Alexandru Bercuci */
4
5#pragma once
6
7#include "CbmTrdDigi.h"
8#include "DigiRec.h"
9#include "Hit.h"
10#include "HitFactory2D.h"
11#include "HitFinder2DPars.h"
12#include "Math/Rotation3D.h"
13#include "Math/Vector3Dfwd.h"
14
15#include <cstdint>
16#include <tuple>
17#include <unordered_map>
18#include <vector>
19
20using std::vector;
21class DigiRec;
22
23namespace cbm::algo::trd
24{
25
41 public:
42 typedef std::pair<Hit, std::vector<DigiRec>> inputType;
43 typedef std::pair<std::vector<inputType>, std::vector<inputType>> outputType;
44
47
50
51 virtual ~HitMerger2D(){};
52
54 outputType operator()(std::vector<inputType>& hitsRow1, std::vector<inputType>& hitsRow2);
55
56 std::pair<int, HitFactory2D> ProjectDigis(std::vector<DigiRec>* cid, std::vector<DigiRec>* cjd);
60 int CheckMerge(std::vector<DigiRec>* cid, std::vector<DigiRec>* cjd);
66 bool MergeHits(Hit* h, int a0, HitFactory2D& hitF);
67
68
72 void SetHitTimeOffset(int dt) { fHitTimeOff = dt; }
73
74 private:
76 const HitMerger2D& operator=(const HitMerger2D& ref);
77
78 Hit MakeHit(int cId);
79
81
83
84 void CalibrateHit(Hit* h, const double dx, const double dy, const double edx, const double edy, const double edt,
85 const double time, const double tdrift, const double eloss, const HitFactory2D& hitF);
86
91 inline int GetPadRowCol(int address, int& c);
92
93 int fHitTimeOff = 0;
94 };
95
96
97} // namespace cbm::algo::trd
Data class with information on a STS local track.
static float Clk(eCbmTrdAsicType ty)
DAQ clock accessor for each ASIC.
Definition CbmTrdDigi.h:109
Extend the TRD(2D) digi class to incorporate FEE calibration.
Cluster finding and hit reconstruction algorithms for the TRD(2D) module.
Definition HitMerger2D.h:40
HitMerger2D(const HitMerger2D &ref)
HitFinder2DModPar fParams
Parameter container.
Definition HitMerger2D.h:82
void CalibrateHit(Hit *h, const double dx, const double dy, const double edx, const double edy, const double edt, const double time, const double tdrift, const double eloss, const HitFactory2D &hitF)
const HitMerger2D & operator=(const HitMerger2D &ref)
bool MergeHits(Hit *h, int a0, HitFactory2D &hitF)
Algorithm for hit merging.
std::pair< std::vector< inputType >, std::vector< inputType > > outputType
Definition HitMerger2D.h:43
void SetHitTimeOffset(int dt)
Time offset to synchronize TRD2D hits to the rest of detectors.
Definition HitMerger2D.h:72
outputType operator()(std::vector< inputType > &hitsRow1, std::vector< inputType > &hitsRow2)
Steering routine for building hits.
std::pair< int, HitFactory2D > ProjectDigis(std::vector< DigiRec > *cid, std::vector< DigiRec > *cjd)
std::pair< Hit, std::vector< DigiRec > > inputType
Definition HitMerger2D.h:42
HitMerger2D()
Default constructor.
Definition HitMerger2D.h:46
int GetPadRowCol(int address, int &c)
Addressing ASIC on module based on id.
int CheckMerge(std::vector< DigiRec > *cid, std::vector< DigiRec > *cjd)
Implement topologic cuts for hit merging.
A light-weight TRD hit class for online reconstruction, based on CbmTrdHit. .
A light-weight TRD hit class for online reconstruction, based on CbmTrdHit. .