Some problems with the HP compiler fixed.
[u/mrichter/AliRoot.git] / MUON / AliMUONchamber.h
CommitLineData
a897a37a 1#ifndef MUONchamber_H
2#define MUONchamber_H
3da30618 3/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
5
6/* $Id$ */
7
a897a37a 8#include "TObjArray.h"
9#include "AliMUONSegRes.h"
10
11class AliMUONClusterFinder;
12class AliMUONresponse ;
13class AliMUONsegmentation ;
14
15class AliMUONchamber:
16public TObject
17{
18 public:
19 AliMUONchamber();
20 ~AliMUONchamber(){}
21//
22// Set and get GEANT id
23 Int_t GetGid() {return fGid;}
24 void SetGid(Int_t id) {fGid=id;}
25//
26// Initialisation and z-Position
27 void Init();
28 void SetZPOS(Float_t p1) {fzPos=p1;}
29 Float_t ZPosition() {return fzPos;}
30// Set inner radius of sensitive volume
31 void SetRInner(Float_t rmin) {frMin=rmin;}
32// Set outer radius of sensitive volum
33 void SetROuter(Float_t rmax) {frMax=rmax;}
34
35// Return inner radius of sensitive volume
36 Float_t RInner() {return frMin;}
37// Return outer radius of sensitive volum
38 Float_t ROuter() {return frMax;}
39//
40// Configure response model
41 void ResponseModel(AliMUONresponse* thisResponse) {fResponse=thisResponse;}
42//
43// Configure segmentation model
44 void SegmentationModel(Int_t i, AliMUONsegmentation* thisSegmentation) {
45 (*fSegmentation)[i-1] = thisSegmentation;
46 }
47 void ReconstructionModel(AliMUONClusterFinder *thisReconstruction) {
48 fReconstruction = thisReconstruction;
49 }
50
51//
52// Get reference to response model
53 AliMUONresponse* &GetResponseModel(){return fResponse;}
54//
55 AliMUONClusterFinder* &GetReconstructionModel(){return fReconstruction;}
56//
57// Get reference to segmentation model
58 AliMUONsegmentation* GetSegmentationModel(Int_t isec) {
59 return (AliMUONsegmentation *) (*fSegmentation)[isec-1];
60 }
61 TObjArray* GetChamberSegmentation(){return fSegmentation;}
62
63 Int_t Nsec() {return fnsec;}
64 void SetNsec(Int_t nsec) {fnsec=nsec;}
65//
66// Member function forwarding to the segmentation and response models
67//
68// Calculate pulse height from energy loss
69 Float_t IntPH(Float_t eloss) {return fResponse->IntPH(eloss);}
70//
71// Ask segmentation if signal should be generated
72 Int_t SigGenCond(Float_t x, Float_t y, Float_t z)
73 {
74 if (fnsec==1) {
75 return ((AliMUONsegmentation*) (*fSegmentation)[0])
76 ->SigGenCond(x, y, z) ;
77 } else {
78 return (((AliMUONsegmentation*) (*fSegmentation)[0])
79 ->SigGenCond(x, y, z)) ||
80 (((AliMUONsegmentation*) (*fSegmentation)[1])
81 ->SigGenCond(x, y, z)) ;
82 }
83 }
84//
85// Initialisation of segmentation for hit
86 void SigGenInit(Float_t x, Float_t y, Float_t z)
87 {
88
89 if (fnsec==1) {
90 ((AliMUONsegmentation*) (*fSegmentation)[0])->SigGenInit(x, y, z) ;
91 } else {
92 ((AliMUONsegmentation*) (*fSegmentation)[0])->SigGenInit(x, y, z) ;
93 ((AliMUONsegmentation*) (*fSegmentation)[1])->SigGenInit(x, y, z) ;
94 }
95 }
96
97// Configuration forwarding
98//
99 void SetSigmaIntegration(Float_t p1) {fResponse->SetSigmaIntegration(p1);}
100 void SetChargeSlope(Float_t p1) {fResponse->SetChargeSlope(p1);}
101 void SetChargeSpread(Float_t p1, Float_t p2) {fResponse->SetChargeSpread(p1,p2);}
102 void SetMaxAdc(Float_t p1) {fResponse->SetMaxAdc(p1);}
103
104 void SetPADSIZ(Int_t isec, Float_t p1, Float_t p2) {
105 ((AliMUONsegmentation*) (*fSegmentation)[isec-1])->SetPADSIZ(p1,p2);
106 }
107//
108// Cluster formation method
109 void DisIntegration(Float_t, Float_t, Float_t, Int_t&x, Float_t newclust[6][500]);
110 ClassDef(AliMUONchamber,1)
111 void InitGeo(Float_t z);
112
113 private:
114// GEANT volume if for sensitive volume of this chamber
115 Int_t fGid;
116// z-position of this chamber
117 Float_t fzPos; // z-position of chambers
118 Int_t fnsec; // number of segmentation zones
119 Float_t frMin; // innermost sensitive radius
120 Float_t frMax; // outermost sensitive radius
121// The segmentation models for the cathode planes
122// fnsec=1: one plane segmented, fnsec=2: both planes are segmented.
123
124 TObjArray *fSegmentation;
125 AliMUONClusterFinder *fReconstruction;
126 AliMUONresponse *fResponse;
127
128 public:
129 Float_t fdGas; // half gaz gap
130 Float_t fdAlu; // half Alu width
131};
132
133#endif