| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

In This Package:

AnalyticFieldSvc Class Reference

Authors:
Geraldine Conti, Adlene Hicheur
More...

#include <AnalyticFieldSvc.h>

Inheritance diagram for AnalyticFieldSvc:

[legend]
Collaboration diagram for AnalyticFieldSvc:
[legend]
List of all members.

Public Types

 SUCCESS
 NO_INTERFACE
 VERSMISMATCH
 LAST_ERROR
enum  Status
 SUCCESS
 NO_INTERFACE
 VERSMISMATCH
 LAST_ERROR
enum  Status

Public Member Functions

virtual StatusCode initialize ()
 Initialise the service (Inherited Service overrides).
virtual StatusCode finalize ()
 Finalise the service.
virtual StatusCode queryInterface (const InterfaceID &riid, void **ppvInterface)
 Query the available interfaces.
virtual StatusCode fieldVector (const Gaudi::XYZPoint &xyz, Gaudi::XYZVector &fvec) const
 IAnalyticFieldSvc interface.
virtual unsigned long addRef ()
virtual unsigned long release ()
virtual const std::string & name () const
virtual const InterfaceIDtype () const
virtual StatusCode configure ()
virtual StatusCode start ()
virtual StatusCode stop ()
virtual StatusCode terminate ()
virtual Gaudi::StateMachine::State FSMState () const
virtual Gaudi::StateMachine::State targetFSMState () const
virtual StatusCode reinitialize ()
virtual StatusCode restart ()
virtual StatusCode sysInitialize ()
virtual StatusCode sysStart ()
virtual StatusCode sysStop ()
virtual StatusCode sysFinalize ()
virtual StatusCode sysReinitialize ()
virtual StatusCode sysRestart ()
virtual StatusCode setProperty (const Property &p)
virtual StatusCode setProperty (const std::string &s)
virtual StatusCode setProperty (const std::string &n, const std::string &v)
StatusCode setProperty (const std::string &name, const TYPE &value)
virtual StatusCode getProperty (Property *p) const
virtual const PropertygetProperty (const std::string &name) const
virtual StatusCode getProperty (const std::string &n, std::string &v) const
virtual const std::vector<
Property * > & 
getProperties () const
ISvcLocatorserviceLocator () const
IMessageSvcmsgSvc ()
IMessageSvcmsgSvc () const
IMessageSvcmessageService ()
IMessageSvcmessageService () const
StatusCode setProperties ()
StatusCode service (const std::string &name, T *&psvc, bool createIf=true) const
StatusCode service (const std::string &svcType, const std::string &svcName, T *&psvc) const
PropertydeclareProperty (const std::string &name, T &property, const std::string &doc="none") const
PropertydeclareRemoteProperty (const std::string &name, IProperty *rsvc, const std::string &rname="") const
IAuditorSvcauditorSvc () const
virtual StatusCode fieldVector (const ROOT::Math::XYZPoint &xyz, ROOT::Math::XYZVector &fvec) const =0
virtual const InterfaceIDtype () const =0
virtual StatusCode sysInitialize ()=0
virtual StatusCode sysStart ()=0
virtual StatusCode sysStop ()=0
virtual StatusCode sysFinalize ()=0
virtual StatusCode sysReinitialize ()=0
virtual StatusCode sysRestart ()=0
virtual StatusCode configure ()=0
virtual StatusCode start ()=0
virtual StatusCode stop ()=0
virtual StatusCode terminate ()=0
virtual StatusCode reinitialize ()=0
virtual StatusCode restart ()=0
virtual Gaudi::StateMachine::State FSMState () const =0
virtual Gaudi::StateMachine::State targetFSMState () const =0
virtual const std::string & name () const =0
virtual unsigned long addRef ()=0
virtual unsigned long release ()=0

Static Public Member Functions

static const InterfaceIDinterfaceID ()
static const InterfaceIDinterfaceID ()
static const InterfaceIDinterfaceID ()
static const InterfaceIDinterfaceID ()

