Decoupling trigX and trigY in LocalTrigger (Philippe C.)
authorpcrochet <pcrochet@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 29 Mar 2007 15:34:12 +0000 (15:34 +0000)
committerpcrochet <pcrochet@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 29 Mar 2007 15:34:12 +0000 (15:34 +0000)
MUON/AliMUONData.cxx
MUON/AliMUONLocalTriggerBoard.cxx

index ff5f54d..200920a 100644 (file)
@@ -1473,11 +1473,17 @@ AliMUONData::DumpRecTrigger(Int_t event2Check,
     for (Int_t ilocal=0; ilocal<nlocals; ilocal++) { // Local Trigger
       locTrg = static_cast<AliMUONLocalTrigger*>(localTrigger->At(ilocal));
 
-      if ( (locTrg->LoSdev()==1 && locTrg->LoDev()==0 && locTrg->LoStripX()==0) && // no trigger in X
-          (locTrg->LoTrigY()==1 && locTrg->LoStripY()==15) ) { // no trigger in Y
-         // no trigger at all
-         
-      } else { // trigger
+      Bool_t xTrig=kFALSE;
+      Bool_t yTrig=kFALSE;
+
+      if ( locTrg->LoSdev()==1 && locTrg->LoDev()==0 && 
+          locTrg->LoStripX()==0) xTrig=kFALSE; // no trigger in X
+      else xTrig=kTRUE;                         // trigger in X
+      if (locTrg->LoTrigY()==1 && 
+         locTrg->LoStripY()==15 ) yTrig = kFALSE; // no trigger in Y
+      else yTrig = kTRUE;                          // trigger in Y
+
+      if (xTrig && yTrig) { // make Trigger Track if trigger in X and Y
          
          if (printout) locTrg->Print("full");
          
index 9680048..7a5a3ae 100644 (file)
@@ -1060,41 +1060,49 @@ void AliMUONLocalTriggerBoard::LocalTrigger()
 {
 /// L0 trigger after LUT
 ///
-    Int_t deviation=0, iStripY=0, iStripX=0;
+    Int_t deviation=0;
+    Int_t iStripY=0;
+    Int_t iStripX=0;
+    Bool_t xOutput=kFALSE;
+    Bool_t yOutput=kFALSE;
 
    for (Int_t i=0; i<4; i++) deviation += static_cast<int>( fMinDev[i] << i );
    for (Int_t i=0; i<4; i++) iStripY   += static_cast<int>( fCoordY[i] << i );
 
-   if (fMinDev[4]==1 && !deviation) fOutput=0;     // No trigger
-   else 
-   {
-      if (fCoordY[4]==1 && iStripY==15) fOutput=0; // No trigger
-      else 
-         fOutput=1;
-   }
-  
-   if (fOutput) 
-   { 
-      for (Int_t i=0; i<5; i++) iStripX += static_cast<int>( fMinDevStrip[i] << i );
+   if (fMinDev[4]==1 && !deviation) xOutput=kFALSE;  // no trigger in X
+   else xOutput=kTRUE;                               // trigger in X
+   if (fCoordY[4]==1 && iStripY==15) yOutput=kFALSE; // no trigger in Y
+   else yOutput=kTRUE;                               // trigger in Y
 
+   if (xOutput) {
+      for (Int_t i=0; i<5; i++) iStripX += static_cast<int>( fMinDevStrip[i] << i );
       fDev      = deviation;
-      fStripY11 = iStripY;
       fStripX11 = iStripX;
+   }
+   if (yOutput) {
+      fStripY11 = iStripY;
       fTrigY    = fCoordY[4];
-
-      Int_t sign = 0;
-
-      if ( !fMinDev[4] &&  deviation ) sign=-1;
-      if ( !fMinDev[4] && !deviation ) sign= 0;
-      if (  fMinDev[4] == 1 )          sign=+1;    
-
-      deviation *= sign; 
-
+   }
+  
+//   cout << " Local Trigger " << " " << fNumber << " " << 
+//       xOutput << " " << yOutput << " " << fDev << " " << fStripX11 << " " <<
+//       fTrigY << " " << fStripY11 << "\n";
+
+   if (yOutput && yOutput){ // trigger in X and Y
+       fOutput =1;
+
+       Int_t sign = 0;
+       if ( !fMinDev[4] &&  deviation ) sign=-1;
+       if ( !fMinDev[4] && !deviation ) sign= 0;
+       if (  fMinDev[4] == 1 )          sign=+1;    
+       
+       deviation *= sign; 
+       
 //    calculate deviation in [0;+30]
-      deviation += 15;
-
+       deviation += 15;
+       
 //    GET LUT OUTPUT FOR icirc/istripX1/deviation/istripY
-      fLUT->GetLutOutput(fNumber, fStripX11, deviation, fStripY11, fLutLpt, fLutHpt);
+       fLUT->GetLutOutput(fNumber, fStripX11, deviation, fStripY11, fLutLpt, fLutHpt);
    }  
 }