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 */
9 #include "AliSegmentation.h"
10 #include "AliMUONResponse.h"
12 class AliMUONClusterFinderVS;
13 //class AliMUONResponse ;
14 //class AliSegmentation ;
21 AliMUONChamber(Int_t id);
22 AliMUONChamber(const AliMUONChamber & rChamber);
23 virtual ~AliMUONChamber();
26 // Get GEANT id of sensitive volume
27 virtual Int_t GetGid() {return fGid;}
28 // Set GEANT id of sensitive volume
29 virtual void SetGid(Int_t id) {fGid=id;}
33 // Set z-position of chamber
34 virtual void SetZ(Float_t Z) {fZ = Z;}
35 // Get z-position of chamber
36 virtual Float_t Z(){return fZ;}
37 // Set inner radius of sensitive volume
38 virtual void SetRInner(Float_t rmin) {frMin=rmin;}
39 // Set outer radius of sensitive volum
40 virtual void SetROuter(Float_t rmax) {frMax=rmax;}
42 // Return inner radius of sensitive volume
43 virtual Float_t RInner() {return frMin;}
44 // Return outer radius of sensitive volum
45 virtual Float_t ROuter() {return frMax;}
48 virtual void SetResponseModel(AliMUONResponse* thisResponse) {fResponse=thisResponse;}
50 // Set segmentation model
51 virtual void SetSegmentationModel(Int_t i, AliSegmentation* thisSegmentation) {
52 (*fSegmentation)[i-1] = thisSegmentation;
54 // Set Cluster reconstruction model
55 virtual void SetReconstructionModel(AliMUONClusterFinderVS *thisReconstruction) {
56 fReconstruction = thisReconstruction;
59 // Get pointer to response model
60 virtual AliMUONResponse* &ResponseModel(){return fResponse;}
62 // Get reference to segmentation model
63 virtual AliSegmentation* SegmentationModel(Int_t isec) {
64 return (AliSegmentation *) (*fSegmentation)[isec-1];
66 virtual TObjArray* ChamberSegmentation() {return fSegmentation;}
67 // Get pointer to cluster reconstruction model
68 virtual AliMUONClusterFinderVS* &ReconstructionModel(){return fReconstruction;}
69 // Get number of segmentation sectors
70 virtual Int_t Nsec() {return fnsec;}
71 // Set number of segmented cathodes (1 or 2)
72 virtual void SetNsec(Int_t nsec) {fnsec=nsec;}
74 // Member function forwarding to the segmentation and response models
76 // Calculate pulse height from energy loss
77 virtual Float_t IntPH(Float_t eloss) {return fResponse->IntPH(eloss);}
79 // Ask segmentation if signal should be generated
80 virtual Int_t SigGenCond(Float_t x, Float_t y, Float_t z);
82 // Initialisation of segmentation for hit
83 virtual void SigGenInit(Float_t x, Float_t y, Float_t z);
84 // Configuration forwarding
86 // Define signal distribution region
87 // by number of sigmas of the distribution function
88 virtual void SetSigmaIntegration(Float_t p1)
89 {fResponse->SetSigmaIntegration(p1);}
90 // Set the single electron pulse-height (ADCchan/e)
91 virtual void SetChargeSlope(Float_t p1) {fResponse->SetChargeSlope(p1);}
92 // Set width of charge distribution function
93 virtual void SetChargeSpread(Float_t p1, Float_t p2) {fResponse->SetChargeSpread(p1,p2);}
94 // Set maximum ADC count value
95 virtual void SetMaxAdc(Int_t p1) {fResponse->SetMaxAdc(p1);}
97 virtual void SetPadSize(Int_t isec, Float_t p1, Float_t p2) {
98 ((AliSegmentation*) (*fSegmentation)[isec-1])->SetPadSize(p1,p2);
101 // Cluster formation method (charge disintegration)
102 virtual void DisIntegration(Float_t eloss, Float_t tof,
103 Float_t xhit, Float_t yhit, Float_t zhit,
104 Int_t& x, Float_t newclust[6][500]);
105 // Initialize geometry related parameters
106 virtual void InitGeo(Float_t z);
108 virtual Float_t DGas() {return fdGas;}
109 virtual Float_t DAlu() {return fdAlu;}
110 // assignment operator
111 AliMUONChamber& operator =(const AliMUONChamber& rhs);
114 Int_t fId; // chamber number
115 Float_t fdGas; // half gaz gap
116 Float_t fdAlu; // half Alu width
117 Int_t fGid; // GEANT volume if for sensitive volume of this chamber
118 Float_t fZ; // Z position (cm)
119 Int_t fnsec; // number of semented cathode planes
120 Float_t frMin; // innermost sensitive radius
121 Float_t frMax; // outermost sensitive radius
123 TObjArray *fSegmentation; // pointer to segmentation
124 AliMUONClusterFinderVS *fReconstruction; // pointer to reconstruction
125 AliMUONResponse *fResponse; // pointer to response
126 ClassDef(AliMUONChamber,1) // Muon tracking chamber class