Public Attributes

 SUCCESS
 NO_INTERFACE
 VERSMISMATCH
 LAST_ERROR

Protected Member Functions

 AnalyticFieldSvc (const std::string &name, ISvcLocator *svc)
 Standard Constructor.
virtual ~AnalyticFieldSvc ()
 Virtual destructor.
int outputLevel () const
virtual void setServiceManager (ISvcManager *)=0

Protected Attributes

IntegerProperty m_outputLevel
Gaudi::StateMachine::State m_state
Gaudi::StateMachine::State m_targetState
IMessageSvcm_messageSvc

Private Member Functions

StatusCode GetParam ()
 Fills Q, the field vector Reads the field map parameterizations from file.
void Bcalculation (const Gaudi::XYZPoint &point, Gaudi::XYZVector &bf) const
 Method for field calculation depending on the region.
double EvaluateField (MagVec &pos, MagMat &bmap) const
 Compute the field analytically from the parameterization.
void ClearMaps ()

Private Attributes

std::string m_filename [3]
 Analytic field file names.
std::vector< MagMat * > Bxmap
 Parameterization vector for Bx map.
std::vector< MagMat * > Bymap
 Parameterization vector for By map.
std::vector< MagMat * > Bzmap
 Parameterization vector for Bz map.
std::vector< double > zmin
 Vector containing the lower z-limit of each region.
std::vector< double > zmax
 Vector containing the upper z-limit of each region.
double m_zOffSet
 The z offset.
bool m_useConstField
 Job option to use constant field.
std::vector< double > m_constFieldVector
 Option for constant field value.
double m_scaleFactor
 Option for field scaling factor.
int m_nREG
int m_nREGmin
int m_nREGmax

Friends

class SvcFactory< AnalyticFieldSvc >
 Allow SvcFactory to instantiate the service.
friend class ServiceManager

Detailed Description

Authors:
Geraldine Conti, Adlene Hicheur

Date:
2007-03

Definition at line 27 of file AnalyticFieldSvc.h.


Constructor & Destructor Documentation

AnalyticFieldSvc::AnalyticFieldSvc ( const std::string &  name,
ISvcLocator svc 
) [protected]

Standard Constructor.

Parameters:
name String with service name
svc Pointer to service locator interface

Definition at line 38 of file AnalyticFieldSvc.cpp.

00039                                                        : Service( name, svc )
00040 {
00041 
00042   m_nREG =0;
00043   m_nREGmin =0;
00044   m_nREGmax =0;
00045   
00046   // Bxmap.reserve(NREG);
00047   // Bymap.reserve(NREG);
00048   // Bzmap.reserve(NREG); 
00049   //  zmin.reserve(NREG);
00050   //  zmax.reserve(NREG);
00051 
00052   m_constFieldVector.push_back( 0. );
00053   m_constFieldVector.push_back( 0. );
00054   m_constFieldVector.push_back( 0. );
00055   
00056 
00057   declareProperty( "BxMapFile",m_filename[0] = "BxMapFileNotSet");
00058   declareProperty( "ByMapFile",m_filename[1] = "ByMapFileNotSet");
00059   declareProperty( "BzMapFile",m_filename[2] = "BzMapFileNotSet");
00060   declareProperty( "UseConstantField",    m_useConstField = false );
00061   declareProperty( "ConstantFieldVector", m_constFieldVector );
00062   declareProperty( "ScaleFactor",         m_scaleFactor = 1. );
00063   declareProperty( "ZOffSet", m_zOffSet = -50.);
00064   
00065 }

AnalyticFieldSvc::~AnalyticFieldSvc (  )  [protected, virtual]

Virtual destructor.

Definition at line 69 of file AnalyticFieldSvc.cpp.

00070 {
00071 }


Member Function Documentation

StatusCode AnalyticFieldSvc::initialize (  )  [virtual]

Initialise the service (Inherited Service overrides).

Implements IMagneticFieldSvc.

Definition at line 76 of file AnalyticFieldSvc.cpp.

