AliRoot Core  edcc906 (edcc906)
AliMUONTriggerElectronics.cxx
Go to the documentation of this file.
1 /**************************************************************************
2  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3  * *
4  * Author: The ALICE Off-line Project. *
5  * Contributors are mentioned in the code where appropriate. *
6  * *
7  * Permission to use, copy, modify and distribute this software and its *
8  * documentation strictly for non-commercial purposes is hereby granted *
9  * without fee, provided that the above copyright notice appears in all *
10  * copies and that both the copyright notice and this permission notice *
11  * appear in the supporting documentation. The authors make no claims *
12  * about the suitability of this software for any purpose. It is *
13  * provided "as is" without express or implied warranty. *
14  **************************************************************************/
15 
16 /* $Id$ */
17 
18 //-----------------------------------------------------------------------------
19 // Class AliMUONTriggerElectronics
20 //--------------------------------
21 // Manager class for muon trigger electronics
22 // Client of trigger board classes
23 // Debugged by Ph. Crochet & Ch. Finck
24 // Interfaced with new mapping Ch. Finck
25 //
26 // Author: Rachid Guernane (LPCCFd)
27 //-----------------------------------------------------------------------------
28 
29 #include "AliLoader.h"
30 #include "AliLog.h"
31 #include "AliMUONCalibrationData.h"
32 #include "AliMUONVDigit.h"
33 #include "AliMUONVDigitStore.h"
34 #include "AliMUONGlobalTrigger.h"
36 #include "AliMUONLocalTrigger.h"
38 #include "AliMUONRegionalTrigger.h"
40 #include "AliMUONTriggerCrate.h"
46 #include "AliMUONVTriggerStore.h"
47 #include "AliMUONVCalibParam.h"
48 #include "AliMpCathodType.h"
49 #include "AliMpCDB.h"
50 #include "AliMpDEManager.h"
51 #include "AliMpSegmentation.h"
52 #include "AliMpVSegmentation.h"
53 #include "AliMpCathodType.h"
54 #include "AliMpTriggerCrate.h"
55 #include "AliMpLocalBoard.h"
56 #include "AliMpDDLStore.h"
57 #include "AliMpExMap.h"
58 #include "AliMpIntPair.h"
59 
60 #include "AliLog.h"
61 #include "AliLoader.h"
62 #include "AliRun.h"
63 #include <TBits.h>
64 #include <TSystem.h>
65 
66 #include "AliCodeTimer.h"
67 
68 
72 
73 //___________________________________________
75 : TObject(),
78 {
81 
82 
83  // force loading of mapping if not already done
84  if ( !AliMpDDLStore::Instance(kFALSE) )
85  {
87  }
88 
89 
90  Factory(calibData);
91  LoadMasks(calibData);
92 }
93 
94 //___________________________________________
96 {
99  delete fGlobalTriggerBoard;
100  delete fCrates;
101 
102 }
103 
104 //___________________________________________
106 {
109 
110  fCrates->ReadFromFile(calibData);
111 }
112 
113 //___________________________________________
115 {
118 
119  AliCodeTimerAuto("",0);
120 
121  TIter next(digitStore.CreateTriggerIterator());
122  AliMUONVDigit* mdig;
123 
124  while ( ( mdig = static_cast<AliMUONVDigit*>(next()) ) )
125  {
126  // CHECKME ! The TrackCharge is not ok with new digitizerV3 !
127  // for (Int_t ichg=0; ichg<10; ichg++) schg += mdig->TrackCharge(ichg);
128  Int_t ichamber = AliMpDEManager::GetChamberId(mdig->DetElemId());
129  Int_t schg = (Int_t)(mdig->Charge() + 0.5);
130 
131  // APPLY CONDITION ON SOFT BACKGROUND
132  Int_t tchg = schg - (Int_t(schg/10))*10;
133 
134  if (schg<=10 || tchg>0)
135  {
136  Int_t detElemId = mdig->DetElemId();
137  Int_t cathode = mdig->Cathode();
138 
139  const AliMpVSegmentation* seg =
141  ->GetMpSegmentation(detElemId,AliMp::GetCathodType(cathode));
142 
143  Int_t ix = mdig->PadX(), iy = mdig->PadY();
144 
145  AliDebug(3,Form("cathode %d ix %d iy %d ",cathode,ix,iy));
146 
147  AliMpPad pad = seg->PadByIndices(ix,iy,kTRUE);
148 
149  for (Int_t i=0; i<pad.GetNofLocations(); i++)
150  {
151  Int_t nboard = pad.GetLocalBoardId(i);
152 
153  Int_t ibitxy = pad.GetLocalBoardChannel(i);
154 
156 
157  if (b)
158  {
159  if (cathode && b->GetSwitch(AliMpLocalBoard::kZeroAllYLSB)) ibitxy += 8;
160 
161  b->SetbitM(ibitxy,cathode,ichamber-10);
162 
163  if ( cathode == 0 ) {
164  // Particular case of the columns with 22 local boards (2R(L) 3R(L))
165  // Fill copy boards
166  AliMpLocalBoard* mpLocalBoard = AliMpDDLStore::Instance()->GetLocalBoard(nboard);
167  Int_t nboardCopy = mpLocalBoard->GetInputXto();
168  if ( nboardCopy > 0 ) {
169  AliMUONLocalTriggerBoard* copyBoard = fCrates->LocalBoard(nboardCopy);
170  copyBoard->SetbitM(ibitxy,cathode,ichamber-10);
171  }
172  }
173  }
174  else
175  {
176  AliError(Form("Could not get local board number %d",nboard));
177  }
178  }
179  }
180  }
181 
183 }
184 
185 
186 //___________________________________________
188 {
189  //
192  //
193 
194  // FILL UP/DOWN OF CURRENT BOARD (DONE VIA J3 BUS IN REAL LIFE)
196  TIter next2(fCrates->CreateCrateIterator());
197 
198  while ( ( cr = static_cast<AliMUONTriggerCrate*>(next2()) ) )
199  {
200  TObjArray *boards = cr->Boards();
201 
202  for (Int_t j = 1; j < boards->GetEntries()-1; j++)
203  {
204  TObject *o = boards->At(j);
205 
206  if (!o) break;
207 
209 
210  AliMUONLocalTriggerBoard *neighbour = (AliMUONLocalTriggerBoard*)boards->At(j+1);
211 
212  UShort_t cXY[2][4];
213 
214  if (j==1) {neighbour->GetXY(cXY); currboard->SetXYU(cXY);}
215 
216  // LAST BOARD IN THE CRATE HAS NO UP EXCEPT FOR CRATES 2 & 3
217  if (j < boards->GetEntries()-2)
218  {
219  AliMUONLocalTriggerBoard *nextboard = (AliMUONLocalTriggerBoard*)boards->At(j+2);
220 
221  currboard->GetXY(cXY); neighbour->SetXYD(cXY);
222  nextboard->GetXY(cXY); neighbour->SetXYU(cXY);
223 
224  if (j==boards->GetEntries()-3) {neighbour->GetXY(cXY); nextboard->SetXYD(cXY);}
225  }
226  }
227  }
228 
229 }
230 
231 
232 //___________________________________________
233 void AliMUONTriggerElectronics::Feed(UShort_t pattern[2][4])
234 {
238  TIter next(fCrates->CreateCrateIterator());
239 
240  while ( ( cr = static_cast<AliMUONTriggerCrate*>(next()) ) )
241  {
242  TObjArray *boards = cr->Boards();
243 
244  for (Int_t j = 1; j < boards->GetEntries(); j++)
245  {
246  TObject *o = boards->At(j);
247 
248  if (!o) break;
249 
251 
252  board->SetXY(pattern);
253  }
254  }
255 }
256 
257 //___________________________________________
259 {
262  for (Int_t i= 0; i < 234;i++)
263  {
265 
266  if (board) board->Scan("ALL");
267  }
268 }
269 
270 //___________________________________________
271 void AliMUONTriggerElectronics::Scan(const Option_t *option)
272 {
275 
277  TIter next(fCrates->CreateCrateIterator());
278 
279  while ( ( cr = static_cast<AliMUONTriggerCrate*>(next()) ) )
280  {
281  TObjArray *boards = cr->Boards();
282 
283  for (Int_t j = 0; j < boards->GetEntries(); j++)
284  {
285  TObject *o = boards->At(j);
286 
287  TString op = option;
288 
289  Bool_t cdtion = kFALSE;
290 
291  if (op.Contains("LOCAL")) cdtion = o->IsA() == AliMUONLocalTriggerBoard::Class();
292  if (op.Contains("REGIONAL")) cdtion = o->IsA() == AliMUONRegionalTriggerBoard::Class();
293  if (op.Contains("GLOBAL")) cdtion = o->IsA() == AliMUONGlobalTriggerBoard::Class();
294 
295  if (!o || !cdtion) continue;
296 
298 
299  board->Scan();
300  }
301  }
302 }
303 
304 //___________________________________________
306 {
309 
311  TIter next(fCrates->CreateCrateIterator());
312  while ( ( cr = static_cast<AliMUONTriggerCrate*>(next()) ) )
313  {
314  TObjArray *boards = cr->Boards();
315 
316  for (Int_t j=0; j<boards->GetEntries(); j++)
317  {
318  AliMUONTriggerBoard *b = (AliMUONTriggerBoard*)boards->At(j);
319 
320  if (b) b->Reset();
321  }
322  }
323 }
324 
325 
326 //_______________________________________________________________________
328 {
330 
331  // Set mask
332 
334  if (!regionalConfig) {
335  AliError("No valid regional trigger configuration in CDB");
336  return;
337  }
338 
340  TIter next(fCrates->CreateCrateIterator());
341 
342  Int_t irb(0);
343 
344  while ( ( cr = static_cast<AliMUONTriggerCrate*>(next()) ) )
345  {
346  TObjArray *boards = cr->Boards();
347 
349 
350  AliMUONTriggerCrateConfig* crateConfig = regionalConfig->FindTriggerCrate(cr->GetName());
351 
352  if (!crateConfig)
353  {
354  AliError(Form("Crate %s not present in configuration !!!", cr->GetName()));
355  return;
356  }
357 
358  UShort_t rmask= crateConfig->GetMask();
359 
360  regb->Mask(rmask);
361 
362  for (Int_t j = 1; j < boards->GetEntries(); j++)
363  {
365 
366  Int_t cardNumber = b->GetNumber();
367 
368  if (cardNumber) // skip empty slots
369  {
370  AliMUONVCalibParam* localBoardMasks = calibData->LocalTriggerBoardMasks(cardNumber);
371  if (localBoardMasks) {
372  for ( Int_t i = 0; i < localBoardMasks->Size(); ++i )
373  {
374  UShort_t lmask = static_cast<UShort_t>(localBoardMasks->ValueAsInt(i) & 0xFFFF);
375  b->Mask(i,lmask);
376  }
377  }
378  }
379  }
380  ++irb;
381  }
382 
384  if (!globalConfig) {
385  AliError("No valid trigger crate configuration in CDB");
386  return;
387  }
388 
389  UInt_t gmask = 0;
390  for (Int_t i = 0; i < 4; i++) {
391  gmask = globalConfig->GetGlobalMask(i);
392  fGlobalTriggerBoard->Mask(i,gmask);
393  }
394 }
395 
396 //___________________________________________
398 {
400 
401  AliCodeTimerAuto("",0);
402 
404  TIter next(fCrates->CreateCrateIterator());
405 
406  UShort_t thisl[16];
407 
408  while ( ( cr = static_cast<AliMUONTriggerCrate*>(next()) ) )
409  {
410 
411  TObjArray *boards = cr->Boards();
412 
414 
415  for (Int_t j=0; j<16; ++j) thisl[j] = 0;
416 
417  for (Int_t j = 1; j < boards->GetEntries(); j++)
418  {
419  TObject *o = boards->At(j);
420 
421  if (!o) break;
422 
424 
425  board->Response();
426 
427  UShort_t response = board->GetResponse();
428 
429  // CRATE CONTAINING INTERFACE BOARD
430  if (!board->IsNotified()) // copy boards
431  {
432  if ( response != 0 )
433  AliWarning(Form("Interface board %s in slot %d of crate %s has a non zero response",
434  board->GetName(),j,cr->GetName()));
435  AliDebug(1, Form("local slot %d, number %d in crate %s\n", j, board->GetNumber(), cr->GetName()));
436 
437  }
438 
439  thisl[j-1] = response;
440  }
441 
442  regb->SetLocalResponse(thisl);
443  }
444 }
445 
446 //___________________________________________
448 {
450 
451  AliCodeTimerAuto("",0);
452 
454  TIter next(fCrates->CreateCrateIterator());
455 
456  while ( ( cr = static_cast<AliMUONTriggerCrate*>(next()) ) )
457  {
458  TObjArray *boards = cr->Boards();
459 
461 
462  regb->Response();
463 
464  }
465 }
466 
467 //___________________________________________
469 {
471 
472  AliCodeTimerAuto("",0);
473 
474  UShort_t regional[16];
475 
477  Int_t irb(0);
478 
479  if ( fCrates->NumberOfCrates() > 16 )
480  {
481  AliFatal(Form("Something is wrong : too many crates %d",
482  fCrates->NumberOfCrates()));
483  }
484 
485  // send regional responses to the global trigger in right order
486  // do not used iterator order
487 
488  for (Int_t iSide = 0; iSide < 2; iSide++) // right & left side
489  {
490  for (Int_t iReg = 0; iReg < 8; iReg++) // 8 crates/regional boards for each side.
491  {
492  cr = fCrates->Crate(iSide, iReg);
493 
494  AliMUONTriggerBoard* rb =
495  static_cast<AliMUONTriggerBoard*>(cr->Boards()->At(0));
496  regional[irb] = rb->GetResponse();
497  ++irb;
498  }
499  }
500 
503 }
504 
505 //_______________________________________________________________________
507  AliMUONVTriggerStore& triggerStore)
508 {
509  AliCodeTimerAuto("",0);
510 
512  AliMUONRegionalTrigger pRegTrig;
513 
514  triggerStore.Clear();
515 
516  // NOW RESET ELECTRONICS
517  Reset();
518 
519  // RUN THE FULL BEE CHAIN
520  Feed(digitStore);
521  LocalResponse();
522  RegionalResponse();
523  GlobalResponse();
524  // DumpOS();
525 
527  AliMUONLocalTrigger localTrigger;
528 
529  // stored in right order
530  // do not used iterator order
531 
532  for (Int_t iSide = 0; iSide < 2; iSide++) // right & left side
533  {
534  for (Int_t iReg = 0; iReg < 8; iReg++) // 8 crates/regional boards for each side.
535  {
536  cr = fCrates->Crate(iSide, iReg);
537  TObjArray *boards = cr->Boards();
538 
539  UInt_t regInpLpt = 0;
540  UInt_t regInpHpt = 0;
541 
542  AliMUONRegionalTriggerBoard *regBoard = (AliMUONRegionalTriggerBoard*)boards->At(0);
543 
544  for (Int_t j = 1; j < boards->GetEntries(); j++)
545  {
546  TObject *o = boards->At(j);
547 
548  if (!o) break;
549 
551 
552  if (board)
553  {
554  // L0 TRIGGER
555  // pcrochet 181206: MOOD needs ALL boards
556  // if (board->Triggered())
557  // {
558 
559  Int_t icirc = board->GetNumber();
560  localTrigger.SetLoCircuit(icirc);
561  localTrigger.SetLoStripX(board->GetStripX11());
562  localTrigger.SetLoDev(board->GetDev());
563  localTrigger.SetLoSdev(board->GetSdev());
564  localTrigger.SetLoTrigY(board->GetTrigY());
565  localTrigger.SetLoStripY(board->GetStripY11());
566 
567  // SAVE LUT OUTPUT
568  UShort_t response = board->GetResponse();
569  localTrigger.SetLoHpt((response & 12) >> 2);
570  localTrigger.SetLoLpt(response & 3);
571 
572  // calculates regional inputs from local for the moment
573  UInt_t hPt = (response >> 2) & 0x3;
574  UInt_t lPt = response & 0x3;
575 
576  regInpHpt |= hPt << (30 - (j-1)*2);
577  regInpLpt |= lPt << (30 - (j-1)*2);
578 
579  TBits rrr;
580  rrr.Set(6,&response);
581 
582  // SAVE BIT PATTERN
583  localTrigger.SetX1Pattern(board->GetXY(0,0));
584  localTrigger.SetX2Pattern(board->GetXY(0,1));
585  localTrigger.SetX3Pattern(board->GetXY(0,2));
586  localTrigger.SetX4Pattern(board->GetXY(0,3));
587 
588  localTrigger.SetY1Pattern(board->GetXY(1,0));
589  localTrigger.SetY2Pattern(board->GetXY(1,1));
590  localTrigger.SetY3Pattern(board->GetXY(1,2));
591  localTrigger.SetY4Pattern(board->GetXY(1,3));
592 
593  // ADD A NEW LOCAL TRIGGER
594  triggerStore.Add(localTrigger);
595 
596  }
597  }
598  pRegTrig.SetId(iReg + 8*iSide);
599  pRegTrig.SetLocalOutput(regInpLpt, 0);
600  pRegTrig.SetLocalOutput(regInpHpt, 1);
601  pRegTrig.SetOutput(regBoard->GetResponse());
602 
603  triggerStore.Add(pRegTrig);
604  }
605  }
606 
607  // GLOBAL TRIGGER INFORMATION
608  UShort_t global = fGlobalTriggerBoard->GetResponse();
609  UInt_t *globalInput = fGlobalTriggerBoard->GetGlobalInput();
610 
611  AliMUONGlobalTrigger globalTrigger;
612 
613  globalTrigger.SetFromGlobalResponse(global);
614  globalTrigger.SetFromGlobalInput(globalInput);
615  // ADD A LOCAL TRIGGER IN THE LIST
616  triggerStore.SetGlobal(globalTrigger);
617 
618 }
619 
620 //___________________________________________
622 {
623  //
625  //
626  AliMUONLocalTrigger* locTrg;
627  TIter next(triggerStore.CreateLocalIterator());
628  TArrayS xyPattern[2];
629  UShort_t xy[2][4];
630  Int_t loCircuit;
631  while ( ( locTrg = static_cast<AliMUONLocalTrigger*>( next() )) != NULL ){
632  locTrg->GetXPattern(xyPattern[0]);
633  locTrg->GetYPattern(xyPattern[1]);
634  loCircuit = locTrg->LoCircuit();
635  AliMUONLocalTriggerBoard* localBoard = fCrates->LocalBoard(loCircuit);
636  for (Int_t icath = 0; icath<2; ++icath){
637  for (Int_t ich = 0; ich < 4; ++ich){
638  xy[icath][ich] = xyPattern[icath][ich];
639  }
640  }
641  localBoard->SetXY(xy);
642  }
643 
645 }
646 
647 //_______________________________________________________________________
649  Bool_t& bendingPlaneResp,
650  Bool_t& nonBendingPlaneResp,
651  Bool_t isCoinc44,
652  Int_t removeChamber)
653 {
654  //
657  //
658 
659  bendingPlaneResp = kFALSE;
660  nonBendingPlaneResp = kFALSE;
661 
662  Bool_t isTriggered = kFALSE;
663 
664  AliMUONLocalTriggerBoard* currBoard = fCrates->LocalBoard(loCircuit);
665 
666  if ( ! currBoard ) return isTriggered;
667 
668  AliMUONLocalTriggerBoard localBoard (*currBoard);
669 
670  if (removeChamber>=0 && removeChamber<=3){
671 
672  // Set the bit pattern of selected chamber to 0
673  UShort_t xy[2][4];
674  UShort_t xyu[2][4];
675  UShort_t xyd[2][4];
676 
677  localBoard.GetXY(xy);
678  localBoard.GetXYU(xyu);
679  localBoard.GetXYD(xyd);
680 
681  for(Int_t icath=0; icath<2; icath++){
682  xy[icath][removeChamber] = 0;
683  xyu[icath][removeChamber] = 0;
684  xyd[icath][removeChamber] = 0;
685  }
686 
687  localBoard.SetXY(xy);
688  localBoard.SetXYU(xyu);
689  localBoard.SetXYD(xyd);
690  }
691 
692  localBoard.ResetResponse();
693 
694  localBoard.SetCoinc44((Int_t)isCoinc44);
695  localBoard.Response();
696 
697  bendingPlaneResp = localBoard.IsTrigX();
698  nonBendingPlaneResp = localBoard.IsTrigY();
699  isTriggered = localBoard.Triggered();
700 
701  return isTriggered;
702 }
703 
704 
705 //_______________________________________________________________________
707 {
709 
710  AliCodeTimerAuto("", 0);
711 
712  Reset();
713  Feed(triggerStore);
714 
715  AliMUONLocalTrigger* locTrg;
716  TIter next(triggerStore.CreateLocalIterator());
717  Int_t loCircuit;
718  Bool_t planeResp[2], isTrig44;
719  Bool_t bendPlaneRespNoCh, nonBendPlaneRespNoCh, isTrigWithoutCh;
720  while ( ( locTrg = static_cast<AliMUONLocalTrigger*>( next() )) != NULL ){
721  if ( ! ( locTrg->IsTrigX() && locTrg->IsTrigY() ) ) continue;
722  loCircuit = locTrg->LoCircuit();
723  isTrig44 = ModifiedLocalResponse(loCircuit, planeResp[0], planeResp[1], kTRUE);
724  for (Int_t ich=0; ich<4; ++ich){
725  if ( ! isTrig44 ){
726  isTrigWithoutCh = ModifiedLocalResponse(loCircuit, bendPlaneRespNoCh, nonBendPlaneRespNoCh, kFALSE, ich);
727  if ( ! isTrigWithoutCh ) continue;
728  for (Int_t icath=0; icath<2; icath++){
729  if ( ! planeResp[icath] )
730  locTrg->SetNoHitInPlane(icath, ich);
731  } // loop on cathodes
732  }
733  locTrg->SetTriggerWithoutChamber(ich);
734  } // loop on chambers
735  AliDebug(1, Form("Is44 %i triggers %i pattern %i", isTrig44, locTrg->GetTriggerWithoutChamber(), locTrg->GetHitPatternFromResponse()));
736  }
737 }
void GetYPattern(TArrayS &array) const
return Y pattern array
virtual void SetbitM(Int_t strip, Int_t cathode, Int_t chamber)
TBrowser b
Definition: RunAnaESD.C:12
Int_t GetNofLocations() const
Definition: AliMpPad.cxx:325
void SetFromGlobalInput(const UInt_t *globalInput)
void ReadFromFile(AliMUONCalibrationData *calibData)
The class defines the configuration of global crate.
const AliMpVSegmentation * GetMpSegmentation(Int_t detElemId, AliMp::CathodType cath, Bool_t warn=true) const
The class defines the configuration of trigger crate.
virtual TIterator * CreateLocalIterator() const =0
Create iterator on local trigger.
void SetLocalOutput(UInt_t local, Int_t n)
Set local output Lpt & Hpt.
void SetFromGlobalResponse(UShort_t globalResponse)
virtual void Scan(Option_t *option="") const
virtual method for derivated classes
virtual void SetXY(UShort_t XY[2][4])
Set XY.
AliMUONRegionalTriggerConfig * RegionalTriggerConfig() const
Get the config for regional trigger.
void SetCoinc44(Int_t coinc44=0)
Set Coinc 44 (0/1 = coinc34/coinc44)
virtual void Reset()=0
virtual method for derivated classes
virtual Bool_t IsNotified() const
Is notified (copy boards are not)
UInt_t GetGlobalMask(Int_t index) const
Get mask for the global input.
AliMpLocalBoard * GetLocalBoard(Int_t localBoardId, Bool_t warn=true) const
Interface for a digit container.
void SetY3Pattern(UShort_t pat)
Set Y strip pattern for chamber 21.
void SetLoTrigY(Int_t loTrigY)
Set Trig Y.
static AliMpSegmentation * Instance(Bool_t warn=true)
Bool_t IsTrigY() const
Trigger response Y strips.
#define TObjArray
void SetLoStripX(Int_t loStrX)
Set X strip in MT11.
virtual Int_t GetStripX11() const
Return MT1 X position of the valid road.
virtual Int_t Size() const =0
The number of channels handled by this object.
void SetX1Pattern(UShort_t pat)
Set X strip pattern for chamber 11.
void GetXPattern(TArrayS &array) const
return X pattern array
virtual void GetXY(UShort_t XY[2][4]) const
Return XY.
virtual void SetGlobal(const AliMUONGlobalTrigger &globalTrigger)=0
Set global trigger.
static Bool_t LoadDDLStore(Bool_t warn=false)
Definition: AliMpCDB.cxx:149
virtual Int_t Triggered() const
Return info if Board has triggered.
AliMUONVCalibParam * LocalTriggerBoardMasks(Int_t localBoardNumber) const
Get the mask for a given local trigger board.
AliMUONTriggerCrateStore * fCrates
void SetOutput(Char_t o)
Set regional output (single muon:2, unlike sign:1, like sign:1)
Class that manages the properties of the local board.
void Mask(UShort_t mask)
set local boards enable
AliMUONLocalTriggerBoard * LocalBoard(Int_t boardNumber) const
Regional trigger - real HW algorithm is implemented.
virtual AliMpPad PadByIndices(Int_t ix, Int_t iy, Bool_t warning=true) const =0
Find pad by indices.
virtual void SetLocalResponse(UShort_t val[16])
Set Local trigger inputs.
TIterator * CreateCrateIterator() const
A container for AliMUONTriggerCrate objects.
Base class of a trigger information store.
#define AliWarning(message)
Definition: AliLog.h:541
virtual UShort_t GetSwitch(Int_t i) const
Return i-th Switch value.
virtual void SetXYD(UShort_t V[2][4])
Set XYD.
Manager class for muon trigger electronics.
virtual Int_t GetStripY11() const
Return MT1 Y position of the valid road.
virtual void Response()
virtual method for derivated classes
void SetTriggerWithoutChamber(Int_t ich)
The board would provide a trigger even after removing chamber ich [0,3].
virtual Int_t GetTrigY() const
Return Trigger in Y.
virtual void Response()
virtual method for derivated classes
Container of calibration values for a given number of channels.
Reconstructed regional Trigger object.
static AliMpDDLStore * Instance(Bool_t warn=true)
static Int_t GetChamberId(Int_t detElemId, Bool_t warn=true)
void SetY4Pattern(UShort_t pat)
Set Y strip pattern for chamber 22.
AliMUONGlobalTriggerBoard * fGlobalTriggerBoard
Global trigger board.
void SetId(Int_t d)
Set regional id.
void SetLoLpt(Int_t loLpt)
Set Low pt.
void SetNoHitInPlane(Int_t icath, Int_t ich)
Trigger algorithm did NOT find hit in the specified chamber and cathode.
Trigger board base class.
virtual void ResponseRemovingChambers(AliMUONVTriggerStore &triggerStore)
Int_t GetInputXto() const
Get Id to where the X input are copied.
void SetLoStripY(Int_t loStrY)
Set Y strip in MT11.
Reconstructed Local Trigger object.
virtual void Mask(Int_t index, UShort_t value)
Implementation of local trigger board objects.
virtual Int_t GetSdev() const
Return Sign of Deviation.
virtual TIterator * CreateTriggerIterator() const =0
Create an iterator to loop over trigger digits only.
AliMUONTriggerCrateConfig * FindTriggerCrate(TString crateName, Bool_t warn=true) const
AliMUONGlobalCrateConfig * GlobalTriggerCrateConfig() const
Get the configuration for the global trigger board.
virtual void GetXYD(UShort_t V[2][4]) const
Return XYD.
virtual UShort_t GetResponse() const
Return response.
virtual void Factory(AliMUONCalibrationData *calibData)
void SetX3Pattern(UShort_t pat)
Set X strip pattern for chamber 21.
(1) reset the LSB for special configuration of board RC2L5B4 & RC2L6B1
#define AliCodeTimerAuto(message, counter)
Definition: AliCodeTimer.h:137
UShort_t GetHitPatternFromResponse() const
Hit pattern from the re-calculated trigger response after removing chambers one-by-one.
AliMp::CathodType GetCathodType(Int_t cathodNumber)
Convert integer number in enum;.
virtual Int_t GetNumber() const
Return Board number.
AliMUONRegionalTriggerConfig * regionalConfig
Int_t GetLocalBoardId(Int_t i) const
Definition: AliMpPad.cxx:347
void SetX2Pattern(UShort_t pat)
Set X strip pattern for chamber 12.
virtual void Response()
virtual method for derivated classes
virtual Int_t ValueAsInt(Int_t i, Int_t j=0) const =0
#define AliFatal(message)
Definition: AliLog.h:640
AliMUONCalibrationData * calibData
void SetY2Pattern(UShort_t pat)
Set Y strip pattern for chamber 12.
#define AliDebug(logLevel, message)
Definition: AliLog.h:300
virtual void SetXYU(UShort_t V[2][4])
Set XYU.
Single entry point to access MUON calibration data.
virtual void Feed(UShort_t pattern[2][4])
void SetLoSdev(Int_t loSdev)
Set Sign of Deviation.
The abstract base class for the segmentation.
Bool_t IsTrigX() const
Trigger response X strips.
virtual Bool_t ModifiedLocalResponse(Int_t loCircuit, Bool_t &bendingPlaneResp, Bool_t &nonBendingPlaneResp, Bool_t isCoinc44=kFALSE, Int_t removeChamber=-1)
UChar_t GetTriggerWithoutChamber() const
Triggers from the re-calculated trigger response after removing chambers one-by-one.
Global trigger object.
ABC of a MUON digit.
Definition: AliMUONVDigit.h:18
Class which encapsuate all information about a pad.
Definition: AliMpPad.h:22
virtual Bool_t Add(TObject *object)
Add an object, if of the right type.
virtual TObjArray * Boards()
Return pointer to board objects.
void SetLoDev(Int_t loDev)
Set Deviation.
virtual void Clear(Option_t *opt="")=0
Clear ourselves (i.e. Reset)
void SetLoHpt(Int_t loHpt)
Set High pt.
#define AliError(message)
Definition: AliLog.h:591
virtual void SetRegionalResponse(UShort_t resp[16])
Set regional board responses.
virtual Int_t GetDev() const
Return Deviation.
virtual void Scan(const Option_t *option)
virtual void Digits2Trigger(const AliMUONVDigitStore &digitStore, AliMUONVTriggerStore &triggerStore)
AliMUONTriggerCrate * Crate(const char *crateName) const
void SetX4Pattern(UShort_t pat)
Set X strip pattern for chamber 22.
UInt_t * GetGlobalInput()
Global input 4 words (32bits) from regional responses.
AliMUONTriggerCrateStore * fCrates
Crate array.
Int_t GetLocalBoardChannel(Int_t i) const
Definition: AliMpPad.cxx:358
void SetY1Pattern(UShort_t pat)
Set Y strip pattern for chamber 11.
Int_t LoCircuit() const
Return Circuit number.
The class defines the properties of regional trigger crate.
void SetLoCircuit(Int_t loCir)
Set Circuit number.
void LoadMasks(AliMUONCalibrationData *calibData)
AliMUONGlobalTriggerBoard * fGlobalTriggerBoard
virtual void GetXYU(UShort_t V[2][4]) const
Return XYU.
AliMUONGlobalCrateConfig * globalConfig
UShort_t GetMask() const
Return mask.
void Mask(Int_t index, UInt_t mask)
Set mask for global input (from regional boards)