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/05/2004
10 #include <TClonesArray.h> // needed for inline function Digit
11 #include "AliMUONGeometrySegmentation.h"
16 class AliMUONRawCluster;
17 class AliMUONMathieson;
19 class AliMUONClusterInput : public TObject
22 virtual ~AliMUONClusterInput();
23 static AliMUONClusterInput* Instance();
25 void SetDigits(Int_t chamber, Int_t idDE, TClonesArray* dig1, TClonesArray* dig2);
26 void SetDigits(Int_t chamber, Int_t idDE, TClonesArray* dig);
27 void SetCluster(AliMUONRawCluster* cluster);
29 Int_t Chamber() const {return fChamber;}
30 AliMUONDigit* Digit(Int_t cath, Int_t i) const {return (AliMUONDigit*) (fDigits[cath]->UncheckedAt(i));}
31 TClonesArray* Digits(Int_t cath) const {return fDigits[cath];}
32 Int_t NDigits(Int_t cath) const {return fNDigits[cath];}
33 AliMUONGeometrySegmentation* Segmentation2(Int_t cath) const {return fSegmentation2[cath];}
35 AliMUONMathieson* Mathieson() const {return fgMathieson;}
36 Float_t ChargeCorrel() const {return fChargeCorrel;}
37 Int_t DetElemId() const {return fDetElemId;}
40 TMinuit* Fitter() const {return fgMinuit;}
41 // Current cluster information
42 Float_t TotalCharge(Int_t cath) const {return fChargeTot[cath];}
43 Float_t Charge(Int_t dig, Int_t cath) const {return fCharge[dig][cath];}
44 Int_t Ix(Int_t dig, Int_t cath) const {return fix[dig][cath];}
45 Int_t Iy(Int_t dig, Int_t cath) const {return fiy[dig][cath];}
46 Int_t Nmul(Int_t cath) const {return fNmul[cath];}
48 Float_t DiscrChargeS1(Int_t i,Double_t *par);
49 Float_t DiscrChargeCombiS1(Int_t i,Double_t *par, Int_t cath);
50 Float_t DiscrChargeS2(Int_t i,Double_t *par);
51 Float_t DiscrChargeCombiS2(Int_t i,Double_t *par, Int_t cath);
54 AliMUONClusterInput();
55 AliMUONClusterInput(const AliMUONClusterInput& clusterInput);
56 AliMUONClusterInput & operator = (const AliMUONClusterInput& rhs);
58 static AliMUONClusterInput* fgClusterInput; // ! singleton instance
59 static AliMUONMathieson* fgMathieson; // ! Mathieson
62 TClonesArray* fDigits[2]; // ! Array of pointers to digits
63 Int_t fNDigits[2]; // ! Number of digits
64 AliMUONGeometrySegmentation* fSegmentation2[2]; // ! Geometry Segmentation per cathode
66 Int_t fNseg; // ! number of cathode planes
67 Int_t fChamber; // ! Current chamber number
70 AliMUONRawCluster* fCluster; // ! current cluster
71 Int_t fNmul[2]; // ! current cluster multiplicity
72 // Digits contribuing to current cluster
73 Int_t fix[500][2]; // ! List of x-positions for current cluster
74 Int_t fiy[500][2]; // ! List of y-positions for current cluster
75 Float_t fCharge[500][2]; // ! List of charges for current cluster
76 Int_t fChargeTot[2]; // ! Total charge
77 Float_t fQtot[2]; // ! Total charge
78 Float_t fZ; // ! Current z-position
79 Float_t fChargeCorrel; // ! charge correlation
80 Int_t fDetElemId; // ! detection elt id
83 static TMinuit* fgMinuit; // ! Fitter
84 ClassDef(AliMUONClusterInput, 0) // Global data service for hit reconstruction