EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
ThreeHitSeedGrower Class Reference

#include <fun4all_coresoftware/blob/master/offline/packages/HelixHough/helix_hough/ThreeHitSeedGrower/ThreeHitSeedGrower.h>

+ Inheritance diagram for ThreeHitSeedGrower:
+ Collaboration diagram for ThreeHitSeedGrower:

Public Member Functions

 ThreeHitSeedGrower (std::vector< float > &detrad, unsigned int n_phi, unsigned int n_d, unsigned int n_k, unsigned int n_dzdl, unsigned int n_z0, HelixResolution &min_resolution, HelixResolution &max_resolution, HelixRange &range)
 
virtual ~ThreeHitSeedGrower ()
 
bool GrowTrack (SimpleTrack3D seed_track, std::vector< unsigned int > &nhit_layer, std::vector< SimpleHit3D > &hits, std::vector< SimpleTrack3D > &tracks, unsigned int c_hit)
 
bool addOneHit (SimpleTrack3D &seed_track, std::vector< unsigned int > &nhit_layer, unsigned int c_hit, std::vector< SimpleHit3D > &hits)
 
void finalize (std::vector< SimpleTrack3D > &input, std::vector< SimpleTrack3D > &output)
 
void findTracks (std::vector< SimpleHit3D > &hits, std::vector< SimpleTrack3D > &tracks)
 
void initEvent (std::vector< SimpleHit3D > &hits)
 
void setUsingVertex (bool usevtx)
 
void setMaxHits (unsigned int max_hits)
 
void setLayerResolution (std::vector< float > &lxy, std::vector< float > &lz)
 
void setVertexResolution (float vxy, float vz)
 
double fitTrack (SimpleTrack3D &track, std::vector< double > &chi2_hit)
 
void setChi2Cut (double c)
 
- Public Member Functions inherited from HelixHough
 HelixHough (unsigned int n_phi, unsigned int n_d, unsigned int n_k, unsigned int n_dzdl, unsigned int n_z0, HelixResolution &min_resolution, HelixResolution &max_resolution, HelixRange &range)
 
 HelixHough (std::vector< std::vector< unsigned int > > &zoom_profile, unsigned int minzoom, HelixRange &range)
 
virtual ~HelixHough ()
 
void initHelixHough (unsigned int n_phi, unsigned int n_d, unsigned int n_k, unsigned int n_dzdl, unsigned int n_z0, HelixResolution &min_resolution, HelixResolution &max_resolution, HelixRange &range)
 
void findHelices (std::vector< SimpleHit3D > &hits, unsigned int min_hits, unsigned int max_hits, std::vector< SimpleTrack3D > &tracks, unsigned int maxtracks=0)
 
void findHelices (unsigned int min_hits, unsigned int max_hits, std::vector< SimpleTrack3D > &tracks, unsigned int maxtracks, unsigned int zoomlevel)
 
void findSeededHelices (std::vector< SimpleTrack3D > &seeds, std::vector< SimpleHit3D > &hits, unsigned int min_hits, unsigned int max_hits, std::vector< SimpleTrack3D > &tracks, unsigned int maxtracks=0)
 
void findSeededHelices_run (std::vector< SimpleTrack3D > &seeds, std::vector< SimpleHit3D > &hits, unsigned int min_hits, unsigned int max_hits, std::vector< SimpleTrack3D > &tracks, unsigned int maxtracks=0)
 
void findSeededHelices (unsigned int min_hits, unsigned int max_hits, std::vector< SimpleTrack3D > &tracks, unsigned int maxtracks, unsigned int zoomlevel)
 
void vote (unsigned int zoomlevel)
 
void setPrintTimings (bool pt)
 
virtual void findTracks (std::vector< SimpleHit3D > &, std::vector< SimpleTrack3D > &, const HelixRange &)=0
 
virtual void initEvent (std::vector< SimpleHit3D > &, unsigned int)
 
virtual void findSeededTracks (std::vector< SimpleTrack3D > &, std::vector< SimpleHit3D > &, std::vector< SimpleTrack3D > &, const HelixRange &)
 
virtual bool breakRecursion (const std::vector< SimpleHit3D > &, const HelixRange &)
 
virtual float phiError (SimpleHit3D &, float, float, float, float, float, float, float, float, bool=false)
 
virtual float dzdlError (SimpleHit3D &, float, float, float, float, float, float, float, float, bool=false)
 
virtual void initSeeding (std::vector< SimpleTrack3D > &)
 
