Calculation of bad crystals Ids
authorpolicheh <policheh@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 11 Apr 2007 11:52:38 +0000 (11:52 +0000)
committerpolicheh <policheh@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 11 Apr 2007 11:52:38 +0000 (11:52 +0000)
PHOS/AliPHOSEmcBadChannelsMap.cxx
PHOS/AliPHOSEmcBadChannelsMap.h

index bf3a608..bec694a 100644 (file)
@@ -22,6 +22,7 @@
 ///////////////////////////////////////////////////////////////////////////////
  
 #include "AliPHOSEmcBadChannelsMap.h"
+#include "AliPHOSGeometry.h"
  
 ClassImp(AliPHOSEmcBadChannelsMap)
  
@@ -77,3 +78,41 @@ AliPHOSEmcBadChannelsMap& AliPHOSEmcBadChannelsMap::operator= (const AliPHOSEmcB
 
   return *this;
 }
+
+//_________________________________________________________________
+
+void AliPHOSEmcBadChannelsMap::BadChannelIds(Int_t *badIds)
+{
+  //Fill array badIds by the Ids of bad channels.
+  //Array badIds of length GetNumOfBadChannels() should be prepared in advance. 
+
+  if(!badIds) return;
+  if(!fBads>0) return;
+
+  AliPHOSGeometry* geom = AliPHOSGeometry::GetInstance();
+
+  if(!geom)
+    geom = AliPHOSGeometry::GetInstance("IHEP");
+
+  Int_t absId;
+  Int_t relId[4];
+
+  Int_t iBad = 0;
+  relId[1] =  0; // EMC crystal
+
+  for(Int_t mod=1; mod<6; mod++) { 
+    for(Int_t col=1; col<57; col++) { 
+      for(Int_t row=1; row<65; row++) {
+       if(IsBadChannel(mod,col,row)) {
+         relId[0] = mod;
+         relId[3] = col;
+         relId[2] = row;
+         geom->RelToAbsNumbering(relId,absId);
+         badIds[iBad]=absId;
+         iBad++;
+       }
+      }
+    }
+  }
+
+}
index ce96a82..0e82cd6 100644 (file)
@@ -22,6 +22,7 @@ public:
   void SetBadChannel(Int_t module, Int_t col, Int_t row) { fBadChannelEmc[module-1][col-1][row-1] = kTRUE; ++fBads; }
   Bool_t IsBadChannel(Int_t module, Int_t col, Int_t row) const { return fBadChannelEmc[module-1][col-1][row-1]; }
   Int_t GetNumOfBadChannels() const {  return fBads; }
+  void BadChannelIds(Int_t *badIds=0);
   void Reset();
 
 private:
@@ -29,7 +30,7 @@ private:
   Bool_t fBadChannelEmc[5][56][64]; //[mod][col][row]
   Int_t fBads;
 
-  ClassDef(AliPHOSEmcBadChannelsMap,1)
+  ClassDef(AliPHOSEmcBadChannelsMap,2)
 
 };