]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STEER/AliMagF.cxx
7b00a359f8cfa85b832a491a6614d603f882ed4f
[u/mrichter/AliRoot.git] / STEER / AliMagF.cxx
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 /* $Id$ */
17
18 //----------------------------------------------------------------------
19 // Basic magnetic field class
20 // Used in all the detectors, and also in the traking classes
21 // Author:
22 //----------------------------------------------------------------------
23
24 #include "AliLog.h"
25 #include "AliMagF.h"
26
27 ClassImp(AliMagF)
28
29 //_______________________________________________________________________
30 AliMagF::AliMagF():
31   fMap(0),
32   fType(0),
33   fInteg(0),
34   fPrecInteg(1),
35   fFactor(0),
36   fMax(0),
37   fReadField(1)
38 {
39   //
40   // Default constructor
41   //
42 }
43
44 //_______________________________________________________________________
45 AliMagF::AliMagF(const char *name, const char *title, Int_t integ, 
46                  Float_t factor, Float_t fmax):
47   TNamed(name,title),
48   fMap(0),
49   fType(0),
50   fInteg(0),
51   fPrecInteg(1),
52   fFactor(factor),
53   fMax(fmax),
54   fReadField(1)
55 {
56   //
57   // Standard constructor
58   //
59     if(integ<0 || integ > 2) {
60       AliWarning(Form(
61               "Invalid magnetic field flag: %5d; Helix tracking chosen instead"
62               ,integ));
63       fInteg = 2;
64     } else {
65       fInteg = integ;
66     }
67    
68     if (fInteg == 0) fPrecInteg = 0;
69     
70     fType = kUndef;
71     //
72 }
73
74 //_______________________________________________________________________
75 AliMagF::AliMagF(const AliMagF &src):
76   TNamed(src),
77   fMap(src.fMap),
78   fType(src.fType),
79   fInteg(src.fInteg),
80   fPrecInteg(src.fPrecInteg),
81   fFactor(src.fFactor),
82   fMax(src.fMax),
83   fReadField(src.fReadField)
84 {
85     // Copy constructor
86 }
87
88 //_______________________________________________________________________
89 void AliMagF::Field(const float*, float *b) const
90 {
91   //
92   // Method to return the field in one point -- dummy in this case
93   //
94   AliWarning("Undefined MagF Field called, returning 0");
95   b[0]=b[1]=b[2]=0;
96 }
97
98 //_______________________________________________________________________
99 void AliMagF::Field(const double*, double *b) const
100 {
101   //
102   // Method to return the field in one point -- dummy in this case
103   //
104   AliWarning("Undefined MagF Field called, returning 0");
105   b[0]=b[1]=b[2]=0;
106 }
107
108 //_______________________________________________________________________
109 void AliMagF::GetTPCInt(Float_t *, Float_t *b) const
110 {
111 //
112 // Obtain the integral of the field components in the TPC from given point
113 // to the closest cathod plane
114 //
115   AliWarning("Undefined MagF TPCIntegral called, returning 0");
116   b[0]=b[1]=b[2]=0;
117 }
118
119 //_______________________________________________________________________
120 void AliMagF::GetTPCIntCyl(Float_t *, Float_t *b) const
121 {
122 //    
123 // Obtain the integral of the field components in the TPC from given point
124 // to the closest cathod plane
125 //
126   AliWarning("Undefined MagF TPCIntegral called, returning 0");
127   b[0]=b[1]=b[2]=0;
128 }
129
130 //_______________________________________________________________________
131 AliMagF& AliMagF::operator=(const AliMagF& rhs)
132 {
133     // Asignment operator
134     fMap       = rhs.fMap;
135     fType      = rhs.fType;
136     fInteg     = rhs.fInteg;
137     fPrecInteg = rhs.fPrecInteg;
138     fFactor    = rhs.fFactor;
139     fMax       = rhs.fMax;
140     fReadField = rhs.fReadField;
141     return *this;
142 }
143
144 void AliMagF::SetPrecInteg(Int_t integ)
145 {
146     if (fInteg > 0) {
147         fPrecInteg = integ;
148     }
149     else if (integ != 0)
150     {
151         AliWarning("Precision integration flag set to 0 \n");
152         fPrecInteg = 0;
153     }
154 }