#include "AliMUONTriggerUtilities.h"
#include "TArrayS.h"
#include "AliLog.h"
#include "AliMUONCalibrationData.h"
#include "AliMUONGlobalTrigger.h"
#include "AliMUONLocalTriggerBoard.h"
#include "AliMUONVDigit.h"
#include "AliMUONConstants.h"
#include "AliMUONTriggerElectronics.h"
#include "AliMUONDigitStoreV2R.h"
#include "AliMUONDigitMaker.h"
#include "AliMUONTriggerStoreV1.h"
#include "AliMpDDLStore.h"
#include "AliMpPad.h"
#include "AliMpConstants.h"
#include "AliMpVSegmentation.h"
#include "AliMpSegmentation.h"
ClassImp(AliMUONTriggerUtilities)
AliMUONTriggerUtilities::AliMUONTriggerUtilities(AliMUONCalibrationData* calibData):
TObject(),
fCalibrationData(calibData),
fTriggerStatusMap(2*AliMUONConstants::NTriggerCh()*AliMUONConstants::NTriggerCircuit()),
fMaskedDigitsStore(new AliMUONDigitStoreV2R())
{
Init();
}
AliMUONTriggerUtilities::~AliMUONTriggerUtilities()
{
delete fMaskedDigitsStore;
}
Bool_t AliMUONTriggerUtilities::Init()
{
AliMUONTriggerElectronics trigElectronics(fCalibrationData);
AliMUONDigitMaker digitMaker(kFALSE);
AliMUONDigitStoreV2R digitStore, digitStorePart;
AliMUONTriggerStoreV1 triggerStore, triggerStorePart;
TArrayI activeBoards(AliMUONConstants::NTriggerCircuit());
TArrayS xyPatternAll[2];
for(Int_t icath=0; icath<AliMpConstants::NofCathodes(); icath++){
xyPatternAll[icath].Set(AliMpConstants::NofTriggerChambers());
xyPatternAll[icath].Reset(0xFFFF);
}
for ( Int_t iboard=1; iboard<=AliMpConstants::NofLocalBoards(); iboard++ ) {
digitMaker.TriggerDigits(iboard, xyPatternAll, digitStore, kFALSE);
digitStorePart.Clear();
digitMaker.TriggerDigits(iboard, xyPatternAll, digitStorePart, kFALSE);
triggerStorePart.Clear();
trigElectronics.Digits2Trigger(digitStorePart, triggerStorePart);
AliMUONGlobalTrigger* globalTrig = triggerStorePart.Global();
if ( globalTrig->GetGlobalResponse() > 0 ) activeBoards[iboard-1] = 1;
}
trigElectronics.Digits2Trigger(digitStore, triggerStore);
AliMUONDigitStoreV2R digitStoreMasked;
digitMaker.TriggerToDigitsStore(triggerStore, digitStoreMasked);
TIter next(digitStore.CreateIterator());
AliMUONVDigit* dig = 0x0;
while ( ( dig = static_cast<AliMUONVDigit*>(next()) ) ) {
Int_t cath = dig->Cathode();
Int_t detElemId = dig->DetElemId();
Int_t board = dig->ManuId();
Int_t strip = dig->ManuChannel();
AliMUONVDigit* currDigit = digitStoreMasked.FindObject(detElemId, board, strip, cath);
Int_t ich = detElemId/100-11;
const AliMpVSegmentation* seg = AliMpSegmentation::Instance()->GetMpSegmentation(detElemId, AliMp::GetCathodType(cath));
AliMpPad pad = seg->PadByIndices(dig->PadX(), dig->PadY(), kTRUE);
Bool_t isMasked = ( currDigit ) ? kFALSE : kTRUE;
if ( currDigit ) {
Bool_t allBoardsMasked = kTRUE;
for (Int_t iloc=0; iloc<pad.GetNofLocations(); iloc++) {
Int_t currBoard = pad.GetLocalBoardId(iloc);
if ( activeBoards[currBoard-1] == 1 ) {
allBoardsMasked = kFALSE;
break;
}
}
isMasked = allBoardsMasked;
}
if ( isMasked ) fMaskedDigitsStore->Add(*((AliMUONVDigit*)dig->Clone()), AliMUONVDigitStore::kDeny);
else {
for (Int_t iloc=0; iloc<pad.GetNofLocations(); iloc++) {
Int_t currBoard = pad.GetLocalBoardId(iloc);
Int_t arrayIndex = GetArrayIndex(cath, ich, currBoard);
fTriggerStatusMap[arrayIndex] |= ( 0x1 << strip );
}
}
}
return kTRUE;
}
Bool_t AliMUONTriggerUtilities::IsMasked(const AliMUONVDigit& digit) const
{
return IsMasked(digit.DetElemId(), digit.Cathode(), digit.ManuId(), digit.ManuChannel());
}
Bool_t AliMUONTriggerUtilities::IsMasked(const AliMpPad& pad, Int_t detElemId, Int_t cathode) const
{
return IsMasked(detElemId, cathode, pad.GetLocalBoardId(0), pad.GetLocalBoardChannel(0));
}
Bool_t AliMUONTriggerUtilities::IsMasked(Int_t detElemId, Int_t cathode, Int_t localCircuit, Int_t strip) const
{
Int_t trigCh = detElemId/100 - 11;
Int_t arrayIndex = GetArrayIndex(cathode, trigCh, localCircuit);
Bool_t isMasked = ( ( ( fTriggerStatusMap[arrayIndex] >> strip ) & 0x1 ) == 0 );
AliDebug(1,Form("detElemId %i cath %i board %i strip %i is active %i\n", detElemId, cathode, localCircuit, strip, ! isMasked));
return isMasked;
}
Bool_t AliMUONTriggerUtilities::IsMaskedBoard ( Int_t localCircuit, Int_t detElemId, Int_t cathode ) const
{
Int_t trigCh = detElemId/100-11;
Int_t arrayIndex = GetArrayIndex(cathode, trigCh, localCircuit);
return ( fTriggerStatusMap[arrayIndex] == 0 );
}
Int_t AliMUONTriggerUtilities::GetArrayIndex(Int_t cathode, Int_t trigCh, Int_t localCircuit) const
{
return
AliMUONConstants::NTriggerCircuit() * AliMUONConstants::NTriggerCh() * cathode +
AliMUONConstants::NTriggerCircuit() * trigCh + localCircuit-1;
}
AliMUONTriggerUtilities.cxx:1 AliMUONTriggerUtilities.cxx:2 AliMUONTriggerUtilities.cxx:3 AliMUONTriggerUtilities.cxx:4 AliMUONTriggerUtilities.cxx:5 AliMUONTriggerUtilities.cxx:6 AliMUONTriggerUtilities.cxx:7 AliMUONTriggerUtilities.cxx:8 AliMUONTriggerUtilities.cxx:9 AliMUONTriggerUtilities.cxx:10 AliMUONTriggerUtilities.cxx:11 AliMUONTriggerUtilities.cxx:12 AliMUONTriggerUtilities.cxx:13 AliMUONTriggerUtilities.cxx:14 AliMUONTriggerUtilities.cxx:15 AliMUONTriggerUtilities.cxx:16 AliMUONTriggerUtilities.cxx:17 AliMUONTriggerUtilities.cxx:18 AliMUONTriggerUtilities.cxx:19 AliMUONTriggerUtilities.cxx:20 AliMUONTriggerUtilities.cxx:21 AliMUONTriggerUtilities.cxx:22 AliMUONTriggerUtilities.cxx:23 AliMUONTriggerUtilities.cxx:24 AliMUONTriggerUtilities.cxx:25 AliMUONTriggerUtilities.cxx:26 AliMUONTriggerUtilities.cxx:27 AliMUONTriggerUtilities.cxx:28 AliMUONTriggerUtilities.cxx:29 AliMUONTriggerUtilities.cxx:30 AliMUONTriggerUtilities.cxx:31 AliMUONTriggerUtilities.cxx:32 AliMUONTriggerUtilities.cxx:33 AliMUONTriggerUtilities.cxx:34 AliMUONTriggerUtilities.cxx:35 AliMUONTriggerUtilities.cxx:36 AliMUONTriggerUtilities.cxx:37 AliMUONTriggerUtilities.cxx:38 AliMUONTriggerUtilities.cxx:39 AliMUONTriggerUtilities.cxx:40 AliMUONTriggerUtilities.cxx:41 AliMUONTriggerUtilities.cxx:42 AliMUONTriggerUtilities.cxx:43 AliMUONTriggerUtilities.cxx:44 AliMUONTriggerUtilities.cxx:45 AliMUONTriggerUtilities.cxx:46 AliMUONTriggerUtilities.cxx:47 AliMUONTriggerUtilities.cxx:48 AliMUONTriggerUtilities.cxx:49 AliMUONTriggerUtilities.cxx:50 AliMUONTriggerUtilities.cxx:51 AliMUONTriggerUtilities.cxx:52 AliMUONTriggerUtilities.cxx:53 AliMUONTriggerUtilities.cxx:54 AliMUONTriggerUtilities.cxx:55 AliMUONTriggerUtilities.cxx:56 AliMUONTriggerUtilities.cxx:57 AliMUONTriggerUtilities.cxx:58 AliMUONTriggerUtilities.cxx:59 AliMUONTriggerUtilities.cxx:60 AliMUONTriggerUtilities.cxx:61 AliMUONTriggerUtilities.cxx:62 AliMUONTriggerUtilities.cxx:63 AliMUONTriggerUtilities.cxx:64 AliMUONTriggerUtilities.cxx:65 AliMUONTriggerUtilities.cxx:66 AliMUONTriggerUtilities.cxx:67 AliMUONTriggerUtilities.cxx:68 AliMUONTriggerUtilities.cxx:69 AliMUONTriggerUtilities.cxx:70 AliMUONTriggerUtilities.cxx:71 AliMUONTriggerUtilities.cxx:72 AliMUONTriggerUtilities.cxx:73 AliMUONTriggerUtilities.cxx:74 AliMUONTriggerUtilities.cxx:75 AliMUONTriggerUtilities.cxx:76 AliMUONTriggerUtilities.cxx:77 AliMUONTriggerUtilities.cxx:78 AliMUONTriggerUtilities.cxx:79 AliMUONTriggerUtilities.cxx:80 AliMUONTriggerUtilities.cxx:81 AliMUONTriggerUtilities.cxx:82 AliMUONTriggerUtilities.cxx:83 AliMUONTriggerUtilities.cxx:84 AliMUONTriggerUtilities.cxx:85 AliMUONTriggerUtilities.cxx:86 AliMUONTriggerUtilities.cxx:87 AliMUONTriggerUtilities.cxx:88 AliMUONTriggerUtilities.cxx:89 AliMUONTriggerUtilities.cxx:90 AliMUONTriggerUtilities.cxx:91 AliMUONTriggerUtilities.cxx:92 AliMUONTriggerUtilities.cxx:93 AliMUONTriggerUtilities.cxx:94 AliMUONTriggerUtilities.cxx:95 AliMUONTriggerUtilities.cxx:96 AliMUONTriggerUtilities.cxx:97 AliMUONTriggerUtilities.cxx:98 AliMUONTriggerUtilities.cxx:99 AliMUONTriggerUtilities.cxx:100 AliMUONTriggerUtilities.cxx:101 AliMUONTriggerUtilities.cxx:102 AliMUONTriggerUtilities.cxx:103 AliMUONTriggerUtilities.cxx:104 AliMUONTriggerUtilities.cxx:105 AliMUONTriggerUtilities.cxx:106 AliMUONTriggerUtilities.cxx:107 AliMUONTriggerUtilities.cxx:108 AliMUONTriggerUtilities.cxx:109 AliMUONTriggerUtilities.cxx:110 AliMUONTriggerUtilities.cxx:111 AliMUONTriggerUtilities.cxx:112 AliMUONTriggerUtilities.cxx:113 AliMUONTriggerUtilities.cxx:114 AliMUONTriggerUtilities.cxx:115 AliMUONTriggerUtilities.cxx:116 AliMUONTriggerUtilities.cxx:117 AliMUONTriggerUtilities.cxx:118 AliMUONTriggerUtilities.cxx:119 AliMUONTriggerUtilities.cxx:120 AliMUONTriggerUtilities.cxx:121 AliMUONTriggerUtilities.cxx:122 AliMUONTriggerUtilities.cxx:123 AliMUONTriggerUtilities.cxx:124 AliMUONTriggerUtilities.cxx:125 AliMUONTriggerUtilities.cxx:126 AliMUONTriggerUtilities.cxx:127 AliMUONTriggerUtilities.cxx:128 AliMUONTriggerUtilities.cxx:129 AliMUONTriggerUtilities.cxx:130 AliMUONTriggerUtilities.cxx:131 AliMUONTriggerUtilities.cxx:132 AliMUONTriggerUtilities.cxx:133 AliMUONTriggerUtilities.cxx:134 AliMUONTriggerUtilities.cxx:135 AliMUONTriggerUtilities.cxx:136 AliMUONTriggerUtilities.cxx:137 AliMUONTriggerUtilities.cxx:138 AliMUONTriggerUtilities.cxx:139 AliMUONTriggerUtilities.cxx:140 AliMUONTriggerUtilities.cxx:141 AliMUONTriggerUtilities.cxx:142 AliMUONTriggerUtilities.cxx:143 AliMUONTriggerUtilities.cxx:144 AliMUONTriggerUtilities.cxx:145 AliMUONTriggerUtilities.cxx:146 AliMUONTriggerUtilities.cxx:147 AliMUONTriggerUtilities.cxx:148 AliMUONTriggerUtilities.cxx:149 AliMUONTriggerUtilities.cxx:150 AliMUONTriggerUtilities.cxx:151 AliMUONTriggerUtilities.cxx:152 AliMUONTriggerUtilities.cxx:153 AliMUONTriggerUtilities.cxx:154 AliMUONTriggerUtilities.cxx:155 AliMUONTriggerUtilities.cxx:156 AliMUONTriggerUtilities.cxx:157 AliMUONTriggerUtilities.cxx:158 AliMUONTriggerUtilities.cxx:159 AliMUONTriggerUtilities.cxx:160 AliMUONTriggerUtilities.cxx:161 AliMUONTriggerUtilities.cxx:162 AliMUONTriggerUtilities.cxx:163 AliMUONTriggerUtilities.cxx:164 AliMUONTriggerUtilities.cxx:165 AliMUONTriggerUtilities.cxx:166 AliMUONTriggerUtilities.cxx:167 AliMUONTriggerUtilities.cxx:168 AliMUONTriggerUtilities.cxx:169 AliMUONTriggerUtilities.cxx:170 AliMUONTriggerUtilities.cxx:171 AliMUONTriggerUtilities.cxx:172 AliMUONTriggerUtilities.cxx:173 AliMUONTriggerUtilities.cxx:174 AliMUONTriggerUtilities.cxx:175 AliMUONTriggerUtilities.cxx:176 AliMUONTriggerUtilities.cxx:177 AliMUONTriggerUtilities.cxx:178 AliMUONTriggerUtilities.cxx:179 AliMUONTriggerUtilities.cxx:180 AliMUONTriggerUtilities.cxx:181 AliMUONTriggerUtilities.cxx:182 AliMUONTriggerUtilities.cxx:183 AliMUONTriggerUtilities.cxx:184 AliMUONTriggerUtilities.cxx:185 AliMUONTriggerUtilities.cxx:186 AliMUONTriggerUtilities.cxx:187 AliMUONTriggerUtilities.cxx:188 AliMUONTriggerUtilities.cxx:189 AliMUONTriggerUtilities.cxx:190 AliMUONTriggerUtilities.cxx:191 AliMUONTriggerUtilities.cxx:192 AliMUONTriggerUtilities.cxx:193 AliMUONTriggerUtilities.cxx:194 AliMUONTriggerUtilities.cxx:195 AliMUONTriggerUtilities.cxx:196 AliMUONTriggerUtilities.cxx:197 AliMUONTriggerUtilities.cxx:198 AliMUONTriggerUtilities.cxx:199 AliMUONTriggerUtilities.cxx:200 AliMUONTriggerUtilities.cxx:201 AliMUONTriggerUtilities.cxx:202 AliMUONTriggerUtilities.cxx:203 AliMUONTriggerUtilities.cxx:204 AliMUONTriggerUtilities.cxx:205 AliMUONTriggerUtilities.cxx:206 AliMUONTriggerUtilities.cxx:207 AliMUONTriggerUtilities.cxx:208 AliMUONTriggerUtilities.cxx:209 AliMUONTriggerUtilities.cxx:210 AliMUONTriggerUtilities.cxx:211 AliMUONTriggerUtilities.cxx:212 AliMUONTriggerUtilities.cxx:213 AliMUONTriggerUtilities.cxx:214 AliMUONTriggerUtilities.cxx:215 AliMUONTriggerUtilities.cxx:216 AliMUONTriggerUtilities.cxx:217 AliMUONTriggerUtilities.cxx:218 AliMUONTriggerUtilities.cxx:219 AliMUONTriggerUtilities.cxx:220 AliMUONTriggerUtilities.cxx:221 AliMUONTriggerUtilities.cxx:222 AliMUONTriggerUtilities.cxx:223 AliMUONTriggerUtilities.cxx:224 AliMUONTriggerUtilities.cxx:225 AliMUONTriggerUtilities.cxx:226 AliMUONTriggerUtilities.cxx:227 AliMUONTriggerUtilities.cxx:228 AliMUONTriggerUtilities.cxx:229 AliMUONTriggerUtilities.cxx:230 AliMUONTriggerUtilities.cxx:231 AliMUONTriggerUtilities.cxx:232 AliMUONTriggerUtilities.cxx:233 AliMUONTriggerUtilities.cxx:234 AliMUONTriggerUtilities.cxx:235 AliMUONTriggerUtilities.cxx:236 AliMUONTriggerUtilities.cxx:237 AliMUONTriggerUtilities.cxx:238 AliMUONTriggerUtilities.cxx:239 AliMUONTriggerUtilities.cxx:240 AliMUONTriggerUtilities.cxx:241 AliMUONTriggerUtilities.cxx:242 AliMUONTriggerUtilities.cxx:243 AliMUONTriggerUtilities.cxx:244 AliMUONTriggerUtilities.cxx:245 AliMUONTriggerUtilities.cxx:246 AliMUONTriggerUtilities.cxx:247 AliMUONTriggerUtilities.cxx:248 AliMUONTriggerUtilities.cxx:249 AliMUONTriggerUtilities.cxx:250 AliMUONTriggerUtilities.cxx:251 AliMUONTriggerUtilities.cxx:252 AliMUONTriggerUtilities.cxx:253 AliMUONTriggerUtilities.cxx:254 AliMUONTriggerUtilities.cxx:255 AliMUONTriggerUtilities.cxx:256 AliMUONTriggerUtilities.cxx:257 AliMUONTriggerUtilities.cxx:258 AliMUONTriggerUtilities.cxx:259 AliMUONTriggerUtilities.cxx:260 AliMUONTriggerUtilities.cxx:261 AliMUONTriggerUtilities.cxx:262