ROOT logo
#ifndef ALIMUONREJECTLIST_H
#define ALIMUONREJECTLIST_H

/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
* See cxx source for full Copyright notice                               */

// $Id$

/// \ingroup rec
/// \class AliMUONRejectList
/// \brief Object to hold the list of elements we want to reject
/// from the reconstruction
/// 
// Author Laurent Aphecetche

#ifndef ROOT_TObject
#  include "TObject.h"
#endif

class AliMUONVStore;

class AliMUONRejectList : public TObject
{
public:
  AliMUONRejectList(TRootIOCtor* ioCtor);
  AliMUONRejectList();
  AliMUONRejectList(const AliMUONRejectList& rl);
  AliMUONRejectList& operator=(const AliMUONRejectList& rl);
  virtual ~AliMUONRejectList();

  /// Clone this object
  virtual TObject* Clone(const char* /*name*/="") const { return new AliMUONRejectList(*this); }
  
  /// Whether or not all our probabilities are 0.0 or 1.0
  Bool_t IsBinary() const { return fIsBinary; }
  
  Float_t DetectionElementProbability(Int_t detElemId) const;
  Float_t BusPatchProbability(Int_t busPatchId) const;
  Float_t ManuProbability(Int_t detElemId, Int_t manuId) const;
  Float_t ChannelProbability(Int_t detElemId, Int_t manuId, Int_t manuChannel) const;
  
  void SetDetectionElementProbability(Int_t detElemId, Float_t proba=1.0);
  void SetBusPatchProbability(Int_t busPatchId, Float_t proba=1.0);
  void SetManuProbability(Int_t detElemId, Int_t manuId, Float_t proba=1.0);
  void SetChannelProbability(Int_t detElemId, Int_t manuId, Int_t manuChannel, Float_t proba=1.0);
  
  void SetPCBProbability(Int_t detElemId, Int_t pcbNumber, Float_t proba=1.0);
  void SetHVProbability(const char* dcsName, Float_t proba=1.0);
  
  void Print(Option_t* opt="") const;
  
private:
  void ZeroOrOne(Float_t proba);
  
private:
  
  Bool_t fIsBinary; ///< Whether or not we only store zeros and ones for probabilities  

  UInt_t fMaxNofDEs; ///< max number of detection elements (for allocation purposes)  
  UInt_t fMaxNofBPs; ///< max number of bus patches (for allocation purposes)
  UInt_t fMaxNofManus; ///< max number of manus (for allocation purposes)
  
  UInt_t fNofDEs; ///< actual number of detection elements for which we have probabilities
  UInt_t fNofBPs; ///< actual number of bus patches for which we have probabilities
  UInt_t fNofManus; ///< actual number of manus for which we have probabilities

  /// array of detection element ids
  UInt_t* fDEIds; //[fMaxNofDEs] 

  /// array of probabilities of DEs
  Float_t* fDEProbas; //[fMaxNofDEs] 

  /// array of bus patch ids
  UInt_t* fBPIds; //[fMaxNofBPs] 
  
  /// array of proba for bus patches
  Float_t* fBPProbas; //[fMaxNofBPs]

  /// array of manu ids
  UInt_t* fManuIds; //[fMaxNofManus]
  
  /// array of proba for manus
  Float_t* fManuProbas; //[fMaxNofManus]

  AliMUONVStore* fChannels; ///< probabilities for all channels
  
  ClassDef(AliMUONRejectList,1) // (probabilistic) Reject list for MUON Tracker
};

#endif
 AliMUONRejectList.h:1
 AliMUONRejectList.h:2
 AliMUONRejectList.h:3
 AliMUONRejectList.h:4
 AliMUONRejectList.h:5
 AliMUONRejectList.h:6
 AliMUONRejectList.h:7
 AliMUONRejectList.h:8
 AliMUONRejectList.h:9
 AliMUONRejectList.h:10
 AliMUONRejectList.h:11
 AliMUONRejectList.h:12
 AliMUONRejectList.h:13
 AliMUONRejectList.h:14
 AliMUONRejectList.h:15
 AliMUONRejectList.h:16
 AliMUONRejectList.h:17
 AliMUONRejectList.h:18
 AliMUONRejectList.h:19
 AliMUONRejectList.h:20
 AliMUONRejectList.h:21
 AliMUONRejectList.h:22
 AliMUONRejectList.h:23
 AliMUONRejectList.h:24
 AliMUONRejectList.h:25
 AliMUONRejectList.h:26
 AliMUONRejectList.h:27
 AliMUONRejectList.h:28
 AliMUONRejectList.h:29
 AliMUONRejectList.h:30
 AliMUONRejectList.h:31
 AliMUONRejectList.h:32
 AliMUONRejectList.h:33
 AliMUONRejectList.h:34
 AliMUONRejectList.h:35
 AliMUONRejectList.h:36
 AliMUONRejectList.h:37
 AliMUONRejectList.h:38
 AliMUONRejectList.h:39
 AliMUONRejectList.h:40
 AliMUONRejectList.h:41
 AliMUONRejectList.h:42
 AliMUONRejectList.h:43
 AliMUONRejectList.h:44
 AliMUONRejectList.h:45
 AliMUONRejectList.h:46
 AliMUONRejectList.h:47
 AliMUONRejectList.h:48
 AliMUONRejectList.h:49
 AliMUONRejectList.h:50
 AliMUONRejectList.h:51
 AliMUONRejectList.h:52
 AliMUONRejectList.h:53
 AliMUONRejectList.h:54
 AliMUONRejectList.h:55
 AliMUONRejectList.h:56
 AliMUONRejectList.h:57
 AliMUONRejectList.h:58
 AliMUONRejectList.h:59
 AliMUONRejectList.h:60
 AliMUONRejectList.h:61
 AliMUONRejectList.h:62
 AliMUONRejectList.h:63
 AliMUONRejectList.h:64
 AliMUONRejectList.h:65
 AliMUONRejectList.h:66
 AliMUONRejectList.h:67
 AliMUONRejectList.h:68
 AliMUONRejectList.h:69
 AliMUONRejectList.h:70
 AliMUONRejectList.h:71
 AliMUONRejectList.h:72
 AliMUONRejectList.h:73
 AliMUONRejectList.h:74
 AliMUONRejectList.h:75
 AliMUONRejectList.h:76
 AliMUONRejectList.h:77
 AliMUONRejectList.h:78
 AliMUONRejectList.h:79
 AliMUONRejectList.h:80
 AliMUONRejectList.h:81
 AliMUONRejectList.h:82
 AliMUONRejectList.h:83
 AliMUONRejectList.h:84
 AliMUONRejectList.h:85
 AliMUONRejectList.h:86
 AliMUONRejectList.h:87
 AliMUONRejectList.h:88
 AliMUONRejectList.h:89
 AliMUONRejectList.h:90