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");
{
/// 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);
}
}