]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/AliMUONClusterInput.h
Update raw2digits framework (Ch.Finck)
[u/mrichter/AliRoot.git] / MUON / AliMUONClusterInput.h
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/05/2004
8
9 #include <TObject.h>
10 #include <TClonesArray.h> // needed for inline function Digit
11 #include "AliMUONGeometrySegmentation.h"
12
13 class TMinuit;
14
15 class AliMUONDigit;
16 class AliMUONRawCluster;
17 class AliSegmentation;
18 class AliMUONMathieson;
19
20 class AliMUONClusterInput : public TObject 
21 {
22  public:
23     virtual ~AliMUONClusterInput();
24     static AliMUONClusterInput* Instance();
25 //  Configuration
26     void SetDigits(Int_t chamber, Int_t idDE, TClonesArray* dig1, TClonesArray* dig2);
27     void SetDigits(Int_t chamber, Int_t idDE, TClonesArray* dig);
28     void SetCluster(AliMUONRawCluster* cluster);
29 // Access functions
30     Int_t Chamber() const {return fChamber;}
31     AliMUONDigit* Digit(Int_t cath, Int_t i) const {return (AliMUONDigit*) (fDigits[cath]->UncheckedAt(i));}
32     TClonesArray* Digits(Int_t cath) const {return fDigits[cath];}
33     Int_t NDigits(Int_t cath) const {return fNDigits[cath];}
34     AliMUONGeometrySegmentation* Segmentation2(Int_t cath) const {return fSegmentation2[cath];}
35
36     AliMUONMathieson* Mathieson() const {return fgMathieson;}    
37     Float_t ChargeCorrel() const {return fChargeCorrel;}    
38     Int_t DetElemId() const {return fDetElemId;}
39     Int_t GetSegmentationType() const {return fSegmentationType;}
40
41 // Fitting    
42     TMinuit*      Fitter() const {return fgMinuit;}
43 // Current cluster information    
44     Float_t       TotalCharge(Int_t cath) const {return fChargeTot[cath];}
45     Float_t       Charge(Int_t dig, Int_t cath) const {return fCharge[dig][cath];}
46     Int_t         Ix(Int_t dig, Int_t cath) const {return fix[dig][cath];}
47     Int_t         Iy(Int_t dig, Int_t cath) const {return fiy[dig][cath];}
48     Int_t         Nmul(Int_t cath) const {return fNmul[cath];}
49 //  Helpers for Fit     
50     Float_t DiscrChargeS1(Int_t i,Double_t *par);
51     Float_t DiscrChargeCombiS1(Int_t i,Double_t *par, Int_t cath);
52     Float_t DiscrChargeS2(Int_t i,Double_t *par);
53     Float_t DiscrChargeCombiS2(Int_t i,Double_t *par, Int_t cath);
54 // 
55  protected:
56     AliMUONClusterInput();
57     AliMUONClusterInput(const AliMUONClusterInput& clusterInput);
58     AliMUONClusterInput & operator = (const AliMUONClusterInput& rhs);
59  private:
60     static AliMUONClusterInput* fgClusterInput; // ! singleton instance
61     static AliMUONMathieson*    fgMathieson;     // ! Mathieson
62
63     // Digits
64     TClonesArray*        fDigits[2];       // ! Array of pointers to digits
65     Int_t                fNDigits[2];      // ! Number of digits
66     AliMUONGeometrySegmentation*     fSegmentation2[2]; // ! Geometry Segmentation per cathode
67
68     Int_t                fNseg;            // ! number of cathode planes
69     Int_t                fChamber;         // ! Current chamber number
70     
71     // Current cluster
72     AliMUONRawCluster*   fCluster;         // ! current cluster
73     Int_t                fNmul[2];         // ! current cluster multiplicity
74     // Digits contribuing to current cluster
75     Int_t                fix[500][2];      // ! List of x-positions for current cluster
76     Int_t                fiy[500][2];      // ! List of y-positions for current cluster
77     Float_t              fCharge[500][2];  // ! List of charges for current cluster
78     Int_t                fChargeTot[2];    // ! Total charge
79     Float_t              fQtot[2];         // ! Total charge
80     Float_t              fZ;               // ! Current z-position
81     Float_t              fChargeCorrel;    // ! charge correlation 
82     Int_t                fSegmentationType;// ! Segmentation type old or new
83     Int_t                fDetElemId;       // ! detection elt id    
84
85     // Fitter
86     static TMinuit*      fgMinuit;          // ! Fitter
87     ClassDef(AliMUONClusterInput, 0)        // Global data service for hit reconstruction
88 };
89 #endif
90