virtual void setSeparateByHelicity (bool sbh)
 
virtual void setOnlyOneHelicity (bool ooh)
 
void setHelicity (bool hel)
 
virtual void requireLayers (unsigned int nl)
 
virtual void setBinScale (float b_scl)
 
virtual void setZBinScale (float b_scl)
 
virtual void setRemoveHits (bool rh)
 
virtual void setRangeFromSeed (HelixRange &range, SimpleTrack3D &seed)
 
virtual void setTopRange (HelixRange &tr)
 
void splitIntoBins (unsigned int min_hits, unsigned int max_hits, std::vector< HelixRange > &ranges, std::vector< std::vector< SimpleHit3D > > &split_hits, unsigned int zoomlevel)
 
virtual void clear ()
 
virtual void setStartZoom (unsigned int sz)
 
virtual void setMaxHitsPairs (unsigned int mhp)
 
void setClusterStartBin (unsigned int csb)
 
void setSeedStates (std::vector< HelixKalmanState > &states)
 
std::vector< HelixKalmanState > & getKalmanStates ()
 
void setLayersAtATime (unsigned int l)
 
void setSmoothBack (bool sb)
 
void setCullInputHits (bool cih)
 
void setIterateClustering (bool icl)
 

Private Attributes

bool using_vertex
 
std::vector< float > detector_radii
 
std::vector< float > layer_xy_resolution
 
std::vector< float > layer_z_resolution
 
double vertex_sigma_xy
 
double vertex_sigma_z
 
double chi2_cut
 
unsigned int _max_hits
 
std::set< std::vector
< unsigned int > > 
combos
 

Additional Inherited Members

- Static Public Member Functions inherited from HelixHough
static void phiRange_sse (float *hit_x, float *hit_y, float *min_d, float *max_d, float *min_k, float *max_k, float *min_phi_1, float *max_phi_1, float *min_phi_2, float *max_phi_2)
 
static void phiRange_sse (float *hit_x, float *hit_y, float *min_d, float *max_d, float *min_k, float *max_k, float *min_phi, float *max_phi, float hel, __m128 &phi_3_out, __m128 &phi_4_out)
 
static void phiRange_sse (float *hit_x, float *hit_y, float *min_d, float *max_d, float *max_k, float *min_phi, float *max_phi, float hel, __m128 &phi_3, __m128 &phi_4, __m128 &phi_3_out, __m128 &phi_4_out)
 
static void dzdlRange_sse (float *x_a, float *y_a, float *z_a, float cosphi1, float sinphi1, float cosphi2, float sinphi2, float min_k, float max_k, float min_d, float max_d, float *min_z0, float *max_z0, float *min_dzdl_a, float *max_dzdl_a)
 
static void phiRange_sse (float *hit_x, float *hit_y, float *min_d, float *max_d, float *min_k, float *max_k, float *min_phi, float *max_phi, float *min_phi_2, float *max_phi_2, float hel, __m128 &phi_3_out, __m128 &phi_4_out, float *hit_x_2, float *hit_y_2, __m128 &phi_3_out_2, __m128 &phi_4_out_2)
 
static void phiRange_sse (float *hit_x, float *hit_y, float *min_d, float *max_d, float *min_k, float *max_k, float *min_phi, float *max_phi, float *min_phi_2, float *max_phi_2, float hel, __m128 &phi_3, __m128 &phi_4, __m128 &phi_3_out, __m128 &phi_4_out, float *hit_x_2, float *hit_y_2, __m128 &phi_3_2, __m128 &phi_4_2, __m128 &phi_3_out_2, __m128 &phi_4_out_2)
 
- Protected Member Functions inherited from HelixHough
void setRange (const BinEntryPair5D &bp, HelixRange &range1, HelixRange &range2, unsigned int n_phi, unsigned int n_d, unsigned int n_k, unsigned int n_dzdl, unsigned int n_z0)
 
void fillBins (unsigned int total_bins, unsigned int hit_counter, float *min_phi_a, float *max_phi_a, std::vector< SimpleHit3D > &four_hits, fastvec2d &z_bins, unsigned int n_d, unsigned int n_k, unsigned int n_dzdl, unsigned int n_z0, unsigned int d_bin, unsigned int k_bin, unsigned int n_phi, unsigned int zoomlevel, float low_phi, float high_phi, float inv_phi_range, fastvec &vote_array)
 
void makeClusters (unsigned int zoomlevel, unsigned int MAX, unsigned int n_phi, unsigned int n_d, unsigned int n_k, unsigned int n_dzdl, unsigned int n_z0, unsigned int min_hits, std::vector< ParameterCluster > &clusters, bool &use_clusters, bool &is_super_bin)
 
