]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/AliMUONChamber.h
Removing category plane from mapping;
[u/mrichter/AliRoot.git] / MUON / AliMUONChamber.h
1 #ifndef ALIMUONCHAMBER_H
2 #define ALIMUONCHAMBER_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 <TObjArray.h>
11
12 #include "AliMUONResponse.h"
13 #include "AliMUONGeometrySegmentation.h"
14
15 class AliMUONClusterFinderVS;
16 class AliMUONGeometryModule;
17 class AliMUON;
18 class AliMUONHit;
19
20
21 class AliMUONChamber : public TObject
22 {
23  public:
24     AliMUONChamber();
25     AliMUONChamber(Int_t id);
26     virtual ~AliMUONChamber();
27     
28 //
29 // Get chamber Id
30   virtual Int_t   GetId() const {return fId;}
31 //
32
33 // Get chamber Id
34   virtual Bool_t  IsSensId(Int_t volId) const;
35   
36 // Initialisation
37   virtual void    Init(Int_t flag);
38 // Set z-position of chamber  
39   virtual void    SetZ(Float_t Z) {fZ = Z;}
40 // Get z-position of chamber  
41   virtual Float_t Z() const {return fZ;}
42 // Set inner radius of sensitive volume 
43   virtual void SetRInner(Float_t rmin) {frMin=rmin;}
44 // Set outer radius of sensitive volum  
45   virtual void SetROuter(Float_t rmax) {frMax=rmax;}  
46
47 // Return inner radius of sensitive volume 
48   virtual  Float_t RInner() const      {return frMin;}
49 // Return outer radius of sensitive volum  
50   virtual Float_t ROuter() const       {return frMax;}  
51 //  
52 // Set response model
53   virtual void    SetResponseModel(AliMUONResponse* thisResponse) {fResponse=thisResponse;}
54 //  
55 // Set segmentation model
56   virtual void    SetSegmentationModel(Int_t isec, AliMUONGeometrySegmentation* thissegmentation) {
57       fSegmentation2->AddAt(thissegmentation,isec-1);
58   }
59 //  
60 //  Get pointer to response model
61   virtual AliMUONResponse* &ResponseModel(){return fResponse;}
62 //  
63 //  Get reference to segmentation model
64   virtual AliMUONGeometrySegmentation*  SegmentationModel2(Int_t isec) {
65       return (AliMUONGeometrySegmentation*) (*fSegmentation2)[isec-1];
66   }
67
68 // Get number of segmentation sectors  
69   virtual Int_t Nsec() const        {return fnsec;}
70 // Set number of segmented cathodes (1 or 2)  
71   virtual void  SetNsec(Int_t nsec) {fnsec=nsec;}
72 //
73 // Member function forwarding to the segmentation and response models
74 //
75 // Calculate pulse height from energy loss  
76   virtual Float_t IntPH(Float_t eloss) {return fResponse->IntPH(eloss);}
77 //  
78 // Ask segmentation if signal should be generated  
79   virtual Int_t   SigGenCond(AliMUONHit* hit);
80 //
81 // Initialisation of segmentation for hit  
82   virtual void    SigGenInit(AliMUONHit* hit);
83 // Initialisation of charge fluctuation for given hit
84   virtual void    ChargeCorrelationInit();
85
86 // Configuration forwarding
87 //
88 // Define signal distribution region
89 // by number of sigmas of the distribution function
90   virtual void   SetSigmaIntegration(Float_t p1)
91       {fResponse->SetSigmaIntegration(p1);}
92 // Set the single electron pulse-height (ADCchan/e)  
93   virtual void   SetChargeSlope(Float_t p1)              {fResponse->SetChargeSlope(p1);}
94 // Set width of charge distribution function  
95   virtual void   SetChargeSpread(Float_t p1, Float_t p2) {fResponse->SetChargeSpread(p1,p2);}
96 // Set maximum ADC count value
97   virtual void   SetMaxAdc(Int_t p1)                   {fResponse->SetMaxAdc(p1);}
98 //  
99 // Cluster formation method (charge disintegration)
100   virtual void   DisIntegration(AliMUONHit* hit,
101                                 Int_t& x, Float_t newclust[6][500]);
102 // Initialize geometry related parameters  
103   virtual void    InitGeo(Float_t z);
104 //
105   virtual Float_t DGas() const {return fdGas;}
106   virtual Float_t DAlu() const {return fdAlu;}  
107   virtual void SetDGas(Float_t DGas) {fdGas = DGas;}
108   virtual void SetDAlu(Float_t DAlu) {fdAlu = DAlu;}  
109   virtual void SetChargeCorrel(Float_t correl) {fResponse->SetChargeCorrel(correl);}
110
111 // geometry  
112   void SetGeometry(AliMUONGeometryModule* geometry) {fGeometry = geometry;}
113   AliMUONGeometryModule* GetGeometry() const {return fGeometry; }
114
115   
116  protected:
117   AliMUONChamber(const AliMUONChamber & rChamber);
118   // assignment operator  
119   AliMUONChamber& operator =(const AliMUONChamber& rhs);
120
121   Int_t   fId;   // chamber number
122   Float_t fdGas; // half gaz gap
123   Float_t fdAlu; // half Alu width  
124   Float_t fZ;    // Z position (cm)
125   Int_t   fnsec; // number of semented cathode planes
126   Float_t frMin; // innermost sensitive radius
127   Float_t frMax; // outermost sensitive radius
128   Float_t fCurrentCorrel; //! charge correlation for current hit.
129
130   TObjArray              *fSegmentation2;   // pointer to geometry segmentation bending & NBending
131
132   AliMUONResponse        *fResponse;        // pointer to response
133   AliMUONGeometryModule  *fGeometry;        // pointer to geometry
134   AliMUON                *fMUON;            // pointer to MUON
135   ClassDef(AliMUONChamber,3) // Muon tracking chamber class
136 };
137
138 #endif