--- PamelaLevel2/src/PamLevel2.cpp 2014/10/15 08:51:51 1.95 +++ PamelaLevel2/src/PamLevel2.cpp 2014/10/17 06:54:11 1.97 @@ -374,14 +374,18 @@ PamTrack::PamTrack(const PamTrack& track) { TrkTrack *t = track.trk_track; + ExtTrack *e = track.trk_ext_track; CaloTrkVar *c = track.calo_track; ToFTrkVar *o = track.tof_track; OrbitalInfoTrkVar *r = track.orb_track; - trk_track = 0; - calo_track = 0; - tof_track = 0; - orb_track = 0; + trk_ext_track = 0; + trk_track = 0; + calo_track = 0; + tof_track = 0; + orb_track = 0; + if(e) + trk_ext_track = new ExtTrack(*e); if (t) trk_track = new TrkTrack(*t); if (c) @@ -390,18 +394,19 @@ tof_track = new ToFTrkVar(*o); if (r) orb_track = new OrbitalInfoTrkVar(*r); + candeleteobj = 1; pscore = 0; iscore = 0; } -void PamTrack::Clear() { +void PamTrack::Clear(Option_t *option) { - // cout << "PamTrack::Clear() "<ExtTrack::Clear(); + trk_ext_track->ExtTrack::Clear(option); if (trk_track) trk_track->TrkTrack::Clear(); if (calo_track) @@ -426,7 +431,7 @@ // cout << "PamTrack::Delete() "<ExtTrack::Clear(); + trk_ext_track->ExtTrack::Clear("C"); delete trk_ext_track; } if (trk_track) { @@ -637,7 +642,7 @@ EXT = false; NUC = false; - trkAlg = "";//default tracking algorythm + trkAlg = "STD";//default tracking algorythm RUN = true; @@ -1448,12 +1453,12 @@ // create TCloneArrays to store tracks and its images if (!tsorted) tsorted = new TClonesArray("PamTrack", trk2_obj->GetNTracks()); - tsorted->Delete(); + tsorted->Clear("C+C");//Delete(); TClonesArray &ttsorted = *tsorted; if (!timage) timage = new TClonesArray("PamTrack", trk2_obj->GetNTracks()); - timage->Delete(); + timage->Clear("C+C");//Delete(); TClonesArray &ttimage = *timage; @@ -1989,36 +1994,55 @@ //----------------------------------------------------------- // create/reset TCloneArrays to store tracks and their images //----------------------------------------------------------- + +// cout << " PamLevel2::SortTracksNew() --- Clear TClonesArray objects"<GetNTracks()); - tsorted->Delete(); - // track images from standard alg - if (!timage) - timage = new TClonesArray("PamTrack", trk2_obj->GetNTracks()); - timage->Delete(); - // tracks from extended algorythm - if(EXT && !text) - text = new TClonesArray("PamTrack",trk_ext_obj->GetEntries()); - if(text)text->Delete(); +// if (!tsorted) +// tsorted = new TClonesArray("PamTrack", trk2_obj->GetNTracks()); +// tsorted->Clear("C+C");//Delete(); +// // track images from standard alg +// if (!timage) +// timage = new TClonesArray("PamTrack", trk2_obj->GetNTracks()); +// timage->Clear("C+C");//Delete(); +// // tracks from extended algorythm +// if(EXT && !text) +// text = new TClonesArray("PamTrack",trk_ext_obj->GetEntries()); +// if(text)text->Clear("C+C");//Delete(); + + if(tsorted)delete tsorted; + if(timage) delete timage; + if(text) delete text; + tsorted = new TClonesArray("PamTrack", trk2_obj->GetNTracks()); + timage = new TClonesArray("PamTrack", trk2_obj->GetNTracks()); + text = new TClonesArray("PamTrack",trk_ext_obj->GetEntries()); //----------------------------------------------------------- // create/reset TCloneArrays to store tracks and their images //----------------------------------------------------------- if(NUC){ + + + if(tsorted_nuc)delete tsorted_nuc; + if(timage_nuc) delete timage_nuc; + if(text_nuc) delete text_nuc; + tsorted_nuc = new TClonesArray("PamTrack", trk2_nuc_obj->GetNTracks()); + timage_nuc = new TClonesArray("PamTrack", trk2_nuc_obj->GetNTracks()); + text_nuc = new TClonesArray("PamTrack",trk_ext_nuc_obj->GetEntries()); + // main tracks from standard alg - if (!tsorted_nuc) - tsorted_nuc = new TClonesArray("PamTrack", trk2_nuc_obj->GetNTracks()); - tsorted_nuc->Delete(); - // track images from standard alg - if (!timage_nuc) - timage_nuc = new TClonesArray("PamTrack", trk2_nuc_obj->GetNTracks()); - timage_nuc->Delete(); - // tracks from extended algorythm - if(EXT && !text_nuc) - text_nuc = new TClonesArray("PamTrack",trk_ext_nuc_obj->GetEntries()); - if(text_nuc)text_nuc->Delete(); +// if (!tsorted_nuc) +// tsorted_nuc = new TClonesArray("PamTrack", trk2_nuc_obj->GetNTracks()); +// tsorted_nuc->Clear("C+C");//Delete(); +// // track images from standard alg +// if (!timage_nuc) +// timage_nuc = new TClonesArray("PamTrack", trk2_nuc_obj->GetNTracks()); +// timage_nuc->Clear("C+C");//Delete(); +// // tracks from extended algorythm +// if(EXT && !text_nuc) +// text_nuc = new TClonesArray("PamTrack",trk_ext_nuc_obj->GetEntries()); +// if(text_nuc)text_nuc->Clear("C+C");//Delete(); + } //-------------------------------------------------- // retrieve sorting method @@ -2580,7 +2604,7 @@ /** * This method overrides TrkLevel2::GetTracks(), where sorting is done by decreasing number of fit points and increasing chi^2. * PamLevel2::GetTracks() keeps the same track order given by TrkLevel2::GetTracks(), but checks image selection by using calorimeter and ToF tracking information. - /* + */ // TRefArray *PamLevel2::GetTracks(){ @@ -2598,12 +2622,13 @@ // // //-------------------------------------- + /** * Retrieves the it-th Pamela "physical" track. * It override TrkLevel2::GetTrack(int it). * @param it Track number, ranging from 0 to GetNTracks(). */ -PamTrack *PamLevel2::GetTrack(int it) { +PamTrack *PamLevel2::GetTrackOld(int it) { PamTrack *track = NULL; @@ -2620,7 +2645,7 @@ track = (PamTrack*)((*tsorted)[it]); } else { - cout << "PamLevel2::GetTrack(int) : tracker track SeqNo " << it << " does not exist (GetNTracks() = " + cout << "PamLevel2::GetTrackOld(int) : tracker track SeqNo " << it << " does not exist (GetNTracks() = " << trk2_obj->TrkLevel2::GetNTracks() << ")" << endl; }; @@ -2636,10 +2661,10 @@ * @param it Track number, ranging from 0 to GetNTracks(). * @param alg Algorythm, see SetTrakingAlgorythm(char *alg) for explanation. */ -PamTrack *PamLevel2::GetTrack(int it, char* alg) { +PamTrack *PamLevel2::GetTrack(int it, const char* alg) { TString s(alg); - if(!s.CompareTo("") ||!s.CompareTo("STD") )return GetTrack(it); //old algorythm + if(!s.CompareTo("") ||!s.CompareTo("STD") )return GetTrackOld(it); //old algorythm SortTracksNew(); @@ -2687,6 +2712,7 @@ }; + cout << "PamTrack *PamLevel2::GetTrack("<GetEntries() "<GetEntries()<<" trk2_nuc_obj->GetNTracks() "<GetNTracks()<TrkLevel2::GetNTracks(); + cout << "Int_t PamLevel2::GetNTracks("<GetTrkTrack()->HasImage()) { return (PamTrack*)((*timage_nuc)[it]); //ok return the track + }else{ + return NULL; } } @@ -2805,11 +2835,15 @@ PamTrack *temp = (PamTrack*) t[it]; if (temp->GetTrkTrack()->HasImage()) { return (PamTrack*)((*timage)[it]); //ok return the track + }else{ + return NULL; } } } } + + cout << "PamTrack *PamLevel2::GetTrackImage("< as "EXT", but for nuclei * "NUCEXTF" --> as "EXTF", but for nuclei */ -void PamLevel2::SetTrakingAlgorythm(char *alg){ +// void PamLevel2::SetTrackingAlgorythm(const char *alg){ - TString s(alg); - if(s.Contains("NUC", TString::kIgnoreCase) && !NUC) - cout << "Warning! NUC algorythm requested, but branches are missing"< take the output of the standard tracking algorythm"; - cout< take the output of the standard tracking algorythm for nuclei cluster selection"; - cout< in case the standard tracking algorythm has not found any track,"; - cout< force the extended tracking algorythm"; - cout< as \"EXT\", but for nuclei "; - cout< as \"EXTF\", but for nuclei"; - - cout<> "< take the output of the standard tracking algorythm"; +// cout< take the output of the standard tracking algorythm for nuclei cluster selection"; +// cout< in case the standard tracking algorythm has not found any track,"; +// cout< force the extended tracking algorythm"; +// cout< as \"EXT\", but for nuclei "; +// cout< as \"EXTF\", but for nuclei"; + +// cout<> "<