bool attemptClusterMerge (unsigned int zoomlevel, unsigned int MAX, unsigned int ca, unsigned int d, unsigned int r, unsigned int th, unsigned int zz0, unsigned int bin, unsigned int newbin, std::vector< unsigned char > &good_bins, unsigned int volume, float cluster_size_cut, float overlap_cut, std::vector< ParameterCluster > &clusters, unsigned int *bins_start, unsigned int *bins_end, std::vector< unsigned int > &map_clus, std::vector< unsigned char > &too_big, std::vector< unsigned int > &temp_merged, std::vector< unsigned int > &C)
 
void vote_z (unsigned int zoomlevel, unsigned int n_phi, unsigned int n_d, unsigned int n_k, unsigned int n_dzdl, unsigned int n_z0, fastvec2d &z_bins)
 
void vote_pairs (unsigned int zoomlevel)
 
void fillBins (unsigned int total_bins, unsigned int pair_counter, unsigned int *pair_index, float *min_phi, float *max_phi, float *min_d, float *max_d, float *min_dzdl, float *max_dzdl, float *min_z0, float *max_z0, std::vector< std::vector< SimpleHit3D > > &four_pairs, unsigned int n_d, unsigned int n_k, unsigned int n_dzdl, unsigned int n_z0, unsigned int k_bin, unsigned int n_phi, unsigned int zoomlevel, float low_phi, float high_phi, float low_d, float high_d, float low_z0, float high_z0, float low_dzdl, float high_dzdl, float inv_phi_range, float inv_d_range, float inv_z0_range, float inv_dzdl_range, fastvec &vote_array)
 
void findHelicesByPairsBegin (unsigned int min_hits, unsigned int max_hits, std::vector< SimpleTrack3D > &tracks, unsigned int maxtracks, unsigned int zoomlevel)
 
void findHelicesByPairs (unsigned int min_hits, unsigned int max_hits, std::vector< SimpleTrack3D > &tracks, unsigned int maxtracks, unsigned int zoomlevel)
 
- Static Protected Member Functions inherited from HelixHough
static void allButKappaRange_sse (float *x1_a, float *x2_a, float *y1_a, float *y2_a, float *z1_a, float *z2_a, float *min_k_a, float *max_k_a, float *min_phi_1_a, float *max_phi_1_a, float *min_phi_2_a, float *max_phi_2_a, float *min_d_1_a, float *max_d_1_a, float *min_d_2_a, float *max_d_2_a, float *min_dzdl_a, float *max_dzdl_a, float *min_z0_1_a, float *max_z0_1_a, float *min_z0_2_a, float *max_z0_2_a)
 
- Protected Attributes inherited from HelixHough
bool remove_hits
 
std::vector< unsigned int > * hit_used
 
std::vector< unsigned int > n_phi_bins
 
std::vector< unsigned int > n_d_bins
 
std::vector< unsigned int > n_k_bins
 
std::vector< unsigned int > n_dzdl_bins
 
std::vector< unsigned int > n_z0_bins
 
std::vector< SimpleHit3D > * base_hits
 
std::vector< std::vector
< SimpleHit3D > * > 
hits_vec
 
std::vector< std::vector
< std::pair< unsigned int,
unsigned int > > * > 
pairs_vec
 
std::vector< unsigned int > index_mapping
 
std::vector< std::vector
< BinEntryPair5D > * > 
bins_vec
 vector of BinEntryPairs which list the parameter bins each hit gets voted into
 
std::vector< std::vector
< SimpleTrack3D > * > 
seeds_vec
 
HelixRange top_range
 
HelixRange current_range
 
std::vector< HelixRangezoomranges
 
std::vector< std::vector
< ParameterCluster > * > 
clusters_vec
 
std::vector< unsigned int > num_clusters
 
std::vector< unsigned int > C_clus
 
std::vector< unsigned int > temp_merged_clus
 
unsigned int max_zoom
 
unsigned int min_zoom
 
bool using_vertex
 
unsigned int max_tracks
 
double vote_time
 
double xy_vote_time
 
double z_vote_time
 
double cluster_time
 
bool print_timings
 
bool separate_by_helicity
 
bool helicity
 
bool only_one_helicity
 
bool check_layers
 
unsigned int req_layers
 
float bin_scale
 
float z_bin_scale
 
unsigned int start_zoom
 