00077 {
00078   MsgStream log(msgSvc(), name());
00079   StatusCode status = Service::initialize();
00080   if( status.isFailure() ) return status;
00081   
00082   if( m_useConstField ) {
00083     log << MSG::WARNING << "using constant magnetic field with field vector "
00084         << m_constFieldVector << " (Tesla)" << endmsg;
00085     return StatusCode::SUCCESS;
00086   }
00087  
00088   if( 1. != m_scaleFactor ) {
00089     log << MSG::WARNING << "Field map will be scaled by a factor = "
00090         << m_scaleFactor << endmsg;
00091   }
00092   
00093   status = GetParam();
00094   if ( status.isSuccess() ) {
00095     log << MSG::DEBUG << "B maps read successfully" << endreq;
00096  
00097     return status;
00098   }
00099   else {
00100     log << MSG::DEBUG << "B maps failed" << endreq;
00101     return StatusCode::FAILURE;
00102   }
00103 
00104   
00105   
00106 
00107 }

StatusCode AnalyticFieldSvc::finalize (  )  [virtual]

Finalise the service.

Implements IMagneticFieldSvc.

Definition at line 112 of file AnalyticFieldSvc.cpp.

00113 {
00114   MsgStream log( msgSvc(), name() );
00115   StatusCode status = Service::finalize();
00116 
00117   ClearMaps();
00118   
00119   
00120   if ( status.isSuccess() )
00121     log << MSG::INFO << "Service finalized successfully" << endreq;
00122   return status;
00123 }

StatusCode AnalyticFieldSvc::queryInterface ( const InterfaceID riid,
void **  ppvInterface 
) [virtual]

Query the available interfaces.

Parameters:
riid Requested interface ID
ppvInterface Pointer to requested interface
Returns:
StatusCode indicating SUCCESS or FAILURE.

Implements IMagneticFieldSvc.

Definition at line 128 of file AnalyticFieldSvc.cpp.

00130 {
00131   StatusCode sc = StatusCode::FAILURE;
00132   if ( ppvInterface ) {
00133     *ppvInterface = 0;
00134     
00135     if ( riid == IMagneticFieldSvc::interfaceID() ) {
00136       *ppvInterface = static_cast<IMagneticFieldSvc*>(this);
00137       sc = StatusCode::SUCCESS;
00138       addRef();
00139     }
00140     else
00141       sc = Service::queryInterface( riid, ppvInterface );    
00142   }
00143   return sc;
00144 }

StatusCode AnalyticFieldSvc::fieldVector ( const Gaudi::XYZPoint xyz,
Gaudi::XYZVector fvec 
) const [virtual]

IAnalyticFieldSvc interface.

Parameters:
[in] xyz Point at which magnetic field vector will be given
[out] fvec Magnectic field vector.
Returns:
StatusCode SUCCESS if calculation was performed.

Definition at line 580 of file AnalyticFieldSvc.cpp.

00581                                                                    {
00582   
00583     Bcalculation(r,b);
00584 
00585   return StatusCode::SUCCESS;
00586 }

StatusCode AnalyticFieldSvc::GetParam (  )  [private]

Fills Q, the field vector Reads the field map parameterizations from file.

Definition at line 151 of file AnalyticFieldSvc.cpp.

