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 */
7 // Revision of includes 07/04/2006
10 /// \class AliMUONClusterInput
11 /// \brief Global data service for hit reconstruction
14 #include <TClonesArray.h> // needed for inline function Digit
17 class AliMUONRawCluster;
18 class AliMUONMathieson;
19 class AliMUONGeometryTransformer;
20 class AliMUONSegmentation;
21 class AliMUONGeometrySegmentation;
25 class AliMUONClusterInput : public TObject
28 virtual ~AliMUONClusterInput();
29 static AliMUONClusterInput* Instance();
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);
35 Int_t Chamber() const {return fChamber;}
36 AliMUONDigit* Digit(Int_t cath, Int_t i) const {return (AliMUONDigit*) (fDigits[cath]->UncheckedAt(i));}
37 TClonesArray* Digits(Int_t cath) const {return fDigits[cath];}
38 Int_t NDigits(Int_t cath) const {return fNDigits[cath];}
39 AliMUONGeometrySegmentation* Segmentation2(Int_t cath) const {return fSegmentation2[cath];}
41 AliMUONMathieson* Mathieson() const {return fgMathieson;}
42 Float_t ChargeCorrel() const {return fChargeCorrel;}
43 Int_t DetElemId() const {return fDetElemId;}
46 TMinuit* Fitter() const {return fgMinuit;}
47 // Current cluster information
48 Float_t TotalCharge(Int_t cath) const {return fChargeTot[cath];}
49 Float_t Charge(Int_t dig, Int_t cath) const {return fCharge[dig][cath];}
50 Int_t Ix(Int_t dig, Int_t cath) const {return fix[dig][cath];}
51 Int_t Iy(Int_t dig, Int_t cath) const {return fiy[dig][cath];}
52 Int_t Nmul(Int_t cath) const {return fNmul[cath];}
54 Float_t DiscrChargeS1(Int_t i,Double_t *par);
55 Float_t DiscrChargeCombiS1(Int_t i,Double_t *par, Int_t cath);
56 Float_t DiscrChargeS2(Int_t i,Double_t *par);
57 Float_t DiscrChargeCombiS2(Int_t i,Double_t *par, Int_t cath);
60 AliMUONClusterInput();
62 AliMUONClusterInput(const AliMUONClusterInput& clusterInput);
63 AliMUONClusterInput & operator = (const AliMUONClusterInput& rhs);
65 static AliMUONClusterInput* fgClusterInput; //!< singleton instance
66 static AliMUONMathieson* fgMathieson; //!< Mathieson
67 static AliMUONGeometryTransformer* fgTransformer; //!< Geometry transformer
68 static AliMUONSegmentation* fgSegmentation; //!< Segmentation
71 TClonesArray* fDigits[2]; //!< Array of pointers to digits
72 Int_t fNDigits[2]; //!< Number of digits
73 AliMUONGeometrySegmentation* fSegmentation2[2]; //!< Geometry Segmentation per cathode
75 Int_t fNseg; //!< number of cathode planes
76 Int_t fChamber; //!< Current chamber number
79 AliMUONRawCluster* fCluster; //!< current cluster
80 Int_t fNmul[2]; //!< current cluster multiplicity
81 // Digits contribuing to current cluster
82 Int_t fix[500][2]; //!< List of x-positions for current cluster
83 Int_t fiy[500][2]; //!< List of y-positions for current cluster
84 Float_t fCharge[500][2]; //!< List of charges for current cluster
85 Int_t fChargeTot[2]; //!< Total charge
86 Float_t fQtot[2]; //!< Total charge
87 Float_t fZ; //!< Current z-position
88 Float_t fChargeCorrel; //!< charge correlation
89 Int_t fDetElemId; //!< detection elt id
92 static TMinuit* fgMinuit; //!< Fitter
93 ClassDef(AliMUONClusterInput, 0) // Global data service for hit reconstruction