Code from MUON-dev joined
[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"
9#include "AliMUONSegmentation.h"
10#include "AliMUONResponse.h"
11
12class AliMUONClusterFinder;
13//class AliMUONResponse ;
14//class AliMUONSegmentation ;
15
16class AliMUONChamber:
17public TObject
18{
19 public:
20 AliMUONChamber();
21 AliMUONChamber(const AliMUONChamber & rChamber);
22 virtual ~AliMUONChamber();
23
24//
25// Get GEANT id of sensitive volume
26 virtual Int_t GetGid() {return fGid;}
27// Set GEANT id of sensitive volume
28 virtual void SetGid(Int_t id) {fGid=id;}
29//
30// Initialisation
31 virtual void Init();
32// Set z-position of chamber
33 virtual void SetZ(Float_t Z) {fZ = Z;}
34// Get z-position of chamber
35 virtual Float_t Z(){return fZ;}
36// Set inner radius of sensitive volume
37 virtual void SetRInner(Float_t rmin) {frMin=rmin;}
38// Set outer radius of sensitive volum
39 virtual void SetROuter(Float_t rmax) {frMax=rmax;}
40
41// Return inner radius of sensitive volume
42 virtual Float_t RInner() {return frMin;}
43// Return outer radius of sensitive volum
44 virtual Float_t ROuter() {return frMax;}
45//
46// Set response model
47 virtual void SetResponseModel(AliMUONResponse* thisResponse) {fResponse=thisResponse;}
48//
49// Set segmentation model
50 virtual void SetSegmentationModel(Int_t i, AliMUONSegmentation* thisSegmentation) {
51 (*fSegmentation)[i-1] = thisSegmentation;
52 }
53// Set Cluster reconstruction model
54 virtual void SetReconstructionModel(AliMUONClusterFinder *thisReconstruction) {
55 fReconstruction = thisReconstruction;
56 }
57//
58// Get pointer to response model
59 virtual AliMUONResponse* &ResponseModel(){return fResponse;}
60//
61// Get reference to segmentation model
62 virtual AliMUONSegmentation* SegmentationModel(Int_t isec) {
63 return (AliMUONSegmentation *) (*fSegmentation)[isec-1];
64 }
65 virtual TObjArray* ChamberSegmentation() {return fSegmentation;}
66// Get pointer to cluster reconstruction model
67 virtual AliMUONClusterFinder* &ReconstructionModel(){return fReconstruction;}
68// Get number of segmentation sectors
69 virtual Int_t Nsec() {return fnsec;}
70// Set number of segmented cathodes (1 or 2)
71 virtual void SetNsec(Int_t nsec) {fnsec=nsec;}
72//
73// Member function forwarding to the segmentation and response models
74//
75// Calculate pulse height from energy loss
76 virtual Float_t IntPH(Float_t eloss) {return fResponse->IntPH(eloss);}
77//
78// Ask segmentation if signal should be generated
79 virtual Int_t SigGenCond(Float_t x, Float_t y, Float_t z);
80//
81// Initialisation of segmentation for hit
82 virtual void SigGenInit(Float_t x, Float_t y, Float_t z);
83// Configuration forwarding
84//
85// Define signal distribution region
86// by number of sigmas of the distribution function
87 virtual void SetSigmaIntegration(Float_t p1)
88 {fResponse->SetSigmaIntegration(p1);}
89// Set the single electron pulse-height (ADCchan/e)
90 virtual void SetChargeSlope(Float_t p1) {fResponse->SetChargeSlope(p1);}
91// Set width of charge distribution function
92 virtual void SetChargeSpread(Float_t p1, Float_t p2) {fResponse->SetChargeSpread(p1,p2);}
93// Set maximum ADC count value
94 virtual void SetMaxAdc(Float_t p1) {fResponse->SetMaxAdc(p1);}
95// Set Pad size
96 virtual void SetPadSize(Int_t isec, Float_t p1, Float_t p2) {
97 ((AliMUONSegmentation*) (*fSegmentation)[isec-1])->SetPadSize(p1,p2);
98 }
99//
100// Cluster formation method (charge disintegration)
101 virtual void DisIntegration(Float_t eloss, Float_t tof,
102 Float_t xhit, Float_t yhit,
103 Int_t& x, Float_t newclust[6][500]);
104// Initialize geometry related parameters
105 virtual void InitGeo(Float_t z);
106//
107 virtual Float_t DGas() {return fdGas;}
108 virtual Float_t DAlu() {return fdAlu;}
109// assignment operator
110 virtual AliMUONChamber& operator =(const AliMUONChamber& rhs);
111
112 protected:
113
114 Float_t fdGas; // half gaz gap
115 Float_t fdAlu; // half Alu width
116 Int_t fGid; // GEANT volume if for sensitive volume of this chamber
117 Float_t fZ; // Z position (cm)
118 Int_t fnsec; // number of semented cathode planes
119 Float_t frMin; // innermost sensitive radius
120 Float_t frMax; // outermost sensitive radius
121
122 TObjArray *fSegmentation; // pointer to segmentation
123 AliMUONClusterFinder *fReconstruction; // pointer to reconstruction
124 AliMUONResponse *fResponse; // pointer to response
125 ClassDef(AliMUONChamber,1) // Muon tracking and trigger chamber class
126};
127
128#endif