00151                                       {
00152   StatusCode sc = StatusCode::FAILURE;
00153   
00154   MsgStream log( msgSvc(), name() );
00155 
00156   for(int ifile=0;ifile<3;ifile++) {
00157     
00158   char line[ 255 ];
00159  
00160   // int NREG=0;
00161   
00162   std::ifstream infile( m_filename[ifile].c_str() );
00163 
00164 
00165 
00166   
00167   if (!infile) {
00168       log << MSG::ERROR << "Unable to open BMap : " 
00169            << m_filename[ifile] << endreq;
00170   
00171   }
00172 
00173  
00174   if (infile) {
00175     sc = StatusCode::SUCCESS;
00176       log << MSG::INFO << "BMap opened successfully : " << m_filename[ifile]
00177         << endreq;
00178 
00179        // Skip the header till NREG
00180     do{
00181             infile.getline( line, 255 );
00182           } while( line[0] != 'N' || line[1] !='R'); 
00183 
00184 
00185     // Reserve maps
00186     int nmap = 0;
00187     
00188     char* token = strtok( line, " " );
00189     do{
00190  
00191       if ( token ) {
00192         if (nmap==1) m_nREG = atoi(token); 
00193         token = strtok( NULL, " ");
00194       }
00195       else continue;
00196       nmap++;
00197     } while (token != NULL);
00198 
00199     std::cout<<" READ NUMBER OF REGIONS m_nREG: "<<m_nREG<<std::endl;
00200     if (ifile==0) Bxmap.reserve(m_nREG);
00201     if (ifile==1) Bymap.reserve(m_nREG);
00202     if (ifile==2) Bzmap.reserve(m_nREG);
00203     if (ifile==0) {zmin.reserve(m_nREG);
00204     zmax.reserve(m_nREG);
00205     }
00206     
00207 
00208        // Skip the header till NY30
00209     do{
00210             infile.getline( line, 255 );
00211           } while( line[0] != 'N' || line[1] !='Y'); 
00212 
00213     token = strtok( line, " " );
00214     nmap=0;
00215   
00216     
00217     do{
00218  
00219       if ( token ) {
00220         if (nmap==1) m_nREGmin = atoi(token); 
00221         if (nmap==2) m_nREGmax = atoi(token); 
00222         token = strtok( NULL, " ");
00223       }
00224       else continue;
00225       nmap++;
00226     } while (token != NULL);
00227 
00228     std::cout<<" FIRST REGION WITH Y30: "<<m_nREGmin<<std::endl;
00229     std::cout<<" LAST REGION WITH Y30: "<<m_nREGmax<<std::endl;
00230 
00231        // Skip the header till ZMINS
00232     do{
00233             infile.getline( line, 255 );
00234           } while( line[0] != 'M' && line[1] !='I');
00235 
00236       // Get the ZMINS in a vector
00237 
00238  
00239     std::string* sZmin = new std::string[m_nREG];
00240   
00241     token = strtok( line, " " );
00242     int izmin = 0;
00243  
00244   
00245     do{
00246  
00247       if ( token ) {
00248         if (izmin>0) sZmin[izmin-1] = token; 
00249         token = strtok( NULL, " ");
00250       }
00251       else continue;
00252       izmin++;
00253     } while (token != NULL);
00254 
00255     for(int w=0;w<m_nREG;w++) {
00256      
00257       zmin[w] = atof( sZmin[w].c_str() ) ; 
00258     }
00259 
00260 
00261        // Skip the header till ZMAXS
00262     do{
00263             infile.getline( line, 255 );
00264           } while( line[0] != 'M' && line[1] !='A');
00265 
00266       // Get the ZMAXS in a vector
00267 
00268     std::string* sZmax = new std::string[NREG];
00269   
00270     token = strtok( line, " " );
00271     int izmax = 0;
00272     do{
00273       if ( token ) {
00274 
00275         if (izmax>0) sZmax[izmax-1] = token; 
00276         token = strtok( NULL, " ");
00277       }
00278       else continue;
00279       izmax++;
00280     } while (token != NULL);
00281 
00282 
00283 
00284     for(int x=0;x<m_nREG;x++) {
00285      
00286       zmax[x] = atof( sZmax[x].c_str() ) ; 
00287     }
00288        
00289 
00290  for(int k=0;k<m_nREG;k++) {
00291 
00292        // Skip the header till next REGION
00293     do{
00294             infile.getline( line, 255 );
00295           } while( line[0] != 'R' );
00296 
00297 
00298     // Get the number of parameterization terms
00299     std::string sTerms[4];
00300     char* token = strtok( line, " " );
00301     int ip = 0;
00302     do{
00303       if ( token ) { sTerms[ip] = token; token = strtok( NULL, " " );} 
00304       else continue;
00305       ip++;
00306     } while ( token != NULL );
00307 
00308     int nterms = atoi( sTerms[1].c_str() );
00309     int nterms2 = 0;
00310     if (m_nREGmax>0 && k>=(m_nREGmin-1) && k<=(m_nREGmax-1)) nterms2 = atoi( sTerms[3].c_str() );
00311 
00312     log << MSG::INFO <<" REGION NUMBER: "<<k<<endreq;
00313     
00314     log << MSG::INFO << "NTERMS " << nterms << endreq;
00315     if (m_nREGmax>0 && k>=(m_nREGmin-1) && k<=(m_nREGmax-1)) log << MSG::INFO << "NTERMS FOR Y>YMAX-30 REGION: " << nterms2 << endreq;
00316     MagMat* temp = new MagMat(nterms+2,4);
00317 
00318    
00319     for(int l=0;l<nterms+3;l++) {
00320      
00321       infile.getline( line, 255 );
00322       if ( line[0] == '#' ) continue;
00323             std::string sPowx, sPowy, sPowz, sCoef; 
00324             char* token = strtok( line, " " );
00325             if ( token ) { sPowx = token; token = strtok( NULL, " " );} else continue;
00326             if ( token ) { sPowy = token; token = strtok( NULL, " " );} else continue;
00327             if ( token ) { sPowz = token; token = strtok( NULL, " " );} else continue;
00328             if ( token ) { sCoef = token; token = strtok( NULL, " " );} else continue;
00329             if ( token != NULL ) continue;
00330       
00331       double Powx = atof( sPowx.c_str() );
00332       double Powy = atof( sPowy.c_str() );
00333       double Powz = atof( sPowz.c_str() );
00334       double Coef = atof( sCoef.c_str() );
00335 
00336      
00337       
00338       // Add the powers and coefficients parameters of each region to 
00339       // sequentialy in a matrice 
00340 
00341       if (l>0) {       
00342       (*temp)[l-1][0]= Powx ;
00343       (*temp)[l-1][1]= Powy ;
00344       (*temp)[l-1][2]= Powz ;
00345       (*temp)[l-1][3]= Coef ;
00346       }
00347       
00348  
00349     }
00350 
00351     if (ifile ==0) Bxmap.push_back(temp);
00352     if (ifile ==1) Bymap.push_back(temp);
00353     if (ifile ==2) Bzmap.push_back(temp);
00354 
00355     //In case one has a second parametrization for ymax - 30cm < y < ymax
00356     if (m_nREGmax>0 && k>=(m_nREGmin-1) && k<=(m_nREGmax-1)) {
00357       
00358       MagMat* temp2 = new MagMat(nterms2+2,4);
00359 
00360       infile.getline( line, 255 );
00361   
00362       
00363       for(int l=0;l<nterms2+2;l++) {
00364         
00365         
00366         infile.getline( line, 255 );
00367         if ( line[0] == '#' ) continue;
00368         std::string sPowx, sPowy, sPowz, sCoef; 
00369         char* token = strtok( line, " " );
00370         if ( token ) { sPowx = token; token = strtok( NULL, " " );} else continue;
00371         if ( token ) { sPowy = token; token = strtok( NULL, " " );} else continue;
00372         if ( token ) { sPowz = token; token = strtok( NULL, " " );} else continue;
00373         if ( token ) { sCoef = token; token = strtok( NULL, " " );} else continue;
00374         if ( token != NULL ) continue;
00375       
00376         double Powx = atof( sPowx.c_str() );
00377         double Powy = atof( sPowy.c_str() );
00378         double Powz = atof( sPowz.c_str() );
00379         double Coef = atof( sCoef.c_str() );
00380       
00381 
00382 
00383 
00384         // Add the powers and coefficients parameters of each region to 
00385         // sequentialy in a matrice 
00386 
00387    
00388         (*temp2)[l][0]= Powx ;
00389         (*temp2)[l][1]= Powy ;
00390         (*temp2)[l][2]= Powz ;
00391         (*temp2)[l][3]= Coef ;
00392    
00393       
00394  
00395       }
00396 
00397     if (ifile ==0) Bxmap.push_back(temp2);
00398     if (ifile ==1) Bymap.push_back(temp2);
00399     if (ifile ==2) Bzmap.push_back(temp2);
00400     
00401     }
00402     
00403       
00404 
00405 
00406 }
00407 
00408  delete sZmin;
00409  delete sZmax;
00410  infile.close(); 
00411   }
00412   
00413   }
00414  
00415   return sc;
00416   }

