FEDRA emulsion software from the OPERA Collaboration
|
#include <EdbVertex.h>
Public Member Functions | |
void | AcceptModifiedVTX (EdbVertex *eVertex, EdbVertex *eWorking) |
void | AcceptPolish () |
Int_t | AddSegmentToVertex (EdbSegP *s, float ImpMax=25., float ProbMin=0.01, float Mom=0.3) |
EdbVTA * | AddTrack (EdbVertex &edbv, EdbTrackP *track, int zpos) |
EdbVertex * | AddTrackToVertex (EdbVertex *eVertex, EdbTrackP *eTr, int zpos) |
void | AddVertex (EdbVertex *vtx) |
void | AddVTA (EdbVTA *vta) |
void | CancelModifiedVTX (EdbVertex *eVertex, EdbVertex *eWorking) |
Bool_t | CheckDZ2 (float z1, float z2, int zpos1, int zpos2, float z) |
Float_t | CheckImpact (EdbSegP *s1, EdbSegP *s2, int zpos1, int zpos2, float pv[3]) |
Float_t | CheckImpactN (EdbSegP *s1, EdbSegP *s2, float pv[3], bool ¶llel, float dzMax=6000.) |
int | CheckTrack (EdbTrackP &track, int zpos) |
void | CheckVTX () |
bool | CompatibleSegments (EdbSegP &spred, EdbSegP &stest, float impact, float dthetaMax, float dxy, float zminT, float zmaxT, float zminV, float zmaxV) |
EdbVertexRec () | |
EdbVertexRec (EdbVertexPar &vpar) | |
int | EstimateVertexFlag (int zpos1, int zpos2) |
Bool_t | EstimateVertexPosition (EdbVertex &v) |
Bool_t | EstimateVertexQuality (EdbVertex &v) |
void | FillTracksStartEnd (TIndexCell &starts, TIndexCell &ends) |
Int_t | FindSimilarSegments (EdbSegP &spred, TObjArray &found, EdbPattern &pat, float impact, float dthetaMax, float dxy, float zminT, float zmaxT, float zminV, float zmaxV) |
Int_t | FindSimilarTracks (EdbTrackP &t, TObjArray &found, int nsegmin=2, float dMax=100., float dTheta=0.01, float dZmax=50000.) |
Int_t | FindSimilarTracksE (EdbSegP &spred, TObjArray &found, bool startend, float impact, float dthetaMax, float dxy, float zminT, float zmaxT, float zminV, float zmaxV) |
Int_t | FindVertex () |
EdbTrackP * | GetEdbTrack (const int index) |
EdbVertex * | GetVertex (Int_t &i) |
Bool_t | IsInsideLimits (EdbSegP &s) |
Int_t | LinkedVertexes () |
Int_t | LoopVertex (TIndexCell &list1, TIndexCell &list2, int zpos1, int zpos2) |
EdbVertex * | Make1Vertex (TObjArray &tracks, float zexpected) |
Int_t | MakeV (EdbVertex &edbv, bool isRefit=false) |
Double_t | MoveTrackToOtherVertex (EdbVertex *v2, int it2max, EdbVertex *v1, int seltype, EdbVertex **v2n, EdbVertex **v1n) |
Int_t | Nvtx () const |
EdbVertex * | ProbVertex2 (EdbTrackP *tr1, EdbTrackP *tr2, int zpos1, int zpos2) |
Int_t | ProbVertexN () |
Int_t | ProbVertexN_old () |
Int_t | ProbVertexNpos (int zpos) |
int | RefitAll () |
void | RejectPolish () |
EdbVertex * | RemoveTrackFromVertex (EdbVertex *eVertex, int itr) |
EdbVertex * | RemoveVTAFromVertex (EdbVertex &vtx, EdbVTA &vta) |
void | Reset () |
Int_t | SegmentNeighbor (EdbSegP *s, float RadMax=1000., int Dpat=1, float ImpMax=1000000., float SegWmin=9, TObjArray *aseg=0, TObjArray *atr=0, TObjArray *arv=0) |
Int_t | SelSegNeighbor (EdbSegP *s, int seltype, float RadMax, int Dpat, TObjArray *ao) |
Int_t | SelVertNeighbor (EdbVertex *v, int seltype, float RadMax, int Dpat, TObjArray *ao) |
void | Set0 () |
void | SetPVRec (EdbPVRec *pvr) |
void | StatVertexN () |
EdbVertex * | StripBadTracks (EdbVertex &v, float impMax, int ntrMin) |
Double_t | Tdistance (const EdbSegP &s1, const EdbSegP &s2) |
Double_t | Tdistance (const VERTEX::Track &t1, const VERTEX::Track &t2) |
Double_t | TdistanceChi2 (const EdbSegP &s1, const EdbSegP &s2, float m) |
Double_t | TdistanceChi2 (const EdbTrackP &tr1, const EdbTrackP &tr2) |
EdbVertex * | TestVTAGroup (TObjArray &arrvta) |
Int_t | VertexNeighbor (EdbVertex *v, float RadMax=1000., int Dpat=1, float ImpMax=1000000.) |
Int_t | VertexNeighbor (float RadMax=1000., int Dpat=1, float ImpMax=1000000.) |
Int_t | VertexPolish (EdbVertex *v, int refill=0, float RadMax=1000., int Dpat=2, float ImpMax=25., float ProbMin=0.01, float Mom=0.3) |
Int_t | VertexTuning (int seltype=0) |
const TVector3 * | Vmax () const |
const TVector3 * | Vmin () const |
virtual | ~EdbVertexRec () |
![]() | |
EdbVertexPar () | |
virtual | ~EdbVertexPar () |
Public Attributes | |
TObjArray * | eEdbTracks |
EdbPVRec * | ePVR |
patterns volume (optional) More... | |
TList | eVTA |
vertex-track associations More... | |
TObjArray * | eVTX |
array of vertex More... | |
![]() | |
Float_t | eAbin |
safety margin for angular aperture of vertex products More... | |
Float_t | eDZmax |
maximum z-gap in the track-vertex group More... | |
Float_t | eImpMax |
maximal acceptable impact parameter (preliminary check) More... | |
Float_t | eImpMaxV |
if the impact is <= eImpMaxV the 2-vertex is accepted disregard to it's probability More... | |
Float_t | eProbMin |
minimum acceptable probability for chi2-distance between tracks More... | |
Int_t | eQualityMode |
vertex quality estimation method (0:=Prob/(sigVX^2+sigVY^2); 1:= inverse average track-vertex distance) More... | |
Bool_t | eUseKalman |
use or not Kalman for the vertex fit. Default is true More... | |
Bool_t | eUseLimits |
if true - look for the vertex only inside limits defined by eVmin:eVmax, default is false More... | |
Bool_t | eUseMom |
use or not track momentum for vertex calculations More... | |
Bool_t | eUseSegPar |
use only the nearest measured segments for vertex fit (as Neuchatel) More... | |
TVector3 | eVmax |
limits for the vertex search More... | |
TVector3 | eVmin |
Float_t | eZbin |
z- granularity (default is 100 microns) More... | |
Private Attributes | |
EdbVertex * | eVertex |
EdbVertex * | eWorking |
|
inline |
|
inline |
|
virtual |
void EdbVertexRec::AcceptPolish | ( | ) |
int EdbVertexRec::AddSegmentToVertex | ( | EdbSegP * | s, |
float | ImpMax = 25. , |
||
float | ProbMin = 0.01 , |
||
float | Mom = 0.3 |
||
) |
add track to already existing vertex if prob > eProbMin
if vertex do not exist yet - calculate medium x,y,z
Bool_t EdbVertexRec::CheckDZ2 | ( | float | z1, |
float | z2, | ||
int | zpos1, | ||
int | zpos2, | ||
float | z | ||
) |
return 1 if the vertex position (z) is in agreement with limits defined by eZbin and eDZmax
Return: the distance between 2 lines defined by s1 and s2
Input: s1,s2,zpos1,zpos2, where
zpos1, zpos2: 0 - end of the track (to be propagated forward in z)
zpos1, zpos2: 1 - start of the track (to be propagated backward in z)
Output: pv - "vertex position" - the nearest point to the both lines
float EdbVertexRec::CheckImpactN | ( | EdbSegP * | s1, |
EdbSegP * | s2, | ||
float | pv[3], | ||
bool & | parallel, | ||
float | dzMax = 6000. |
||
) |
Return: the distance between 2 lines defined by s1 and s2
Output: pv - "vertex position" - the nearest point to the both lines
int EdbVertexRec::CheckTrack | ( | EdbTrackP & | track, |
int | zpos | ||
) |
loop for all tracks and check if some of them can form the vertex with tr
void EdbVertexRec::CheckVTX | ( | ) |
rank the vertices and reassign tracks according to the major vertex weight
bool EdbVertexRec::CompatibleSegments | ( | EdbSegP & | spred, |
EdbSegP & | stest, | ||
float | impact, | ||
float | dthetaMax, | ||
float | dxy, | ||
float | zminT, | ||
float | zmaxT, | ||
float | zminV, | ||
float | zmaxV | ||
) |
int EdbVertexRec::EstimateVertexFlag | ( | int | zpos1, |
int | zpos2 | ||
) |
Bool_t EdbVertexRec::EstimateVertexPosition | ( | EdbVertex & | v | ) |
make approximate (without matrix) estimation of the vertex and set the reference point of the vertex XYZ in the estimated position
Bool_t EdbVertexRec::EstimateVertexQuality | ( | EdbVertex & | v | ) |
TODO! razobratsia s etimi qualitiami!!
void EdbVertexRec::FillTracksStartEnd | ( | TIndexCell & | starts, |
TIndexCell & | ends | ||
) |
fill tracks starts and ends lookup tables "z:entry" inside sorted tracks: starts - minimal Z; ends - maximal Z
Int_t EdbVertexRec::FindSimilarSegments | ( | EdbSegP & | spred, |
TObjArray & | found, | ||
EdbPattern & | pat, | ||
float | impact, | ||
float | dthetaMax, | ||
float | dxy, | ||
float | zminT, | ||
float | zmaxT, | ||
float | zminV, | ||
float | zmaxV | ||
) |
Find all segments from path compatible with the pred segment and add them to found array
Int_t EdbVertexRec::FindSimilarTracks | ( | EdbTrackP & | t, |
TObjArray & | found, | ||
int | nsegmin = 2 , |
||
float | dMax = 100. , |
||
float | dTheta = 0.01 , |
||
float | dZmax = 50000. |
||
) |
find all tracks close to the "track" and return them in "found"
nsegmin - min number of segments for the interesting tracks
gMax - max 3-d distance between track lines
dTheta - max spatial angle between track lines
dZmax - max distance in z between track lines
Int_t EdbVertexRec::FindSimilarTracksE | ( | EdbSegP & | spred, |
TObjArray & | found, | ||
bool | startend, | ||
float | impact, | ||
float | dthetaMax, | ||
float | dxy, | ||
float | zminT, | ||
float | zmaxT, | ||
float | zminV, | ||
float | zmaxV | ||
) |
Find all tracks with the requested extremity close to the pred segment and add them to found array
startend - selecting tracks extremity to be used: 0-tracks starts (zmin) 1-tracks ends (zmax)
impact - max 3D distance between segment lines
dthetaMax - max spatial angle between track lines
dxy - preliminary distance cut between segments
zminT,zmaxT - limits in Z for the tracks extremity
zminV,zmaxV - limits in Z for the estimated vertex position
int EdbVertexRec::FindVertex | ( | ) |
Note: in this function is assumed that all tracks selections are already done
ProbMin - minimal probability for chi2-distance between tracks
EdbTrackP * EdbVertexRec::GetEdbTrack | ( | const int | index | ) |
|
inline |
Bool_t EdbVertexRec::IsInsideLimits | ( | EdbSegP & | s | ) |
return 1 if the segment position (x,y,z) is inside the limits defined by eVmin,eVmax
int EdbVertexRec::LinkedVertexes | ( | ) |
int EdbVertexRec::LoopVertex | ( | TIndexCell & | list1, |
TIndexCell & | list2, | ||
int | zpos1, | ||
int | zpos2 | ||
) |
zpos1 - the direction flag for the first track 1-start, 0-end
zpos2 - the direction flag for the second track
in cycles is assumed that members of list1 has z <= members of list2
EdbVertex * EdbVertexRec::Make1Vertex | ( | TObjArray & | tracks, |
float | zexpected | ||
) |
int EdbVertexRec::MakeV | ( | EdbVertex & | edbv, |
bool | isRefit = false |
||
) |
create new VtVertex and add tracks to this one
if isRefit - use input vertex position to improve the fit (default is false)
double EdbVertexRec::MoveTrackToOtherVertex | ( | EdbVertex * | v2, |
int | it2max, | ||
EdbVertex * | v1, | ||
int | seltype, | ||
EdbVertex ** | v2n, | ||
EdbVertex ** | v1n | ||
) |
Check if 2 tracks can form the vertex. If yes - return the pointer to the new EdbVertex object
int EdbVertexRec::ProbVertexN | ( | ) |
int EdbVertexRec::ProbVertexN_old | ( | ) |
deprecated function (VT: 7/05/2008. Keeped for back-compatibility tests.
After the complete testing of the new ProbVertexN this function can be removed
int EdbVertexRec::ProbVertexNpos | ( | int | zpos | ) |
cycle by all vertices, check if it is possible to join some of them by common track, do it
int EdbVertexRec::RefitAll | ( | ) |
use already found vertex position to improve the fit
void EdbVertexRec::RejectPolish | ( | ) |
int EdbVertexRec::SegmentNeighbor | ( | EdbSegP * | s, |
float | RadMax = 1000. , |
||
int | Dpat = 1 , |
||
float | ImpMax = 1000000. , |
||
float | SegWmin = 9 , |
||
TObjArray * | aseg = 0 , |
||
TObjArray * | atr = 0 , |
||
TObjArray * | arv = 0 |
||
) |
int EdbVertexRec::SelSegNeighbor | ( | EdbSegP * | s, |
int | seltype, | ||
float | RadMax, | ||
int | Dpat, | ||
TObjArray * | ao | ||
) |
int EdbVertexRec::SelVertNeighbor | ( | EdbVertex * | v, |
int | seltype, | ||
float | RadMax, | ||
int | Dpat, | ||
TObjArray * | ao | ||
) |
void EdbVertexRec::Set0 | ( | ) |
void EdbVertexRec::StatVertexN | ( | ) |
double EdbVertexRec::Tdistance | ( | const VERTEX::Track & | t1, |
const VERTEX::Track & | t2 | ||
) |
geometrical distance between 2 track lines in the space XYZ
EdbVertex * EdbVertexRec::TestVTAGroup | ( | TObjArray & | arrvta | ) |
Try to create N-prong vertex from vta's group
Input: array of preselected vta's
return the new vertex if successful
int EdbVertexRec::VertexNeighbor | ( | EdbVertex * | v, |
float | RadMax = 1000. , |
||
int | Dpat = 1 , |
||
float | ImpMax = 1000000. |
||
) |
int EdbVertexRec::VertexNeighbor | ( | float | RadMax = 1000. , |
int | Dpat = 1 , |
||
float | ImpMax = 1000000. |
||
) |
int EdbVertexRec::VertexPolish | ( | EdbVertex * | v, |
int | refill = 0 , |
||
float | RadMax = 1000. , |
||
int | Dpat = 2 , |
||
float | ImpMax = 25. , |
||
float | ProbMin = 0.01 , |
||
float | Mom = 0.3 |
||
) |
int EdbVertexRec::VertexTuning | ( | int | seltype = 0 | ) |
|
inline |
|
inline |
TObjArray* EdbVertexRec::eEdbTracks |
EdbPVRec* EdbVertexRec::ePVR |
patterns volume (optional)
|
private |
TList EdbVertexRec::eVTA |
vertex-track associations
TObjArray* EdbVertexRec::eVTX |
array of vertex
|
private |