]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONPadStatusMapMaker.cxx
ALIROOT-5420 Changes for CDH v3
[u/mrichter/AliRoot.git] / MUON / AliMUONPadStatusMapMaker.cxx
index 52132567d41c3c851636af84efd38476ffe4fb18..73469f7f65fe195fd8473a99b3795b71113f59e8 100644 (file)
@@ -89,12 +89,13 @@ fkStatusMaker(padStatusMaker),
 fMask(mask),
 fStatusMap(new AliMUON2DMap(true)),
 fRejectProbabilities(new AliMUON2DMap(true)),
-fRejectList(0x0)
+fRejectList(0x0),
+fComputeOnDemand(deferredInitialization)
 {
   /// ctor
   if (!deferredInitialization)
   {
-    AliCodeTimerAuto("Computing complete status map at once");
+    AliCodeTimerAuto("Computing complete status map at once",0);
     AliMUONVStore* neighboursStore = padStatusMaker.NeighboursStore();
     AliMUONVCalibParam* param;
     TIter next(neighboursStore->CreateIterator());
@@ -194,7 +195,7 @@ AliMUONPadStatusMapMaker::ComputeStatusMap(Int_t detElemId, Int_t manuId) const
   /// Compute the status map for a given manu, and add it to our internal
   /// fStatusMap internal storage
   
-  AliCodeTimerAuto("(Int_t,Int_t)")
+  AliCodeTimerAuto("(Int_t,Int_t)",0)
     
   AliMUONVCalibParam* param = new AliMUONCalibParamNI(1,AliMpConstants::ManuNofChannels(),
                                                       detElemId,manuId,-1);    
@@ -241,7 +242,7 @@ AliMUONPadStatusMapMaker::ComputeStatusMap(Int_t detElemId, Int_t manuId) const
       {
         status = statusParam->ValueAsIntFast(c); //fkStatusMaker.PadStatus(detElemId,m,c);
       }
-      if ( ( fMask==0 && status !=0 ) || ( (status & fMask) != 0 ) )
+      if ( ( fMask != 0 ) && ( (status & fMask) != 0 ) )
       {
         statusMap |= (1<<i);
       }
@@ -263,7 +264,7 @@ AliMUONPadStatusMapMaker::RefreshRejectProbabilities()
   
   if ( !fRejectProbabilities ) return;
   
-  AliCodeTimerAuto("");
+  AliCodeTimerAuto("",0);
   
   fRejectList->Clear();
   
@@ -309,8 +310,16 @@ AliMUONPadStatusMapMaker::StatusMap(Int_t detElemId, Int_t manuId,
   AliMUONVCalibParam* param = static_cast<AliMUONVCalibParam*>(fStatusMap->FindObject(detElemId,manuId));
   if (!param)
   {
-    // not yet computed, so do it now
-    param = ComputeStatusMap(detElemId,manuId);
+    if ( fComputeOnDemand ) 
+    {
+      // not yet computed, so do it now
+      param = ComputeStatusMap(detElemId,manuId);
+    }
+    else
+    {
+      // we're locked. probably a bad manuId ?
+      return fgkSelfDead;
+    }
   }
   
   Int_t statusMap = param->ValueAsInt(manuChannel);