]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MUON/AliMUONSegmentationV05.cxx
Only getters to parameters declared constant.
[u/mrichter/AliRoot.git] / MUON / AliMUONSegmentationV05.cxx
CommitLineData
4c039060 1/**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
15
16/*
17$Log$
d81db581 18Revision 1.2 2000/06/15 07:58:48 morsch
19Code from MUON-dev joined
20
a9e2aefa 21Revision 1.1.2.1 2000/06/09 21:38:46 morsch
22AliMUONSegmentationV05 code from AliMUONSegResV05.cxx
23
4c039060 24*/
25
a897a37a 26/////////////////////////////////////////////////////
a9e2aefa 27// Segmentation and Response classes version 05 //
a897a37a 28/////////////////////////////////////////////////////
29
a897a37a 30
a9e2aefa 31#include "AliMUONSegmentationV05.h"
32#include <TMath.h>
a897a37a 33//___________________________________________
a9e2aefa 34ClassImp(AliMUONSegmentationV05)
a897a37a 35
36
d81db581 37void AliMUONSegmentationV05::Init(Int_t chamber)
a897a37a 38{
a9e2aefa 39 printf("\n Initialise segmentation v05 \n");
a897a37a 40//
41// Fill the arrays fCx (x-contour) and fNpxS (ix-contour) for each sector
42// These arrays help in converting from real to pad co-ordinates and
43// vice versa
44//
a9e2aefa 45// Segmentation is defined by rectangular modules approximating
46// concentric circles as shown below
a897a37a 47//
48// PCB module size in cm
a9e2aefa 49 const Float_t kDxPCB=40, kDyPCB=40;
a897a37a 50// PCB distribution (7 rows with 1+3 segmentation regions)
51 const Int_t kpcb[7][4] = {{1, 2, 2, 2},
52 {0, 3, 2, 2},
53 {0, 2, 2, 2},
54 {0, 0, 3, 3},
55 {0, 0, 2, 3},
56 {0, 0, 0, 4},
57 {0, 0, 0, 3}};
58
59
60//
61// 3 3 3 | 3 3 3
62// 3 3 3 3 | 3 3 3 3
63// 3 3 3 2 2 | 2 2 3 3 3
64// 3 3 3 2 2 2 | 2 2 2 3 3 3
65// 3 3 2 2 1 1 | 1 1 2 2 3 3
66// 3 3 2 2 1 1 1 | 1 1 1 2 2 3 3
67// 3 3 2 2 1 1 0 | 0 1 1 2 2 3 3
68// ------------------------------
69// 3 3 2 2 1 1 0 | 0 1 1 2 2 3 3
70// 3 3 2 2 1 1 1 | 1 1 1 2 2 3 3
71// 3 3 2 2 1 1 | 1 1 2 2 3 3
72// 3 3 3 2 2 2 | 2 2 2 3 3 3
73// 3 3 3 2 2 | 2 2 3 3 3
74// 3 3 3 3 | 3 3 3 3
75// 3 3 3 | 3 3 3
76//
77// number of pad rows per PCB
78//
a9e2aefa 79 Int_t nPyPCB=Int_t(kDyPCB/fDpy);
a897a37a 80//
81// maximum number of pad rows
a9e2aefa 82 fNpy=7*nPyPCB;
a897a37a 83//
84// Calculate padsize along x
85 fDpxD[fNsec-1]=fDpx;
86 if (fNsec > 1) {
87 for (Int_t i=fNsec-2; i>=0; i--){
88 fDpxD[i]=fDpxD[fNsec-1]/fNDiv[i];
a9e2aefa 89 printf("\n test ---dx %d %f \n",i,fDpxD[i]);
a897a37a 90 }
91 }
92//
93// fill the arrays defining the pad segmentation boundaries
94//
95// loop over pcb module rows
96 Int_t iy=0;
97 for (Int_t irow=0; irow<7; irow++) {
98//
99// loop over pads along the anode wires
a9e2aefa 100 for (Int_t i=0; i<=nPyPCB; i++) {
a897a37a 101// iy counts the padrow
102 iy++;
103// Loop over sectors (isec=0 is the dead space surounding the beam pipe)
104 for (Int_t isec=0; isec<4; isec++) {
105 if (isec==0) {
a9e2aefa 106 fNpxS[0][iy]=kpcb[irow][0]*Int_t(kDxPCB/fDpxD[0]);
107 fCx[0][iy]=kpcb[irow][0]*kDxPCB;
a897a37a 108 } else {
109 fNpxS[isec][iy]=fNpxS[isec-1][iy]
a9e2aefa 110 +kpcb[irow][isec]*Int_t(kDxPCB/fDpxD[isec]);
a897a37a 111
112 fCx[isec][iy]=fCx[isec-1][iy]
a9e2aefa 113 +kpcb[irow][isec]*kDxPCB;
a897a37a 114 }
115 } // sectors
116 } // pad raws in module
117 } // PCB rows
118/*
119 for (Int_t iy=1; iy< fNpy; iy++) {
120 printf("\nBoundary %d %f %d %f %d %f %d %f",
121 fNpxS[0][iy], fCx[0][iy],
122 fNpxS[1][iy], fCx[1][iy],
123 fNpxS[2][iy], fCx[2][iy],
124 fNpxS[3][iy], fCx[3][iy]);
125
126 }
127*/
128}
129
a9e2aefa 130void AliMUONSegmentationV05::GiveTestPoints(Int_t &n, Float_t *x, Float_t *y)
a897a37a 131{
a9e2aefa 132// Returns test point on the pad plane.
133// Used during determination of the segmoid correction of the COG-method
a897a37a 134 n=1;
135 x[0]=(fCx[1][1]+fCx[0][1])/2/TMath::Sqrt(2.);
136 y[0]=x[0];
a897a37a 137}
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154