unsigned int max_hits_pairs
 
std::vector< std::pair
< unsigned int, unsigned int > > 
temp_pairs
 
std::set< unsigned int > new_hits
 
std::map< unsigned int,
unsigned int > 
old_to_new
 
unsigned int cluster_start_bin
 
unsigned int bins_start [1<< 12]
 
unsigned int bins_end [1<< 12]
 
unsigned int layers_at_a_time
 
std::vector< HelixKalmanStatetrack_states
 
std::vector< HelixKalmanStateseed_states
 
unsigned int n_layers
 
int layer_start
 
int layer_end
 
bool smooth_back
 
bool cull_input_hits
 
bool iterate_clustering
 

Detailed Description

Definition at line 8 of file ThreeHitSeedGrower.h.

View newest version in sPHENIX GitHub at line 8 of file ThreeHitSeedGrower.h

Constructor & Destructor Documentation

ThreeHitSeedGrower::ThreeHitSeedGrower ( std::vector< float > &  detrad,
unsigned int  n_phi,
unsigned int  n_d,
unsigned int  n_k,
unsigned int  n_dzdl,
unsigned int  n_z0,
HelixResolution min_resolution,
HelixResolution max_resolution,
HelixRange range 
)

Definition at line 13 of file ThreeHitSeedGrower.cpp.

View newest version in sPHENIX GitHub at line 13 of file ThreeHitSeedGrower.cpp

References _max_hits, detector_radii, and HelixHough::n_layers.

virtual ThreeHitSeedGrower::~ThreeHitSeedGrower ( )
inlinevirtual

Definition at line 12 of file ThreeHitSeedGrower.h.

View newest version in sPHENIX GitHub at line 12 of file ThreeHitSeedGrower.h

Member Function Documentation

bool ThreeHitSeedGrower::addOneHit ( SimpleTrack3D seed_track,
std::vector< unsigned int > &  nhit_layer,
unsigned int  c_hit,
std::vector< SimpleHit3D > &  hits 
)

Definition at line 116 of file ThreeHitSeedGrower.cpp.

View newest version in sPHENIX GitHub at line 116 of file ThreeHitSeedGrower.cpp

References chi2_cut, fitTrack(), SimpleTrack3D::hits, and G4TTL::layer.

Referenced by GrowTrack().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ThreeHitSeedGrower::finalize ( std::vector< SimpleTrack3D > &  input,
std::vector< SimpleTrack3D > &  output 
)
virtual

Reimplemented from HelixHough.

Definition at line 142 of file ThreeHitSeedGrower.cpp.

View newest version in sPHENIX GitHub at line 142 of file ThreeHitSeedGrower.cpp

void ThreeHitSeedGrower::findTracks ( std::vector< SimpleHit3D > &  hits,
std::vector< SimpleTrack3D > &  tracks 
)

Definition at line 24 of file ThreeHitSeedGrower.cpp.

View newest version in sPHENIX GitHub at line 24 of file ThreeHitSeedGrower.cpp

References chi2_cut, combos, detector_radii, fitTrack(), GrowTrack(), SimpleTrack3D::hits, it, and G4TTL::layer.

+ Here is the call graph for this function:

double ThreeHitSeedGrower::fitTrack ( SimpleTrack3D track,
std::vector< double > &  chi2_hit 
)

Definition at line 152 of file ThreeHitSeedGrower.cpp.

View newest version in sPHENIX GitHub at line 152 of file ThreeHitSeedGrower.cpp

References cos(), SimpleTrack3D::d, d, dx, dy, SimpleTrack3D::dzdl, dzdl, Acts::UnitConstants::h, SimpleTrack3D::hits, k, SimpleTrack3D::kappa, layer_xy_resolution, layer_z_resolution, SimpleTrack3D::phi, phi, Acts::UnitConstants::s, temp1, temp2, using_vertex, v, vertex_sigma_xy, vertex_sigma_z, y, and SimpleTrack3D::z0.

Referenced by addOneHit(), findTracks(), and GrowTrack().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

bool ThreeHitSeedGrower::GrowTrack ( SimpleTrack3D  seed_track,
std::vector< unsigned int > &  nhit_layer,
std::vector< SimpleHit3D > &  hits,
std::vector< SimpleTrack3D > &  tracks,
unsigned int  c_hit 
)

Definition at line 78 of file ThreeHitSeedGrower.cpp.

View newest version in sPHENIX GitHub at line 78 of file ThreeHitSeedGrower.cpp

