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 */
7 // Revision of includes 07/05/2004
10 #include <TObjArray.h>
12 #include "AliMUONResponse.h"
13 #include "AliMUONGeometrySegmentation.h"
15 class AliMUONClusterFinderVS;
16 class AliMUONGeometryModule;
21 class AliMUONChamber : public TObject
25 AliMUONChamber(Int_t id);
26 virtual ~AliMUONChamber();
30 virtual Int_t GetId() const {return fId;}
34 virtual Bool_t IsSensId(Int_t volId) const;
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;}
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;}
53 virtual void SetResponseModel(AliMUONResponse* thisResponse) {fResponse=thisResponse;}
55 // Set segmentation model
56 virtual void SetSegmentationModel(Int_t isec, AliMUONGeometrySegmentation* thissegmentation) {
57 fSegmentation2->AddAt(thissegmentation,isec-1);
60 // Get pointer to response model
61 virtual AliMUONResponse* &ResponseModel(){return fResponse;}
63 // Get reference to segmentation model
64 virtual AliMUONGeometrySegmentation* SegmentationModel2(Int_t isec) {
65 return (AliMUONGeometrySegmentation*) (*fSegmentation2)[isec-1];
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;}
73 // Member function forwarding to the segmentation and response models
75 // Calculate pulse height from energy loss
76 virtual Float_t IntPH(Float_t eloss) {return fResponse->IntPH(eloss);}
78 // Ask segmentation if signal should be generated
79 virtual Int_t SigGenCond(AliMUONHit* hit);
81 // Initialisation of segmentation for hit
82 virtual void SigGenInit(AliMUONHit* hit);
83 // Initialisation of charge fluctuation for given hit
84 virtual void ChargeCorrelationInit();
86 // Configuration forwarding
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);}
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);
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);}
112 void SetGeometry(AliMUONGeometryModule* geometry) {fGeometry = geometry;}
113 AliMUONGeometryModule* GetGeometry() const {return fGeometry; }
117 AliMUONChamber(const AliMUONChamber & rChamber);
118 // assignment operator
119 AliMUONChamber& operator =(const AliMUONChamber& rhs);
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.
130 TObjArray *fSegmentation2; // pointer to geometry segmentation bending & NBending
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