void AnalyticFieldSvc::Bcalculation ( const Gaudi::XYZPoint point,
Gaudi::XYZVector bf 
) const [private]

Method for field calculation depending on the region.

Definition at line 591 of file AnalyticFieldSvc.cpp.

00592                                                              {
00593 
00594   //initialize B field value
00595   bf.SetXYZ(0,0,0);
00596   // Use constant field?
00597   if( m_useConstField ) {
00598     bf.SetXYZ( m_constFieldVector[0]*Gaudi::Units::tesla,
00599                m_constFieldVector[1]*Gaudi::Units::tesla,
00600                m_constFieldVector[2]*Gaudi::Units::tesla );
00601     return;
00602   }
00603   
00604   MagVec coord(3);
00605 
00606   coord[0]=fabs(point.x())/Gaudi::Units::m;   
00607   coord[1]=fabs(point.y())/Gaudi::Units::m;
00608   coord[2]=point.z()/Gaudi::Units::m;
00609 
00610   int iReg = 0;
00611   //For Regions (z slices) 6 to 12, division between y < ymax - 30 cm and y>ymax - 30 cm  
00612   
00613   for (int iz=0;iz <m_nREG;iz++) {
00614 
00615     iReg=iz;
00616     
00617     bool condZ = zmin[iz]<=point.z()/Gaudi::Units::cm && point.z()/Gaudi::Units::cm<zmax[iz] && coord[0]<(fabs(coord[2])*tan(0.3)) && coord[1]<(fabs(coord[2])*tan(0.25));
00618     
00619  
00620     if (m_nREGmax>0 && iz>=(m_nREGmin-1) && iz<=(m_nREGmax-1)) {
00621       iReg = 2*iz-(m_nREGmin-1);
00622       if (fabs(coord[1]) > (*(Bxmap[iReg]))[1][1]) iReg++;
00623     }
00624   
00625     if(m_nREGmax>0 && iz>=m_nREGmax) iReg = iz+(m_nREGmax-m_nREGmin+1);
00626     
00627 
00628     if (condZ) {      
00629 
00630 
00631       bf.SetXYZ(EvaluateField(coord,*(Bxmap[iReg])),EvaluateField(coord,*(Bymap[iReg])),EvaluateField(coord,*(Bzmap[iReg])));
00632 
00633     }
00634 
00635   }
00636 
00637   bf*=Gaudi::Units::tesla;
00638   
00639   if( point.x() < 0. && point.y() >= 0. ){
00640     bf.SetX( -bf.x() );
00641   }
00642   else if(  point.x() < 0. &&  point.y()  < 0. ){
00643     bf.SetZ( -bf.z() );
00644   }
00645   else if( point.x() >= 0. && point.y() < 0. ){
00646     bf.SetX( -bf.x() );
00647     bf.SetZ( -bf.z() );
00648   } 
00649 
00650   return ;
00651 }

