CMS 3D CMS Logo

CMSSW_4_4_3_patch1/src/Alignment/CocoaUtilities/src/ALIFileOut.cc

Go to the documentation of this file.
00001 //   COCOA class implementation file
00002 //Id:  ALIFileOut.C
00003 //CAT: Model
00004 //
00005 //   History: v1.0 
00006 //   Pedro Arce
00007 
00008 #include "Alignment/CocoaUtilities/interface/ALIFileOut.h"
00009 
00010 #include <stdlib.h>
00011 #include <strstream>
00012 
00013 std::vector<ALIFileOut*> ALIFileOut::theInstances;
00014 
00015 
00016 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
00017 //@@ get the instance of file with name filename
00018 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
00019 ALIFileOut& ALIFileOut::getInstance( const ALIstring& filename )
00020 {
00021   std::vector<ALIFileOut*>::const_iterator vfcite;
00022   for( vfcite = theInstances.begin(); vfcite != theInstances.end(); vfcite++) {
00023     if( (*vfcite)->name() == filename) {
00024       return *(*vfcite);
00025       break;
00026     }
00027   }
00028 
00029   if( vfcite == theInstances.end() ) {
00030     ALIFileOut* instance = new ALIFileOut( filename );
00031     instance->open(filename.c_str());
00032     if( !instance ) {
00033       std::cerr << "!! cannot open output file " << filename << std::endl; 
00034       exit(0); 
00035     }
00036     theInstances.push_back( instance );
00037     return *instance;
00038   }
00039 
00040   ALIFileOut* instance = new ALIFileOut( filename ); // it will not reach here, only to avoid warning
00041   return *instance;
00042 }
00043