Avoid global variables in AliMUONClusterFinderVS by seperating the input data for...
[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
8 #include <TObject.h>
9 #include <TClonesArray.h>
10
11 class TMinuit;
12 class AliMUONDigit;
13 class AliMUONRawCluster;
14 class AliMUONSegmentation;
15 class AliMUONResponse;
16
17
18
19 class AliMUONClusterInput : public TObject {
20  public:
21     static AliMUONClusterInput* Instance();
22 //  Setters
23     void SetDigits(Int_t chamber, TClonesArray* dig1, TClonesArray* dig2);
24     void SetDigits(Int_t chamber, TClonesArray* dig);
25     void SetCluster(AliMUONRawCluster* cluster);
26 // Access functions
27     AliMUONDigit* Digit(Int_t cath, Int_t i) {return (AliMUONDigit*) (fDigits[cath]->UncheckedAt(i));}
28     TMinuit*      Fitter() {return fgMinuit;}
29     Float_t       TotalCharge(Int_t cath) {return fChargeTot[cath];}
30     Float_t       Charge(Int_t dig, Int_t cath) {return fCharge[dig][cath];}
31     Int_t         Ix(Int_t dig, Int_t cath) {return fix[dig][cath];}
32     Int_t         Iy(Int_t dig, Int_t cath) {return fiy[dig][cath];}
33     Int_t         Nmul(Int_t cath)  {return fNmul[cath];}
34 //  Helpers for Fit     
35     Float_t DiscrChargeS1(Int_t i,Double_t *par);
36     Float_t DiscrChargeCombiS1(Int_t i,Double_t *par, Int_t cath);
37     Float_t DiscrChargeS2(Int_t i,Double_t *par);
38     Float_t DiscrChargeCombiS2(Int_t i,Double_t *par, Int_t cath);
39 // 
40  protected:
41     AliMUONClusterInput(){;}
42  private:
43     static AliMUONClusterInput* fgClusterInput;
44     // Digits
45     TClonesArray*        fDigits[2];       // ! Array of pointers to digits
46     AliMUONSegmentation* fSegmentation[2]; // ! Segmentation per cathode
47     AliMUONResponse*     fResponse;        // ! Response
48     Int_t                fNseg;            // ! number of cathode planes
49     // Current cluster
50     AliMUONRawCluster*   fCluster;         // ! current cluster
51     Int_t                fNmul[2];         // ! current cluster multiplicity
52     // Digits contribuing to current cluster
53     Int_t                fix[500][2];      // ! List of x-positions for current cluster
54     Int_t                fiy[500][2];      // ! List of y-positions for current cluster
55     Float_t              fCharge[500][2];  // ! List of charges for current cluster
56     Int_t                fChargeTot[2];    // ! Total charge
57     Float_t              fQtot[2];         // ! Total charge
58     // Fitter
59     static TMinuit*      fgMinuit;          // ! Fitter
60     ClassDef(AliMUONClusterInput, 1) // Class definition in ROOT context
61 };
62 #endif
63