]>
Commit | Line | Data |
---|---|---|
1 | #ifndef ALIMUONCLUSTERINPUT_H | |
2 | #define ALIMUONCLUSTERINPUT_H | |
3 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
4 | * See cxx source for full Copyright notice */ | |
5 | ||
6 | /* $Id $*/ | |
7 | // Revision of includes 07/04/2006 | |
8 | ||
9 | /// \ingroup rec | |
10 | /// \class AliMUONClusterInput | |
11 | /// \brief Global data service for hit reconstruction | |
12 | ||
13 | #include <TObject.h> | |
14 | #include <TClonesArray.h> // needed for inline function Digit | |
15 | ||
16 | class AliMUONDigit; | |
17 | class AliMUONRawCluster; | |
18 | class AliMUONMathieson; | |
19 | class AliMUONGeometryTransformer; | |
20 | class AliMUONSegmentation; | |
21 | class AliMUONGeometrySegmentation; | |
22 | ||
23 | class TMinuit; | |
24 | ||
25 | class AliMUONClusterInput : public TObject | |
26 | { | |
27 | public: | |
28 | virtual ~AliMUONClusterInput(); | |
29 | static AliMUONClusterInput* Instance(); | |
30 | // Configuration | |
31 | void SetDigits(Int_t chamber, Int_t idDE, TClonesArray* dig1, TClonesArray* dig2); | |
32 | void SetDigits(Int_t chamber, Int_t idDE, TClonesArray* dig); | |
33 | void SetCluster(AliMUONRawCluster* cluster); | |
34 | // Access functions | |
35 | /// Return the current chamber number | |
36 | Int_t Chamber() const {return fChamber;} | |
37 | /// Return i-th digit for given cath | |
38 | AliMUONDigit* Digit(Int_t cath, Int_t i) const {return (AliMUONDigit*) (fDigits[cath]->UncheckedAt(i));} | |
39 | /// Return the array of digits for given cathod | |
40 | TClonesArray* Digits(Int_t cath) const {return fDigits[cath];} | |
41 | /// Return number of digits for given cathod | |
42 | Int_t NDigits(Int_t cath) const {return fNDigits[cath];} | |
43 | /// Return geometry segmentation for given cathod | |
44 | AliMUONGeometrySegmentation* Segmentation2(Int_t cath) const {return fSegmentation2[cath];} | |
45 | ||
46 | /// Return Mathieson | |
47 | AliMUONMathieson* Mathieson() const {return fgMathieson;} | |
48 | /// Return charge correlation | |
49 | Float_t ChargeCorrel() const {return fChargeCorrel;} | |
50 | /// Return detection elt id | |
51 | Int_t DetElemId() const {return fDetElemId;} | |
52 | ||
53 | // Fitting | |
54 | /// Return the fitter | |
55 | TMinuit* Fitter() const {return fgMinuit;} | |
56 | // Current cluster information | |
57 | /// Return the total charge for given cathod | |
58 | Float_t TotalCharge(Int_t cath) const {return fChargeTot[cath];} | |
59 | /// Return the charge for the given cluster and cathod | |
60 | Float_t Charge(Int_t dig, Int_t cath) const {return fCharge[dig][cath];} | |
61 | /// Return the x-position for the given cluster and cathod | |
62 | Int_t Ix(Int_t dig, Int_t cath) const {return fix[dig][cath];} | |
63 | /// Return the y-position for the given cluster and cathod | |
64 | Int_t Iy(Int_t dig, Int_t cath) const {return fiy[dig][cath];} | |
65 | /// Return the cluster multiplicity for given cathod | |
66 | Int_t Nmul(Int_t cath) const {return fNmul[cath];} | |
67 | ||
68 | // Helpers for Fit | |
69 | Float_t DiscrChargeS1(Int_t i,Double_t *par); | |
70 | Float_t DiscrChargeCombiS1(Int_t i,Double_t *par, Int_t cath); | |
71 | Float_t DiscrChargeS2(Int_t i,Double_t *par); | |
72 | Float_t DiscrChargeCombiS2(Int_t i,Double_t *par, Int_t cath); | |
73 | // | |
74 | private: | |
75 | /// Not implemented | |
76 | AliMUONClusterInput(); | |
77 | /// Not implemented | |
78 | AliMUONClusterInput(const AliMUONClusterInput& clusterInput); | |
79 | /// Not implemented | |
80 | AliMUONClusterInput & operator = (const AliMUONClusterInput& rhs); | |
81 | ||
82 | static AliMUONClusterInput* fgClusterInput; //!< singleton instance | |
83 | static AliMUONMathieson* fgMathieson; //!< Mathieson | |
84 | static AliMUONGeometryTransformer* fgTransformer; //!< Geometry transformer | |
85 | static AliMUONSegmentation* fgSegmentation; //!< Segmentation | |
86 | ||
87 | // Digits | |
88 | TClonesArray* fDigits[2]; //!< Array of pointers to digits | |
89 | Int_t fNDigits[2]; //!< Number of digits | |
90 | AliMUONGeometrySegmentation* fSegmentation2[2]; //!< Geometry Segmentation per cathode | |
91 | ||
92 | Int_t fNseg; //!< number of cathode planes | |
93 | Int_t fChamber; //!< Current chamber number | |
94 | ||
95 | // Current cluster | |
96 | AliMUONRawCluster* fCluster; //!< current cluster | |
97 | Int_t fNmul[2]; //!< current cluster multiplicity | |
98 | // Digits contribuing to current cluster | |
99 | Int_t fix[500][2]; //!< List of x-positions for current cluster | |
100 | Int_t fiy[500][2]; //!< List of y-positions for current cluster | |
101 | Float_t fCharge[500][2]; //!< List of charges for current cluster | |
102 | Int_t fChargeTot[2]; //!< Total charge | |
103 | Float_t fQtot[2]; //!< Total charge | |
104 | Float_t fZ; //!< Current z-position | |
105 | Float_t fChargeCorrel; //!< charge correlation | |
106 | Int_t fDetElemId; //!< detection elt id | |
107 | ||
108 | // Fitter | |
109 | static TMinuit* fgMinuit; //!< Fitter | |
110 | ClassDef(AliMUONClusterInput, 0) // Global data service for hit reconstruction | |
111 | }; | |
112 | #endif | |
113 |