374 |
PamTrack::PamTrack(const PamTrack& track) { |
PamTrack::PamTrack(const PamTrack& track) { |
375 |
|
|
376 |
TrkTrack *t = track.trk_track; |
TrkTrack *t = track.trk_track; |
377 |
|
ExtTrack *e = track.trk_ext_track; |
378 |
CaloTrkVar *c = track.calo_track; |
CaloTrkVar *c = track.calo_track; |
379 |
ToFTrkVar *o = track.tof_track; |
ToFTrkVar *o = track.tof_track; |
380 |
OrbitalInfoTrkVar *r = track.orb_track; |
OrbitalInfoTrkVar *r = track.orb_track; |
381 |
|
|
382 |
trk_track = 0; |
trk_ext_track = 0; |
383 |
calo_track = 0; |
trk_track = 0; |
384 |
tof_track = 0; |
calo_track = 0; |
385 |
orb_track = 0; |
tof_track = 0; |
386 |
|
orb_track = 0; |
387 |
|
if(e) |
388 |
|
trk_ext_track = new ExtTrack(*e); |
389 |
if (t) |
if (t) |
390 |
trk_track = new TrkTrack(*t); |
trk_track = new TrkTrack(*t); |
391 |
if (c) |
if (c) |
394 |
tof_track = new ToFTrkVar(*o); |
tof_track = new ToFTrkVar(*o); |
395 |
if (r) |
if (r) |
396 |
orb_track = new OrbitalInfoTrkVar(*r); |
orb_track = new OrbitalInfoTrkVar(*r); |
397 |
|
|
398 |
candeleteobj = 1; |
candeleteobj = 1; |
399 |
pscore = 0; |
pscore = 0; |
400 |
iscore = 0; |
iscore = 0; |
401 |
|
|
402 |
} |
} |
403 |
void PamTrack::Clear() { |
void PamTrack::Clear(Option_t *option) { |
404 |
|
|
405 |
// cout << "PamTrack::Clear() "<<candeleteobj<<endl; |
// cout << "PamTrack::Clear( "<<option<<" ) "<<candeleteobj<<endl; |
406 |
if (candeleteobj) { |
if (candeleteobj) { |
407 |
|
|
408 |
if (trk_ext_track) |
if (trk_ext_track) |
409 |
trk_ext_track->ExtTrack::Clear(); |
trk_ext_track->ExtTrack::Clear(option); |
410 |
if (trk_track) |
if (trk_track) |
411 |
trk_track->TrkTrack::Clear(); |
trk_track->TrkTrack::Clear(); |
412 |
if (calo_track) |
if (calo_track) |
431 |
// cout << "PamTrack::Delete() "<<candeleteobj<<endl; |
// cout << "PamTrack::Delete() "<<candeleteobj<<endl; |
432 |
if (candeleteobj) { |
if (candeleteobj) { |
433 |
if (trk_ext_track) { |
if (trk_ext_track) { |
434 |
trk_ext_track->ExtTrack::Clear(); |
trk_ext_track->ExtTrack::Clear("C"); |
435 |
delete trk_ext_track; |
delete trk_ext_track; |
436 |
} |
} |
437 |
if (trk_track) { |
if (trk_track) { |
642 |
|
|
643 |
EXT = false; |
EXT = false; |
644 |
NUC = false; |
NUC = false; |
645 |
trkAlg = "";//default tracking algorythm |
trkAlg = "STD";//default tracking algorythm |
646 |
|
|
647 |
RUN = true; |
RUN = true; |
648 |
|
|
1453 |
// create TCloneArrays to store tracks and its images |
// create TCloneArrays to store tracks and its images |
1454 |
if (!tsorted) |
if (!tsorted) |
1455 |
tsorted = new TClonesArray("PamTrack", trk2_obj->GetNTracks()); |
tsorted = new TClonesArray("PamTrack", trk2_obj->GetNTracks()); |
1456 |
tsorted->Delete(); |
tsorted->Clear("C+C");//Delete(); |
1457 |
TClonesArray &ttsorted = *tsorted; |
TClonesArray &ttsorted = *tsorted; |
1458 |
|
|
1459 |
if (!timage) |
if (!timage) |
1460 |
timage = new TClonesArray("PamTrack", trk2_obj->GetNTracks()); |
timage = new TClonesArray("PamTrack", trk2_obj->GetNTracks()); |
1461 |
timage->Delete(); |
timage->Clear("C+C");//Delete(); |
1462 |
TClonesArray &ttimage = *timage; |
TClonesArray &ttimage = *timage; |
1463 |
|
|
1464 |
|
|
1994 |
//----------------------------------------------------------- |
//----------------------------------------------------------- |
1995 |
// create/reset TCloneArrays to store tracks and their images |
// create/reset TCloneArrays to store tracks and their images |
1996 |
//----------------------------------------------------------- |
//----------------------------------------------------------- |
1997 |
|
|
1998 |
|
// cout << " PamLevel2::SortTracksNew() --- Clear TClonesArray objects"<<endl; |
1999 |
|
|
2000 |
// main tracks from standard alg |
// main tracks from standard alg |
2001 |
if (!tsorted) |
// if (!tsorted) |
2002 |
tsorted = new TClonesArray("PamTrack", trk2_obj->GetNTracks()); |
// tsorted = new TClonesArray("PamTrack", trk2_obj->GetNTracks()); |
2003 |
tsorted->Delete(); |
// tsorted->Clear("C+C");//Delete(); |
2004 |
// track images from standard alg |
// // track images from standard alg |
2005 |
if (!timage) |
// if (!timage) |
2006 |
timage = new TClonesArray("PamTrack", trk2_obj->GetNTracks()); |
// timage = new TClonesArray("PamTrack", trk2_obj->GetNTracks()); |
2007 |
timage->Delete(); |
// timage->Clear("C+C");//Delete(); |
2008 |
// tracks from extended algorythm |
// // tracks from extended algorythm |
2009 |
if(EXT && !text) |
// if(EXT && !text) |
2010 |
text = new TClonesArray("PamTrack",trk_ext_obj->GetEntries()); |
// text = new TClonesArray("PamTrack",trk_ext_obj->GetEntries()); |
2011 |
if(text)text->Delete(); |
// if(text)text->Clear("C+C");//Delete(); |
2012 |
|
|
2013 |
|
if(tsorted)delete tsorted; |
2014 |
|
if(timage) delete timage; |
2015 |
|
if(text) delete text; |
2016 |
|
tsorted = new TClonesArray("PamTrack", trk2_obj->GetNTracks()); |
2017 |
|
timage = new TClonesArray("PamTrack", trk2_obj->GetNTracks()); |
2018 |
|
text = new TClonesArray("PamTrack",trk_ext_obj->GetEntries()); |
2019 |
|
|
2020 |
//----------------------------------------------------------- |
//----------------------------------------------------------- |
2021 |
// create/reset TCloneArrays to store tracks and their images |
// create/reset TCloneArrays to store tracks and their images |
2022 |
//----------------------------------------------------------- |
//----------------------------------------------------------- |
2023 |
if(NUC){ |
if(NUC){ |
2024 |
|
|
2025 |
|
|
2026 |
|
if(tsorted_nuc)delete tsorted_nuc; |
2027 |
|
if(timage_nuc) delete timage_nuc; |
2028 |
|
if(text_nuc) delete text_nuc; |
2029 |
|
tsorted_nuc = new TClonesArray("PamTrack", trk2_nuc_obj->GetNTracks()); |
2030 |
|
timage_nuc = new TClonesArray("PamTrack", trk2_nuc_obj->GetNTracks()); |
2031 |
|
text_nuc = new TClonesArray("PamTrack",trk_ext_nuc_obj->GetEntries()); |
2032 |
|
|
2033 |
// main tracks from standard alg |
// main tracks from standard alg |
2034 |
if (!tsorted_nuc) |
// if (!tsorted_nuc) |
2035 |
tsorted_nuc = new TClonesArray("PamTrack", trk2_nuc_obj->GetNTracks()); |
// tsorted_nuc = new TClonesArray("PamTrack", trk2_nuc_obj->GetNTracks()); |
2036 |
tsorted_nuc->Delete(); |
// tsorted_nuc->Clear("C+C");//Delete(); |
2037 |
// track images from standard alg |
// // track images from standard alg |
2038 |
if (!timage_nuc) |
// if (!timage_nuc) |
2039 |
timage_nuc = new TClonesArray("PamTrack", trk2_nuc_obj->GetNTracks()); |
// timage_nuc = new TClonesArray("PamTrack", trk2_nuc_obj->GetNTracks()); |
2040 |
timage_nuc->Delete(); |
// timage_nuc->Clear("C+C");//Delete(); |
2041 |
// tracks from extended algorythm |
// // tracks from extended algorythm |
2042 |
if(EXT && !text_nuc) |
// if(EXT && !text_nuc) |
2043 |
text_nuc = new TClonesArray("PamTrack",trk_ext_nuc_obj->GetEntries()); |
// text_nuc = new TClonesArray("PamTrack",trk_ext_nuc_obj->GetEntries()); |
2044 |
if(text_nuc)text_nuc->Delete(); |
// if(text_nuc)text_nuc->Clear("C+C");//Delete(); |
2045 |
|
|
2046 |
} |
} |
2047 |
//-------------------------------------------------- |
//-------------------------------------------------- |
2048 |
// retrieve sorting method |
// retrieve sorting method |
2604 |
/** |
/** |
2605 |
* This method overrides TrkLevel2::GetTracks(), where sorting is done by decreasing number of fit points and increasing chi^2. |
* This method overrides TrkLevel2::GetTracks(), where sorting is done by decreasing number of fit points and increasing chi^2. |
2606 |
* PamLevel2::GetTracks() keeps the same track order given by TrkLevel2::GetTracks(), but checks image selection by using calorimeter and ToF tracking information. |
* PamLevel2::GetTracks() keeps the same track order given by TrkLevel2::GetTracks(), but checks image selection by using calorimeter and ToF tracking information. |
2607 |
/* |
*/ |
2608 |
|
|
2609 |
// TRefArray *PamLevel2::GetTracks(){ |
// TRefArray *PamLevel2::GetTracks(){ |
2610 |
|
|
2622 |
// |
// |
2623 |
// |
// |
2624 |
//-------------------------------------- |
//-------------------------------------- |
2625 |
|
|
2626 |
/** |
/** |
2627 |
* Retrieves the it-th Pamela "physical" track. |
* Retrieves the it-th Pamela "physical" track. |
2628 |
* It override TrkLevel2::GetTrack(int it). |
* It override TrkLevel2::GetTrack(int it). |
2629 |
* @param it Track number, ranging from 0 to GetNTracks(). |
* @param it Track number, ranging from 0 to GetNTracks(). |
2630 |
*/ |
*/ |
2631 |
PamTrack *PamLevel2::GetTrack(int it) { |
PamTrack *PamLevel2::GetTrackOld(int it) { |
2632 |
|
|
2633 |
PamTrack *track = NULL; |
PamTrack *track = NULL; |
2634 |
|
|
2645 |
track = (PamTrack*)((*tsorted)[it]); |
track = (PamTrack*)((*tsorted)[it]); |
2646 |
} |
} |
2647 |
else { |
else { |
2648 |
cout << "PamLevel2::GetTrack(int) : tracker track SeqNo " << it << " does not exist (GetNTracks() = " |
cout << "PamLevel2::GetTrackOld(int) : tracker track SeqNo " << it << " does not exist (GetNTracks() = " |
2649 |
<< trk2_obj->TrkLevel2::GetNTracks() << ")" << endl; |
<< trk2_obj->TrkLevel2::GetNTracks() << ")" << endl; |
2650 |
}; |
}; |
2651 |
|
|
2661 |
* @param it Track number, ranging from 0 to GetNTracks(). |
* @param it Track number, ranging from 0 to GetNTracks(). |
2662 |
* @param alg Algorythm, see SetTrakingAlgorythm(char *alg) for explanation. |
* @param alg Algorythm, see SetTrakingAlgorythm(char *alg) for explanation. |
2663 |
*/ |
*/ |
2664 |
PamTrack *PamLevel2::GetTrack(int it, char* alg) { |
PamTrack *PamLevel2::GetTrack(int it, const char* alg) { |
2665 |
|
|
2666 |
TString s(alg); |
TString s(alg); |
2667 |
if(!s.CompareTo("") ||!s.CompareTo("STD") )return GetTrack(it); //old algorythm |
if(!s.CompareTo("") ||!s.CompareTo("STD") )return GetTrackOld(it); //old algorythm |
2668 |
|
|
2669 |
|
|
2670 |
SortTracksNew(); |
SortTracksNew(); |
2712 |
}; |
}; |
2713 |
|
|
2714 |
|
|
2715 |
|
cout << "PamTrack *PamLevel2::GetTrack("<<it<<","<<alg<<") -- wrong track number or unrecognised algorithm"<<endl; |
2716 |
|
|
2717 |
return NULL; |
return NULL; |
2718 |
|
|
2728 |
|
|
2729 |
} |
} |
2730 |
; |
; |
2731 |
Int_t PamLevel2::GetNTracks(char* alg) { |
Int_t PamLevel2::GetNTracks(const char* alg) { |
2732 |
|
|
2733 |
|
|
2734 |
// cout << " trk_nuc_obj->GetEntries() "<<trk_nuc_obj->GetEntries()<<" trk2_nuc_obj->GetNTracks() "<<trk2_nuc_obj->GetNTracks()<<endl; |
// cout << " trk_nuc_obj->GetEntries() "<<trk_nuc_obj->GetEntries()<<" trk2_nuc_obj->GetNTracks() "<<trk2_nuc_obj->GetNTracks()<<endl; |
2749 |
if(s.Contains("NUC", TString::kIgnoreCase) && NUC ) |
if(s.Contains("NUC", TString::kIgnoreCase) && NUC ) |
2750 |
return trk2_nuc_obj->TrkLevel2::GetNTracks(); |
return trk2_nuc_obj->TrkLevel2::GetNTracks(); |
2751 |
|
|
2752 |
|
cout << "Int_t PamLevel2::GetNTracks("<<alg<<") -- unrecognised algorithm"<<endl; |
2753 |
|
|
2754 |
return 0; |
return 0; |
2755 |
|
|
2756 |
} |
} |
2764 |
* Retrieves (if present) the image of the it-th Pamela "physical" track, sorted by the method PamLevel2::SortTracks(). |
* Retrieves (if present) the image of the it-th Pamela "physical" track, sorted by the method PamLevel2::SortTracks(). |
2765 |
* @param it Track number, ranging from 0 to GetNTracks(). |
* @param it Track number, ranging from 0 to GetNTracks(). |
2766 |
*/ |
*/ |
2767 |
PamTrack *PamLevel2::GetTrackImage(int it) { |
PamTrack *PamLevel2::GetTrackImageOld(int it) { |
2768 |
|
|
2769 |
// *-*-*-*-*-*-*-*-*-*-*-*-* |
// *-*-*-*-*-*-*-*-*-*-*-*-* |
2770 |
SortTracks(); |
SortTracks(); |
2788 |
}; |
}; |
2789 |
} |
} |
2790 |
else { |
else { |
2791 |
cout << "PamLevel2::GetTrackImage(int) : Tracker track SeqNo " << it << " does not exist (GetNTracks() = " |
cout << "PamLevel2::GetTrackImageOld(int) : Tracker track SeqNo " << it << " does not exist (GetNTracks() = " |
2792 |
<< trk2_obj->TrkLevel2::GetNTracks() << ")" << endl; |
<< trk2_obj->TrkLevel2::GetNTracks() << ")" << endl; |
2793 |
}; |
}; |
2794 |
|
|
2799 |
* @param it Track number, ranging from 0 to GetNTracks(). |
* @param it Track number, ranging from 0 to GetNTracks(). |
2800 |
* @param alg Algorythm, see SetTrakingAlgorythm(char *alg) for explanation. |
* @param alg Algorythm, see SetTrakingAlgorythm(char *alg) for explanation. |
2801 |
*/ |
*/ |
2802 |
PamTrack *PamLevel2::GetTrackImage(int it, char* alg) { |
PamTrack *PamLevel2::GetTrackImage(int it, const char* alg) { |
2803 |
|
|
2804 |
TString s(alg); |
TString s(alg); |
2805 |
if(!s.CompareTo("") || !s.CompareTo("STD"))return GetTrack(it); //old algorythm |
if(!s.CompareTo("") || !s.CompareTo("STD"))return GetTrackImageOld(it); //old algorythm |
2806 |
|
|
2807 |
|
|
2808 |
SortTracksNew(); |
SortTracksNew(); |
2820 |
PamTrack *temp = (PamTrack*) t[it]; |
PamTrack *temp = (PamTrack*) t[it]; |
2821 |
if (temp->GetTrkTrack()->HasImage()) { |
if (temp->GetTrkTrack()->HasImage()) { |
2822 |
return (PamTrack*)((*timage_nuc)[it]); //ok return the track |
return (PamTrack*)((*timage_nuc)[it]); //ok return the track |
2823 |
|
}else{ |
2824 |
|
return NULL; |
2825 |
} |
} |
2826 |
|
|
2827 |
} |
} |
2835 |
PamTrack *temp = (PamTrack*) t[it]; |
PamTrack *temp = (PamTrack*) t[it]; |
2836 |
if (temp->GetTrkTrack()->HasImage()) { |
if (temp->GetTrkTrack()->HasImage()) { |
2837 |
return (PamTrack*)((*timage)[it]); //ok return the track |
return (PamTrack*)((*timage)[it]); //ok return the track |
2838 |
|
}else{ |
2839 |
|
return NULL; |
2840 |
} |
} |
2841 |
} |
} |
2842 |
} |
} |
2843 |
|
|
2844 |
} |
} |
2845 |
|
|
2846 |
|
cout << "PamTrack *PamLevel2::GetTrackImage("<<it<<","<<alg<<") -- wrong track number or unrecognised algorithm"<<endl; |
2847 |
|
|
2848 |
return NULL; |
return NULL; |
2849 |
|
|
3801 |
* "NUCEXT" --> as "EXT", but for nuclei |
* "NUCEXT" --> as "EXT", but for nuclei |
3802 |
* "NUCEXTF" --> as "EXTF", but for nuclei |
* "NUCEXTF" --> as "EXTF", but for nuclei |
3803 |
*/ |
*/ |
3804 |
void PamLevel2::SetTrakingAlgorythm(char *alg){ |
// void PamLevel2::SetTrackingAlgorythm(const char *alg){ |
3805 |
|
|
3806 |
|
|
3807 |
TString s(alg); |
// TString s(alg); |
3808 |
if(s.Contains("NUC", TString::kIgnoreCase) && !NUC) |
// if(s.Contains("NUC", TString::kIgnoreCase) && !NUC) |
3809 |
cout << "Warning! NUC algorythm requested, but branches are missing"<<endl; |
// cout << "Warning! NUC algorythm requested, but branches are missing"<<endl; |
3810 |
if(s.Contains("EXT", TString::kIgnoreCase) && !EXT) |
// if(s.Contains("EXT", TString::kIgnoreCase) && !EXT) |
3811 |
cout << "Warning! EXT algorythm requested, but branches are missing"<<endl;; |
// cout << "Warning! EXT algorythm requested, but branches are missing"<<endl;; |
3812 |
|
|
3813 |
trkAlg = alg; |
// trkAlg = alg; |
3814 |
|
|
3815 |
}; |
// }; |
3816 |
char* PamLevel2::GetTrakingAlgorythm(){ |
// const char* PamLevel2::GetTrackingAlgorythm(){ |
3817 |
|
|
3818 |
|
|
3819 |
cout<<endl<<" Implemented tracking algorythm: "; |
// cout<<endl<<" Implemented tracking algorythm: "; |
3820 |
cout<<endl<<" \"\" or \"STD\" --> take the output of the standard tracking algorythm"; |
// cout<<endl<<" \"\" or \"STD\" --> take the output of the standard tracking algorythm"; |
3821 |
cout<<endl<<" \"NUC\" --> take the output of the standard tracking algorythm for nuclei cluster selection"; |
// cout<<endl<<" \"NUC\" --> take the output of the standard tracking algorythm for nuclei cluster selection"; |
3822 |
cout<<endl<<" \"EXT\" --> in case the standard tracking algorythm has not found any track,"; |
// cout<<endl<<" \"EXT\" --> in case the standard tracking algorythm has not found any track,"; |
3823 |
cout<<endl<<" take the output of the extended one"; |
// cout<<endl<<" take the output of the extended one"; |
3824 |
cout<<endl<<" \"EXTF\" --> force the extended tracking algorythm"; |
// cout<<endl<<" \"EXTF\" --> force the extended tracking algorythm"; |
3825 |
cout<<endl<<" \"NUCEXT\" --> as \"EXT\", but for nuclei "; |
// cout<<endl<<" \"NUCEXT\" --> as \"EXT\", but for nuclei "; |
3826 |
cout<<endl<<" \"NUCEXTF\" --> as \"EXTF\", but for nuclei"; |
// cout<<endl<<" \"NUCEXTF\" --> as \"EXTF\", but for nuclei"; |
3827 |
|
|
3828 |
cout<<endl; |
// cout<<endl; |
3829 |
cout<<" <<Currently set algorythm>> "<<trkAlg<<endl; |
// cout<<" <<Currently set algorythm>> "<<trkAlg<<endl; |
3830 |
cout<<endl; |
// cout<<endl; |
3831 |
|
|
3832 |
return trkAlg; |
// return trkAlg; |
3833 |
}; |
// }; |
3834 |
|
|
3835 |
|
|
3836 |
|
|