From 982aff314e6b8c22d510308bc26b26cbb922f77c Mon Sep 17 00:00:00 2001 From: hristov Date: Thu, 29 Jan 2004 09:35:13 +0000 Subject: [PATCH] Processing of many events. Code clean-up (M.Ivanov) --- TPC/AliTPCComparison.C | 2 +- TPC/AliTPCComparisonMI.C | 2 +- TPC/AliTPCFindTracksMI.C | 6 ++- TPC/AliTPCTrackHits.cxx | 14 +++-- TPC/AliTPCTrackHits.h | 12 +++-- TPC/AliTPCtrack.cxx | 24 ++++++++- TPC/AliTPCtrackerMI.cxx | 111 +++++++++++++++++++++++---------------- TPC/AliTPCtrackerMI.h | 1 + 8 files changed, 112 insertions(+), 60 deletions(-) diff --git a/TPC/AliTPCComparison.C b/TPC/AliTPCComparison.C index 45df3e7b963..d934c9df275 100644 --- a/TPC/AliTPCComparison.C +++ b/TPC/AliTPCComparison.C @@ -185,7 +185,7 @@ Int_t AliTPCComparison(const Char_t *dir=".") { TMath::Sqrt(gt[ngood].px*gt[ngood].px + gt[ngood].py*gt[ngood].py); if (ptg<1e-33) continue; // for those not crossing 0 pad row - + if (ptg<0.2) continue; hgood->Fill(ptg); AliESDtrack *track=0; diff --git a/TPC/AliTPCComparisonMI.C b/TPC/AliTPCComparisonMI.C index 44045da4a5e..db549fbbb53 100644 --- a/TPC/AliTPCComparisonMI.C +++ b/TPC/AliTPCComparisonMI.C @@ -1618,7 +1618,7 @@ TH1F* AliTPCComparisonDraw::CreateResHisto(TH2F* hRes2, TH1F **phMean, Bool_t d if (drawBinFits) canBinFits->cd(bin + dBin); TH1D* hBin = hRes2->ProjectionY("hBin", bin, bin); // - if (hBin->GetEntries() > 10) { + if (hBin->GetEntries() > 5) { fitFunc->SetParameters(hBin->GetMaximum(),hBin->GetMean(),hBin->GetRMS()); hBin->Fit(fitFunc,"s"); Double_t sigma = TMath::Abs(fitFunc->GetParameter(2)); diff --git a/TPC/AliTPCFindTracksMI.C b/TPC/AliTPCFindTracksMI.C index 7386dcd94f1..eed68fc5607 100644 --- a/TPC/AliTPCFindTracksMI.C +++ b/TPC/AliTPCFindTracksMI.C @@ -86,7 +86,8 @@ Int_t AliTPCFindTracksMI(Int_t N=-1) { TStopwatch timer; Int_t rc=0; for (Int_t i=0;iGetEvent(i); TTree * input = tpcl->TreeR(); if (input == 0x0) { @@ -115,8 +116,9 @@ Int_t AliTPCFindTracksMI(Int_t N=-1) { tracker->SetIO(); tracker->LoadClusters(); rc=tracker->Clusters2Tracks(); - tracker->WriteTracks(); + tracker->WriteTracks(output); tracker->UnloadClusters(); + tpcl->WriteTracks("OVERWRITE"); //output->GetDirectory()->cd(); //output->Write(); delete tracker; diff --git a/TPC/AliTPCTrackHits.cxx b/TPC/AliTPCTrackHits.cxx index d43deeb83fe..85666e98717 100644 --- a/TPC/AliTPCTrackHits.cxx +++ b/TPC/AliTPCTrackHits.cxx @@ -68,7 +68,9 @@ const Double_t AliTPCTrackHits::fgkPrecision2=1e-20; //precision struct AliTPCCurrentHit { - AliTPChit fHit; + friend class AliTPCTrackHits; +private: + AliTPChit fHit; // - hit in "standard" representation UInt_t fInfoIndex;// - current info pointer UInt_t fParamIndex;// - current param pointer UInt_t fStackIndex; // - current hit stack index @@ -78,7 +80,9 @@ struct AliTPCCurrentHit { struct AliTPCTempHitInfo { - enum { fkStackSize = 100}; + friend class AliTPCTrackHits; +private: + enum { kStackSize = 100}; AliTPCTempHitInfo(); void NewParam(Double_t r, Double_t z, Double_t fi, Int_t q); void SetHit(Double_t r, Double_t z, Double_t fi, Int_t q); @@ -100,8 +104,8 @@ struct AliTPCTempHitInfo { Double_t fSumDZDr; //fSumDZDr Double_t fSumDZDr2; //fSumDZDr2 Double_t fOldR; //previos r - Double_t fPositionStack[3*fkStackSize]; //position stack - UInt_t fQStack[fkStackSize]; //Q stack + Double_t fPositionStack[3*kStackSize]; //position stack + UInt_t fQStack[kStackSize]; //Q stack UInt_t fStackIndex; //current stack index UInt_t fInfoIndex; //current track info index UInt_t fParamIndex; //current track parameters index @@ -432,7 +436,7 @@ void AliTPCTrackHits::AddHit(Int_t volumeID, Int_t trackID, } //safety factor 1.25 if ( ( (dd*1.25>fPrecision) ) || - (fTempInfo->fStackIndex+4>fTempInfo->fkStackSize) || + (fTempInfo->fStackIndex+4>fTempInfo->kStackSize) || (TMath::Abs(dl/fStep)>fMaxDistance) ) diff=kTRUE; else{ diff --git a/TPC/AliTPCTrackHits.h b/TPC/AliTPCTrackHits.h index 21d23c23e37..c17563d9960 100644 --- a/TPC/AliTPCTrackHits.h +++ b/TPC/AliTPCTrackHits.h @@ -26,9 +26,10 @@ class AliObjectArray; class AliTrackHitsInfo { friend class AliTPCTrackHits; friend class AliTPC; -public: + public: AliTrackHitsInfo(){fgCounter1++;fgCounter2++;} ~AliTrackHitsInfo(){fgCounter1--;} + protected: private: Int_t fTrackID; //track ID Int_t fVolumeID; //volume ID @@ -43,9 +44,10 @@ public: class AliTrackHitsParam { friend class AliTPCTrackHits; friend struct AliTPCTempHitInfo; -public: + public: AliTrackHitsParam(){fgCounter1++;fgCounter2++;} ~AliTrackHitsParam(){fgCounter1--;} + protected: private: Float_t fR; //radius Float_t fZ; //z position @@ -67,6 +69,7 @@ class AliHitInfo { public: AliHitInfo(){fgCounter1++;fgCounter2++;} ~AliHitInfo(){fgCounter1--;} + protected: private: Short_t fHitDistance; //distance to previous hit Short_t fCharge; //deponed charge @@ -100,6 +103,7 @@ public: void SetStepPrecision(Double_t prec) {fStep=prec;} void SetMaxDistance(UInt_t distance) {fMaxDistance = distance;} Bool_t FlushHitStack(Bool_t force=kTRUE); // + protected: private: void FlushHitStack2(Int_t index1, Int_t index2); // AliObjectArray * fTrackHitsInfo; //quick information about track @@ -114,8 +118,8 @@ private: AliTPCCurrentHit * fCurrentHit; //!information about current hit static const Double_t fgkPrecision; //precision static const Double_t fgkPrecision2; //precision - static Int_t fgCounter1; - static Int_t fgCounter2; + static Int_t fgCounter1; // counter1 + static Int_t fgCounter2; // counter2 ClassDef(AliTPCTrackHits,1) }; diff --git a/TPC/AliTPCtrack.cxx b/TPC/AliTPCtrack.cxx index d45d91a01eb..42c78d07321 100644 --- a/TPC/AliTPCtrack.cxx +++ b/TPC/AliTPCtrack.cxx @@ -374,18 +374,38 @@ Int_t AliTPCtrack::PropagateTo(Double_t xk,Double_t /*x0*/,Double_t rho) { Double_t ey=fP4*fX - fP2, ez=fP3; Double_t xz=fP4*ez, zz1=ez*ez+1, xy=fP2+ey; - + fC22 += (2*ey*ez*ez*fP2+1-ey*ey+ez*ez+fP2*fP2*ez*ez)*theta2; fC32 += ez*zz1*xy*theta2; fC33 += zz1*zz1*theta2; fC42 += xz*ez*xy*theta2; fC43 += xz*zz1*theta2; fC44 += xz*xz*theta2; - + /* + // + //MI coeficints + Double_t dc22 = (1-ey*ey+xz*xz*fX*fX)*theta2; + Double_t dc32 = (xz*fX*zz1)*theta2; + Double_t dc33 = (zz1*zz1)*theta2; + Double_t dc42 = (xz*fX*xz)*theta2; + Double_t dc43 = (zz1*xz)*theta2; + Double_t dc44 = (xz*xz)*theta2; + fC22 += dc22; + fC32 += dc32; + fC33 += dc33; + fC42 += dc42; + fC43 += dc43; + fC44 += dc44; + */ //Energy losses************************ Double_t dE=0.153e-3/beta2*(log(5940*beta2/(1-beta2)) - beta2)*d*rho; if (x1 < x2) dE=-dE; cc=fP4; + + //Double_t E = sqrt(p2+GetMass()*GetMass()); + //Double_t mifac = TMath::Sqrt(1.+dE*dE/p2+2*E*dE/p2)-1; + //Double_t belfac = E*dE/p2; + // fP4*=(1.- sqrt(p2+GetMass()*GetMass())/p2*dE); fP2+=fX*(fP4-cc); diff --git a/TPC/AliTPCtrackerMI.cxx b/TPC/AliTPCtrackerMI.cxx index 0d87264af09..eba2efabf27 100644 --- a/TPC/AliTPCtrackerMI.cxx +++ b/TPC/AliTPCtrackerMI.cxx @@ -384,11 +384,10 @@ void AliTPCtrackerMI::WriteTracks() if (fOutput){ AliTPCtrack *iotrack= 0; Int_t nseed=fSeeds->GetEntriesFast(); - for (Int_t i=0; iUncheckedAt(i); - if (iotrack) break; - } - + //for (Int_t i=0; iUncheckedAt(i); + // if (iotrack) break; + //} //TBranch * br = fOutput->Branch("tracks","AliTPCtrack",&iotrack,32000,100); TBranch * br = fOutput->GetBranch("tracks"); br->SetAddress(&iotrack); @@ -396,14 +395,16 @@ void AliTPCtrackerMI::WriteTracks() for (Int_t i=0; iUncheckedAt(i); if (!pt) continue; - iotrack = pt; + AliTPCtrack * track = new AliTPCtrack(*pt); + iotrack = track; pt->fLab2 =i; // br->SetAddress(&iotrack); fOutput->Fill(); + delete track; iotrack =0; } - fOutput->GetDirectory()->cd(); - fOutput->Write(); + //fOutput->GetDirectory()->cd(); + //fOutput->Write(); } // delete iotrack; // @@ -836,10 +837,10 @@ void AliTPCseed::Modify(Double_t factor) return; } fC00*=factor; - fC10*=factor; fC11*=factor; - fC20*=factor; fC21*=factor; fC22*=factor; - fC30*=factor; fC31*=factor; fC32*=factor; fC33*=factor; - fC40*=factor; fC41*=factor; fC42*=factor; fC43*=factor; fC44*=factor; + fC10*=0; fC11*=factor; + fC20*=0; fC21*=0; fC22*=factor; + fC30*=0; fC31*=0; fC32*=0; fC33*=factor; + fC40*=0; fC41*=0; fC42*=0; fC43*=0; fC44*=factor; SetNumberOfClusters(0); fNFoundable =0; SetChi2(0); @@ -1269,20 +1270,22 @@ void AliTPCtrackerMI::UnloadClusters() for (Int_t sec = 0;secfClusters1) delete []tpcrow->fClusters1; - if (tpcrow->fClusters2) delete []tpcrow->fClusters2; - } + // if (tpcrow){ + // if (tpcrow->fClusters1) delete []tpcrow->fClusters1; + // if (tpcrow->fClusters2) delete []tpcrow->fClusters2; + //} + tpcrow->ResetClusters(); } // nrows = fInnerSec->GetNRows(); for (Int_t sec = 0;secfClusters1) delete []tpcrow->fClusters1; - if (tpcrow->fClusters2) delete []tpcrow->fClusters2; - } + //if (tpcrow){ + // if (tpcrow->fClusters1) delete []tpcrow->fClusters1; + //if (tpcrow->fClusters2) delete []tpcrow->fClusters2; + //} + tpcrow->ResetClusters(); } return ; @@ -1448,9 +1451,10 @@ Int_t AliTPCtrackerMI::FollowToNext(AliTPCseed& t, Int_t nr) { if (!t.Rotate(-fSectors->GetAlpha())) return 0; } - if (!t.PropagateTo(x)) { - return 0; - } + //if (!t.PropagateTo(x)) { + // return 0; + //} + return 1; y=t.GetY(); } // @@ -1530,7 +1534,7 @@ Int_t AliTPCtrackerMI::FollowToNext(AliTPCseed& t, Int_t nr) { if (accept<3) UpdateTrack(&t,accept); } else { - if (t.fNFoundable*0.5 > t.GetNumberOfClusters()) t.fRemoval=10; + if ( fIteration==0 && t.fNFoundable*0.5 > t.GetNumberOfClusters()) t.fRemoval=10; } return 1; @@ -1658,10 +1662,11 @@ Int_t AliTPCtrackerMI::UpdateClusters(AliTPCseed& t, Int_t nr) { if (!t.Rotate(-fSectors->GetAlpha())) return 0; } - if (!t.PropagateTo(x)){ - return 0; - } - y = t.GetY(); + // if (!t.PropagateTo(x)){ + // return 0; + //} + return 1; + //y = t.GetY(); } // @@ -1771,6 +1776,10 @@ Int_t AliTPCtrackerMI::FollowProlongation(AliTPCseed& t, Int_t rf, Int_t step) { Int_t first = GetRowNumber(xt)-1; for (Int_t nr= first; nr>=rf; nr-=step) { + if (nrGetNRows()) + fSectors = fInnerSec; + else + fSectors = fOuterSec; if (FollowToNext(t,nr)==0) if (!t.IsActive()) return 0; @@ -2405,8 +2414,8 @@ Int_t AliTPCtrackerMI::RefitInward(AliESD *event) fEvent = event; ReadSeeds(event,2); fIteration=2; - PrepareForProlongation(fSeeds,1); - PropagateForward(); + //PrepareForProlongation(fSeeds,1); + PropagateForward2(fSeeds); Int_t nseed = fSeeds->GetEntriesFast(); for (Int_t i=0;iUncheckedAt(i); @@ -2483,7 +2492,9 @@ void AliTPCtrackerMI::ReadSeeds(AliESD *event, Int_t direction) ULong_t status=esd->GetStatus(); AliTPCtrack t(*esd); AliTPCseed *seed = new AliTPCseed(t,t.GetAlpha()); - if (status==AliESDtrack::kTPCin&&direction==1) seed->Modify(0.8); + if ((status==AliESDtrack::kTPCin)&&(direction==1)) seed->ResetCovariance(); + if ( direction ==2 &&(status & AliESDtrack::kTRDrefit) == 0 ) seed->ResetCovariance(); + // // // rotate to the local coordinate system @@ -4013,16 +4024,16 @@ Int_t AliTPCtrackerMI::Clusters2Tracks() { SortTracks(fSeeds, 1); - /* + /* fIteration = 1; - PrepareForBackProlongation(fSeeds,0.5); + PrepareForBackProlongation(fSeeds,5.); PropagateBack(fSeeds); printf("Time for back propagation: \t");timer.Print();timer.Start(); fIteration = 2; - PrepareForProlongation(fSeeds,1.); - PropagateForward(); + PrepareForProlongation(fSeeds,5.); + PropagateForward2(fSeeds); printf("Time for FORWARD propagation: \t");timer.Print();timer.Start(); // RemoveUsed(fSeeds,0.7,0.7,6); @@ -4310,7 +4321,11 @@ void AliTPCtrackerMI::ParallelTracking(TObjArray * arr, Int_t rfirst, Int_t rla // - for (Int_t nr=rfirst; nr>=rlast; nr--){ + for (Int_t nr=rfirst; nr>=rlast; nr--){ + if (nrGetNRows()) + fSectors = fInnerSec; + else + fSectors = fOuterSec; // make indexes with the cluster tracks for given // find nearest cluster @@ -4431,19 +4446,11 @@ Int_t AliTPCtrackerMI::PropagateForward2(TObjArray * arr) AliTPCseed *pt = (AliTPCseed*)arr->UncheckedAt(i); if (pt) { AliTPCseed *pt2 = new AliTPCseed(*pt); - fSectors = fOuterSec; - FollowProlongation(*pt,0); - fSectors = fOuterSec; FollowProlongation(*pt,0); - fSectors = fInnerSec; if (pt->GetNumberOfClusters()<35 && pt->GetLabel()>0 ){ - printf("\n%d",pt->GetLabel()); - fSectors = fOuterSec; - FollowProlongation(*pt2,0); - fSectors = fOuterSec; FollowProlongation(*pt2,0); - fSectors = fOuterSec; } + delete pt2; } } return 0; @@ -4741,6 +4748,20 @@ AliTPCtrackerMI::AliTPCRow::InsertCluster(const AliTPCclusterMI* c, UInt_t index fIndex[i]=index; fClusters[i]=c; fN++; } +void AliTPCtrackerMI::AliTPCRow::ResetClusters() { + // + // reset clusters + fN = 0; + fN1 = 0; + fN2 = 0; + //delete[] fClusterArray; + if (fClusters1) delete []fClusters1; + if (fClusters2) delete []fClusters2; + //fClusterArray=0; + fClusters1 = 0; + fClusters2 = 0; +} + //___________________________________________________________________ Int_t AliTPCtrackerMI::AliTPCRow::Find(Double_t z) const { diff --git a/TPC/AliTPCtrackerMI.h b/TPC/AliTPCtrackerMI.h index 6ab0f61f1dd..e08d05c6e77 100644 --- a/TPC/AliTPCtrackerMI.h +++ b/TPC/AliTPCtrackerMI.h @@ -183,6 +183,7 @@ public: AliTPCRow(); ~AliTPCRow(); void InsertCluster(const AliTPCclusterMI *c, UInt_t index); + void ResetClusters(); operator int() const {return fN;} Int_t GetN() const {return fN;} const AliTPCclusterMI* operator[](Int_t i) const {return fClusters[i];} -- 2.43.0