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 ///////////////////////////////////////////////////////////////////////////////
20 // Class containing constant common parameters //
22 // Request an instance with AliTRDCommonParam::Instance() //
23 // Then request the needed values //
25 ///////////////////////////////////////////////////////////////////////////////
27 #include <TObjArray.h>
29 #include "AliTracker.h"
31 #include "AliTRDCommonParam.h"
32 #include "AliTRDpadPlane.h"
34 ClassImp(AliTRDCommonParam)
36 AliTRDCommonParam *AliTRDCommonParam::fgInstance = 0;
37 Bool_t AliTRDCommonParam::fgTerminated = kFALSE;
39 //_ singleton implementation __________________________________________________
40 AliTRDCommonParam* AliTRDCommonParam::Instance()
43 // Singleton implementation
44 // Returns an instance of this class, it is created if neccessary
47 if (fgTerminated != kFALSE) {
51 if (fgInstance == 0) {
52 fgInstance = new AliTRDCommonParam();
59 //_____________________________________________________________________________
60 void AliTRDCommonParam::Terminate()
63 // Singleton implementation
64 // Deletes the instance of this class and sets the terminated flag, instances cannot be requested anymore
65 // This function can be called several times.
70 if (fgInstance != 0) {
77 //_____________________________________________________________________________
78 AliTRDCommonParam::AliTRDCommonParam()
85 // Default constructor
92 //_____________________________________________________________________________
93 void AliTRDCommonParam::Init()
102 // The magnetic field strength in Tesla
103 fField = AliTracker::GetBz() * 0.1;
105 // ----------------------------------------------------------------------------
107 // ----------------------------------------------------------------------------
109 fPadPlaneArray = new TObjArray(kNplan * kNcham);
111 for (Int_t iplan = 0; iplan < kNplan; iplan++) {
112 for (Int_t icham = 0; icham < kNcham; icham++) {
113 Int_t ipp = iplan + icham * kNplan;
114 fPadPlaneArray->AddAt(new AliTRDpadPlane(iplan,icham),ipp);
120 //_____________________________________________________________________________
121 AliTRDCommonParam::~AliTRDCommonParam()
127 if (fPadPlaneArray) {
128 fPadPlaneArray->Delete();
129 delete fPadPlaneArray;
135 //_____________________________________________________________________________
136 AliTRDCommonParam::AliTRDCommonParam(const AliTRDCommonParam &p)
148 //_____________________________________________________________________________
149 AliTRDCommonParam &AliTRDCommonParam::operator=(const AliTRDCommonParam &p)
152 // Assignment operator
156 ((AliTRDCommonParam &) p).Copy(*this);
163 //_____________________________________________________________________________
164 void AliTRDCommonParam::Copy(TObject &p) const
170 AliTRDCommonParam *target = dynamic_cast<AliTRDCommonParam*> (&p);
175 target->fExBOn = fExBOn;
176 target->fField = fField;
180 //_____________________________________________________________________________
181 AliTRDpadPlane *AliTRDCommonParam::GetPadPlane(Int_t p, Int_t c) const
184 // Returns the pad plane for a given plane <p> and chamber <c> number
187 Int_t ipp = p + c * kNplan;
188 return ((AliTRDpadPlane *) fPadPlaneArray->At(ipp));
192 //_____________________________________________________________________________
193 Int_t AliTRDCommonParam::GetRowMax(Int_t p, Int_t c, Int_t /*s*/) const
196 // Returns the number of rows on the pad plane
199 return GetPadPlane(p,c)->GetNrows();
203 //_____________________________________________________________________________
204 Int_t AliTRDCommonParam::GetColMax(Int_t p) const
207 // Returns the number of rows on the pad plane
210 return GetPadPlane(p,0)->GetNcols();
214 //_____________________________________________________________________________
215 Double_t AliTRDCommonParam::GetRow0(Int_t p, Int_t c, Int_t /*s*/) const
218 // Returns the position of the border of the first pad in a row
221 return GetPadPlane(p,c)->GetRow0();
225 //_____________________________________________________________________________
226 Double_t AliTRDCommonParam::GetCol0(Int_t p) const
229 // Returns the position of the border of the first pad in a column
232 return GetPadPlane(p,0)->GetCol0();