Line data Source code
1 : #ifndef ALIMUONREJECTLIST_H
2 : #define ALIMUONREJECTLIST_H
3 :
4 : /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 : * See cxx source for full Copyright notice */
6 :
7 : // $Id$
8 :
9 : /// \ingroup rec
10 : /// \class AliMUONRejectList
11 : /// \brief Object to hold the list of elements we want to reject
12 : /// from the reconstruction
13 : ///
14 : // Author Laurent Aphecetche
15 :
16 : #ifndef ROOT_TObject
17 : # include "TObject.h"
18 : #endif
19 :
20 : class AliMUONVStore;
21 :
22 : class AliMUONRejectList : public TObject
23 : {
24 : public:
25 : AliMUONRejectList(TRootIOCtor* ioCtor);
26 : AliMUONRejectList();
27 : AliMUONRejectList(const AliMUONRejectList& rl);
28 : AliMUONRejectList& operator=(const AliMUONRejectList& rl);
29 : virtual ~AliMUONRejectList();
30 :
31 : /// Clone this object
32 0 : virtual TObject* Clone(const char* /*name*/="") const { return new AliMUONRejectList(*this); }
33 :
34 : /// Whether or not all our probabilities are 0.0 or 1.0
35 4 : Bool_t IsBinary() const { return fIsBinary; }
36 :
37 : Float_t DetectionElementProbability(Int_t detElemId) const;
38 : Float_t BusPatchProbability(Int_t busPatchId) const;
39 : Float_t ManuProbability(Int_t detElemId, Int_t manuId) const;
40 : Float_t ChannelProbability(Int_t detElemId, Int_t manuId, Int_t manuChannel) const;
41 :
42 : void SetDetectionElementProbability(Int_t detElemId, Float_t proba=1.0);
43 : void SetBusPatchProbability(Int_t busPatchId, Float_t proba=1.0);
44 : void SetManuProbability(Int_t detElemId, Int_t manuId, Float_t proba=1.0);
45 : void SetChannelProbability(Int_t detElemId, Int_t manuId, Int_t manuChannel, Float_t proba=1.0);
46 :
47 : void SetPCBProbability(Int_t detElemId, Int_t pcbNumber, Float_t proba=1.0);
48 : void SetHVProbability(const char* dcsName, Float_t proba=1.0);
49 :
50 : void Print(Option_t* opt="") const;
51 :
52 : private:
53 : void ZeroOrOne(Float_t proba);
54 :
55 : private:
56 :
57 : Bool_t fIsBinary; ///< Whether or not we only store zeros and ones for probabilities
58 :
59 : UInt_t fMaxNofDEs; ///< max number of detection elements (for allocation purposes)
60 : UInt_t fMaxNofBPs; ///< max number of bus patches (for allocation purposes)
61 : UInt_t fMaxNofManus; ///< max number of manus (for allocation purposes)
62 :
63 : UInt_t fNofDEs; ///< actual number of detection elements for which we have probabilities
64 : UInt_t fNofBPs; ///< actual number of bus patches for which we have probabilities
65 : UInt_t fNofManus; ///< actual number of manus for which we have probabilities
66 :
67 : /// array of detection element ids
68 : UInt_t* fDEIds; //[fMaxNofDEs]
69 :
70 : /// array of probabilities of DEs
71 : Float_t* fDEProbas; //[fMaxNofDEs]
72 :
73 : /// array of bus patch ids
74 : UInt_t* fBPIds; //[fMaxNofBPs]
75 :
76 : /// array of proba for bus patches
77 : Float_t* fBPProbas; //[fMaxNofBPs]
78 :
79 : /// array of manu ids
80 : UInt_t* fManuIds; //[fMaxNofManus]
81 :
82 : /// array of proba for manus
83 : Float_t* fManuProbas; //[fMaxNofManus]
84 :
85 : AliMUONVStore* fChannels; ///< probabilities for all channels
86 :
87 34 : ClassDef(AliMUONRejectList,1) // (probabilistic) Reject list for MUON Tracker
88 : };
89 :
90 : #endif
|