]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Updating bugfixes and default values
authorfranken <franken@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 20 Jul 2001 16:05:50 +0000 (16:05 +0000)
committerfranken <franken@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 20 Jul 2001 16:05:50 +0000 (16:05 +0000)
HLT/src/AliL3GlobalMerger.cxx
HLT/src/AliL3InterMerger.cxx

index f6e4f70856df5b460316e38ad1b6a61c76d61f75..8480dbfe19f3851ed126fb33be978eb4334d3899 100644 (file)
@@ -29,7 +29,7 @@ AliL3GlobalMerger::AliL3GlobalMerger(Int_t first,Int_t last):AliL3Merger(last-fi
   fFirst = first;
   fLast = last;
   Is2Global(kTRUE);
-  SetParameter(2,2,0.001,0.1,0.4);
+  SetParameter(2,2,0.001,0.05,0.1);
 }
 
 AliL3GlobalMerger::~AliL3GlobalMerger(){
@@ -54,26 +54,32 @@ void AliL3GlobalMerger::SlowMerge(){
     <<"Need more than one Slice!"<<ENDLOG;
     return;
   }
-  for(Int_t i=0; i<fNSlices-1; i++){
+  for(Int_t i=0; i<fNSlices; i++){
+    if(fNSlices!=18 && i+1 == fNSlices) continue; //full cicle == 18 slices
     Int_t slice = fFirst + i;
     AliL3TrackArray *ttt0=GetInTracks(i);
-    AliL3TrackArray *ttt1=GetInTracks(i+1);
+    Int_t slice2 = i+1;
+    if(slice2==fNSlices) slice2 =0; 
+    AliL3TrackArray *ttt1=GetInTracks(slice2);
     Float_t angle = PI/18.; //10 degrees -> the border of the slices
     fTransformer->Local2GlobalAngle(&angle,slice);
+    if(i==0)
+      ttt0->QSort();
+    ttt1->QSort();
     for(Int_t s0=0;s0<ttt0->GetNTracks();s0++){
-      AliL3Track *track0=ttt0->GetTrack(s0);
+      AliL3Track *track0=ttt0->GetCheckedTrack(s0);
+      if(!track0) continue;
       track0->CalculateHelix();
       track0->CalculateEdgePoint(angle);
-      if(!track0->IsPoint()) ttt0->Remove(s0);
+//      if(track0->IsPoint()) AddTrack(tout,track0);
     }
-//    ttt0->Compress();
     for(Int_t s1=0;s1<ttt1->GetNTracks();s1++){
-      AliL3Track *track1=ttt1->GetTrack(s1);
+      AliL3Track *track1=ttt1->GetCheckedTrack(s1);
+      if(!track1) continue;
       track1->CalculateHelix();
       track1->CalculateEdgePoint(angle);
-      if(!track1->IsPoint()) ttt1->Remove(s1);
+//      if(track1->IsPoint())  AddTrack(tout,track1); 
     }
-//    ttt1->Compress();
     Bool_t merge = kTRUE;
     while(merge){
       Int_t min0=-1,min1=-1;
@@ -81,11 +87,11 @@ void AliL3GlobalMerger::SlowMerge(){
       for(Int_t s0=0;s0<ttt0->GetNTracks();s0++){
         AliL3Track *track0=ttt0->GetCheckedTrack(s0);
         if(!track0) continue;
-        if(!track0->CalculateEdgePoint(angle)) continue;
+        if(!track0->IsPoint()) continue;
         for(Int_t s1=0;s1<ttt1->GetNTracks();s1++){
           AliL3Track *track1=ttt1->GetCheckedTrack(s1);
           if(!track1) continue;
-          if(!track1->CalculateEdgePoint(angle)) continue;
+          if(!track1->IsPoint()) continue;
           Double_t diff = TrackDiff(track0,track1);
           if(diff>=0&&diff<min){
             min=diff;
@@ -101,21 +107,20 @@ void AliL3GlobalMerger::SlowMerge(){
         track[1] = track1;
         SortGlobalTracks(track,2);
         MultiMerge(tout,track,2); 
-        track0->CalculateEdgePoint(angle);
-        track1->CalculateEdgePoint(angle);
         track0->CalculateReferencePoint(angle);
         track1->CalculateReferencePoint(angle);
         PrintDiff(track0,track1);
         FillNtuple(ntuple,track0,track1);
         ttt0->Remove(min0);
         ttt1->Remove(min1);
-//        ttt0->Compress();
-//        ttt1->Compress();
       }
       else merge = kFALSE;
     }
+    ttt0->Compress();
+    ttt1->Compress();
   LOG(AliL3Log::kInformational,"AliL3GlobalMerger::SlowMerge","Result")
-  <<AliL3Log::kDec<<"Merged Tracks: "<<tout->GetNTracks()<<ENDLOG;
+  <<AliL3Log::kDec<<"Merged Tracks: "<<tout->GetNTracks()<<" at:"
+  <<angle<<ENDLOG;
   }
   WriteNtuple("ntuple_s.root",ntuple);
 }
@@ -128,10 +133,13 @@ void AliL3GlobalMerger::Merge(){
     <<"Need more than one Slice!"<<ENDLOG;
     return;
   }
-  for(Int_t i=0; i<fNSlices-1; i++){
+  for(Int_t i=0; i<fNSlices; i++){
+    if(fNSlices!=18 && i+1 == fNSlices) continue; //full cicle == 18 slices
     Int_t slice = fFirst + i;
     AliL3TrackArray *ttt0=GetInTracks(i);
-    AliL3TrackArray *ttt1=GetInTracks(i+1);
+    Int_t slice2 = i+1;
+    if(slice2==fNSlices) slice2 =0;
+    AliL3TrackArray *ttt1=GetInTracks(slice2);
     Float_t angle = PI/18.; //10 degrees -> the border of the slices
     fTransformer->Local2GlobalAngle(&angle,slice);
     if(i==0)
@@ -169,11 +177,17 @@ void AliL3GlobalMerger::Merge(){
           track[0] = track0;
           track[1] = track1;
           SortGlobalTracks(track,2);
-          MultiMerge(tout,track,2); 
-          ismatched0[s0]=kTRUE;
-          ismatched1[s1]=kTRUE;
-          ttt0->Remove(s0);
-          ttt1->Remove(s1);
+          Double_t r0 = pow(track[0]->GetLastPointX(),2)+
+                        pow(track[0]->GetLastPointY(),2);
+          Double_t r1 = pow(track[1]->GetFirstPointX(),2)+
+                        pow(track[1]->GetFirstPointY(),2);
+          if(r0<r1){
+            MultiMerge(tout,track,2); 
+            ismatched0[s0]=kTRUE;
+            ismatched1[s1]=kTRUE;
+            ttt0->Remove(s0);
+            ttt1->Remove(s1);
+          }
         }
       }
     }
index 63af89321cad56893400d7ed68606fb93989eb53..47ae2c7e7ac4dad171c26653af7c6313cdf003e0 100644 (file)
@@ -21,7 +21,8 @@ ClassImp(AliL3InterMerger)
 AliL3InterMerger::AliL3InterMerger():AliL3Merger(1){
   //Default constructor
   Is2Global(kFALSE);
-  SetParameter(2,2,.3,.3,.3);
+//  SetParameter(2,2,.3,.3,.3);
+  SetParameter(1,0.5,0.0005,0.05,0.1);
   fRowMax = fRowMin = 0;
 }
 
@@ -115,8 +116,13 @@ Int_t AliL3InterMerger::Merge(){
       if(IsTrack(innertrack,outertrack)){
         tr[0]=innertrack;
         tr[1]=outertrack;
-        SortTracks(tr,2);
-        if(tr[0]->GetLastPointX()<tr[1]->GetFirstPointX()){
+        SortGlobalTracks(tr,2);
+
+        Double_t r0 = pow(tr[0]->GetLastPointX(),2)+
+                      pow(tr[0]->GetLastPointY(),2);
+        Double_t r1 = pow(tr[1]->GetFirstPointX(),2)+
+                      pow(tr[1]->GetFirstPointY(),2);
+        if(r0<r1){
           MultiMerge(tracks,tr,2);
           tracks->Remove(out);
           tracks->Remove(in);