]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONTriggerElectronics.cxx
In QA:
[u/mrichter/AliRoot.git] / MUON / AliMUONTriggerElectronics.cxx
index eff5ec424738c5a644499bd1a424bc4ac58d36ee..88dcaf2ad4e9b3bb0ac911cc29e77346d1b04d5a 100644 (file)
@@ -195,15 +195,13 @@ void AliMUONTriggerElectronics::Feed(const AliMUONVDigitStore& digitStore)
       
       AliDebug(3,Form("cathode %d ix %d iy %d ",cathode,ix,iy));
 
-      AliMpPad pad = seg->PadByIndices(AliMpIntPair(ix,iy),kTRUE);
+      AliMpPad pad = seg->PadByIndices(ix,iy,kTRUE);
       
       for (Int_t i=0; i<pad.GetNofLocations(); i++) 
       {
-        AliMpIntPair location = pad.GetLocation(i);
+        Int_t nboard = pad.GetLocalBoardId(i);
         
-        Int_t nboard = location.GetFirst();
-        
-        Int_t ibitxy = location.GetSecond();
+        Int_t ibitxy = pad.GetLocalBoardChannel(i);
         
         AliMUONLocalTriggerBoard *b = fCrates->LocalBoard(nboard);
         
@@ -275,10 +273,9 @@ void AliMUONTriggerElectronics::Feed(const AliMUONVDigitStore& digitStore)
   
   // FILL UP/DOWN OF CURRENT BOARD (DONE VIA J3 BUS IN REAL LIFE)
   AliMUONTriggerCrate* cr;
+  TIter next2(fCrates->CreateCrateIterator());
   
-  fCrates->FirstCrate();
-  
-  while ( ( cr = fCrates->NextCrate() ) )
+  while ( ( cr = static_cast<AliMUONTriggerCrate*>(next2()) ) )
   {            
     TObjArray *boards = cr->Boards();
     
@@ -318,10 +315,9 @@ void AliMUONTriggerElectronics::Feed(UShort_t pattern[2][4])
   /// FILL INPUTS
   ///
   AliMUONTriggerCrate* cr;
+  TIter next(fCrates->CreateCrateIterator());
    
-   fCrates->FirstCrate();
-   
-   while ( ( cr = fCrates->NextCrate() ) )
+   while ( ( cr = static_cast<AliMUONTriggerCrate*>(next()) ) )
    {                 
      TObjArray *boards = cr->Boards();
      
@@ -358,10 +354,9 @@ void AliMUONTriggerElectronics::Scan(Option_t *option)
   ///
 
   AliMUONTriggerCrate* cr;
+  TIter next(fCrates->CreateCrateIterator());  
   
-  fCrates->FirstCrate();
-  
-  while ( ( cr = fCrates->NextCrate() ) )
+  while ( ( cr = static_cast<AliMUONTriggerCrate*>(next()) ) )
   {                
     TObjArray *boards = cr->Boards();
     
@@ -393,10 +388,8 @@ void AliMUONTriggerElectronics::Reset()
   ///
   
    AliMUONTriggerCrate* cr;
-   
-   fCrates->FirstCrate();
-   
-   while ( ( cr = fCrates->NextCrate() ) )
+  TIter next(fCrates->CreateCrateIterator());
+   while ( ( cr = static_cast<AliMUONTriggerCrate*>(next()) ) )
    {            
       TObjArray *boards = cr->Boards();
             
@@ -423,12 +416,11 @@ void AliMUONTriggerElectronics::LoadMasks(AliMUONCalibrationData* calibData)
 
   
   AliMUONTriggerCrate* cr;
-  
-  fCrates->FirstCrate();
+  TIter next(fCrates->CreateCrateIterator());
   
   Int_t irb(0);
   
-  while ( ( cr = fCrates->NextCrate() ) )
+  while ( ( cr = static_cast<AliMUONTriggerCrate*>(next()) ) )
   {            
     TObjArray *boards = cr->Boards();
     
@@ -469,12 +461,11 @@ void AliMUONTriggerElectronics::LoadMasks(AliMUONCalibrationData* calibData)
   if (!globalConfig)
      AliWarning("No valid trigger crate configuration in CDB");
 
-    UShort_t gmask = 0;
-    gmask = globalConfig->GetFirstDarcDisable();
-    fGlobalTriggerBoard->Mask(0,gmask);
-
-    gmask = globalConfig->GetSecondDarcDisable();
-    fGlobalTriggerBoard->Mask(1,gmask);
+    UInt_t gmask = 0;
+    for (Int_t i = 0; i < 4; i++) {
+      gmask = globalConfig->GetGlobalMask(i);
+      fGlobalTriggerBoard->Mask(i,gmask);
+    }
 }
 
 //___________________________________________
@@ -483,10 +474,9 @@ void AliMUONTriggerElectronics::LocalResponse()
 /// Compute the response for local cards
        
   AliMUONTriggerCrate* cr;
+  TIter next(fCrates->CreateCrateIterator());
   
-  fCrates->FirstCrate();
-  
-  while ( ( cr = fCrates->NextCrate() ) )
+  while ( ( cr = static_cast<AliMUONTriggerCrate*>(next()) ) )
   {            
     
     TObjArray *boards = cr->Boards();
@@ -532,10 +522,9 @@ void AliMUONTriggerElectronics::RegionalResponse()
 {
   /// Compute the response for all regional cards.
   AliMUONTriggerCrate* cr;
+  TIter next(fCrates->CreateCrateIterator());
   
-  fCrates->FirstCrate();
-  
-  while ( ( cr = fCrates->NextCrate() ) )
+  while ( ( cr = static_cast<AliMUONTriggerCrate*>(next()) ) )
   {            
       TObjArray *boards = cr->Boards();
 
@@ -556,8 +545,6 @@ void AliMUONTriggerElectronics::GlobalResponse()
   UShort_t regional[16];
   
   AliMUONTriggerCrate* cr;
-  
-  fCrates->FirstCrate();
   Int_t irb(0);
   
   if ( !fCrates->NumberOfCrates() >= 16 ) 
@@ -565,15 +552,23 @@ void AliMUONTriggerElectronics::GlobalResponse()
     AliFatal(Form("Something is wrong : too many crates %d",
                   fCrates->NumberOfCrates()));
   }
+
+  // send regional responses to the global trigger in right order
+  // do not used iterator order
   
-  while ( ( cr = fCrates->NextCrate() ) )
+  for (Int_t iSide = 0; iSide < 2; iSide++) // right & left side
   {            
-    AliMUONTriggerBoard* rb = 
-      static_cast<AliMUONTriggerBoard*>(cr->Boards()->At(0));
-    regional[irb] = rb->GetResponse();
-    ++irb;
+    for (Int_t iReg = 0; iReg < 8; iReg++) // 8 crates/regional boards for each side.
+    {
+      cr = fCrates->Crate(iSide, iReg);     
+
+      AliMUONTriggerBoard* rb = 
+       static_cast<AliMUONTriggerBoard*>(cr->Boards()->At(0));
+      regional[irb] = rb->GetResponse();
+      ++irb;
+    }
   }
-  
+
   fGlobalTriggerBoard->SetRegionalResponse(regional);
   fGlobalTriggerBoard->Response();
 }
@@ -680,10 +675,12 @@ void AliMUONTriggerElectronics::Digits2Trigger(const AliMUONVDigitStore& digitSt
   
   // GLOBAL TRIGGER INFORMATION
   UShort_t global = fGlobalTriggerBoard->GetResponse();
-  
+  UInt_t *globalInput = fGlobalTriggerBoard->GetGlobalInput();  
+
   AliMUONGlobalTrigger globalTrigger;
   
   globalTrigger.SetFromGlobalResponse(global);
+  globalTrigger.SetFromGlobalInput(globalInput);
   // ADD A LOCAL TRIGGER IN THE LIST 
   triggerStore.SetGlobal(globalTrigger);