#include <PndTrkMergeSort.h>
|
| PndTrkMergeSort () |
|
| ~PndTrkMergeSort () |
|
void | Merge (Short_t nl, Double_t *left, Int_t *ind_left, Short_t nr, Double_t *right, Int_t *ind_right, Double_t *result, Int_t *ind) |
|
void | Merge2 (Short_t nl, Double_t *left, Short_t *ind_left, Short_t nr, Double_t *right, Short_t *ind_right, Double_t *result, Short_t *ind) |
|
void | Merge3 (Short_t nl, Int_t *left, Short_t *ind_left, Short_t nr, Int_t *right, Short_t *ind_right, Int_t *result, Short_t *ind) |
|
void | Merge_Sort (Short_t n_ele, Double_t *array, Int_t *ind) |
|
void | Merge_Sort2 (Short_t n_ele, Double_t *array, Short_t *ind) |
|
void | Merge_Sort3 (Short_t n_ele, Int_t *array, Short_t *ind) |
|
| ClassDef (PndTrkMergeSort, 1) |
|
Definition at line 8 of file PndTrkMergeSort.h.
PndTrkMergeSort::PndTrkMergeSort |
( |
| ) |
|
|
inline |
PndTrkMergeSort::~PndTrkMergeSort |
( |
| ) |
|
|
inline |
void PndTrkMergeSort::Merge |
( |
Short_t |
nl, |
|
|
Double_t * |
left, |
|
|
Int_t * |
ind_left, |
|
|
Short_t |
nr, |
|
|
Double_t * |
right, |
|
|
Int_t * |
ind_right, |
|
|
Double_t * |
result, |
|
|
Int_t * |
ind |
|
) |
| |
Definition at line 15 of file PndTrkMergeSort.cxx.
References i.
26 Short_t
i =0, j, nl_curr=0, nr_curr=0;
28 while( nl > 0 && nr >0){
29 if( left[nl_curr] <= right[nr_curr]){
30 result[
i] = left[nl_curr];
31 ind[
i] = ind_left[nl_curr];
35 result[
i] = right [nr_curr];
36 ind[
i] = ind_right [nr_curr];
45 result[i+j]= right[nr_curr+j];
46 ind[i+j]= ind_right[nr_curr+j];
50 result[i+j]= left[nl_curr+j];
51 ind[i+j]= ind_left[nl_curr+j];
void PndTrkMergeSort::Merge2 |
( |
Short_t |
nl, |
|
|
Double_t * |
left, |
|
|
Short_t * |
ind_left, |
|
|
Short_t |
nr, |
|
|
Double_t * |
right, |
|
|
Short_t * |
ind_right, |
|
|
Double_t * |
result, |
|
|
Short_t * |
ind |
|
) |
| |
Definition at line 68 of file PndTrkMergeSort.cxx.
References i.
79 Short_t
i =0, j, nl_curr=0, nr_curr=0;
81 while( nl > 0 && nr >0){
82 if( left[nl_curr] <= right[nr_curr]){
83 result[
i] = left[nl_curr];
84 ind[
i] = ind_left[nl_curr];
88 result[
i] = right [nr_curr];
89 ind[
i] = ind_right [nr_curr];
98 result[i+j]= right[nr_curr+j];
99 ind[i+j]= ind_right[nr_curr+j];
103 result[i+j]= left[nl_curr+j];
104 ind[i+j]= ind_left[nl_curr+j];
void PndTrkMergeSort::Merge3 |
( |
Short_t |
nl, |
|
|
Int_t * |
left, |
|
|
Short_t * |
ind_left, |
|
|
Short_t |
nr, |
|
|
Int_t * |
right, |
|
|
Short_t * |
ind_right, |
|
|
Int_t * |
result, |
|
|
Short_t * |
ind |
|
) |
| |
Definition at line 119 of file PndTrkMergeSort.cxx.
References i.
130 Short_t
i =0, j, nl_curr=0, nr_curr=0;
132 while( nl > 0 && nr >0){
133 if( left[nl_curr] <= right[nr_curr]){
134 result[
i] = left[nl_curr];
135 ind[
i] = ind_left[nl_curr];
139 result[
i] = right [nr_curr];
140 ind[
i] = ind_right [nr_curr];
149 result[i+j]= right[nr_curr+j];
150 ind[i+j]= ind_right[nr_curr+j];
154 result[i+j]= left[nl_curr+j];
155 ind[i+j]= ind_left[nl_curr+j];
void PndTrkMergeSort::Merge_Sort |
( |
Short_t |
n_ele, |
|
|
Double_t * |
array, |
|
|
Int_t * |
ind |
|
) |
| |
Definition at line 166 of file PndTrkMergeSort.cxx.
References Double_t, and i.
Referenced by PndTrkCTGeometryCalculations::ChooseEntranceExit3(), PndTrkCTGeometryCalculations::ChooseEntranceExitbis(), PndTrkTracking2::Initial_SttParHits_DecreasingR_Ordering(), PndTrkCTFindTrackInXY::OrderingParallel(), PndTrkTracking2::OrderingR_Loading_ListTrackCandHit(), PndTrkTracking2::OrderingSttSkewandSttParallel(), and PndTrkTracking2::OrderingUsingConformal().
173 ind_left[n_ele], ind_right[n_ele];
177 if( n_ele <= 1)
return;
180 for(i=0; i<middle; i++){
184 for(i=middle; i<n_ele; i++){
185 right[i-middle]=array[
i];
186 ind_right[i-middle]= ind[
i];
192 if( left[middle-1] > right[0]) {
193 Merge(middle, left,ind_left, n_ele-middle, right, ind_right, array, ind);
196 for(i=0; i<middle; i++){
201 for(i=middle; i<n_ele; i++){
202 array[
i]=right[i-middle];
203 ind[
i]=ind_right[i-middle];
void Merge(Short_t nl, Double_t *left, Int_t *ind_left, Short_t nr, Double_t *right, Int_t *ind_right, Double_t *result, Int_t *ind)
void Merge_Sort(Short_t n_ele, Double_t *array, Int_t *ind)
void PndTrkMergeSort::Merge_Sort2 |
( |
Short_t |
n_ele, |
|
|
Double_t * |
array, |
|
|
Short_t * |
ind |
|
) |
| |
Definition at line 220 of file PndTrkMergeSort.cxx.
References Double_t, and i.
Referenced by PndTrkCTFindTrackInXY2::OrderingUsingConformal(), PndTrkCTFindTrackInXY2::OrderingUsingFi(), and PndTrkCTFindTrackInXY2::OrderingUsingR().
227 ind_left[n_ele], ind_right[n_ele];
231 if( n_ele <= 1)
return;
234 for(i=0; i<middle; i++){
238 for(i=middle; i<n_ele; i++){
239 right[i-middle]=array[
i];
240 ind_right[i-middle]= ind[
i];
246 if( left[middle-1] > right[0]) {
247 Merge2(middle, left,ind_left, n_ele-middle, right, ind_right, array, ind);
250 for(i=0; i<middle; i++){
255 for(i=middle; i<n_ele; i++){
256 array[
i]=right[i-middle];
257 ind[
i]=ind_right[i-middle];
void Merge_Sort2(Short_t n_ele, Double_t *array, Short_t *ind)
void Merge2(Short_t nl, Double_t *left, Short_t *ind_left, Short_t nr, Double_t *right, Short_t *ind_right, Double_t *result, Short_t *ind)
void PndTrkMergeSort::Merge_Sort3 |
( |
Short_t |
n_ele, |
|
|
Int_t * |
array, |
|
|
Short_t * |
ind |
|
) |
| |
Definition at line 274 of file PndTrkMergeSort.cxx.
References i.
Referenced by PndTrkLegendreFits::LoadMatrix_FindMaximum2().
281 ind_left[n_ele], ind_right[n_ele];
283 Int_t left[n_ele], right[n_ele];
285 if( n_ele <= 1)
return;
288 for(i=0; i<middle; i++){
292 for(i=middle; i<n_ele; i++){
293 right[i-middle]=array[
i];
294 ind_right[i-middle]= ind[
i];
300 if( left[middle-1] > right[0]) {
301 Merge3(middle, left,ind_left, n_ele-middle, right, ind_right, array, ind);
304 for(i=0; i<middle; i++){
309 for(i=middle; i<n_ele; i++){
310 array[
i]=right[i-middle];
311 ind[
i]=ind_right[i-middle];
void Merge_Sort3(Short_t n_ele, Int_t *array, Short_t *ind)
void Merge3(Short_t nl, Int_t *left, Short_t *ind_left, Short_t nr, Int_t *right, Short_t *ind_right, Int_t *result, Short_t *ind)
The documentation for this class was generated from the following files: