]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MUON/AliMUONChamber.h
Add rotations (thanks to Gines)
[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;
e118b27e 16class AliMUONGeometryModule;
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 }
a9e2aefa 56//
57// Get pointer to response model
58 virtual AliMUONResponse* &ResponseModel(){return fResponse;}
59//
60// Get reference to segmentation model
a30a000f 61 virtual AliSegmentation* SegmentationModel(Int_t isec) {
62 return (AliSegmentation *) (*fSegmentation)[isec-1];
a9e2aefa 63 }
64 virtual TObjArray* ChamberSegmentation() {return fSegmentation;}
7e4a628d 65
a9e2aefa 66// Get number of segmentation sectors
30178c30 67 virtual Int_t Nsec() const {return fnsec;}
a9e2aefa 68// Set number of segmented cathodes (1 or 2)
69 virtual void SetNsec(Int_t nsec) {fnsec=nsec;}
70//
71// Member function forwarding to the segmentation and response models
72//
73// Calculate pulse height from energy loss
74 virtual Float_t IntPH(Float_t eloss) {return fResponse->IntPH(eloss);}
75//
76// Ask segmentation if signal should be generated
77 virtual Int_t SigGenCond(Float_t x, Float_t y, Float_t z);
78//
79// Initialisation of segmentation for hit
80 virtual void SigGenInit(Float_t x, Float_t y, Float_t z);
681d067b 81// Initialisation of charge fluctuation for given hit
82 virtual void ChargeCorrelationInit();
83
a9e2aefa 84// Configuration forwarding
85//
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
a337f488 95 virtual void SetMaxAdc(Int_t p1) {fResponse->SetMaxAdc(p1);}
a9e2aefa 96// Set Pad size
97 virtual void SetPadSize(Int_t isec, Float_t p1, Float_t p2) {
a30a000f 98 ((AliSegmentation*) (*fSegmentation)[isec-1])->SetPadSize(p1,p2);
a9e2aefa 99 }
100//
101// Cluster formation method (charge disintegration)
102 virtual void DisIntegration(Float_t eloss, Float_t tof,
802a864d 103 Float_t xhit, Float_t yhit, Float_t zhit,
a9e2aefa 104 Int_t& x, Float_t newclust[6][500]);
105// Initialize geometry related parameters
106 virtual void InitGeo(Float_t z);
107//
30178c30 108 virtual Float_t DGas() const {return fdGas;}
109 virtual Float_t DAlu() const {return fdAlu;}
b64652f5 110 virtual void SetDGas(Float_t DGas) {fdGas = DGas;}
111 virtual void SetDAlu(Float_t DAlu) {fdAlu = DAlu;}
16d57990 112 virtual void SetChargeCorrel(Float_t correl) {fResponse->SetChargeCorrel(correl);}
d1cd2474 113
114// geometry
e118b27e 115 void SetGeometry(AliMUONGeometryModule* geometry) {fGeometry = geometry;}
116 AliMUONGeometryModule* GetGeometry() const {return fGeometry; }
d1cd2474 117
a9e2aefa 118
119 protected:
30178c30 120 AliMUONChamber(const AliMUONChamber & rChamber);
121 // assignment operator
122 AliMUONChamber& operator =(const AliMUONChamber& rhs);
123
d81db581 124 Int_t fId; // chamber number
a9e2aefa 125 Float_t fdGas; // half gaz gap
126 Float_t fdAlu; // half Alu width
a9e2aefa 127 Float_t fZ; // Z position (cm)
128 Int_t fnsec; // number of semented cathode planes
129 Float_t frMin; // innermost sensitive radius
130 Float_t frMax; // outermost sensitive radius
681d067b 131 Float_t fCurrentCorrel; //! charge correlation for current hit.
a9e2aefa 132
30aaba74 133 TObjArray *fSegmentation; // pointer to segmentation
30aaba74 134 AliMUONResponse *fResponse; // pointer to response
e118b27e 135 AliMUONGeometryModule *fGeometry; // pointer to geometry
136 ClassDef(AliMUONChamber,3) // Muon tracking chamber class
a9e2aefa 137};
138
139#endif