Incrementing class version
[u/mrichter/AliRoot.git] / MUON / AliMUONChamber.h
CommitLineData
a9e2aefa 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
8#include "TObjArray.h"
a30a000f 9#include "AliSegmentation.h"
a9e2aefa 10#include "AliMUONResponse.h"
11
30aaba74 12class AliMUONClusterFinderVS;
a9e2aefa 13//class AliMUONResponse ;
a30a000f 14//class AliSegmentation ;
d1cd2474 15class AliMUONChamberGeometry;
a9e2aefa 16
17class AliMUONChamber:
18public TObject
19{
20 public:
21 AliMUONChamber();
d81db581 22 AliMUONChamber(Int_t id);
a9e2aefa 23 AliMUONChamber(const AliMUONChamber & rChamber);
24 virtual ~AliMUONChamber();
25
26//
d1cd2474 27// Get chamber Id
28 virtual Int_t GetId() {return fId;}
29//
30
31// Get chamber Id
32 virtual Bool_t IsSensId(Int_t volId) const;
33/*
a9e2aefa 34// Get GEANT id of sensitive volume
35 virtual Int_t GetGid() {return fGid;}
36// Set GEANT id of sensitive volume
37 virtual void SetGid(Int_t id) {fGid=id;}
d1cd2474 38//
39*/
40
a9e2aefa 41// Initialisation
42 virtual void Init();
43// Set z-position of chamber
44 virtual void SetZ(Float_t Z) {fZ = Z;}
45// Get z-position of chamber
46 virtual Float_t Z(){return fZ;}
47// Set inner radius of sensitive volume
48 virtual void SetRInner(Float_t rmin) {frMin=rmin;}
49// Set outer radius of sensitive volum
50 virtual void SetROuter(Float_t rmax) {frMax=rmax;}
51
52// Return inner radius of sensitive volume
53 virtual Float_t RInner() {return frMin;}
54// Return outer radius of sensitive volum
55 virtual Float_t ROuter() {return frMax;}
56//
57// Set response model
58 virtual void SetResponseModel(AliMUONResponse* thisResponse) {fResponse=thisResponse;}
59//
60// Set segmentation model
a30a000f 61 virtual void SetSegmentationModel(Int_t i, AliSegmentation* thisSegmentation) {
cd4df77b 62 fSegmentation->AddAt(thisSegmentation,i-1);
a9e2aefa 63 }
64// Set Cluster reconstruction model
30aaba74 65 virtual void SetReconstructionModel(AliMUONClusterFinderVS *thisReconstruction) {
a9e2aefa 66 fReconstruction = thisReconstruction;
67 }
68//
69// Get pointer to response model
70 virtual AliMUONResponse* &ResponseModel(){return fResponse;}
71//
72// Get reference to segmentation model
a30a000f 73 virtual AliSegmentation* SegmentationModel(Int_t isec) {
74 return (AliSegmentation *) (*fSegmentation)[isec-1];
a9e2aefa 75 }
76 virtual TObjArray* ChamberSegmentation() {return fSegmentation;}
77// Get pointer to cluster reconstruction model
30aaba74 78 virtual AliMUONClusterFinderVS* &ReconstructionModel(){return fReconstruction;}
a9e2aefa 79// Get number of segmentation sectors
80 virtual Int_t Nsec() {return fnsec;}
81// Set number of segmented cathodes (1 or 2)
82 virtual void SetNsec(Int_t nsec) {fnsec=nsec;}
83//
84// Member function forwarding to the segmentation and response models
85//
86// Calculate pulse height from energy loss
87 virtual Float_t IntPH(Float_t eloss) {return fResponse->IntPH(eloss);}
88//
89// Ask segmentation if signal should be generated
90 virtual Int_t SigGenCond(Float_t x, Float_t y, Float_t z);
91//
92// Initialisation of segmentation for hit
93 virtual void SigGenInit(Float_t x, Float_t y, Float_t z);
681d067b 94// Initialisation of charge fluctuation for given hit
95 virtual void ChargeCorrelationInit();
96
a9e2aefa 97// Configuration forwarding
98//
99// Define signal distribution region
100// by number of sigmas of the distribution function
101 virtual void SetSigmaIntegration(Float_t p1)
102 {fResponse->SetSigmaIntegration(p1);}
103// Set the single electron pulse-height (ADCchan/e)
104 virtual void SetChargeSlope(Float_t p1) {fResponse->SetChargeSlope(p1);}
105// Set width of charge distribution function
106 virtual void SetChargeSpread(Float_t p1, Float_t p2) {fResponse->SetChargeSpread(p1,p2);}
107// Set maximum ADC count value
a337f488 108 virtual void SetMaxAdc(Int_t p1) {fResponse->SetMaxAdc(p1);}
a9e2aefa 109// Set Pad size
110 virtual void SetPadSize(Int_t isec, Float_t p1, Float_t p2) {
a30a000f 111 ((AliSegmentation*) (*fSegmentation)[isec-1])->SetPadSize(p1,p2);
a9e2aefa 112 }
113//
114// Cluster formation method (charge disintegration)
115 virtual void DisIntegration(Float_t eloss, Float_t tof,
802a864d 116 Float_t xhit, Float_t yhit, Float_t zhit,
a9e2aefa 117 Int_t& x, Float_t newclust[6][500]);
118// Initialize geometry related parameters
119 virtual void InitGeo(Float_t z);
120//
121 virtual Float_t DGas() {return fdGas;}
122 virtual Float_t DAlu() {return fdAlu;}
b64652f5 123 virtual void SetDGas(Float_t DGas) {fdGas = DGas;}
124 virtual void SetDAlu(Float_t DAlu) {fdAlu = DAlu;}
16d57990 125 virtual void SetChargeCorrel(Float_t correl) {fResponse->SetChargeCorrel(correl);}
d1cd2474 126
127// geometry
128 void SetGeometry(AliMUONChamberGeometry* geometry) {fGeometry = geometry;}
129 AliMUONChamberGeometry* GetGeometry() const {return fGeometry; }
130
a9e2aefa 131// assignment operator
ef42d733 132 AliMUONChamber& operator =(const AliMUONChamber& rhs);
a9e2aefa 133
134 protected:
d81db581 135 Int_t fId; // chamber number
a9e2aefa 136 Float_t fdGas; // half gaz gap
137 Float_t fdAlu; // half Alu width
d1cd2474 138 //Int_t fGid; // GEANT volume if for sensitive volume of this chamber
139 // moved to AliMUONChamberGeometry
a9e2aefa 140 Float_t fZ; // Z position (cm)
141 Int_t fnsec; // number of semented cathode planes
142 Float_t frMin; // innermost sensitive radius
143 Float_t frMax; // outermost sensitive radius
681d067b 144 Float_t fCurrentCorrel; //! charge correlation for current hit.
a9e2aefa 145
30aaba74 146 TObjArray *fSegmentation; // pointer to segmentation
147 AliMUONClusterFinderVS *fReconstruction; // pointer to reconstruction
148 AliMUONResponse *fResponse; // pointer to response
d1cd2474 149 AliMUONChamberGeometry *fGeometry; // pointer to geometry
9d6df3aa 150 ClassDef(AliMUONChamber,2) // Muon tracking chamber class
a9e2aefa 151};
152
153#endif