double AnalyticFieldSvc::EvaluateField ( MagVec pos,
MagMat bmap 
) const [private]

Compute the field analytically from the parameterization.

Definition at line 709 of file AnalyticFieldSvc.cpp.

00709                                                                       {
00710 
00711   double returnValue = bmap[0][3];
00712   int    i = 0, j = 0, k = 0;
00713   for (i = 2; i < bmap.nrow(); i++) {
00714     // Evaluate the ith term in the expansion
00715      double term = bmap[i][3];
00716     for (j = 0; j < 3; j++) {
00717       // Evaluate the polynomial in the jth variable.
00718       int power = int(bmap[i][j]); 
00719       double p1 = 1, p2 = 0, p3 = 0, r = 0;
00720       double v =  1 + 2. / (bmap[1][j] - bmap[0][j]) * (pos[j] - bmap[1][j]);
00721       // what is the power to use!
00722       switch(power) {
00723       case 1: r = 1; break; 
00724       case 2: r = v; break; 
00725       default: 
00726         p2 = v; 
00727         for (k = 3; k <= power; k++) { 
00728           p3 = p2 * v;
00729           p3 = 2 * v * p2 - p1; 
00730           p1 = p2; p2 = p3; 
00731         }
00732         r = p3;
00733       }
00734       // multiply this term by the poly in the jth var
00735       term *= r; 
00736     }
00737     // Add this term to the final result
00738     returnValue += term;
00739   }
00740 
00741   return returnValue;
00742 
00743 }

