FEDRA emulsion software from the OPERA Collaboration
|
#include <EdbPVRec.h>
Public Member Functions | |
void | AddCouple (EdbPatCouple *c) |
EdbPatCouple * | AddCouple (int id1, int id2) |
void | AddCouplesToTracks (EdbPatCouple *pc, TIndex2 &itracks) |
void | AddCouplesToTracksM (EdbPatCouple *pc, TIndex2 &itracks) |
EdbSegP * | AddSegment (EdbSegP &s) |
int | AddSegments (EdbPVRec &ali) |
int | AddSegments (EdbTrackP &track) |
void | AddTrack (EdbTrackP *track) |
void | AddVertex (EdbVertex *vtx) |
int | Align (int alignFlag) |
int | AlignOld (int alignFlag) |
int | AlignPlates (EdbScanSet &sci, EdbScanSet &sca, const char *reportdir=0) |
float | Chi2Fast (EdbSegP &s1, EdbSegP &s2) |
float | Chi2Max () const |
int | CollectSegment (TIndexCell *ct, TIndexCell *cross) |
int | CollectSegment1 (TIndexCell *ct, THashList *cross) |
int | CombTracks (int nplmin, int ngapMax, float probMin=0.01) |
void | DeleteCouples () |
void | DummyCycle () |
EdbPVRec () | |
============================================================================= More... | |
int | ExtractDataVolumeSeg (EdbTrackP &tr, TObjArray &arr, float binx, float bint) |
int | ExtractDataVolumeSegAll (TObjArray &arr) |
void | FillCell (float stepx, float stepy, float steptx, float stepty) |
void | FillTracksCell () |
void | FillTracksCell1 () |
void | FillTracksCell2 () |
void | FillTracksCellFast () |
EdbSegP * | FindSegment (int PlateID, int SegmentID) const |
EdbTrackP * | FindTrack (int id) const |
int | FineCorrF (int ipat, EdbAffine2D &aff, EdbAffine2D &afft) |
int | FineCorrShr (int ipat, float &shr) |
int | FineCorrTXTY (int ipat, EdbAffine2D &aff) |
int | FineCorrXY (int ipat, EdbAffine2D &aff, int flag) |
int | FineCorrZ (int ipat, float &dz) |
int | FineCorrZnew () |
void | FitTracks (float p=10., float mass=0.139, TObjArray *gener=0, int design=0) |
EdbPatCouple * | GetCouple (int i) const |
EdbPattern * | GetPatternByPID (int pid) |
EdbScanCond const * | GetScanCond () |
EdbTrackP * | GetTrack (int i) const |
TObjArray * | GetTracks () |
TIndexCell * | GetTracksCell () const |
EdbVertex * | GetVertex (Int_t &i) |
TObjArray * | GetVertices () |
int | InsertHole (const EdbSegP *s1, const EdbSegP *s2, int pid) |
void | InsertTrack (const EdbTrackP &t) |
int | Link () |
int | LinkSlow () |
int | MakeHoles (int ort) |
int | MakeSummaryTracks () |
int | MakeTracks (int nsegments=2, int flag=0) |
int | MergeTracks (int maxgap=2) |
int | MergeTracks1 (int maxgap) |
Int_t | Ncouples () const |
Int_t | NSeg () |
Int_t | Ntracks () const |
Int_t | Nvtx () const |
void | PrintSummary () |
int | PropagateTrack (EdbTrackP &tr, bool followZ, float probMin=0.05, int ngapMax=3, int design=0) |
int | PropagateTracks (int nplmax, int nplmin, float probMin=0.05, int ngapMax=3, int design=0) |
void | ResetCouples () |
void | ResetTracks () |
int | SelectLongTracks (int nsegments) |
void | SetBinsCheck (int nx, int ny, int ntx, int nty) |
void | SetChi2Max (float chi) |
void | SetCouples () |
void | SetCouplesAll () |
void | SetCouplesExclude (TArrayI &exclude) |
void | SetCouplesPeriodic (int istart, int iperiod) |
void | SetOffsetsMax (float ox, float oy) |
void | SetScanCond (EdbScanCond *scan) |
void | SetScanIDPatSeg (EdbID id) |
void | SetScanIDTrackSeg (EdbID id) |
void | SetSegmentErrors (EdbSegP &seg) |
void | SetSegmentProbability (EdbSegP &seg) |
void | SetSegmentsErrors () |
void | SetSegmentsTracks () |
float | Xmax () |
float | Xmin () |
float | Ymax () |
float | Ymin () |
~EdbPVRec () | |
![]() | |
void | AddPattern (EdbPattern *pat) |
void | AddPatternAt (EdbPattern *pat, int id) |
void | Centralize () |
void | Centralize (float xc, float yc) |
void | DropCell () |
int | DropCouples () |
EdbPatternsVolume () | |
EdbPatternsVolume (EdbPatternsVolume &pvol) | |
int | FindComplimentsVol (EdbSegP &s, TObjArray &arr, float nsig, float nsigt, int dpat) |
EdbPattern * | GetPattern (int id) const |
EdbPattern * | GetPatternByPID (int pid) const |
EdbPattern * | GetPatternByPlate (int plate, int side) |
EdbPattern * | GetPatternByZ (float z, float tolerance=5) const |
EdbPattern* GetPatternByZ(float z) const;. More... | |
EdbPattern * | GetPatternNext (float z, int dir) const |
EdbPattern * | GetPatternPreceding (EdbPattern *pat) const |
EdbPattern * | GetPatternSucceding (EdbPattern *pat) const |
EdbPattern * | GetPatternZLowestHighest (Bool_t lowestZ=kTRUE) const |
EdbSegP * | GetSegment (Long_t vid) const |
EdbPattern * | InsertPattern (EdbPattern *pat, Bool_t descendingZ=0) |
EdbPattern * | NextPattern (float z, int dir) const |
Int_t | Npatterns () const |
void | PassProperties (EdbPatternsVolume &pvol) |
Int_t | Pid (Long_t vid) const |
void | Print () const |
void | PrintAff () const |
void | PrintStat (EdbPattern &pat) const |
void | PrintStat (Option_t *opt="") const |
void | Set0 () |
void | SetPatternsID () |
void | SetXYZ (float x, float y, float z) |
void | Shift (float x, float y) |
Int_t | Sid (Long_t vid) const |
void | SortPatternsByZ (Bool_t descendingZ=0) |
void | Transform (const EdbAffine2D *aff) |
Long_t | Vid (int pid, int sid) const |
Float_t | X () const |
Float_t | Xmean () |
Float_t | Y () const |
Float_t | Ymean () |
Float_t | Z () const |
virtual | ~EdbPatternsVolume () |
Static Public Member Functions | |
static bool | AttachSeg (EdbTrackP &tr, EdbSegP *s, const float X0, const float ProbMin, float &prob) |
static double | ProbeSeg (const EdbSegP *s1, EdbSegP *s2, const float X0=5810., const float mass=0.1396) |
static double | ProbeSeg (const EdbTrackP *s1, EdbSegP *s2, const float X0=5810.) |
static double | ProbeSeg (const EdbTrackP *s1, EdbTrackP *s2, const float X0=5810.) |
Public Attributes | |
TObjArray * | eTracks |
TObjArray * | eVTX |
array of vertex More... | |
![]() | |
Bool_t | eDescendingZ |
if =0 - z increase in the pattrens array; if =1 - decrease More... | |
TObjArray * | ePatterns |
collection of patterns More... | |
TIndexCell * | ePatternsCell |
"pid:id1:chi2:id2" - all found couples More... | |
TIndexCell * | eTracksCell |
"vidt:vids" - connected segments cell More... | |
Private Attributes | |
float | eChi2Max |
TObjArray * | ePatCouples |
patterns couples More... | |
EdbScanCond * | eScanCond |
scanning conditions (sigma, puls, etc) More... | |
TIndexCell * | eTracksCell |
Long_t | eVdiff [4] |
how many ajenced bins should be taken into account More... | |
EdbPVRec::EdbPVRec | ( | ) |
=============================================================================
EdbPVRec::~EdbPVRec | ( | ) |
|
inline |
EdbPatCouple * EdbPVRec::AddCouple | ( | int | id1, |
int | id2 | ||
) |
void EdbPVRec::AddCouplesToTracks | ( | EdbPatCouple * | pc, |
TIndex2 & | itracks | ||
) |
void EdbPVRec::AddCouplesToTracksM | ( | EdbPatCouple * | pc, |
TIndex2 & | itracks | ||
) |
merge segments into clusters
add new segment to this create and insert new pattern if needed plate, side and Z for the segment should be correctly defined Note: slow function - use for additional segments only as "manual check" etc
int EdbPVRec::AddSegments | ( | EdbPVRec & | ali | ) |
int EdbPVRec::AddSegments | ( | EdbTrackP & | track | ) |
int EdbPVRec::Align | ( | int | alignFlag | ) |
int EdbPVRec::AlignOld | ( | int | alignFlag | ) |
align patterns in volume
int EdbPVRec::AlignPlates | ( | EdbScanSet & | sci, |
EdbScanSet & | sca, | ||
const char * | reportdir = 0 |
||
) |
|
static |
Return value: Prob: is Chi2 probability (area of the tail of Chi2-distribution) If we accept couples with Prob >= ProbMinP then ProbMinP is the probability to reject the good couple
The mass and momentum of the tr are used for multiple scattering estimation
|
inline |
int EdbPVRec::CollectSegment | ( | TIndexCell * | ct, |
TIndexCell * | cross | ||
) |
int EdbPVRec::CollectSegment1 | ( | TIndexCell * | ct, |
THashList * | cross | ||
) |
int EdbPVRec::CombTracks | ( | int | nplmin, |
int | ngapMax, | ||
float | probMin = 0.01 |
||
) |
eliminate crossing&overlapping tracks with multiple segments usage discard tracks with probability < probMin
|
inline |
void EdbPVRec::DummyCycle | ( | ) |
int EdbPVRec::ExtractDataVolumeSeg | ( | EdbTrackP & | tr, |
TObjArray & | arr, | ||
float | binx, | ||
float | bint | ||
) |
int EdbPVRec::ExtractDataVolumeSegAll | ( | TObjArray & | arr | ) |
void EdbPVRec::FillCell | ( | float | stepx, |
float | stepy, | ||
float | steptx, | ||
float | stepty | ||
) |
void EdbPVRec::FillTracksCell | ( | ) |
TODO: speed-up this algorithm
fill tracks cell "vid1:vid2" second segment is considered as leading one
void EdbPVRec::FillTracksCell1 | ( | ) |
TODO: speed-up this algorithm
fill tracks cell "vid1:vid2" second segment is considered as leading one
TIndexCell *cross = new TIndexCell();
void EdbPVRec::FillTracksCell2 | ( | ) |
TODO: speed-up this algorithm
fill tracks cell "vid1:vid2" second segment is considered as leading one
void EdbPVRec::FillTracksCellFast | ( | ) |
fill tracks cell "vid1:vid2" second segment is considered as leading one
EdbSegP * EdbPVRec::FindSegment | ( | int | PlateID, |
int | SegmentID | ||
) | const |
EdbTrackP * EdbPVRec::FindTrack | ( | int | id | ) | const |
int EdbPVRec::FineCorrF | ( | int | ipat, |
EdbAffine2D & | aff, | ||
EdbAffine2D & | afft | ||
) |
int EdbPVRec::FineCorrShr | ( | int | ipat, |
float & | shr | ||
) |
int EdbPVRec::FineCorrTXTY | ( | int | ipat, |
EdbAffine2D & | aff | ||
) |
int EdbPVRec::FineCorrXY | ( | int | ipat, |
EdbAffine2D & | aff, | ||
int | flag | ||
) |
int EdbPVRec::FineCorrZ | ( | int | ipat, |
float & | dz | ||
) |
int EdbPVRec::FineCorrZnew | ( | ) |
calculate z-correction for all patterns based on linked tracks of any length gaps to be ignored...
void EdbPVRec::FitTracks | ( | float | p = 10. , |
float | mass = 0.139 , |
||
TObjArray * | gener = 0 , |
||
int | design = 0 |
||
) |
measurement errors: TODO TODO: move gener logic out from EdbPVRec; i voobshe polnyi bardak v etoi funkzii
|
inline |
EdbPattern * EdbPVRec::GetPatternByPID | ( | int | pid | ) |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
int EdbPVRec::Link | ( | ) |
link tracks in aligned volume
int EdbPVRec::LinkSlow | ( | ) |
link tracks in aligned volume
int EdbPVRec::MakeHoles | ( | int | ort | ) |
holes attached only from the one side corresponding to ort only tracks with nseg>= abs(ort) are extrapolated
int EdbPVRec::MakeSummaryTracks | ( | ) |
int EdbPVRec::MakeTracks | ( | int | nsegments = 2 , |
int | flag = 0 |
||
) |
extract from index_table tracks longer then nsegments and form tracks array assign the flag to the newly created tracks return the number of created tracks
int EdbPVRec::MergeTracks | ( | int | maxgap = 2 | ) |
int EdbPVRec::MergeTracks1 | ( | int | maxgap | ) |
|
inline |
Int_t EdbPVRec::NSeg | ( | ) |
void EdbPVRec::PrintSummary | ( | ) |
Print Summary Information of relevant data of this object. Useful for debugging purposes.
|
static |
Return value: Prob: is Chi2 probability (area of the tail of Chi2-distribution) If we accept couples with Prob >= ProbMin then ProbMin is the probability to reject the good couple
The mass and momentum of the tr are used for multiple scattering estimation
int EdbPVRec::PropagateTrack | ( | EdbTrackP & | tr, |
bool | followZ, | ||
float | probMin = 0.05 , |
||
int | ngapMax = 3 , |
||
int | design = 0 |
||
) |
int EdbPVRec::PropagateTracks | ( | int | nplmax, |
int | nplmin, | ||
float | probMin = 0.05 , |
||
int | ngapMax = 3 , |
||
int | design = 0 |
||
) |
extrapolate incomplete tracks and update them with new segments
input: nplmax - the maximal length of the track to be continued input: nplmin - the minimal length of the track to be continued
void EdbPVRec::ResetCouples | ( | ) |
void EdbPVRec::ResetTracks | ( | ) |
int EdbPVRec::SelectLongTracks | ( | int | nsegments | ) |
|
inline |
void EdbPVRec::SetCouples | ( | ) |
using already setted ID's of couples attach the patterns
void EdbPVRec::SetCouplesAll | ( | ) |
form couples array for all available patterns ID's
void EdbPVRec::SetCouplesExclude | ( | TArrayI & | exclude | ) |
by Alessandra Pastore
TArray exclude[npat]={0,1,1,0,...,0} where
0 = plate to be excluded from the volume pattern; 1 = plate to be included into the volume pattern
void EdbPVRec::SetCouplesPeriodic | ( | int | istart, |
int | iperiod | ||
) |
istart: start from pattern iperiod: distance between patterns
void EdbPVRec::SetOffsetsMax | ( | float | ox, |
float | oy | ||
) |
|
inline |
set eBrick,eMajor and eMinor for all segments of all volume patterns leave ePlate as is
set eBrick,eMajor and eMinor for all segments of all volume patterns leave ePlate as is
segment errors are depends on the scanning conditions and segment parameters (angles). Puls height is represents segments probability (not accuracy) and should be taken into account separately
segment probability is depends on: puls height signal puls distribution noise puls distribution angles
void EdbPVRec::SetSegmentsErrors | ( | ) |
void EdbPVRec::SetSegmentsTracks | ( | ) |
float EdbPVRec::Xmax | ( | ) |
float EdbPVRec::Xmin | ( | ) |
float EdbPVRec::Ymax | ( | ) |
float EdbPVRec::Ymin | ( | ) |
|
private |
|
private |
patterns couples
|
private |
scanning conditions (sigma, puls, etc)
TObjArray* EdbPVRec::eTracks |
|
private |
|
private |
how many ajenced bins should be taken into account
TObjArray* EdbPVRec::eVTX |
array of vertex