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