CbmRoot
|
Algorithm for hit finding in sensors with orthogonal strips. More...
#include <CbmStsAlgoFindHitsOrtho.h>
Public Member Functions | |
CbmStsAlgoFindHitsOrtho () | |
Constructor. More... | |
CbmStsAlgoFindHitsOrtho (const CbmStsAlgoFindHitsOrtho &)=delete | |
Copy constructor (disabled) More... | |
CbmStsAlgoFindHitsOrtho & | operator= (const CbmStsAlgoFindHitsOrtho &)=delete |
Assignment operator (disabled) More... | |
virtual | ~CbmStsAlgoFindHitsOrtho () |
Destructor More... | |
Long64_t | Exec (const std::vector< CbmStsCluster > &clustersF, const std::vector< CbmStsCluster > &clustersB, std::vector< CbmStsHit > &hits, UInt_t address, Double_t timeCutSig, Double_t timeCutAbs, UInt_t nStripsF, UInt_t nStripsB, Double_t pitchF, Double_t pitchB, Double_t lorentzF, Double_t lorentzB, TGeoHMatrix *matrix) |
Execute algorithm. More... | |
Private Member Functions | |
void | CreateHit (Double_t xLocal, Double_t yLocal, Double_t varX, Double_t varY, Double_t varXY, const CbmStsCluster &clusterF, const CbmStsCluster &clusterB, UInt_t indexF, UInt_t indexB, Double_t du=0., Double_t dv=0.) |
Create a new hit in the output array. More... | |
void | GetClusterPosition (Double_t ClusterCentre, Double_t &xCluster, Int_t &side) |
Int_t | GetSide (Double_t channel) const |
std::pair< Int_t, Int_t > | GetStrip (UInt_t channel) const |
Get strip and side from module channel. More... | |
Int_t | IntersectClusters (const CbmStsCluster &clusterF, const CbmStsCluster &clusterB, UInt_t indexF, UInt_t indexB) |
Find the intersection points of two clusters. More... | |
Bool_t | IsInside (Double_t x, Double_t y) |
Check whether a point (x,y) is inside the active area. More... | |
ClassDef (CbmStsAlgoFindHitsOrtho, 1) | |
Private Attributes | |
UInt_t | fAddress = 0 |
Unique address for hits (sensor) More... | |
Double_t | fTimeCutSig = 0. |
Time cut on clusters in error units. More... | |
Double_t | fTimeCutAbs = 0. |
Time cut on clusters in ns. More... | |
UInt_t | fNofStripsF = 0 |
Number of strips front side. More... | |
UInt_t | fNofStripsB = 0 |
Number of strips backs side. More... | |
Double_t | fDx = 0. |
Active size in x [cm]. More... | |
Double_t | fDy = 0. |
Active size in y [cm]. More... | |
Double_t | fPitchF = 0. |
Strip pitch front side [cm]. More... | |
Double_t | fPitchB = 0. |
Strip pitch back side [cm]. More... | |
Double_t | fLorentzF = 0. |
Lorentz shift correction front side [cm]. More... | |
Double_t | fLorentzB = 0. |
Lorentz shift correction back side [cm]. More... | |
TGeoHMatrix * | fMatrix = nullptr |
std::vector< CbmStsHit > * | fHits = nullptr |
///< Transformation matrix to global C.S. More... | |
Algorithm for hit finding in sensors with orthogonal strips.
A hit is constructed from two clusters, one from the front side, the other one from the back side of the sensor, if they two clusters have a geometrical intersection in the active sensor area, and if they are compatible in time. The algorithm combines front-side with back-side clusters and checks for these conditions. The hit coordinates are transformed into the global coordinate system.
The loop over the clusters was optimised by F. Boeck for application to free-streaming data (not sorted into events).
Definition at line 35 of file CbmStsAlgoFindHitsOrtho.h.
CbmStsAlgoFindHitsOrtho::CbmStsAlgoFindHitsOrtho | ( | ) |
Constructor.
Definition at line 24 of file CbmStsAlgoFindHitsOrtho.cxx.
|
delete |
Copy constructor (disabled)
|
inlinevirtual |
Destructor
Definition at line 51 of file CbmStsAlgoFindHitsOrtho.h.
|
private |
|
private |
Create a new hit in the output array.
xLocal | hit x coordinate in sensor system [cm] |
yLocal | hit y coordinate in sensor system [cm] |
varX | Variance in x [cm^2] |
varY | Variance in y [cm^2] |
varXY | Covariance of x and y [cm^2] |
clusterF | Front-side cluster |
clusterB | Back-side cluster |
indexF | Index of front-side cluster |
indexB | Index of back-side cluster |
du | Error in u coordinate (across strips front side) [cm] |
dv | Error in v coordinate (across strips back side) [cm] |
Definition at line 29 of file CbmStsAlgoFindHitsOrtho.cxx.
References fAddress, fHits, fMatrix, CbmStsCluster::GetTime(), and CbmStsCluster::GetTimeError().
Referenced by IntersectClusters().
Long64_t CbmStsAlgoFindHitsOrtho::Exec | ( | const std::vector< CbmStsCluster > & | clustersF, |
const std::vector< CbmStsCluster > & | clustersB, | ||
std::vector< CbmStsHit > & | hits, | ||
UInt_t | address, | ||
Double_t | timeCutSig, | ||
Double_t | timeCutAbs, | ||
UInt_t | nStripsF, | ||
UInt_t | nStripsB, | ||
Double_t | pitchF, | ||
Double_t | pitchB, | ||
Double_t | lorentzF, | ||
Double_t | lorentzB, | ||
TGeoHMatrix * | matrix | ||
) |
Execute algorithm.
clustersF | Input clusters front side |
clusterB | Input clusters back side |
hits | Output hits |
Hit | address ( = module address) |
timeCutSig | Time cut in units of cluster time error |
timeCutAbs | Time cut in ns |
dY | Vertical size of the active sensor area [cm] |
nStripsF | Number of strips on front side |
nStripsB | Number of strips on back side |
pitchF | Strip pitch on front side [cm] |
pitchB | Strip pitch on back side [cm] |
lorentzF | Mean Lorentz shift front side (electrons) [cm] |
lorentzB | Mean Lorentz shift back side (holes) [cm] |
matrix | Transformation matrix from local to global C.S. |
Definition at line 85 of file CbmStsAlgoFindHitsOrtho.cxx.
References fabs(), fAddress, fDx, fDy, fHits, fLorentzB, fLorentzF, fMatrix, fNofStripsB, fNofStripsF, fPitchB, fPitchF, CbmStsCluster::GetTime(), CbmStsCluster::GetTimeError(), hits, and IntersectClusters().
|
private |
Get the cluster position at the top edge of the sensor.
[in] | centre | Cluster centre in (module) channel units |
[out] | xCluster | Cluster position at readout edge |
[out] | side | Sensor side [0 = front, 1 = back] |
A correction for the Lorentz shift is applied.
Definition at line 182 of file CbmStsAlgoFindHitsOrtho.cxx.
References fLorentzB, fLorentzF, fPitchB, fPitchF, and GetStrip().
Referenced by IntersectClusters().
|
inlineprivate |
Get the side of the sensor from the module channel number The channel number can also be the cluster position, so it needs not be integer.
channel | Channel number |
Definition at line 130 of file CbmStsAlgoFindHitsOrtho.h.
References fNofStripsB, and fNofStripsF.
|
private |
Get strip and side from module channel.
[in] | channel | Channel number in module |
[in] | sensorId | Sensor index in module @value Pair of strip number and side |
Note: This must be the inverse of GetModuleChannel.
Definition at line 221 of file CbmStsAlgoFindHitsOrtho.cxx.
References fNofStripsF.
Referenced by GetClusterPosition().
|
private |
Find the intersection points of two clusters.
clusterF | Cluster on front side |
clusterB | Cluster on back side |
indexF | Index of cluster on front side |
indexB | Index of cluster on back side |
For each intersection point, a hit is created.
Definition at line 241 of file CbmStsAlgoFindHitsOrtho.cxx.
References CreateHit(), fDx, fDy, fPitchB, fPitchF, GetClusterPosition(), CbmStsCluster::GetPosition(), and CbmStsCluster::GetPositionError().
Referenced by Exec().
|
private |
Check whether a point (x,y) is inside the active area.
x | x coordinate in the local c.s. [cm] |
y | y coordinate in the local c.s. [cm] |
The coordinates have to be given in the local coordinate system (origin in the sensor centre).
Definition at line 294 of file CbmStsAlgoFindHitsOrtho.cxx.
|
delete |
Assignment operator (disabled)
|
private |
Unique address for hits (sensor)
Definition at line 174 of file CbmStsAlgoFindHitsOrtho.h.
Referenced by CreateHit(), and Exec().
|
private |
Active size in x [cm].
Definition at line 179 of file CbmStsAlgoFindHitsOrtho.h.
Referenced by Exec(), IntersectClusters(), and IsInside().
|
private |
Active size in y [cm].
Definition at line 180 of file CbmStsAlgoFindHitsOrtho.h.
Referenced by Exec(), IntersectClusters(), and IsInside().
|
private |
///< Transformation matrix to global C.S.
Output vector of hits
Definition at line 188 of file CbmStsAlgoFindHitsOrtho.h.
Referenced by CreateHit(), and Exec().
|
private |
Lorentz shift correction back side [cm].
Definition at line 184 of file CbmStsAlgoFindHitsOrtho.h.
Referenced by Exec(), and GetClusterPosition().
|
private |
Lorentz shift correction front side [cm].
Definition at line 183 of file CbmStsAlgoFindHitsOrtho.h.
Referenced by Exec(), and GetClusterPosition().
|
private |
Definition at line 185 of file CbmStsAlgoFindHitsOrtho.h.
Referenced by CreateHit(), and Exec().
|
private |
Number of strips backs side.
Definition at line 178 of file CbmStsAlgoFindHitsOrtho.h.
|
private |
Number of strips front side.
Definition at line 177 of file CbmStsAlgoFindHitsOrtho.h.
Referenced by Exec(), GetSide(), and GetStrip().
|
private |
Strip pitch back side [cm].
Definition at line 182 of file CbmStsAlgoFindHitsOrtho.h.
Referenced by Exec(), GetClusterPosition(), and IntersectClusters().
|
private |
Strip pitch front side [cm].
Definition at line 181 of file CbmStsAlgoFindHitsOrtho.h.
Referenced by Exec(), GetClusterPosition(), and IntersectClusters().
|
private |
Time cut on clusters in ns.
Definition at line 176 of file CbmStsAlgoFindHitsOrtho.h.
|
private |
Time cut on clusters in error units.
Definition at line 175 of file CbmStsAlgoFindHitsOrtho.h.