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