CbmRoot
Loading...
Searching...
No Matches
cbm::algo::ca::TripletConstructor Class Reference

#include <CaTripletConstructor.h>

Collaboration diagram for cbm::algo::ca::TripletConstructor:
[legend]

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.
 
TripletConstructoroperator= (const TripletConstructor &)=delete
 Copy assignment operator.
 
TripletConstructoroperator= (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.
 
WindowDatafrWData
 
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< fvecfFldL
 
Triplet_t fTripletData
 
Doublet_t fDoubletData
 

Static Private Attributes

static constexpr bool fDebugDublets = false
 
static constexpr bool fDebugTriplets = false
 
static constexpr bool fDebugCollectHits = false
 

Detailed Description

Construction of triplets for the CA tracker

Definition at line 28 of file CaTripletConstructor.h.

Member Typedef Documentation

◆ Doublet_t

◆ Triplet_t

Constructor & Destructor Documentation

◆ TripletConstructor() [1/3]

cbm::algo::ca::TripletConstructor::TripletConstructor ( const ca::Parameters< fvec > & pars,
WindowData & wData,
const fscal mass,
const ca::TrackingMode & mode )

---— Constructors and destructor ---—

Constructor

Parameters
nThreadsNumber 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().

◆ TripletConstructor() [2/3]

cbm::algo::ca::TripletConstructor::TripletConstructor ( const TripletConstructor & )
delete

Copy constructor.

◆ TripletConstructor() [3/3]

cbm::algo::ca::TripletConstructor::TripletConstructor ( TripletConstructor && )
delete

Move constructor.

◆ ~TripletConstructor()

cbm::algo::ca::TripletConstructor::~TripletConstructor ( )
default

Destructor.

Member Function Documentation

◆ CollectHits()

void cbm::algo::ca::TripletConstructor::CollectHits ( Vector< ca::HitIndex_t > & collectedHits,
kf::TrackKalmanFilter< fvec > & fit,
const int iSta,
const double chi2Cut,
const int iMC,
const int maxNhits )
private

◆ CreateTripletsForHit()

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().

◆ FindDoublets()

void cbm::algo::ca::TripletConstructor::FindDoublets ( kf::TrackKalmanFilter< fvec > & fit)
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().

◆ FindTripletHits()

void cbm::algo::ca::TripletConstructor::FindTripletHits ( )
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().

◆ FindTriplets()

void cbm::algo::ca::TripletConstructor::FindTriplets ( )
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().

◆ InitStations()

bool cbm::algo::ca::TripletConstructor::InitStations ( int istal,
int istam,
int istar )
private

Definition at line 43 of file CaTripletConstructor.cxx.

References fFld0Sta, fFld1Sta, fIstaL, fIstaM, fIstaR, fNfieldStations, fParameters, fStaL, fStaM, and fStaR.

Referenced by CreateTripletsForHit().

◆ operator=() [1/2]

TripletConstructor & cbm::algo::ca::TripletConstructor::operator= ( const TripletConstructor & )
delete

Copy assignment operator.

◆ operator=() [2/2]

TripletConstructor & cbm::algo::ca::TripletConstructor::operator= ( TripletConstructor && )
delete

Move assignment operator.

◆ SelectTriplets()

Member Data Documentation

◆ fDebugCollectHits

bool cbm::algo::ca::TripletConstructor::fDebugCollectHits = false
staticconstexprprivate

Definition at line 115 of file CaTripletConstructor.h.

Referenced by CollectHits().

◆ fDebugDublets

bool cbm::algo::ca::TripletConstructor::fDebugDublets = false
staticconstexprprivate

Definition at line 113 of file CaTripletConstructor.h.

Referenced by FindTripletHits().

◆ fDebugTriplets

bool cbm::algo::ca::TripletConstructor::fDebugTriplets = false
staticconstexprprivate

Definition at line 114 of file CaTripletConstructor.h.

Referenced by FindTriplets().

◆ fDefaultMass

fscal cbm::algo::ca::TripletConstructor::fDefaultMass {constants::phys::MuonMass}
private

mass of the propagated particle [GeV/c2]

Definition at line 82 of file CaTripletConstructor.h.

Referenced by CreateTripletsForHit(), FindTripletHits(), and FindTriplets().

◆ fDoubletData

Doublet_t cbm::algo::ca::TripletConstructor::fDoubletData
private

Definition at line 110 of file CaTripletConstructor.h.

Referenced by CreateTripletsForHit(), FindDoublets(), and FindTripletHits().

◆ fFld0Sta

const ca::Station<fvec>* cbm::algo::ca::TripletConstructor::fFld0Sta[2]
private

Definition at line 99 of file CaTripletConstructor.h.

Referenced by CreateTripletsForHit(), and InitStations().

◆ fFld1Sta

const ca::Station<fvec>* cbm::algo::ca::TripletConstructor::fFld1Sta[3]
private

Definition at line 101 of file CaTripletConstructor.h.

Referenced by CreateTripletsForHit(), and InitStations().

◆ fFldL

kf::FieldRegion<fvec> cbm::algo::ca::TripletConstructor::fFldL
private

Definition at line 104 of file CaTripletConstructor.h.

Referenced by CreateTripletsForHit(), and FindTripletHits().

◆ fIhitL

ca::HitIndex_t cbm::algo::ca::TripletConstructor::fIhitL
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().

◆ fIstaL

int cbm::algo::ca::TripletConstructor::fIstaL {-1}
private

left station index

Definition at line 90 of file CaTripletConstructor.h.

Referenced by CreateTripletsForHit(), FindTripletHits(), FindTriplets(), InitStations(), and SelectTriplets().

◆ fIstaM

int cbm::algo::ca::TripletConstructor::fIstaM {-1}
private

middle station index

Definition at line 91 of file CaTripletConstructor.h.

Referenced by CreateTripletsForHit(), FindDoublets(), FindTripletHits(), FindTriplets(), InitStations(), and SelectTriplets().

◆ fIstaR

int cbm::algo::ca::TripletConstructor::fIstaR {-1}
private

right station index

Definition at line 92 of file CaTripletConstructor.h.

Referenced by CreateTripletsForHit(), FindTripletHits(), FindTriplets(), InitStations(), and SelectTriplets().

◆ fIsTargetField

bool cbm::algo::ca::TripletConstructor::fIsTargetField {false}
private

is the magnetic field present at the target

Definition at line 85 of file CaTripletConstructor.h.

Referenced by FindDoublets(), and TripletConstructor().

◆ fNfieldStations

int cbm::algo::ca::TripletConstructor::fNfieldStations {0}
private

Definition at line 88 of file CaTripletConstructor.h.

Referenced by InitStations(), and TripletConstructor().

◆ fParameters

const Parameters<fvec>& cbm::algo::ca::TripletConstructor::fParameters
private

◆ frWData

WindowData& cbm::algo::ca::TripletConstructor::frWData
private

◆ fSetup

const cbm::algo::kf::Setup<fvec>& cbm::algo::ca::TripletConstructor::fSetup
private

Reference to the setup.

Definition at line 80 of file CaTripletConstructor.h.

Referenced by CreateTripletsForHit(), FindDoublets(), and FindTriplets().

◆ fStaL

const ca::Station<fvec>* cbm::algo::ca::TripletConstructor::fStaL {nullptr}
private

left station

Definition at line 94 of file CaTripletConstructor.h.

Referenced by CreateTripletsForHit(), FindDoublets(), FindTriplets(), InitStations(), and SelectTriplets().

◆ fStaM

const ca::Station<fvec>* cbm::algo::ca::TripletConstructor::fStaM {nullptr}
private

mid station

Definition at line 95 of file CaTripletConstructor.h.

Referenced by CreateTripletsForHit(), FindDoublets(), FindTriplets(), InitStations(), and SelectTriplets().

◆ fStaR

const ca::Station<fvec>* cbm::algo::ca::TripletConstructor::fStaR {nullptr}
private

right station

Definition at line 96 of file CaTripletConstructor.h.

Referenced by FindTripletHits(), FindTriplets(), InitStations(), and SelectTriplets().

◆ fTrackingMode

ca::TrackingMode cbm::algo::ca::TripletConstructor::fTrackingMode
private

Definition at line 83 of file CaTripletConstructor.h.

Referenced by FindDoublets(), and FindTripletHits().

◆ fTripletData

Triplet_t cbm::algo::ca::TripletConstructor::fTripletData
private

Definition at line 107 of file CaTripletConstructor.h.

Referenced by FindTripletHits(), FindTriplets(), and SelectTriplets().


The documentation for this class was generated from the following files: