fMaxIterPad(0),
fCurIterPad(0),
fTriggerScalerEvent(kFALSE),
+ fTriggerResponseV1(kFALSE),
+ fTriggerCoinc44(0),
fSDigitizerType(""),
fDigitizerType(""),
fRawWriter(0x0)
fMaxDestepAlu(-1), // in the calculation of the tracking parameters
fMaxIterPad(0),
fCurIterPad(0),
- fTriggerScalerEvent(kFALSE),
+ fTriggerScalerEvent(kFALSE),
+ fTriggerResponseV1(kFALSE),
+ fTriggerCoinc44(0),
fSDigitizerType(sDigitizerClassName),
fDigitizerType(digitizerClassName),
fRawWriter(0x0)
}
+//____________________________________________________________________
+Int_t AliMUON::GetTriggerCoinc44() const
+{
+///
+/// Returns fTriggerCoinc44
+///
+ return fTriggerCoinc44;
+
+}
+
virtual void SetTriggerResponseV1(Bool_t trigResV1 = false)
{fTriggerResponseV1 = trigResV1;}
virtual Bool_t GetTriggerResponseV1() const;
+ // trigger coinc44
+ virtual void SetTriggerCoinc44(Int_t trigCoinc44 = 0)
+ {fTriggerCoinc44 = trigCoinc44;}
+ virtual Int_t GetTriggerCoinc44() const;
// Getters
/// Return reference to Chamber \a id
// setting scaler for trigger
Bool_t fTriggerScalerEvent; ///< Flag to generates scaler event
Bool_t fTriggerResponseV1; ///< Flag to select TriggerResponseV1
+ Int_t fTriggerCoinc44; ///< Flag to select TriggerCoinc44
TString fSDigitizerType; ///< Class to use for SDigitizer
TString fDigitizerType; ///< Class to use for Digitizer
fStripY11(0),
fDev(0),
fOutput(0),
- fLUT(0x0)
+ fLUT(0x0),
+ fCoinc44(0)
{
//* constructor
//*
fStripY11(0),
fDev(0),
fOutput(0),
- fLUT(lut)
+ fLUT(lut),
+ fCoinc44(0)
{
//* constructor
//*
fStripY11(right.fStripY11),
fDev(right.fDev),
fOutput(right.fOutput),
- fLUT(right.fLUT)
+ fLUT(right.fLUT),
+ fCoinc44(right.fCoinc44)
{
/// Protected copy constructor (not implemented)
}
//___________________________________________
-void AliMUONLocalTriggerBoard::TrigX(Int_t ch1q[16], Int_t ch2q[16], Int_t ch3q[32], Int_t ch4q[32],
- Int_t coinc44)
+void AliMUONLocalTriggerBoard::TrigX(Int_t ch1q[16], Int_t ch2q[16], Int_t ch3q[32], Int_t ch4q[32])
{
// note : coinc44 = flag 0 or 1 (0 coincidence -> 3/4, 1 coincidence -> 4/4)
//---------------------------------------------------------
!dbleHit1[14] & !dbleHit1[13] & !dbleHit1[12] & !dbleHit1[11] &
!dbleHit1[10] & !dbleHit1[9] & !dbleHit1[8] & !dbleHit1[7] &
!dbleHit1[6] & !dbleHit1[5] & !dbleHit1[4] & !dbleHit1[3] &
- !dbleHit1[2] & !dbleHit1[1] & !dbleHit1[0] & !coinc44;
+ !dbleHit1[2] & !dbleHit1[1] & !dbleHit1[0] & !fCoinc44;
Int_t notOr2= !dbleHit2[62] & !dbleHit2[61] & !dbleHit2[60] & !dbleHit2[59] &
!dbleHit2[58] & !dbleHit2[57] & !dbleHit2[56] & !dbleHit2[55] &
!dbleHit2[14] & !dbleHit2[13] & !dbleHit2[12] & !dbleHit2[11] &
!dbleHit2[10] & !dbleHit2[9] & !dbleHit2[8] & !dbleHit2[7] &
!dbleHit2[6] & !dbleHit2[5] & !dbleHit2[4] & !dbleHit2[3] &
- !dbleHit2[2] & !dbleHit2[1] & !dbleHit2[0] & !coinc44;
+ !dbleHit2[2] & !dbleHit2[1] & !dbleHit2[0] & !fCoinc44;
// DS reduction
for (i=0; i<31; i++) {
//___________________________________________
void AliMUONLocalTriggerBoard::TrigY(Int_t y1[16], Int_t y2[16], Int_t y3[16], Int_t y4[16],
- Int_t y3u[16], Int_t y3d[16], Int_t y4u[16], Int_t y4d[16],
- Int_t coinc44)
+ Int_t y3u[16], Int_t y3d[16], Int_t y4u[16], Int_t y4d[16])
{
// note : resMid = 1 -> cancel
//---------------------------------------------------------
!dble2[3] & !dble2[2] & !dble2[1] & !dble2[0];
for (i=0; i<16; i++) {
- sgle1[i] = sgle1[i] & notOr1 & !coinc44;
- sgle2[i] = sgle2[i] & notOr2 & !coinc44;
+ sgle1[i] = sgle1[i] & notOr1 & !fCoinc44;
+ sgle2[i] = sgle2[i] & notOr2 & !fCoinc44;
}
//---------------------------------------------------------
xXX4[i+24] = x4u[i];
}
- Int_t coinc44 = 0;
+// Int_t coinc44 = 0;
- TrigX(xX1, xX2, xXX3, xXX4, coinc44);
+ TrigX(xX1, xX2, xXX3, xXX4);
Int_t yY1[16], yY2[16], yY3[16], yY4[16];
yY4D[i] = y4d[i];
}
- TrigY(yY1, yY2, yY3, yY4, yY3U, yY3D, yY4U, yY4D, coinc44);
+ TrigY(yY1, yY2, yY3, yY4, yY3U, yY3D, yY4U, yY4D);
// ASIGN fLutLpt, fLutHpt, fLutApt
LocalTrigger();
Bool_t HasLUT() const { return (fLUT != 0); }
void SetLUT(AliMUONTriggerLut* lut) { fLUT = lut; }
-
+ void SetCoinc44(Int_t coinc44=0) { fCoinc44 = coinc44; }
+
virtual void Setbit(Int_t strip, Int_t cathode, Int_t chamber);
virtual void SetbitM(Int_t strip, Int_t cathode, Int_t chamber);
virtual void Mask(Int_t index, UShort_t value);
- virtual void TrigX(Int_t ch1q[16], Int_t ch2q[16], Int_t ch3q[32], Int_t ch4q[32],
- Int_t coinc44);
+ virtual void TrigX(Int_t ch1q[16], Int_t ch2q[16], Int_t ch3q[32], Int_t ch4q[32]);
virtual void Sort2x5(Int_t dev1[6], Int_t dev2[6],
Int_t minDev[6], Int_t &dev1GTdev2);
virtual void TrigY(Int_t y1[16], Int_t y2[16], Int_t y3[16], Int_t y4[16],
- Int_t y3u[16], Int_t y3d[16], Int_t y4u[16], Int_t y4d[16],
- Int_t coinc44);
+ Int_t y3u[16], Int_t y3d[16], Int_t y4u[16], Int_t y4d[16]);
virtual void SetXYU(UShort_t V[2][4]) {for (Int_t i=0;i<2;i++) for (Int_t j=0;j<4;j++) fXYU[i][j] = V[i][j];}
Int_t fMinDevStrip[5]; ///< X (from algo)
Int_t fMinDev[5]; ///< Dev (from algo)
Int_t fCoordY[5]; ///< Y (from algo)
-
+
AliMUONTriggerLut *fLUT; //!< Pointer to trigger LUT, that we do not own.
+ Int_t fCoinc44; ///< Coinc 44 (0/1 = coinc34/coinc44)
ClassDef(AliMUONLocalTriggerBoard,1)
};
{
//* BUILD ALL ELECTRONICS
//*
-
+
+// get coinc44 from AliMUON (added 12/09/06)
+ AliMUON *pMUON = (AliMUON*)gAlice->GetModule("MUON");
+ Int_t coinc44 = pMUON->GetTriggerCoinc44();
+ if (coinc44 != 0 && coinc44 != 1) {
+ AliFatal("Coinc 44 should be equal to 0 or 1");
+ return;
+ }
+
fCrates->ReadFromFile(gSystem->ExpandPathName(fSourceFileName.Data()));
if ( !calibData ) return;
while ( (localBoard=fCrates->NextLocalBoard()) )
{
localBoard->SetLUT(lut);
+ localBoard->SetCoinc44(coinc44);
}
}
// To get brand new trigger code, please use :
//
// AliMUON *MUON = new AliMUONv1("MUON", "FactoryV4",
- // "sdigitizer:AliMUONSDigitizerV2",
- // "digitizer:NewDigitizerNewTrigger");
+ // "sdigitizer:AliMUONSDigitizerV2",
+ // "digitizer:NewDigitizerNewTrigger");
// activate trigger cluster-size i.e. ResponseTriggerV1 (default/v1 = 0/1)
// MUON->SetTriggerResponseV1(0);
+ // activate 4/4 trigger coincidence (0(default)/1 = coinc 34/44)
+ // MUON->SetTriggerCoinc44(0);
//
// To enable Trigger Chamber Efficiency, please use :
//