CbmRoot
|
#include <CaTripletConstructor.h>
Public Member Functions | |
TripletConstructor (const ca::Parameters< fvec > &pars, WindowData &wData, const fscal mass, const ca::TrackingMode &mode) | |
---— Constructors and destructor ---— | |
TripletConstructor (const TripletConstructor &)=delete | |
Copy constructor. | |
TripletConstructor (TripletConstructor &&)=delete | |
Move constructor. | |
TripletConstructor & | operator= (const TripletConstructor &)=delete |
Copy assignment operator. | |
TripletConstructor & | operator= (TripletConstructor &&)=delete |
Move assignment operator. | |
~TripletConstructor ()=default | |
Destructor. | |
void | CreateTripletsForHit (Vector< ca::Triplet > &tripletsOut, int istal, int istam, int istar, ca::HitIndex_t ihl) |
---— FUNCTIONAL PART ---— | |
Private Types | |
typedef std::pair< Vector< TrackParamV >, Vector< ca::HitIndex_t > > | Doublet_t |
typedef std::tuple< Vector< TrackParamV >, Vector< ca::HitIndex_t >, Vector< ca::HitIndex_t > > | Triplet_t |
Private Member Functions | |
bool | InitStations (int istal, int istam, int istar) |
void | FindDoublets (kf::TrackKalmanFilter< fvec > &fit) |
Find the doublets. Reformat data in the portion of doublets. | |
void | FindTripletHits () |
void | FindTriplets () |
Find triplets on station. | |
void | SelectTriplets (Vector< ca::Triplet > &tripletsOut) |
Select good triplets. | |
void | CollectHits (Vector< ca::HitIndex_t > &collectedHits, kf::TrackKalmanFilter< fvec > &fit, const int iSta, const double chi2Cut, const int iMC, const int maxNhits) |
Private Attributes | |
const Parameters< fvec > & | fParameters |
Object of Framework parameters class. | |
const cbm::algo::kf::Setup< fvec > & | fSetup |
Reference to the setup. | |
WindowData & | frWData |
fscal | fDefaultMass {constants::phys::MuonMass} |
mass of the propagated particle [GeV/c2] | |
ca::TrackingMode | fTrackingMode |
bool | fIsTargetField {false} |
is the magnetic field present at the target | |
int | fNfieldStations {0} |
int | fIstaL {-1} |
left station index | |
int | fIstaM {-1} |
middle station index | |
int | fIstaR {-1} |
right station index | |
const ca::Station< fvec > * | fStaL {nullptr} |
left station | |
const ca::Station< fvec > * | fStaM {nullptr} |
mid station | |
const ca::Station< fvec > * | fStaR {nullptr} |
right station | |
const ca::Station< fvec > * | fFld0Sta [2] |
const ca::Station< fvec > * | fFld1Sta [3] |
ca::HitIndex_t | fIhitL |
index of the left hit in fAlgo->fWindowHits | |
kf::FieldRegion< fvec > | fFldL |
Triplet_t | fTripletData |
Doublet_t | fDoubletData |
Static Private Attributes | |
static constexpr bool | fDebugDublets = false |
static constexpr bool | fDebugTriplets = false |
static constexpr bool | fDebugCollectHits = false |
Construction of triplets for the CA tracker
Definition at line 28 of file CaTripletConstructor.h.
|
private |
Definition at line 57 of file CaTripletConstructor.h.
|
private |
Definition at line 58 of file CaTripletConstructor.h.
cbm::algo::ca::TripletConstructor::TripletConstructor | ( | const ca::Parameters< fvec > & | pars, |
WindowData & | wData, | ||
const fscal | mass, | ||
const ca::TrackingMode & | mode ) |
---— Constructors and destructor ---—
Constructor
nThreads | Number of threads for multi-threaded mode |
Definition at line 22 of file CaTripletConstructor.cxx.
References fIsTargetField, fNfieldStations, fParameters, frWData, and cbm::algo::ca::WindowData::TargB().
|
delete |
Copy constructor.
|
delete |
Move constructor.
|
default |
Destructor.
|
private |
Collect hits on a station
Definition at line 645 of file CaTripletConstructor.cxx.
References cbm::algo::kf::TrackParamBase< T >::ChiSq(), cbm::algo::ca::WindowData::CurrentIteration(), cbm::algo::ca::GridArea::DoLoopOverEntireGrid(), cbm::algo::ca::Hit::dX2(), cbm::algo::ca::Hit::dXY(), cbm::algo::ca::Hit::dY2(), cbm::algo::kf::TrackKalmanFilter< DataT >::ExtrapolateLineDxy(), cbm::algo::kf::TrackKalmanFilter< DataT >::ExtrapolateLineXdX2(), cbm::algo::kf::TrackKalmanFilter< DataT >::ExtrapolateLineYdY2(), cbm::algo::kf::utils::fabs(), fDebugCollectHits, fParameters, frWData, cbm::algo::kf::TrackKalmanFilter< DataT >::GetChi2XChi2U(), cbm::algo::ca::Iteration::GetMaxDZ(), cbm::algo::ca::Framework::GetMcTrackIdForWindowHit(), cbm::algo::ca::GridArea::GetNextObjectId(), cbm::algo::ca::Iteration::GetTrackFromTripletsFlag(), cbm::algo::ca::WindowData::Grid(), cbm::algo::ca::WindowData::Hit(), cbm::algo::ca::WindowData::IsHitSuppressed(), cbm::algo::kf::fvec::One(), cbm::algo::ca::Vector< T >::push_back(), cbm::algo::ca::Hit::RangeT(), cbm::algo::ca::Hit::RangeX(), cbm::algo::ca::Hit::RangeY(), cbm::algo::ca::Vector< T >::reserve(), sqrt(), cbm::algo::ca::Hit::T(), cbm::algo::ca::Station< DataT >::timeInfo, cbm::algo::ca::Hit::ToString(), cbm::algo::kf::TrackKalmanFilter< DataT >::Tr(), cbm::algo::ca::Hit::X(), x, cbm::algo::ca::Hit::Y(), y, and cbm::algo::ca::Hit::Z().
Referenced by CreateTripletsForHit(), and FindTripletHits().
void cbm::algo::ca::TripletConstructor::CreateTripletsForHit | ( | Vector< ca::Triplet > & | tripletsOut, |
int | istal, | ||
int | istam, | ||
int | istar, | ||
ca::HitIndex_t | ihl ) |
---— FUNCTIONAL PART ---—
Get the field approximation. Add the target to parameters estimation. Propagaete to the middle station of a triplet.
Find the doublets. Reformat data into portions of doublets.
Definition at line 87 of file CaTripletConstructor.cxx.
References CollectHits(), cbm::algo::ca::WindowData::CurrentIteration(), cbm::algo::ca::constants::phys::ElectronMass, cbm::algo::kf::TrackKalmanFilter< DataT >::ExtrapolateLine(), fDefaultMass, fDoubletData, fFld0Sta, fFld1Sta, fFldL, fIhitL, cbm::algo::kf::TrackKalmanFilter< DataT >::FilterWithTargetAtLine(), FindDoublets(), FindTripletHits(), FindTriplets(), fIstaL, fIstaM, fIstaR, fParameters, frWData, fSetup, fStaL, fStaM, cbm::algo::ca::Iteration::GetDoubletChi2Cut(), cbm::algo::ca::Iteration::GetElectronFlag(), cbm::algo::ca::Iteration::GetMaxQp(), cbm::algo::ca::Iteration::GetMaxSlopePV(), cbm::algo::ca::Framework::GetMcTrackIdForWindowHit(), cbm::algo::ca::WindowData::Hit(), InitStations(), cbm::algo::kf::TrackKalmanFilter< DataT >::MultipleScattering(), cbm::algo::kf::fmask::One(), SelectTriplets(), cbm::algo::kf::FieldRegion< T >::Set(), cbm::algo::kf::FieldValue< T >::Set(), cbm::algo::kf::TrackKalmanFilter< DataT >::SetParticleMass(), cbm::algo::kf::TrackKalmanFilter< DataT >::SetQp0(), cbm::algo::ca::constants::phys::SpeedOfLightInv, cbm::algo::ca::WindowData::TargB(), cbm::algo::ca::WindowData::TargetMeasurement(), and cbm::algo::kf::TrackKalmanFilter< DataT >::Tr().
Referenced by cbm::algo::ca::TrackFinderWindow::ConstructTriplets().
|
private |
Find the doublets. Reformat data in the portion of doublets.
Definition at line 194 of file CaTripletConstructor.cxx.
References cbm::algo::kf::TrackParamBase< T >::C00(), cbm::algo::kf::TrackParamBase< T >::C11(), cbm::algo::kf::TrackParamBase< T >::C55(), cbm::algo::ca::WindowData::CurrentIteration(), cbm::algo::ca::Hit::dT2(), cbm::algo::ca::Hit::dX2(), cbm::algo::ca::Hit::dXY(), cbm::algo::ca::Hit::dY2(), cbm::algo::kf::TrackKalmanFilter< DataT >::ExtrapolateLineNoField(), fDoubletData, fIhitL, cbm::algo::kf::TrackKalmanFilter< DataT >::FilterTime(), cbm::algo::kf::TrackKalmanFilter< DataT >::FilterXY(), fIstaM, fIsTargetField, fParameters, frWData, fSetup, fStaL, fStaM, fTrackingMode, cbm::algo::ca::Iteration::GetMaxQp(), cbm::algo::ca::Framework::GetMcTrackIdForWindowHit(), cbm::algo::kf::TrackParamBase< T >::GetQp(), cbm::algo::kf::TrackParamBase< T >::GetX(), cbm::algo::ca::WindowData::Hit(), cbm::algo::ca::WindowData::IsHitSuppressed(), cbm::algo::ca::kMcbm, cbm::algo::kf::TrackKalmanFilter< DataT >::MultipleScattering(), cbm::algo::kf::TrackParamBase< T >::NdfTime(), cbm::algo::kf::fvec::One(), cbm::algo::kf::TrackParamBase< T >::Qp(), cbm::algo::ca::Hit::RangeT(), cbm::algo::ca::Hit::RangeX(), cbm::algo::ca::Hit::RangeY(), cbm::algo::ca::Vector< T >::reserve(), cbm::algo::kf::TrackKalmanFilter< DataT >::SetQp0(), cbm::algo::ca::Vector< T >::shrink(), sqrt(), cbm::algo::ca::WindowData::SuppressHit(), cbm::algo::ca::Hit::T(), cbm::algo::kf::TrackParamBase< T >::Time(), cbm::algo::kf::TrackKalmanFilter< DataT >::Tr(), tracks, cbm::algo::kf::TrackParamBase< T >::Tx(), cbm::algo::kf::TrackParamBase< T >::Ty(), cbm::algo::kf::TrackParamBase< T >::Vi(), cbm::algo::ca::Hit::X(), cbm::algo::ca::Hit::Y(), cbm::algo::kf::TrackParamBase< T >::Y(), cbm::algo::ca::Hit::Z(), and cbm::algo::kf::TrackParamBase< T >::Z().
Referenced by CreateTripletsForHit().
|
private |
Add the middle hits to parameters estimation. Propagate to right station. Find the triplets (right hit). Reformat data in the portion of triplets.
Add the middle hits to parameters estimation. Propagate to right station. Find the triplets(right hit). Reformat data in the portion of triplets.
Definition at line 286 of file CaTripletConstructor.cxx.
References cbm::algo::kf::TrackParamBase< T >::C00(), cbm::algo::kf::TrackParamBase< T >::C11(), cbm::algo::kf::TrackParamBase< T >::C22(), cbm::algo::kf::TrackParamBase< T >::C33(), cbm::algo::kf::TrackParamBase< T >::C44(), cbm::algo::kf::TrackParamBase< T >::C55(), cbm::algo::kf::TrackParamBase< T >::ChiSqTime(), CollectHits(), cbm::algo::ca::WindowData::CurrentIteration(), cbm::algo::ca::constants::phys::ElectronMass, cbm::algo::kf::TrackKalmanFilter< DataT >::Extrapolate(), fDebugDublets, fDefaultMass, fDoubletData, fFldL, fIhitL, fIstaL, fIstaM, fIstaR, fParameters, frWData, fStaR, fTrackingMode, fTripletData, cbm::algo::kf::TrackParamBase< T >::GetChiSq(), cbm::algo::ca::Iteration::GetElectronFlag(), cbm::algo::ca::Iteration::GetMaxSlope(), cbm::algo::ca::Framework::GetMcTrackIdForWindowHit(), cbm::algo::ca::Iteration::GetName(), cbm::algo::ca::Iteration::GetTripletChi2Cut(), cbm::algo::ca::WindowData::Hit(), cbm::algo::ca::Hit::Id(), cbm::algo::ca::WindowData::IsHitSuppressed(), cbm::algo::ca::kSts, cbm::algo::kf::TrackParamBase< T >::Ndf(), cbm::algo::kf::TrackParamBase< T >::NdfTime(), cbm::algo::kf::fmask::One(), cbm::algo::ca::Vector< T >::push_back(), cbm::algo::ca::Vector< T >::reserve(), cbm::algo::kf::TrackKalmanFilter< DataT >::SetParticleMass(), cbm::algo::kf::TrackKalmanFilter< DataT >::SetQp0(), cbm::algo::kf::TrackKalmanFilter< DataT >::SetTrack(), cbm::algo::kf::TrackParamBase< T >::ToString(), cbm::algo::kf::TrackKalmanFilter< DataT >::Tr(), cbm::algo::kf::TrackParamBase< T >::Tx(), cbm::algo::kf::TrackParamBase< T >::Ty(), cbm::algo::ca::Hit::X(), cbm::algo::ca::Hit::Y(), and cbm::algo::ca::Hit::Z().
Referenced by CreateTripletsForHit().
|
private |
Find triplets on station.
Refit Triplets
Definition at line 414 of file CaTripletConstructor.cxx.
References cbm::algo::ca::_fvecalignment, cbm::algo::ca::WindowData::CurrentIteration(), cbm::algo::ca::Hit::dT2(), cbm::algo::kf::MeasurementXy< DataT >::Dx2(), cbm::algo::ca::Hit::dX2(), cbm::algo::kf::MeasurementXy< DataT >::Dxy(), cbm::algo::ca::Hit::dXY(), cbm::algo::kf::MeasurementXy< DataT >::Dy2(), cbm::algo::ca::Hit::dY2(), cbm::algo::ca::constants::phys::ElectronMass, cbm::algo::kf::TrackKalmanFilter< DataT >::EnergyLossCorrection(), cbm::algo::kf::TrackKalmanFilter< DataT >::Extrapolate(), fDebugTriplets, fDefaultMass, cbm::algo::ca::Station< DataT >::fieldSlice, fIhitL, cbm::algo::kf::TrackKalmanFilter< DataT >::FilterTime(), cbm::algo::kf::TrackKalmanFilter< DataT >::FilterWithTargetAtLine(), cbm::algo::kf::TrackKalmanFilter< DataT >::FilterXY(), fIstaL, fIstaM, fIstaR, fParameters, frWData, fSetup, fStaL, fStaM, fStaR, fTripletData, cbm::algo::ca::Station< DataT >::fZ, cbm::algo::ca::Iteration::GetElectronFlag(), cbm::algo::kf::FieldSlice< T >::GetFieldValue(), cbm::algo::ca::Iteration::GetMaxQp(), cbm::algo::ca::Framework::GetMcTrackIdForCaHit(), cbm::algo::ca::Iteration::GetName(), cbm::algo::ca::WindowData::Hit(), cbm::algo::ca::Hit::Id(), cbm::algo::kf::kDownstream, cbm::algo::kf::kUpstream, cbm::algo::kf::TrackKalmanFilter< DataT >::MultipleScattering(), cbm::algo::kf::fmask::One(), cbm::algo::kf::fvec::One(), cbm::algo::kf::TrackKalmanFilter< DataT >::Qp0(), cbm::algo::kf::TrackKalmanFilter< DataT >::SetMask(), cbm::algo::kf::TrackKalmanFilter< DataT >::SetParticleMass(), cbm::algo::kf::TrackKalmanFilter< DataT >::SetQp0(), cbm::algo::ca::Hit::T(), cbm::algo::ca::WindowData::TargB(), cbm::algo::ca::WindowData::TargetMeasurement(), cbm::algo::ca::Station< DataT >::timeInfo, cbm::algo::kf::TrackKalmanFilter< DataT >::Tr(), tracks, cbm::algo::ca::Hit::X(), x, cbm::algo::ca::Hit::Y(), y, and cbm::algo::ca::Hit::Z().
Referenced by CreateTripletsForHit().
|
private |
Definition at line 43 of file CaTripletConstructor.cxx.
References fFld0Sta, fFld1Sta, fIstaL, fIstaM, fIstaR, fNfieldStations, fParameters, fStaL, fStaM, and fStaR.
Referenced by CreateTripletsForHit().
|
delete |
Copy assignment operator.
|
delete |
Move assignment operator.
|
private |
Select good triplets.
Selects good triplets and saves them into tripletsOut. Finds neighbouring triplets at the next station.
Definition at line 590 of file CaTripletConstructor.cxx.
References cbm::algo::kf::TrackParamBase< T >::C22(), cbm::algo::kf::TrackParamBase< T >::C33(), cbm::algo::kf::TrackParamBase< T >::C44(), CBMCA_DEBUG_ASSERT, cbm::algo::ca::WindowData::CurrentIteration(), cbm::algo::ca::Vector< T >::emplace_back(), fIhitL, fIstaL, fIstaM, fIstaR, frWData, fStaL, fStaM, fStaR, fTripletData, cbm::algo::kf::TrackParamBase< T >::GetChiSq(), cbm::algo::kf::TrackParamBase< T >::GetChiSqTime(), cbm::algo::ca::Iteration::GetTrackFromTripletsFlag(), cbm::algo::ca::Iteration::GetTripletFinalChi2Cut(), cbm::algo::ca::WindowData::HitStartIndexOnStation(), cbm::algo::kf::TrackParamBase< T >::Qp(), cbm::algo::ca::Vector< T >::reserve(), tracks, cbm::algo::kf::TrackParamBase< T >::Tx(), and cbm::algo::kf::TrackParamBase< T >::Ty().
Referenced by CreateTripletsForHit().
|
staticconstexprprivate |
Definition at line 115 of file CaTripletConstructor.h.
Referenced by CollectHits().
|
staticconstexprprivate |
Definition at line 113 of file CaTripletConstructor.h.
Referenced by FindTripletHits().
|
staticconstexprprivate |
Definition at line 114 of file CaTripletConstructor.h.
Referenced by FindTriplets().
|
private |
mass of the propagated particle [GeV/c2]
Definition at line 82 of file CaTripletConstructor.h.
Referenced by CreateTripletsForHit(), FindTripletHits(), and FindTriplets().
|
private |
Definition at line 110 of file CaTripletConstructor.h.
Referenced by CreateTripletsForHit(), FindDoublets(), and FindTripletHits().
|
private |
Definition at line 99 of file CaTripletConstructor.h.
Referenced by CreateTripletsForHit(), and InitStations().
|
private |
Definition at line 101 of file CaTripletConstructor.h.
Referenced by CreateTripletsForHit(), and InitStations().
|
private |
Definition at line 104 of file CaTripletConstructor.h.
Referenced by CreateTripletsForHit(), and FindTripletHits().
|
private |
index of the left hit in fAlgo->fWindowHits
Definition at line 103 of file CaTripletConstructor.h.
Referenced by CreateTripletsForHit(), FindDoublets(), FindTripletHits(), FindTriplets(), and SelectTriplets().
|
private |
left station index
Definition at line 90 of file CaTripletConstructor.h.
Referenced by CreateTripletsForHit(), FindTripletHits(), FindTriplets(), InitStations(), and SelectTriplets().
|
private |
middle station index
Definition at line 91 of file CaTripletConstructor.h.
Referenced by CreateTripletsForHit(), FindDoublets(), FindTripletHits(), FindTriplets(), InitStations(), and SelectTriplets().
|
private |
right station index
Definition at line 92 of file CaTripletConstructor.h.
Referenced by CreateTripletsForHit(), FindTripletHits(), FindTriplets(), InitStations(), and SelectTriplets().
|
private |
is the magnetic field present at the target
Definition at line 85 of file CaTripletConstructor.h.
Referenced by FindDoublets(), and TripletConstructor().
|
private |
Definition at line 88 of file CaTripletConstructor.h.
Referenced by InitStations(), and TripletConstructor().
|
private |
Object of Framework parameters class.
Definition at line 79 of file CaTripletConstructor.h.
Referenced by CollectHits(), CreateTripletsForHit(), FindDoublets(), FindTripletHits(), FindTriplets(), InitStations(), and TripletConstructor().
|
private |
Definition at line 81 of file CaTripletConstructor.h.
Referenced by CollectHits(), CreateTripletsForHit(), FindDoublets(), FindTripletHits(), FindTriplets(), SelectTriplets(), and TripletConstructor().
|
private |
Reference to the setup.
Definition at line 80 of file CaTripletConstructor.h.
Referenced by CreateTripletsForHit(), FindDoublets(), and FindTriplets().
|
private |
left station
Definition at line 94 of file CaTripletConstructor.h.
Referenced by CreateTripletsForHit(), FindDoublets(), FindTriplets(), InitStations(), and SelectTriplets().
|
private |
mid station
Definition at line 95 of file CaTripletConstructor.h.
Referenced by CreateTripletsForHit(), FindDoublets(), FindTriplets(), InitStations(), and SelectTriplets().
|
private |
right station
Definition at line 96 of file CaTripletConstructor.h.
Referenced by FindTripletHits(), FindTriplets(), InitStations(), and SelectTriplets().
|
private |
Definition at line 83 of file CaTripletConstructor.h.
Referenced by FindDoublets(), and FindTripletHits().
|
private |
Definition at line 107 of file CaTripletConstructor.h.
Referenced by FindTripletHits(), FindTriplets(), and SelectTriplets().