BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
BesGeoSelector Class Reference

#include <BesGeoSelector.h>

Public Member Functions

 BesGeoSelector ()
void addGeomFile (const char *fname, int startno)
void clear ()
const char * getGeomFileNameFromRunNo (int run_no)
bool hasGeomFile (const char *fname)

Detailed Description

Definition at line 27 of file BesGeoSelector.h.

Constructor & Destructor Documentation

◆ BesGeoSelector()

BesGeoSelector::BesGeoSelector ( )

Definition at line 15 of file BesGeoSelector.cxx.

15{}

Member Function Documentation

◆ addGeomFile()

void BesGeoSelector::addGeomFile ( const char * fname,
int startno )

Definition at line 17 of file BesGeoSelector.cxx.

17 {
18 cout << "BesGeoSelector: " << fname << " start phase " << startno << endl;
19 fgeom.push_back( GeomFileInfo( fname, startno ) );
20 sort( fgeom.begin(), fgeom.end() );
21}

◆ clear()

void BesGeoSelector::clear ( )

Definition at line 23 of file BesGeoSelector.cxx.

23{ fgeom.clear(); }

◆ getGeomFileNameFromRunNo()

const char * BesGeoSelector::getGeomFileNameFromRunNo ( int run_no)

Definition at line 26 of file BesGeoSelector.cxx.

26 {
27 auto dvs = Gaudi::svcLocator()->service<IDetVerSvc>( "DetVerSvc" );
28 if ( !dvs )
29 {
30 cerr << "BesGeoSelector Error: DetVerSvc not found!" << endl;
31 return "";
32 }
33 // dvs->initialize();
34 int absno = ( run_no >= 0 ? run_no : -run_no );
35
36 for ( vector<GeomFileInfo>::reverse_iterator i = fgeom.rbegin(); i != fgeom.rend(); ++i )
37 {
38 // if (absno >= i->startno)
39 // {
40 // return i->filename.c_str();
41 // }
42
43 // In BOSS 7.0.3, use DecVerSvc package to choose geometry
44 int phase = dvs->fromRun( absno );
45 if ( phase >= i->startno ) { return i->filename.c_str(); }
46 }
47 cout << "BesGeoSelector Error: There is no suitable detector geometry!" << endl;
48 return "";
49}

◆ hasGeomFile()

bool BesGeoSelector::hasGeomFile ( const char * fname)

Definition at line 52 of file BesGeoSelector.cxx.

52 {
53 string filename( fname );
54 for ( vector<GeomFileInfo>::iterator i = fgeom.begin(); i != fgeom.end(); ++i )
55 {
56 if ( filename == i->filename ) return true;
57 }
58 return false;
59}

The documentation for this class was generated from the following files: