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