1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
18 /////////////////////////////////////////////////////////////////////////////////
22 // This class is for the modes of the TRD calibration.
23 // The user has to choose with the functions SetNz and SetNrphi the precision of the calibration.
29 <TR><TD><center>Nz</center></TD><TD><center> 0 </center></TD><TD><center> 1 </center></TD><TD><center> 2 </center></TD><TD><center> 3 </center></TD><TD><center> 4 </center></TD></TR>
30 <TR><TD><CENTER>group of row pads per detector</CENTER></TD><TD><CENTER>1</CENTER></TD><TD><CENTER>2</CENTER></TD><TD><CENTER>4</CENTER></TD><TD><CENTER>6(chamb2)<br> 8(others chambers)</CENTER></TD><TD><CENTER>12 (chamb2)<br> 16 (chamb0)</CENTER></TD></TR>
31 <TR><TD><CENTER>row pads per group</CENTER></TD><TD><CENTER>12 (chamb2)<br> 16 (chamb0)</CENTER></TD><TD><CENTER>6 (chamb2)<br> 8 (chamb0)</CENTER></TD><TD><CENTER>3 (chamb2)<br> 4 (chamb0)</CENTER></TD><TD><CENTER>2</CENTER></TD><TD><CENTER>1</CENTER></TD></TR>
32 <TR><TD><CENTER>~distance [cm]</CENTER></TD><TD><CENTER>106 (chamb2)<br> 130 (chamb0)</CENTER></TD><TD><CENTER>53 (chamb2)<br> 65 (chamb0)</CENTER></TD><TD><CENTER>26.5 (chamb2)<br> 32.5 (chamb0)</CENTER></TD><TD><CENTER>17 (chamb2)<br> 17 (chamb0)</CENTER></TD><TD><CENTER>9 (chamb2)<br> 9 (chamb0)</CENTER></TD></TR>
33 <CAPTION>In the z direction</CAPTION>
39 <TR><TD><center>Nrphi</center></TD><TD><center> 0 </center></TD><TD><center> 1 </center></TD><TD><center> 2 </center></TD><TD><center> 3 </center></TD><TD><center> 4 </center></TD><TD><center> 5 </center></TD><TD><center> 6 </center></TD></TR>
40 <TR><TD><CENTER>group of col pads per detector</CENTER></TD><TD><CENTER>1</CENTER></TD><TD><CENTER>2</CENTER></TD><TD><CENTER>4</CENTER></TD><TD><CENTER>8</CENTER></TD><TD><CENTER>16</CENTER></TD><TD><center>36</center></TD><TD><center>144</center></TD></TR>
41 <TR><TD><CENTER>col pads per group</CENTER></TD><TD><CENTER>144</CENTER></TD><TD><CENTER>72</CENTER></TD><TD><CENTER>36</CENTER></TD><TD><CENTER>18</CENTER></TD><TD><CENTER>9</CENTER></TD><TD><center>4</center></TD><TD><center>1</center></TD></TR>
42 <TR><TD><CENTER>~distance [cm]</CENTER></TD><TD><CENTER>113.4</CENTER></TD><TD><CENTER>56.7</CENTER></TD><TD><CENTER>25.3</CENTER></TD><TD><CENTER>14.3</CENTER></TD><TD><CENTER>7.25</CENTER></TD><TD><center>3.2</center></TD><TD><center>0.8</center></TD></TR>
43 <CAPTION>In the rphi direction</CAPTION>
52 // R. Bailhache (R.Bailhache@gsi.de)
54 //////////////////////////////////////////////////////////////////////////////////////
58 #include "AliTRDCalibraMode.h"
59 #include "AliTRDCommonParam.h"
61 ClassImp(AliTRDCalibraMode)
63 //______________________________________________________________________________________
64 AliTRDCalibraMode::AliTRDCalibraMode()
68 // Default constructor
71 for (Int_t i = 0; i < 3; i++) {
76 for (Int_t k = 0; k < 3; k++) {
81 for (Int_t i = 0; i < 3; i++) {
95 //______________________________________________________________________________________
96 AliTRDCalibraMode::AliTRDCalibraMode(const AliTRDCalibraMode &c)
105 //____________________________________________________________________________________
106 AliTRDCalibraMode::~AliTRDCalibraMode()
109 // AliTRDCalibraMode destructor
114 //_____________________________________________________________________________
115 void AliTRDCalibraMode::SetNz(Int_t i, Short_t Nz)
118 // Set the mode of calibration group in the z direction for the parameter i
126 AliInfo("You have to choose between 0 and 4");
131 //_____________________________________________________________________________
132 void AliTRDCalibraMode::SetNrphi(Int_t i, Short_t Nrphi)
135 // Set the mode of calibration group in the rphi direction for the parameter i
143 AliInfo("You have to choose between 0 and 6");
148 //_______________________________________________________________________________________
149 void AliTRDCalibraMode::ModePadCalibration(Int_t iChamb, Int_t i)
152 // Definition of the calibration mode
153 // from Nz and Nrphi, the number of row and col pads per calibration groups are setted
160 if ((fNz[i] == 0) && (iChamb == 2)) {
163 if ((fNz[i] == 0) && (iChamb != 2)) {
166 if ((fNz[i] == 1) && (iChamb == 2)) {
169 if ((fNz[i] == 1) && (iChamb != 2)) {
172 if ((fNz[i] == 2) && (iChamb == 2)) {
175 if ((fNz[i] == 2) && (iChamb != 2)) {
185 if (fNrphi[i] == 0) {
188 if (fNrphi[i] == 1) {
191 if (fNrphi[i] == 2) {
194 if (fNrphi[i] == 3) {
197 if (fNrphi[i] == 4) {
200 if (fNrphi[i] == 5) {
203 if (fNrphi[i] == 6) {
209 //_____________________________________________________________________________________________
210 Bool_t AliTRDCalibraMode::ModePadFragmentation(Int_t iPlane,Int_t iChamb, Int_t iSect, Int_t i)
213 // Definition of the calibration mode
214 // From the number of row and col pads per calibration groups the
215 // number of calibration groups are setted
221 AliTRDCommonParam *parCom = AliTRDCommonParam::Instance();
223 AliInfo("Could not get CommonParam Manager");
227 // A little geometry:
228 Int_t rowMax = parCom->GetRowMax(iPlane,iChamb,iSect);
229 Int_t colMax = parCom->GetColMax(iPlane);
233 fNfragZ[i] = (Int_t) rowMax / fNnZ[i];
236 if (fNnRphi[i] != 0) {
237 fNfragRphi[i] = (Int_t) colMax / fNnRphi[i];
244 //_____________________________________________________________________________
245 void AliTRDCalibraMode::ReconstructionRowPadGroup(Int_t idect, Int_t i)
248 // For the calibration group idect in a detector calculate the
249 // first and last row pad and col pad.
250 // The pads in the interval will have the same calibrated coefficients
260 if (fNfragZ[i] != 0) {
261 posc = (Int_t) idect / fNfragZ[i];
263 if (fNfragRphi[i] != 0) {
264 posr = (Int_t) idect % fNfragZ[i];
266 fRowMin[i] = posr * fNnZ[i];
267 fRowMax[i] = (posr+1) * fNnZ[i];
268 fColMin[i] = posc * fNnRphi[i];
269 fColMax[i] = (posc+1) * fNnRphi[i];
273 //_____________________________________________________________________________
274 void AliTRDCalibraMode::CalculXBins(Int_t idect, Int_t i)
277 // For the detector idect calcul the first Xbins
281 AliDebug(2, Form("detector: %d", idect));
284 Int_t sector = GetSector(idect);
285 fXbins[i] += sector*(6*fDetChamb2[i]+6*4*fDetChamb0[i]);
288 Int_t chamber = GetChamber(idect);
290 while (kc < chamber) {
292 fXbins[i] += 6 * fDetChamb2[i];
295 fXbins[i] += 6 * fDetChamb0[i];
301 Int_t plane = GetPlane(idect);
303 fXbins[i] += plane*fDetChamb2[i];
306 fXbins[i] += plane*fDetChamb0[i];
311 //_____________________________________________________________________________
312 void AliTRDCalibraMode::ResetMinMax(Int_t i)
315 // Reset fRowMin fRowMax fColMin fColMax [i]
325 //_____________________________________________________________________________
326 void AliTRDCalibraMode::SetDetChamb0(Int_t i)
329 // Set the number of calibration group per detector != 2
332 fDetChamb0[i] = fNfragZ[i] * fNfragRphi[i];
336 //_____________________________________________________________________________
337 void AliTRDCalibraMode::SetDetChamb2(Int_t i)
340 // Set the number of calibration group per detector == 2
343 fDetChamb2[i] = fNfragZ[i] * fNfragRphi[i];
347 //_____________________________________________________________________________
348 Int_t AliTRDCalibraMode::GetPlane(Int_t d) const
351 // Reconstruct the plane number from the detector number
354 return ((Int_t) (d % 6));
358 //_____________________________________________________________________________
359 Int_t AliTRDCalibraMode::GetChamber(Int_t d) const
362 // Reconstruct the chamber number from the detector number
367 return ((Int_t) (d % 30) / fgkNplan);
371 //_____________________________________________________________________________
372 Int_t AliTRDCalibraMode::GetSector(Int_t d) const
375 // Reconstruct the sector number from the detector number
380 return ((Int_t) (d / fg));