--- DarthVader/TrackerLevel2/src/TrkLevel2.cpp 2006/06/30 09:22:04 1.4 +++ DarthVader/TrackerLevel2/src/TrkLevel2.cpp 2006/07/11 15:32:27 1.6 @@ -240,9 +240,9 @@ Track = new TClonesArray("TrkTrack"); SingletX = new TClonesArray("TrkSinglet"); SingletY = new TClonesArray("TrkSinglet"); -// Track = 0; -// Singlet = 0; -// SingletY = 0; + +// PhysicalTrack = new TClonesArray("TrkTrack"); + //sostituire con TRefArray... appena ho capito come si usa } //-------------------------------------- // @@ -333,6 +333,9 @@ new(sy[i]) TrkSinglet(*t_singlet); t_singlet->Clear(); }; + + delete t_track; + delete t_singlet; } //-------------------------------------- // @@ -343,9 +346,13 @@ for(Int_t i=0; i<12 ; i++){ crc[i] = -1; }; - Track->RemoveAll(); +/* Track->RemoveAll(); SingletX->RemoveAll(); - SingletY->RemoveAll(); + SingletY->RemoveAll();*/ + // modify to avoid memory leakage + Track->Clear(); + SingletX->Clear(); + SingletY->Clear(); } //-------------------------------------- // @@ -358,9 +365,14 @@ TClonesArray *TrkLevel2::GetTracks(){ TClonesArray *sorted = GetTracks_NFitSorted(); return sorted; + + // fare di meglio... +/* PhysicalTrack->Clear(); + if(ntrk() > 0) GetTracks_NFitSorted(); + return PhysicalTrack;*/ }; -TClonesArray *TrkLevel2::GetTracks_Chi2Sorted(){ +/*TClonesArray *TrkLevel2::GetTracks_Chi2Sorted(){ TClonesArray *sorted = new TClonesArray("TrkTrack"); TClonesArray &t = *Track; @@ -388,13 +400,14 @@ indo++; } return sorted; -} +}*/ TClonesArray *TrkLevel2::GetTracks_NFitSorted(){ - TClonesArray *sorted = new TClonesArray("TrkTrack"); + TClonesArray *sorted = new TClonesArray("TrkTrack"); TClonesArray &t = *Track; - TClonesArray &ts = *sorted; - int N=this->ntrk(); + TClonesArray &ts = *sorted; +// TClonesArray &ts = *PhysicalTrack; + int N=this->ntrk(); vector m(N); for(int i=0; i= this->nclsx()){ + cout << "** TrkLevel2 ** Singlet "<< is << "doen not exits! " << endl; + cout << " Stored x-singlets nclsx() = "<< this->nclsx() << endl; + return 0; + } + TClonesArray &t = *(SingletX); + TrkSinglet *singlet = (TrkSinglet*)t[is]; + return singlet; +} +//-------------------------------------- +// +// +//-------------------------------------- +/** + * Retrieves the is-th stored Y singlet. + * @param it Singlet number, ranging from 0 to nclsx(). + */ +TrkSinglet *TrkLevel2::GetSingletY(int is){ + + if(is >= this->nclsy()){ + cout << "** TrkLevel2 ** Singlet "<< is << "doen not exits! " << endl; + cout << " Stored y-singlets nclsy() = "<< this->nclsx() << endl; + return 0; + } + TClonesArray &t = *(SingletY); + TrkSinglet *singlet = (TrkSinglet*)t[is]; + return singlet; +} +//-------------------------------------- +// +// +//-------------------------------------- +/** * Retrieves the it-th "physical" track, sorted by the method GetNTracks(). * @param it Track number, ranging from 0 to GetNTracks(). */ @@ -471,8 +523,18 @@ return 0; } TrkTrack *track = (TrkTrack*)(*(this->GetTracks()))[it]; + GetTracks()->Delete();////TEMPORANEO return track; } +/** + * Give the number of "physical" tracks, sorted by the method GetTracks(). + */ +Int_t TrkLevel2::GetNTracks(){ + Int_t ntot=0; + ntot = GetTracks()->GetEntries(); + GetTracks()->Delete();////TEMPORANEO + return ntot; +}; //-------------------------------------- // // @@ -494,6 +556,7 @@ return 0; } TrkTrack *image = (TrkTrack*)(*Track)[track->image]; + GetTracks()->Delete(); ////TEMPORANEO return image; } @@ -513,6 +576,25 @@ // //-------------------------------------- /** + * Get tracker-plane (mechanical) z-coordinate + * @param plane_id plane index (1=TOP,2,3,4,5,6=BOTTOM) + */ +Float_t TrkLevel2::GetZTrk(Int_t plane_id){ + switch(plane_id){ + case 1: return ZTRK1; + case 2: return ZTRK2; + case 3: return ZTRK3; + case 4: return ZTRK4; + case 5: return ZTRK5; + case 6: return ZTRK6; + default: return 0.; + }; +}; +//-------------------------------------- +// +// +//-------------------------------------- +/** * Trajectory default constructor. * (By default is created with z-coordinates inside the tracking volume) */ @@ -524,11 +606,11 @@ thx = new float[npoint]; thy = new float[npoint]; tl = new float[npoint]; - float dz = ((ZTRKUP)-(ZTRKDW))/(npoint-1); + float dz = ((ZTRK1)-(ZTRK6))/(npoint-1); for(int i=0; i