void AnalyticFieldSvc::ClearMaps (  )  [private]

Definition at line 750 of file AnalyticFieldSvc.cpp.

00751    {
00752      
00753 
00754  for (std::vector<MagMat*>::const_iterator iMatBx = Bxmap.begin();
00755        iMatBx != Bxmap.end();++iMatBx) {
00756     delete (*iMatBx);
00757   }
00758 
00759  for (std::vector<MagMat*>::const_iterator iMatBy = Bymap.begin();
00760        iMatBy != Bymap.end();++iMatBy) {
00761     delete (*iMatBy);
00762   }
00763 
00764  for (std::vector<MagMat*>::const_iterator iMatBz = Bzmap.begin();
00765        iMatBz != Bzmap.end();++iMatBz) {
00766     delete (*iMatBz);
00767  }
00768 
00769    }


Friends And Related Function Documentation

friend class SvcFactory< AnalyticFieldSvc > [friend]

Allow SvcFactory to instantiate the service.

Definition at line 67 of file AnalyticFieldSvc.h.


Member Data Documentation

std::string AnalyticFieldSvc::m_filename[3] [private]

Analytic field file names.

Definition at line 80 of file AnalyticFieldSvc.h.

std::vector<MagMat*> AnalyticFieldSvc::Bxmap [private]

Parameterization vector for Bx map.

Definition at line 81 of file AnalyticFieldSvc.h.

std::vector<MagMat*> AnalyticFieldSvc::Bymap [private]

Parameterization vector for By map.

Definition at line 82 of file AnalyticFieldSvc.h.

std::vector<MagMat*> AnalyticFieldSvc::Bzmap [private]

Parameterization vector for Bz map.

Definition at line 83 of file AnalyticFieldSvc.h.

std::vector<double> AnalyticFieldSvc::zmin [private]

Vector containing the lower z-limit of each region.

Definition at line 85 of file AnalyticFieldSvc.h.

std::vector<double> AnalyticFieldSvc::zmax [private]

Vector containing the upper z-limit of each region.

Definition at line 86 of file AnalyticFieldSvc.h.

double AnalyticFieldSvc::m_zOffSet [private]

The z offset.

Definition at line 88 of file AnalyticFieldSvc.h.

bool AnalyticFieldSvc::m_useConstField [private]

Job option to use constant field.

Definition at line 91 of file AnalyticFieldSvc.h.

std::vector<double> AnalyticFieldSvc::m_constFieldVector [private]

Option for constant field value.

Definition at line 92 of file AnalyticFieldSvc.h.

double AnalyticFieldSvc::m_scaleFactor [private]

Option for field scaling factor.

Definition at line 93 of file AnalyticFieldSvc.h.

int AnalyticFieldSvc::m_nREG [private]

Definition at line 95 of file AnalyticFieldSvc.h.

int AnalyticFieldSvc::m_nREGmin [private]

Definition at line 95 of file AnalyticFieldSvc.h.

int AnalyticFieldSvc::m_nREGmax [private]

Definition at line 95 of file AnalyticFieldSvc.h.


The documentation for this class was generated from the following files:
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 20:04:55 2011 for Magnet by doxygen 1.4.7