ROOT logo
#ifndef ALIITSCHANNELSTATUS_H
#define ALIITSCHANNELSTATUS_H
/* Copyright(c) 2007-2009, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/* $Id$ */

/////////////////////////////////////////////////////////////////////
//                                                                 //
// Class  for bad channel treatment in the tracker                 //
// Stores 1 status bit for each SPD pixel and SDD anode:           //
//  0 = bad channel                                                //
//  1 = good channel                                               //
// Dead and noisy channels are read from AliITSCalibration objects //
// Origin: F.Prino, Torino, prino@to.infn.it                       //
//                                                                 //
/////////////////////////////////////////////////////////////////////

#include <TObject.h>
#include <TBits.h>

class TString;
class AliCDBManager;
class AliITSDetTypeRec;

class AliITSChannelStatus : public TObject {

 public:
  AliITSChannelStatus();
  AliITSChannelStatus(TString config);
  AliITSChannelStatus(AliCDBManager *cdb);
  AliITSChannelStatus(const AliITSDetTypeRec *dtrec);
  AliITSChannelStatus(const AliITSChannelStatus& cstatus);
  AliITSChannelStatus& operator=(const AliITSChannelStatus& cstatus);
  virtual ~AliITSChannelStatus();

  void SetChannelStatus(Bool_t cstatus, Int_t imod, Int_t iz, Int_t ix=0);

  Bool_t GetChannelStatus(Int_t imod, Int_t iz, Int_t ix=0) const;

  Bool_t AnyBadInRoad(Int_t imod, Float_t zlocmin, Float_t zlocmax, Float_t xlocmin, Float_t xlocmax) const;
  Float_t FractionOfBadInRoad(Int_t imod, Float_t zlocmin, Float_t zlocmax, Float_t xlocmin, Float_t xlocmax) const;

  Int_t GetNSPDChannels()const {return fSPDChannelStatus->GetNbits();}
  Int_t GetNSDDChannels()const {return fSDDChannelStatus->GetNbits();}
  Int_t GetNSSDChannels()const {return fSSDChannelStatus->GetNbits();}
  
 protected:
  void CreateArrays();
  void InitDefaults();
  void InitFromOCDB(const TObjArray* deadArrSPD, const TObjArray* /* deadSparseArrSPD */, const TObjArray* noisArrSPD, const TObjArray* calArrSDD, const TObjArray* noisArrSSD);
  Bool_t CheckBounds(Int_t imod, Int_t iz, Int_t ix=0) const;
  Bool_t GetSPDLimits(Float_t zlocmin, Float_t zlocmax, Float_t xlocmin, Float_t xlocmax, Int_t& izmin, Int_t& izmax, Int_t& ixmin, Int_t& ixmax)  const;
  Bool_t GetSDDLimits(Float_t zlocmin, Float_t zlocmax, Float_t xlocmin, Float_t xlocmax, Int_t& izmin, Int_t& izmax, Int_t& izmin2, Int_t& izmax2) const;
  Bool_t GetSSDLimits(Int_t layer, Float_t zlocmin, Float_t zlocmax, Float_t xlocmin, Float_t xlocmax, Int_t& iPmin, Int_t& iPmax, Int_t& iNmin, Int_t& iNmax) const;
  enum {kSPDModules=240};
  enum {kSPDNpzPerModule=160};
  enum {kSPDNpxPerModule=256};
  enum {kSDDModules=260};
  enum {kSDDAnodesPerModule=512};
  enum {kSSDFirstModule=500};
  enum {kSSDMaxModLay5=1247};
  enum {kSSDModules=1698};
  enum {kSSDStripsPerModule=1536};
  enum {kSSDStripsPerSide=768};

  TBits *fSPDChannelStatus;  // bit map with status of SPD channels
  TBits *fSDDChannelStatus;  // bit map with status of SDD channels
  TBits *fSSDChannelStatus;  // bit map with status of SSD channels

  ClassDef(AliITSChannelStatus,2);
};
#endif

 AliITSChannelStatus.h:1
 AliITSChannelStatus.h:2
 AliITSChannelStatus.h:3
 AliITSChannelStatus.h:4
 AliITSChannelStatus.h:5
 AliITSChannelStatus.h:6
 AliITSChannelStatus.h:7
 AliITSChannelStatus.h:8
 AliITSChannelStatus.h:9
 AliITSChannelStatus.h:10
 AliITSChannelStatus.h:11
 AliITSChannelStatus.h:12
 AliITSChannelStatus.h:13
 AliITSChannelStatus.h:14
 AliITSChannelStatus.h:15
 AliITSChannelStatus.h:16
 AliITSChannelStatus.h:17
 AliITSChannelStatus.h:18
 AliITSChannelStatus.h:19
 AliITSChannelStatus.h:20
 AliITSChannelStatus.h:21
 AliITSChannelStatus.h:22
 AliITSChannelStatus.h:23
 AliITSChannelStatus.h:24
 AliITSChannelStatus.h:25
 AliITSChannelStatus.h:26
 AliITSChannelStatus.h:27
 AliITSChannelStatus.h:28
 AliITSChannelStatus.h:29
 AliITSChannelStatus.h:30
 AliITSChannelStatus.h:31
 AliITSChannelStatus.h:32
 AliITSChannelStatus.h:33
 AliITSChannelStatus.h:34
 AliITSChannelStatus.h:35
 AliITSChannelStatus.h:36
 AliITSChannelStatus.h:37
 AliITSChannelStatus.h:38
 AliITSChannelStatus.h:39
 AliITSChannelStatus.h:40
 AliITSChannelStatus.h:41
 AliITSChannelStatus.h:42
 AliITSChannelStatus.h:43
 AliITSChannelStatus.h:44
 AliITSChannelStatus.h:45
 AliITSChannelStatus.h:46
 AliITSChannelStatus.h:47
 AliITSChannelStatus.h:48
 AliITSChannelStatus.h:49
 AliITSChannelStatus.h:50
 AliITSChannelStatus.h:51
 AliITSChannelStatus.h:52
 AliITSChannelStatus.h:53
 AliITSChannelStatus.h:54
 AliITSChannelStatus.h:55
 AliITSChannelStatus.h:56
 AliITSChannelStatus.h:57
 AliITSChannelStatus.h:58
 AliITSChannelStatus.h:59
 AliITSChannelStatus.h:60
 AliITSChannelStatus.h:61
 AliITSChannelStatus.h:62
 AliITSChannelStatus.h:63
 AliITSChannelStatus.h:64
 AliITSChannelStatus.h:65
 AliITSChannelStatus.h:66
 AliITSChannelStatus.h:67
 AliITSChannelStatus.h:68
 AliITSChannelStatus.h:69
 AliITSChannelStatus.h:70
 AliITSChannelStatus.h:71
 AliITSChannelStatus.h:72
 AliITSChannelStatus.h:73
 AliITSChannelStatus.h:74