Processing of many events. Code clean-up (M.Ivanov)
authorhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 29 Jan 2004 09:35:13 +0000 (09:35 +0000)
committerhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 29 Jan 2004 09:35:13 +0000 (09:35 +0000)
TPC/AliTPCComparison.C
TPC/AliTPCComparisonMI.C
TPC/AliTPCFindTracksMI.C
TPC/AliTPCTrackHits.cxx
TPC/AliTPCTrackHits.h
TPC/AliTPCtrack.cxx
TPC/AliTPCtrackerMI.cxx
TPC/AliTPCtrackerMI.h

index 45df3e7b963e99722cd0c28f169dfb7438f8bcf8..d934c9df27501645841ea5c3460c0c9b2a3873c4 100644 (file)
@@ -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;
index 44045da4a5e66ae5bdaaeb880b676d7578c8d6f2..db549fbbb53a15b5f577ae8f1472476987303b23 100644 (file)
@@ -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));
index 7386dcd94f1e9ba1abf06b57e02f5fd6f5e5afca..eed68fc5607a4b329e0d0d62314dc5447c7e31d1 100644 (file)
@@ -86,7 +86,8 @@ Int_t AliTPCFindTracksMI(Int_t N=-1) {
    TStopwatch timer;
    Int_t rc=0;
    for (Int_t i=0;i<eventn;i++)
-    {
+    { 
+      rl->GetEvent(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;
index d43deeb83fe9b502bd2f22629662c8d8ac70cdb2..85666e987179728ebce41f6c2f762553d5c2bd08 100644 (file)
@@ -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{
index 21d23c23e374f683de601253612333c662a98828..c17563d99604234f7e0f72db67a67c54298cf73a 100644 (file)
@@ -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) 
 };
index d45d91a01ebebec8e7315822add55266cc4c0abc..42c78d0732137ed7b12fd3a968d404edc8ad0f9c 100644 (file)
@@ -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);
 
index 0d87264af09688bcb79c407a4beb287c5cc5831e..eba2efabf271f750b9f2f6dce97fee22897e57cb 100644 (file)
@@ -384,11 +384,10 @@ void AliTPCtrackerMI::WriteTracks()
   if (fOutput){
     AliTPCtrack *iotrack= 0;
     Int_t nseed=fSeeds->GetEntriesFast();
-    for (Int_t i=0; i<nseed; i++) {
-      iotrack= (AliTPCtrack*)fSeeds->UncheckedAt(i);
-      if (iotrack) break;      
-    }
-    
+    //for (Int_t i=0; i<nseed; i++) {
+    //  iotrack= (AliTPCtrack*)fSeeds->UncheckedAt(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; i<nseed; i++) {
       AliTPCseed *pt=(AliTPCseed*)fSeeds->UncheckedAt(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;sec<fkNOS;sec++)
     for (Int_t row = 0;row<nrows;row++){
       AliTPCRow*  tpcrow = &(fOuterSec[sec%fkNOS][row]);
-      if (tpcrow){
-       if (tpcrow->fClusters1) 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;sec<fkNIS;sec++)
     for (Int_t row = 0;row<nrows;row++){
       AliTPCRow*  tpcrow = &(fInnerSec[sec%fkNIS][row]);
-      if (tpcrow){
-       if (tpcrow->fClusters1) 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 (nr<fInnerSec->GetNRows()) 
+      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;i<nseed;i++){
     AliTPCseed * seed = (AliTPCseed*) fSeeds->UncheckedAt(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 (nr<fInnerSec->GetNRows()) 
+      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 {
index 6ab0f61f1dd97380cf6f3302331df66b85d74c94..e08d05c6e7751aaaa66a4dd47094708b4574f5cd 100644 (file)
@@ -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];}