References _max_hits, addOneHit(), combos, fitTrack(), SimpleTrack3D::hits, and it.

Referenced by findTracks().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ThreeHitSeedGrower::initEvent ( std::vector< SimpleHit3D > &  hits)
inline

Definition at line 19 of file ThreeHitSeedGrower.h.

View newest version in sPHENIX GitHub at line 19 of file ThreeHitSeedGrower.h

References combos.

void ThreeHitSeedGrower::setChi2Cut ( double  c)
inline

Definition at line 42 of file ThreeHitSeedGrower.h.

View newest version in sPHENIX GitHub at line 42 of file ThreeHitSeedGrower.h

References c, and chi2_cut.

void ThreeHitSeedGrower::setLayerResolution ( std::vector< float > &  lxy,
std::vector< float > &  lz 
)
inline

Definition at line 28 of file ThreeHitSeedGrower.h.

View newest version in sPHENIX GitHub at line 28 of file ThreeHitSeedGrower.h

References layer_xy_resolution, and layer_z_resolution.

void ThreeHitSeedGrower::setMaxHits ( unsigned int  max_hits)
inline

Definition at line 26 of file ThreeHitSeedGrower.h.

View newest version in sPHENIX GitHub at line 26 of file ThreeHitSeedGrower.h

References _max_hits.

void ThreeHitSeedGrower::setUsingVertex ( bool  usevtx)
inline

Definition at line 24 of file ThreeHitSeedGrower.h.

View newest version in sPHENIX GitHub at line 24 of file ThreeHitSeedGrower.h

References using_vertex.

void ThreeHitSeedGrower::setVertexResolution ( float  vxy,
float  vz 
)
inline

Definition at line 34 of file ThreeHitSeedGrower.h.

View newest version in sPHENIX GitHub at line 34 of file ThreeHitSeedGrower.h

References vertex_sigma_xy, and vertex_sigma_z.

Member Data Documentation

unsigned int ThreeHitSeedGrower::_max_hits
private

Definition at line 51 of file ThreeHitSeedGrower.h.

View newest version in sPHENIX GitHub at line 51 of file ThreeHitSeedGrower.h

Referenced by GrowTrack(), setMaxHits(), and ThreeHitSeedGrower().

double ThreeHitSeedGrower::chi2_cut
private

Definition at line 50 of file ThreeHitSeedGrower.h.

View newest version in sPHENIX GitHub at line 50 of file ThreeHitSeedGrower.h

Referenced by addOneHit(), findTracks(), and setChi2Cut().

std::set<std::vector<unsigned int> > ThreeHitSeedGrower::combos
private

Definition at line 52 of file ThreeHitSeedGrower.h.

View newest version in sPHENIX GitHub at line 52 of file ThreeHitSeedGrower.h

Referenced by findTracks(), GrowTrack(), and initEvent().

std::vector<float> ThreeHitSeedGrower::detector_radii
private

Definition at line 46 of file ThreeHitSeedGrower.h.

View newest version in sPHENIX GitHub at line 46 of file ThreeHitSeedGrower.h

Referenced by findTracks(), and ThreeHitSeedGrower().

std::vector<float> ThreeHitSeedGrower::layer_xy_resolution
private

Definition at line 47 of file ThreeHitSeedGrower.h.

View newest version in sPHENIX GitHub at line 47 of file ThreeHitSeedGrower.h

Referenced by fitTrack(), and setLayerResolution().

std::vector<float> ThreeHitSeedGrower::layer_z_resolution
private

Definition at line 48 of file ThreeHitSeedGrower.h.

View newest version in sPHENIX GitHub at line 48 of file ThreeHitSeedGrower.h

Referenced by fitTrack(), and setLayerResolution().

bool ThreeHitSeedGrower::using_vertex
private

Definition at line 45 of file ThreeHitSeedGrower.h.

View newest version in sPHENIX GitHub at line 45 of file ThreeHitSeedGrower.h

Referenced by fitTrack(), and setUsingVertex().

double ThreeHitSeedGrower::vertex_sigma_xy
private

Definition at line 49 of file ThreeHitSeedGrower.h.

View newest version in sPHENIX GitHub at line 49 of file ThreeHitSeedGrower.h

Referenced by fitTrack(), and setVertexResolution().

double ThreeHitSeedGrower::vertex_sigma_z
private

Definition at line 49 of file ThreeHitSeedGrower.h.

View newest version in sPHENIX GitHub at line 49 of file ThreeHitSeedGrower.h

Referenced by fitTrack(), and setVertexResolution().


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