AliRoot Core  a565103 (a565103)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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  for ( Int_t i = 0; i < localBoardMasks->Size(); ++i )
372  {
373  UShort_t lmask = static_cast<UShort_t>(localBoardMasks->ValueAsInt(i) & 0xFFFF);
374  b->Mask(i,lmask);
375  }
376  }
377  }
378  ++irb;
379  }
380 
382  if (!globalConfig) {
383  AliError("No valid trigger crate configuration in CDB");
384  return;
385  }
386 
387  UInt_t gmask = 0;
388  for (Int_t i = 0; i < 4; i++) {
389  gmask = globalConfig->GetGlobalMask(i);
390  fGlobalTriggerBoard->Mask(i,gmask);
391  }
392 }
393 
394 //___________________________________________
396 {
398 
399  AliCodeTimerAuto("",0);
400 
402  TIter next(fCrates->CreateCrateIterator());
403 
404  UShort_t thisl[16];
405 
406  while ( ( cr = static_cast<AliMUONTriggerCrate*>(next()) ) )
407  {
408 
409  TObjArray *boards = cr->Boards();
410 
412 
413  for (Int_t j=0; j<16; ++j) thisl[j] = 0;
414 
415  for (Int_t j = 1; j < boards->GetEntries(); j++)
416  {
417  TObject *o = boards->At(j);
418 
419  if (!o) break;
420 
422 
423  board->Response();
424 
425  UShort_t response = board->GetResponse();
426 
427  // CRATE CONTAINING INTERFACE BOARD
428  if (!board->IsNotified()) // copy boards
429  {
430  if ( response != 0 )
431  AliWarning(Form("Interface board %s in slot %d of crate %s has a non zero response",
432  board->GetName(),j,cr->GetName()));
433  AliDebug(1, Form("local slot %d, number %d in crate %s\n", j, board->GetNumber(), cr->GetName()));
434 
435  }
436 
437  thisl[j-1] = response;
438  }
439 
440  regb->SetLocalResponse(thisl);
441  }
442 }
443 
444 //___________________________________________
446 {
448 
449  AliCodeTimerAuto("",0);
450 
452  TIter next(fCrates->CreateCrateIterator());
453 
454  while ( ( cr = static_cast<AliMUONTriggerCrate*>(next()) ) )
455  {
456  TObjArray *boards = cr->Boards();
457 
459 
460  regb->Response();
461 
462  }
463 }
464 
465 //___________________________________________
467 {
469 
470  AliCodeTimerAuto("",0);
471 
472  UShort_t regional[16];
473 
475  Int_t irb(0);
476 
477  if ( fCrates->NumberOfCrates() > 16 )
478  {
479  AliFatal(Form("Something is wrong : too many crates %d",
480  fCrates->NumberOfCrates()));
481  }
482 
483  // send regional responses to the global trigger in right order
484  // do not used iterator order
485 
486  for (Int_t iSide = 0; iSide < 2; iSide++) // right & left side
487  {
488  for (Int_t iReg = 0; iReg < 8; iReg++) // 8 crates/regional boards for each side.
489  {
490  cr = fCrates->Crate(iSide, iReg);
491 
492  AliMUONTriggerBoard* rb =
493  static_cast<AliMUONTriggerBoard*>(cr->Boards()->At(0));
494  regional[irb] = rb->GetResponse();
495  ++irb;
496  }
497  }
498 
501 }
502 
503 //_______________________________________________________________________
505  AliMUONVTriggerStore& triggerStore)
506 {
507  AliCodeTimerAuto("",0);
508 
510  AliMUONRegionalTrigger pRegTrig;
511 
512  triggerStore.Clear();
513 
514  // NOW RESET ELECTRONICS
515  Reset();
516 
517  // RUN THE FULL BEE CHAIN
518  Feed(digitStore);
519  LocalResponse();
520  RegionalResponse();
521  GlobalResponse();
522  // DumpOS();
523 
525  AliMUONLocalTrigger localTrigger;
526 
527  // stored in right order
528  // do not used iterator order
529 
530  for (Int_t iSide = 0; iSide < 2; iSide++) // right & left side
531  {
532  for (Int_t iReg = 0; iReg < 8; iReg++) // 8 crates/regional boards for each side.
533  {
534  cr = fCrates->Crate(iSide, iReg);
535  TObjArray *boards = cr->Boards();
536 
537  UInt_t regInpLpt = 0;
538  UInt_t regInpHpt = 0;
539 
540  AliMUONRegionalTriggerBoard *regBoard = (AliMUONRegionalTriggerBoard*)boards->At(0);
541 
542  for (Int_t j = 1; j < boards->GetEntries(); j++)
543  {
544  TObject *o = boards->At(j);
545 
546  if (!o) break;
547 
549 
550  if (board)
551  {
552  // L0 TRIGGER
553  // pcrochet 181206: MOOD needs ALL boards
554  // if (board->Triggered())
555  // {
556 
557  Int_t icirc = board->GetNumber();
558  localTrigger.SetLoCircuit(icirc);
559  localTrigger.SetLoStripX(board->GetStripX11());
560  localTrigger.SetLoDev(board->GetDev());
561  localTrigger.SetLoSdev(board->GetSdev());
562  localTrigger.SetLoTrigY(board->GetTrigY());
563  localTrigger.SetLoStripY(board->GetStripY11());
564 
565  // SAVE LUT OUTPUT
566  UShort_t response = board->GetResponse();
567  localTrigger.SetLoHpt((response & 12) >> 2);
568  localTrigger.SetLoLpt(response & 3);
569 
570  // calculates regional inputs from local for the moment
571  UInt_t hPt = (response >> 2) & 0x3;
572  UInt_t lPt = response & 0x3;
573 
574  regInpHpt |= hPt << (30 - (j-1)*2);
575  regInpLpt |= lPt << (30 - (j-1)*2);
576 
577  TBits rrr;
578  rrr.Set(6,&response);
579 
580  // SAVE BIT PATTERN
581  localTrigger.SetX1Pattern(board->GetXY(0,0));
582  localTrigger.SetX2Pattern(board->GetXY(0,1));
583  localTrigger.SetX3Pattern(board->GetXY(0,2));
584  localTrigger.SetX4Pattern(board->GetXY(0,3));
585 
586  localTrigger.SetY1Pattern(board->GetXY(1,0));
587  localTrigger.SetY2Pattern(board->GetXY(1,1));
588  localTrigger.SetY3Pattern(board->GetXY(1,2));
589  localTrigger.SetY4Pattern(board->GetXY(1,3));
590 
591  // ADD A NEW LOCAL TRIGGER
592  triggerStore.Add(localTrigger);
593 
594  }
595  }
596  pRegTrig.SetId(iReg + 8*iSide);
597  pRegTrig.SetLocalOutput(regInpLpt, 0);
598  pRegTrig.SetLocalOutput(regInpHpt, 1);
599  pRegTrig.SetOutput(regBoard->GetResponse());
600 
601  triggerStore.Add(pRegTrig);
602  }
603  }
604 
605  // GLOBAL TRIGGER INFORMATION
606  UShort_t global = fGlobalTriggerBoard->GetResponse();
607  UInt_t *globalInput = fGlobalTriggerBoard->GetGlobalInput();
608 
609  AliMUONGlobalTrigger globalTrigger;
610 
611  globalTrigger.SetFromGlobalResponse(global);
612  globalTrigger.SetFromGlobalInput(globalInput);
613  // ADD A LOCAL TRIGGER IN THE LIST
614  triggerStore.SetGlobal(globalTrigger);
615 
616 }
617 
618 //___________________________________________
620 {
621  //
623  //
624  AliMUONLocalTrigger* locTrg;
625  TIter next(triggerStore.CreateLocalIterator());
626  TArrayS xyPattern[2];
627  UShort_t xy[2][4];
628  Int_t loCircuit;
629  while ( ( locTrg = static_cast<AliMUONLocalTrigger*>( next() )) != NULL ){
630  locTrg->GetXPattern(xyPattern[0]);
631  locTrg->GetYPattern(xyPattern[1]);
632  loCircuit = locTrg->LoCircuit();
633  AliMUONLocalTriggerBoard* localBoard = fCrates->LocalBoard(loCircuit);
634  for (Int_t icath = 0; icath<2; ++icath){
635  for (Int_t ich = 0; ich < 4; ++ich){
636  xy[icath][ich] = xyPattern[icath][ich];
637  }
638  }
639  localBoard->SetXY(xy);
640  }
641 
643 }
644 
645 //_______________________________________________________________________
647  Bool_t& bendingPlaneResp,
648  Bool_t& nonBendingPlaneResp,
649  Bool_t isCoinc44,
650  Int_t removeChamber)
651 {
652  //
655  //
656 
657  bendingPlaneResp = kFALSE;
658  nonBendingPlaneResp = kFALSE;
659 
660  Bool_t isTriggered = kFALSE;
661 
662  AliMUONLocalTriggerBoard* currBoard = fCrates->LocalBoard(loCircuit);
663 
664  if ( ! currBoard ) return isTriggered;
665 
666  AliMUONLocalTriggerBoard localBoard (*currBoard);
667 
668  if (removeChamber>=0 && removeChamber<=3){
669 
670  // Set the bit pattern of selected chamber to 0
671  UShort_t xy[2][4];
672  UShort_t xyu[2][4];
673  UShort_t xyd[2][4];
674 
675  localBoard.GetXY(xy);
676  localBoard.GetXYU(xyu);
677  localBoard.GetXYD(xyd);
678 
679  for(Int_t icath=0; icath<2; icath++){
680  xy[icath][removeChamber] = 0;
681  xyu[icath][removeChamber] = 0;
682  xyd[icath][removeChamber] = 0;
683  }
684 
685  localBoard.SetXY(xy);
686  localBoard.SetXYU(xyu);
687  localBoard.SetXYD(xyd);
688  }
689 
690  localBoard.ResetResponse();
691 
692  localBoard.SetCoinc44((Int_t)isCoinc44);
693  localBoard.Response();
694 
695  bendingPlaneResp = localBoard.IsTrigX();
696  nonBendingPlaneResp = localBoard.IsTrigY();
697  isTriggered = localBoard.Triggered();
698 
699  return isTriggered;
700 }
701 
702 
703 //_______________________________________________________________________
705 {
707 
708  AliCodeTimerAuto("", 0);
709 
710  Reset();
711  Feed(triggerStore);
712 
713  AliMUONLocalTrigger* locTrg;
714  TIter next(triggerStore.CreateLocalIterator());
715  Int_t loCircuit;
716  Bool_t planeResp[2], isTrig44;
717  Bool_t bendPlaneRespNoCh, nonBendPlaneRespNoCh, isTrigWithoutCh;
718  while ( ( locTrg = static_cast<AliMUONLocalTrigger*>( next() )) != NULL ){
719  if ( ! ( locTrg->IsTrigX() && locTrg->IsTrigY() ) ) continue;
720  loCircuit = locTrg->LoCircuit();
721  isTrig44 = ModifiedLocalResponse(loCircuit, planeResp[0], planeResp[1], kTRUE);
722  for (Int_t ich=0; ich<4; ++ich){
723  if ( ! isTrig44 ){
724  isTrigWithoutCh = ModifiedLocalResponse(loCircuit, bendPlaneRespNoCh, nonBendPlaneRespNoCh, kFALSE, ich);
725  if ( ! isTrigWithoutCh ) continue;
726  for (Int_t icath=0; icath<2; icath++){
727  if ( ! planeResp[icath] )
728  locTrg->SetNoHitInPlane(icath, ich);
729  } // loop on cathodes
730  }
731  locTrg->SetTriggerWithoutChamber(ich);
732  } // loop on chambers
733  AliDebug(1, Form("Is44 %i triggers %i pattern %i", isTrig44, locTrg->GetTriggerWithoutChamber(), locTrg->GetHitPatternFromResponse()));
734  }
735 }
void GetYPattern(TArrayS &array) const
return Y pattern array
virtual void SetbitM(Int_t strip, Int_t cathode, Int_t chamber)
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.
(1) reset the LSB for special configuration of board RC2L5B4 & RC2L6B1
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.
virtual UShort_t GetSwitch(Int_t i) const
Return i-th Switch value.
virtual void SetXYD(UShort_t V[2][4])
Set XYD.
ClassImp(TPCGenInfo)
Definition: AliTPCCmpNG.C:254
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.
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
AliMUONCalibrationData * calibData
void SetY2Pattern(UShort_t pat)
Set Y strip pattern for chamber 12.
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.
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)